diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index c785a0b60..07d683603 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -6215,8 +6215,13 @@ namespace dxvk { template 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(std::move(cShader));