diff options
author | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-07-30 23:14:26 +0300 |
---|---|---|
committer | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2022-07-30 23:20:24 +0300 |
commit | d0d906c554e3fa25712df721e305cc502db82ae4 (patch) | |
tree | e1a1a055b3368b502334b2767c54b69203181132 | |
parent | 76ddd2a35a7f7fae8fd77adcf30c5fe14c2ffad2 (diff) |
[dxso] Don't create shader object for redundant PS permutationsd3d9-permutation
-rw-r--r-- | src/d3d9/d3d9_shader.cpp | 2 | ||||
-rw-r--r-- | src/dxso/dxso_compiler.cpp | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/d3d9/d3d9_shader.cpp b/src/d3d9/d3d9_shader.cpp index 8b5bb8bd..664ebbdb 100644 --- a/src/d3d9/d3d9_shader.cpp +++ b/src/d3d9/d3d9_shader.cpp @@ -90,7 +90,7 @@ namespace dxvk { pDevice->GetDXVKDevice()->registerShader(m_shaders[0]); - if (m_shaders[1] != nullptr) + if (m_shaders[1] != nullptr && m_shaders[1] != m_shaders[0]) pDevice->GetDXVKDevice()->registerShader(m_shaders[1]); } diff --git a/src/dxso/dxso_compiler.cpp b/src/dxso/dxso_compiler.cpp index 289ef90e..69f77e5b 100644 --- a/src/dxso/dxso_compiler.cpp +++ b/src/dxso/dxso_compiler.cpp @@ -236,7 +236,10 @@ namespace dxvk { if (m_ps.specularColorIn) m_module.decorate(m_ps.specularColorIn, spv::DecorationFlat); - permutations[D3D9ShaderPermutations::FlatShade] = compileShader(); + if (m_ps.diffuseColorIn || m_ps.specularColorIn) + permutations[D3D9ShaderPermutations::FlatShade] = compileShader(); + else + permutations[D3D9ShaderPermutations::FlatShade] = permutations[D3D9ShaderPermutations::None]; } return permutations; |