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-07-30 23:14:26 +0300
committerPhilip Rebohle <philip.rebohle@tu-dortmund.de>2022-07-30 23:20:24 +0300
commitd0d906c554e3fa25712df721e305cc502db82ae4 (patch)
treee1a1a055b3368b502334b2767c54b69203181132
parent76ddd2a35a7f7fae8fd77adcf30c5fe14c2ffad2 (diff)
[dxso] Don't create shader object for redundant PS permutationsd3d9-permutation
-rw-r--r--src/d3d9/d3d9_shader.cpp2
-rw-r--r--src/dxso/dxso_compiler.cpp5
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;