Mesa (master): st/mesa: clean up the sampler view format code

Brian Paul brianp at kemper.freedesktop.org
Thu Jan 20 16:48:26 UTC 2011


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Jan 20 08:51:07 2011 -0700

st/mesa: clean up the sampler view format code

---

 src/mesa/state_tracker/st_atom_texture.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index eb8bbeb..fd03669 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -218,22 +218,29 @@ update_textures(struct st_context *st)
             continue;
          }
 
+         /* Determine the format of the texture sampler view */
 	 st_view_format = stObj->pt->format;
 	 {
-	    struct st_texture_image *firstImage;
-	    enum pipe_format firstImageFormat;
-	    firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
+	    const struct st_texture_image *firstImage =
+               st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
+            const gl_format texFormat = firstImage->base.TexFormat;
+	    enum pipe_format firstImageFormat =
+               st_mesa_format_to_pipe_format(texFormat);
 
-	    firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
 	    if ((stObj->base.sRGBDecode == GL_SKIP_DECODE_EXT) &&
-                (_mesa_get_format_color_encoding(firstImage->base.TexFormat) == GL_SRGB)) {
-	       firstImageFormat = st_mesa_format_to_pipe_format(_mesa_get_srgb_format_linear(firstImage->base.TexFormat));
+                (_mesa_get_format_color_encoding(texFormat) == GL_SRGB)) {
+               /* don't do sRGB->RGB conversion.  Interpret the texture
+                * texture data as linear values.
+                */
+               const gl_format linearFormat =
+                  _mesa_get_srgb_format_linear(texFormat);
+	       firstImageFormat = st_mesa_format_to_pipe_format(linearFormat);
 	    }
 
 	    if (firstImageFormat != stObj->pt->format)
 	       st_view_format = firstImageFormat;
-
 	 }
+
          st->state.num_textures = su + 1;
 
 	 /* if sampler view has changed dereference it */




More information about the mesa-commit mailing list