radeonsi: fix samplerCubeShadow with bias
authorMarek Olšák <marek.olsak@amd.com>
Fri, 4 Jul 2014 01:19:58 +0000 (03:19 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 11 Jul 2014 17:36:29 +0000 (19:36 +0200)
Pack the depth value before overwriting it with cube coordinates.

Cc: mesa-stable@lists.freedesktop.org
src/gallium/drivers/radeonsi/si_shader.c

index 07d9833..7bff8f9 100644 (file)
@@ -1634,12 +1634,6 @@ static void tex_fetch_args(
        if (opcode == TGSI_OPCODE_TXB2)
                address[count++] = lp_build_emit_fetch(bld_base, inst, 1, 0);
 
-       if (target == TGSI_TEXTURE_CUBE ||
-           target == TGSI_TEXTURE_CUBE_ARRAY ||
-           target == TGSI_TEXTURE_SHADOWCUBE ||
-           target == TGSI_TEXTURE_SHADOWCUBE_ARRAY)
-               radeon_llvm_emit_prepare_cube_coords(bld_base, emit_data, coords);
-
        /* Pack depth comparison value */
        if (tgsi_is_shadow_sampler(target) && opcode != TGSI_OPCODE_LODQ) {
                if (target == TGSI_TEXTURE_SHADOWCUBE_ARRAY) {
@@ -1650,6 +1644,12 @@ static void tex_fetch_args(
                }
        }
 
+       if (target == TGSI_TEXTURE_CUBE ||
+           target == TGSI_TEXTURE_CUBE_ARRAY ||
+           target == TGSI_TEXTURE_SHADOWCUBE ||
+           target == TGSI_TEXTURE_SHADOWCUBE_ARRAY)
+               radeon_llvm_emit_prepare_cube_coords(bld_base, emit_data, coords);
+
        /* Pack user derivatives */
        if (opcode == TGSI_OPCODE_TXD) {
                for (chan = 0; chan < 2; chan++) {