Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-08-11 03:44:05 +0300
committerPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-08-11 04:53:39 +0300
commit20fd23c8e9d98485e6db04cb5f35fa2c1d516ffa (patch)
treefe3af089bd064a80b462a3b48efe80a598f5d3dd
parente76234483b9aba3e649de5718b0bff85fafd97fa (diff)
[d3d9] Request high-priority shader compiles as necessaryshader-priority
-rw-r--r--src/d3d9/d3d9_device.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp
index fe8d16f0..22da70b6 100644
--- a/src/d3d9/d3d9_device.cpp
+++ b/src/d3d9/d3d9_device.cpp
@@ -6214,8 +6214,13 @@ namespace dxvk {
template <DxsoProgramType ShaderStage>
void D3D9DeviceEx::BindShader(
const D3D9CommonShader* pShaderModule) {
+ auto shader = pShaderModule->GetShader();
+
+ if (unlikely(shader->needsLibraryCompile()))
+ m_dxvkDevice->requestCompileShader(shader);
+
EmitCs([
- cShader = pShaderModule->GetShader()
+ cShader = std::move(shader)
] (DxvkContext* ctx) mutable {
constexpr VkShaderStageFlagBits stage = GetShaderStage(ShaderStage);
ctx->bindShader<stage>(std::move(cShader));