From 47794b661e38703e25562d588091089b74548749 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 30 Jul 2022 16:00:28 +0200 Subject: [PATCH] [dxvk] Only pass requried spec constants when compiling compute pipelines --- src/dxvk/dxvk_compute.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/dxvk/dxvk_compute.cpp b/src/dxvk/dxvk_compute.cpp index bbf8a27f2..02249771e 100644 --- a/src/dxvk/dxvk_compute.cpp +++ b/src/dxvk/dxvk_compute.cpp @@ -106,10 +106,16 @@ namespace dxvk { Logger::debug(str::format(" cs : ", m_shaders.cs->debugName())); } + uint32_t specConstantMask = m_shaders.cs->getSpecConstantMask(); DxvkSpecConstants specData; - - for (uint32_t i = 0; i < MaxNumSpecConstants; i++) - specData.set(i, state.sc.specConstants[i], 0u); + + for (uint32_t i = 0; i < MaxNumSpecConstants; i++) { + if (specConstantMask & (1u << i)) + specData.set(i, state.sc.specConstants[i], 0u); + } + + if (specConstantMask & (1u << MaxNumSpecConstants)) + specData.set(MaxNumSpecConstants, 1u, 0u); VkSpecializationInfo specInfo = specData.getSpecInfo();