radeonsi: Fix sampler offsets for shader intrinsic.
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 19 Apr 2012 08:35:31 +0000 (10:35 +0200)
committerMichel Dänzer <michel@daenzer.net>
Thu, 19 Apr 2012 17:59:54 +0000 (19:59 +0200)
The sampler number is in TGSI source register 1, and the S_LOAD_DWORD*
instructions take offsets in DWORDs, not bytes.

src/gallium/drivers/radeonsi/radeonsi_shader.c

index 50f2e39..33ba1cd 100644 (file)
@@ -450,12 +450,12 @@ static void tex_fetch_args(
        /* Resource */
        emit_data->args[2] = use_sgpr(bld_base->base.gallivm, SGPR_I64, 2);
        emit_data->args[3] = lp_build_const_int32(bld_base->base.gallivm,
-                                                 32 * emit_data->inst->Src[2].Register.Index);
+                                                 8 * emit_data->inst->Src[1].Register.Index);
 
        /* Sampler */
        emit_data->args[4] = use_sgpr(bld_base->base.gallivm, SGPR_I64, 1);
        emit_data->args[5] = lp_build_const_int32(bld_base->base.gallivm,
-                                                 16 * emit_data->inst->Src[2].Register.Index);
+                                                 4 * emit_data->inst->Src[1].Register.Index);
 
        /* Dimensions */
        /* XXX: We might want to pass this information to the shader at some. */