diff --git a/src/dxvk/dxvk_shader.cpp b/src/dxvk/dxvk_shader.cpp index 6fa9338f..aca093b2 100644 --- a/src/dxvk/dxvk_shader.cpp +++ b/src/dxvk/dxvk_shader.cpp @@ -115,6 +115,9 @@ namespace dxvk { bindingOffsets[varId].setOffset = ins.offset() + 3; } + if (ins.arg(2) == spv::DecorationSpecId && ins.arg(3) < MaxNumSpecConstants) + m_flags.set(DxvkShaderFlag::HasSpecConstants); + if (ins.arg(2) == spv::DecorationLocation && ins.arg(3) == 1) { m_o1LocOffset = ins.offset() + 3; o1VarId = ins.arg(1); diff --git a/src/dxvk/dxvk_shader.h b/src/dxvk/dxvk_shader.h index 40e2023b..56e0f6f5 100644 --- a/src/dxvk/dxvk_shader.h +++ b/src/dxvk/dxvk_shader.h @@ -39,6 +39,7 @@ namespace dxvk { enum DxvkShaderFlag : uint64_t { HasSampleRateShading, HasTransformFeedback, + HasSpecConstants, ExportsStencilRef, ExportsViewportIndexLayerFromVertexStage, };