summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeon/r600_texture.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/radeon/r600_texture.c')
-rw-r--r--src/gallium/drivers/radeon/r600_texture.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
index af206e43860..1df0c300e85 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -1293,6 +1293,7 @@ unsigned r600_translate_colorswap(enum pipe_format format)
break;
case 4:
/* check the middle channels, the 1st and 4th channel can be NONE */
+#ifdef PIPE_ARCH_LITTLE_ENDIAN
if (HAS_SWIZZLE(1,Y) && HAS_SWIZZLE(2,Z))
return V_0280A0_SWAP_STD; /* XYZW */
else if (HAS_SWIZZLE(1,Z) && HAS_SWIZZLE(2,Y))
@@ -1301,6 +1302,16 @@ unsigned r600_translate_colorswap(enum pipe_format format)
return V_0280A0_SWAP_ALT; /* ZYXW */
else if (HAS_SWIZZLE(1,X) && HAS_SWIZZLE(2,Y))
return V_0280A0_SWAP_ALT_REV; /* WXYZ */
+#else
+ if (HAS_SWIZZLE(1,W) && HAS_SWIZZLE(2,X))
+ return V_0280A0_SWAP_STD; /* ZWXY */
+ else if (HAS_SWIZZLE(1,X) && HAS_SWIZZLE(2,W))
+ return V_0280A0_SWAP_STD_REV; /* YXWZ */
+ else if (HAS_SWIZZLE(1,W) && HAS_SWIZZLE(2,Z))
+ return V_0280A0_SWAP_ALT; /* XWZY */
+ else if (HAS_SWIZZLE(1,Z) && HAS_SWIZZLE(2,W))
+ return V_0280A0_SWAP_ALT_REV; /* YZWX */
+#endif
break;
}
return ~0U;