radv: get correct offset into LDS for indexed vars.
authorDave Airlie <airlied@redhat.com>
Tue, 13 Mar 2018 19:41:53 +0000 (05:41 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 14 Mar 2018 01:18:54 +0000 (11:18 +1000)
This seems more correct to me, since if we have an array
of floats they'll be vec4 aligned, and if we do af[2],
we want the const index to increase by 2 slots in the non
compact case.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105464
Fixes: 94f9591995 (radv/ac: add support for TCS/TES inputs/outputs.)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_nir_to_llvm.c

index 056eb23ab6ead9e4bc275c2f0d2da1cf0ba90926..fccd97b6cfea2c55f8625fd455f02181bc2ecacf 100644 (file)
@@ -1239,7 +1239,7 @@ get_dw_address(struct radv_shader_context *ctx,
                                                    LLVMConstInt(ctx->ac.i32, 4, false), ""), "");
        else if (const_index && !compact_const_index)
                dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
-                                      LLVMConstInt(ctx->ac.i32, const_index, false), "");
+                                      LLVMConstInt(ctx->ac.i32, const_index * 4, false), "");
 
        dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
                               LLVMConstInt(ctx->ac.i32, param * 4, false), "");