From 0eaad2eb5b26ea5f512d02d724bdc22d458ca06b Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 30 Jul 2022 22:14:26 +0200 Subject: [PATCH] [dxso] Don't create shader object for redundant PS permutations --- src/d3d9/d3d9_shader.cpp | 2 +- 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 8b5bb8bd6..664ebbdbc 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 289ef90ed..69f77e5b0 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;