diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 8ed7090e5d5..e00c3e3b411 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -586,7 +586,8 @@ zink_binding(gl_shader_stage stage, VkDescriptorType type, int index) } else { uint32_t stage_offset = (uint32_t)stage * (PIPE_MAX_CONSTANT_BUFFERS + PIPE_MAX_SAMPLERS + - PIPE_MAX_SHADER_BUFFERS); + PIPE_MAX_SHADER_BUFFERS + + PIPE_MAX_SHADER_IMAGES); switch (type) { case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: @@ -602,6 +603,11 @@ zink_binding(gl_shader_stage stage, VkDescriptorType type, int index) assert(index < PIPE_MAX_SHADER_BUFFERS); return stage_offset + PIPE_MAX_CONSTANT_BUFFERS + PIPE_MAX_SHADER_SAMPLER_VIEWS + index; + case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: + case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: + assert(index < PIPE_MAX_SHADER_IMAGES); + return stage_offset + PIPE_MAX_CONSTANT_BUFFERS + PIPE_MAX_SHADER_SAMPLER_VIEWS + PIPE_MAX_SHADER_IMAGES + index; + default: unreachable("unexpected type"); }