So X can't be sourced from W for sRGB formats.
---
 src/mesa/drivers/dri/r600/r600_blit.c     |   10 ++++++----
 src/mesa/drivers/dri/r600/r600_texstate.c |   11 +++++++----
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r600_blit.c 
b/src/mesa/drivers/dri/r600/r600_blit.c
index 172f85e..8dff6e6 100644
--- a/src/mesa/drivers/dri/r600/r600_blit.c
+++ b/src/mesa/drivers/dri/r600/r600_blit.c
@@ -1047,13 +1047,15 @@ set_tex_resource(context_t * context,
            SETfield(sq_tex_resource1, FMT_8_8_8_8,
                     SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, 
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
 
-           SETfield(sq_tex_resource4, SQ_SEL_W,
+           SETfield(sq_tex_resource4, SQ_ENDIAN_8IN32,
+                    SQ_TEX_RESOURCE_WORD4_0__ENDIAN_SWAP_shift, 
SQ_TEX_RESOURCE_WORD4_0__ENDIAN_SWAP_mask);
+           SETfield(sq_tex_resource4, SQ_SEL_X,
                     SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
-           SETfield(sq_tex_resource4, SQ_SEL_Z,
-                    SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
            SETfield(sq_tex_resource4, SQ_SEL_Y,
+                    SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+           SETfield(sq_tex_resource4, SQ_SEL_Z,
                     SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
-           SETfield(sq_tex_resource4, SQ_SEL_X,
+           SETfield(sq_tex_resource4, SQ_SEL_W,
                     SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
            SETbit(sq_tex_resource4, 
SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit);
            break;
diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c 
b/src/mesa/drivers/dri/r600/r600_texstate.c
index 1600033..38dbaec 100644
--- a/src/mesa/drivers/dri/r600/r600_texstate.c
+++ b/src/mesa/drivers/dri/r600/r600_texstate.c
@@ -84,6 +84,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object 
*tObj, gl_format mesa
        CLEARfield(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
        CLEARfield(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
        CLEARfield(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+       CLEARfield(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__ENDIAN_SWAP_mask);
        CLEARbit(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit);
 
        SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_UNSIGNED,
@@ -609,13 +610,15 @@ static GLboolean r600GetTexFormat(struct 
gl_texture_object *tObj, gl_format mesa
                SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
                         SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, 
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
 
-               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+               SETfield(t->SQ_TEX_RESOURCE4, SQ_ENDIAN_8IN32,
+                        SQ_TEX_RESOURCE_WORD4_0__ENDIAN_SWAP_shift, 
SQ_TEX_RESOURCE_WORD4_0__ENDIAN_SWAP_mask);
+               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
                         SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
-               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
-                        SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
                SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+                        SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
                         SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
-               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
                         SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
                SETbit(t->SQ_TEX_RESOURCE4, 
SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit);
                break;
-- 
1.7.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to