---
 src/gallium/drivers/radeonsi/radeonsi_shader.c | 32 ++++++++++++++++++--------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c 
b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index 867a385..7e3ac5a 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -1353,17 +1353,31 @@ static void tex_fetch_args(
 
                        assert(inst->Texture.NumOffsets == 1);
 
-                       address[0] =
-                               lp_build_add(uint_bld, address[0],
-                                            
bld->immediates[off->Index][off->SwizzleX]);
-                       if (num_coords > 1)
+                       switch (target) {
+                       case TGSI_TEXTURE_3D:
+                               address[2] = lp_build_add(uint_bld, address[2],
+                                               
bld->immediates[off->Index][off->SwizzleZ]);
+                               /* fall through */
+                       case TGSI_TEXTURE_2D:
+                       case TGSI_TEXTURE_SHADOW2D:
+                       case TGSI_TEXTURE_RECT:
+                       case TGSI_TEXTURE_SHADOWRECT:
+                       case TGSI_TEXTURE_2D_ARRAY:
+                       case TGSI_TEXTURE_SHADOW2D_ARRAY:
                                address[1] =
                                        lp_build_add(uint_bld, address[1],
-                                                    
bld->immediates[off->Index][off->SwizzleY]);
-                       if (num_coords > 2)
-                               address[2] =
-                                       lp_build_add(uint_bld, address[2],
-                                                    
bld->immediates[off->Index][off->SwizzleZ]);
+                                               
bld->immediates[off->Index][off->SwizzleY]);
+                               /* fall through */
+                       case TGSI_TEXTURE_1D:
+                       case TGSI_TEXTURE_SHADOW1D:
+                       case TGSI_TEXTURE_1D_ARRAY:
+                       case TGSI_TEXTURE_SHADOW1D_ARRAY:
+                               address[0] =
+                                       lp_build_add(uint_bld, address[0],
+                                               
bld->immediates[off->Index][off->SwizzleX]);
+                               break;
+                               /* texture offsets do not apply to other 
texture targets */
+                       }
                }
 
                emit_data->dst_type = LLVMVectorType(
-- 
1.8.1.2

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

Reply via email to