Module: Mesa
Branch: msater
Commit: e9df79d6c8bddb66c90559fe933d499ec597e2e5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9df79d6c8bddb66c90559fe933d499ec597e2e5

Author: Dave Airlie <[email protected]>
Date:   Wed Aug 11 19:04:05 2010 +1000

mesa/st: add RG support for gallium drivers

passes depth-tex-modes-rg on softpipe and r300g

---

 src/mesa/state_tracker/st_atom_texture.c |   10 +++++++++-
 src/mesa/state_tracker/st_extensions.c   |    6 ++++++
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom_texture.c 
b/src/mesa/state_tracker/st_atom_texture.c
index 9811296..029b040 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -52,7 +52,7 @@
  *
  * \param format     PIPE_FORMAT_*.
  * \param swizzle    Texture swizzle, a bitmask computed using MAKE_SWIZZLE4.
- * \param depthmode  One of GL_LUMINANCE, GL_INTENSITY, GL_ALPHA.
+ * \param depthmode  One of GL_LUMINANCE, GL_INTENSITY, GL_ALPHA, GL_RED.
  */
 static GLuint apply_depthmode(enum pipe_format format,
                               GLuint swizzle, GLenum depthmode)
@@ -96,6 +96,14 @@ static GLuint apply_depthmode(enum pipe_format format,
             else if (swiz[i] < SWIZZLE_W)
                swiz[i] = SWIZZLE_ZERO;
          break;
+      case GL_RED:
+        /* Rewrite reads W to 1, XYZ to X00 */
+        for (i = 0; i < 4; i++)
+           if (swiz[i] == SWIZZLE_W)
+              swiz[i] = SWIZZLE_ONE;
+           else if (swiz[i] == SWIZZLE_Y || swiz[i] == SWIZZLE_Z)
+              swiz[i] = SWIZZLE_ZERO;
+        break;
    }
 
    return MAKE_SWIZZLE4(swiz[0], swiz[1], swiz[2], swiz[3]);
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 225f75e..9b09601 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -373,6 +373,12 @@ void st_init_extensions(struct st_context *st)
       ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
    }
 
+   if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW, 0)) {
+      ctx->Extensions.ARB_texture_rg = GL_TRUE;
+   }
+
    /* s3tc support */
    if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
                                    PIPE_TEXTURE_2D, 0,

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

Reply via email to