Module: Mesa
Branch: master
Commit: 9ab19a39001ab5b6afa71a4d1f16714e6907b67c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ab19a39001ab5b6afa71a4d1f16714e6907b67c

Author: Alex Deucher <[email protected]>
Date:   Fri Sep  4 18:45:09 2009 -0400

r600: add support for EXT_texture_sRGB

---

 src/mesa/drivers/dri/r600/r600_context.c  |    1 +
 src/mesa/drivers/dri/r600/r600_texstate.c |   43 +++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r600_context.c 
b/src/mesa/drivers/dri/r600/r600_context.c
index 7a5bcd9..07a7bcf 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -130,6 +130,7 @@ const struct dri_extension card_extensions[] = {
   {"GL_EXT_texture_lod_bias",          NULL},
   {"GL_EXT_texture_mirror_clamp",      NULL},
   {"GL_EXT_texture_rectangle",         NULL},
+  {"GL_EXT_texture_sRGB",               NULL},
   {"GL_ATI_separate_stencil",          GL_ATI_separate_stencil_functions},
   {"GL_ATI_texture_env_combine3",      NULL},
   {"GL_ATI_texture_mirror_once",       NULL},
diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c 
b/src/mesa/drivers/dri/r600/r600_texstate.c
index 49b603b..fff6e74 100644
--- a/src/mesa/drivers/dri/r600/r600_texstate.c
+++ b/src/mesa/drivers/dri/r600/r600_texstate.c
@@ -531,6 +531,49 @@ static GLboolean r600GetTexFormat(struct gl_texture_object 
*tObj, GLuint mesa_fo
                        return GL_FALSE;
                }
                break;
+       /* EXT_texture_sRGB */
+       case MESA_FORMAT_SRGBA8:
+               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,
+                        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_Z_shift, 
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+               SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+                        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;
+       case MESA_FORMAT_SLA8:
+               SETfield(t->SQ_TEX_RESOURCE1, FMT_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_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_X,
+                        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_X,
+                        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_Y,
+                        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;
+       case MESA_FORMAT_SL8: /* X, X, X, ONE */
+               SETfield(t->SQ_TEX_RESOURCE1, FMT_8,
+                        SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, 
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_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_X,
+                        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_X,
+                        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_1,
+                        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;
        default:
                /* Not supported format */
                return GL_FALSE;

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

Reply via email to