The dynamic_offset_offset in the descriptor set binding layout is
relative to the dynamic_offset_start for the set in the pipeline
layout.

Cc: 17.0 <[email protected]>
Signed-off-by: Fredrik Höglund <[email protected]>
---
 src/amd/common/ac_nir_to_llvm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index e472408b0c..a1fe2dd133 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -1777,15 +1777,17 @@ static LLVMValueRef visit_vulkan_resource_index(struct 
nir_to_llvm_context *ctx,
        unsigned desc_set = nir_intrinsic_desc_set(instr);
        unsigned binding = nir_intrinsic_binding(instr);
        LLVMValueRef desc_ptr = ctx->descriptor_sets[desc_set];
-       struct radv_descriptor_set_layout *layout = 
ctx->options->layout->set[desc_set].layout;
+       struct radv_pipeline_layout *pipeline_layout = ctx->options->layout;
+       struct radv_descriptor_set_layout *layout = 
pipeline_layout->set[desc_set].layout;
        unsigned base_offset = layout->binding[binding].offset;
        LLVMValueRef offset, stride;
 
        if (layout->binding[binding].type == 
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
            layout->binding[binding].type == 
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC) {
+               unsigned idx = 
pipeline_layout->set[desc_set].dynamic_offset_start +
+                       layout->binding[binding].dynamic_offset_offset;
                desc_ptr = ctx->push_constants;
-               base_offset = ctx->options->layout->push_constant_size;
-               base_offset +=  16 * 
layout->binding[binding].dynamic_offset_offset;
+               base_offset = pipeline_layout->push_constant_size + 16 * idx;
                stride = LLVMConstInt(ctx->i32, 16, false);
        } else
                stride = LLVMConstInt(ctx->i32, layout->binding[binding].size, 
false);
-- 
2.11.0

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to