From 825200b2a2f2a9bcd3b017a4e45c93f70c31685f Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 1 Sep 2018 20:27:36 +0200 Subject: [PATCH] [dxvk] Don't change spec constant IDs that are no valid resource slots Fixes pipeline state-related specialization constants. --- src/dxvk/dxvk_shader.cpp | 6 ++++-- src/dxvk/dxvk_shader.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dxvk/dxvk_shader.cpp b/src/dxvk/dxvk_shader.cpp index 55af858d5..c597240b4 100644 --- a/src/dxvk/dxvk_shader.cpp +++ b/src/dxvk/dxvk_shader.cpp @@ -132,8 +132,10 @@ namespace dxvk { // Remap resource binding IDs uint32_t* code = spirvCode.data(); - for (uint32_t ofs : m_idOffsets) - code[ofs] = mapping.getBindingId(code[ofs]); + for (uint32_t ofs : m_idOffsets) { + if (code[ofs] < MaxNumResourceSlots) + code[ofs] = mapping.getBindingId(code[ofs]); + } return new DxvkShaderModule(vkd, this, spirvCode); } diff --git a/src/dxvk/dxvk_shader.h b/src/dxvk/dxvk_shader.h index fd515545a..e204ebc91 100644 --- a/src/dxvk/dxvk_shader.h +++ b/src/dxvk/dxvk_shader.h @@ -3,6 +3,7 @@ #include #include "dxvk_include.h" +#include "dxvk_limits.h" #include "dxvk_pipelayout.h" #include "../spirv/spirv_code_buffer.h"