[dxvk] Only pass requried spec constants when compiling compute pipelines

This commit is contained in:
Philip Rebohle 2022-07-30 16:00:28 +02:00
parent b90f8819c6
commit 47794b661e
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
1 changed files with 9 additions and 3 deletions

View File

@ -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();