Module: Mesa
Branch: texture_rg-2
Commit: d3507ec738f71f6b012ab06d6249b66c57904ab8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3507ec738f71f6b012ab06d6249b66c57904ab8

Author: Ian Romanick <[email protected]>
Date:   Fri Nov 20 14:54:12 2009 -0800

ARB_texture_rg: Add GL_RED as a valid GL_DEPTH_TEXTURE_MODE

With these changes, i965 passes piglit's depth-tex-modes-rg.

---

 src/mesa/drivers/dri/i965/brw_defines.h          |    2 +-
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |   13 +++++++------
 src/mesa/main/texparam.c                         |    3 ++-
 src/mesa/main/texstate.c                         |    6 ++++++
 src/mesa/swrast/s_texfilter.c                    |    3 +++
 5 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_defines.h 
b/src/mesa/drivers/dri/i965/brw_defines.h
index c19510b..4df1f7b 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -322,7 +322,7 @@
 #define BRW_SURFACEFORMAT_R32_SINT                       0x0D6 
 #define BRW_SURFACEFORMAT_R32_UINT                       0x0D7 
 #define BRW_SURFACEFORMAT_R32_FLOAT                      0x0D8 
-#define BRW_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          0x0D9 
+#define BRW_SURFACEFORMAT_R24X8_UNORM                    0x0D9
 #define BRW_SURFACEFORMAT_X24_TYPELESS_G8_UINT           0x0DA 
 #define BRW_SURFACEFORMAT_L16A16_UNORM                   0x0DF 
 #define BRW_SURFACEFORMAT_I24X8_UNORM                    0x0E0 
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 
b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 829badc..2039d49 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -170,12 +170,13 @@ static GLuint translate_tex_format( gl_format mesa_format,
       /* XXX: these different surface formats don't seem to
        * make any difference for shadow sampler/compares.
        */
-      if (depth_mode == GL_INTENSITY) 
-         return BRW_SURFACEFORMAT_I24X8_UNORM;
-      else if (depth_mode == GL_ALPHA)
-         return BRW_SURFACEFORMAT_A24X8_UNORM;
-      else
-         return BRW_SURFACEFORMAT_L24X8_UNORM;
+      switch (depth_mode) {
+      case GL_INTENSITY: return BRW_SURFACEFORMAT_I24X8_UNORM;
+      case GL_ALPHA:     return BRW_SURFACEFORMAT_A24X8_UNORM;
+      case GL_LUMINANCE: return BRW_SURFACEFORMAT_L24X8_UNORM;
+      case GL_RED:       return BRW_SURFACEFORMAT_R24X8_UNORM;
+      default: assert(0); return 0;
+      }
 
    case MESA_FORMAT_DUDV8:
       return BRW_SURFACEFORMAT_R8G8_SNORM;
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index c93a979..70dbee6 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -356,7 +356,8 @@ set_tex_parameteri(GLcontext *ctx,
       if (ctx->Extensions.ARB_depth_texture &&
           (params[0] == GL_LUMINANCE ||
            params[0] == GL_INTENSITY ||
-           params[0] == GL_ALPHA)) {
+           params[0] == GL_ALPHA ||
+          (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED))) {
          if (texObj->DepthMode != params[0]) {
             flush(ctx, texObj);
             texObj->DepthMode = params[0];
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index c735e18..5fb31cc 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -181,6 +181,8 @@ calculate_derived_texenv( struct gl_tex_env_combine_state 
*state,
       break;
 
    case GL_LUMINANCE:
+   case GL_RED:
+   case GL_RG:
    case GL_RGB:
    case GL_YCBCR_MESA:
    case GL_DUDV_ATI:
@@ -221,6 +223,8 @@ calculate_derived_texenv( struct gl_tex_env_combine_state 
*state,
       case GL_INTENSITY:
         state->SourceRGB[0] = GL_PREVIOUS;
         break;
+      case GL_RED:
+      case GL_RG:
       case GL_RGB:
       case GL_YCBCR_MESA:
       case GL_DUDV_ATI:
@@ -246,6 +250,8 @@ calculate_derived_texenv( struct gl_tex_env_combine_state 
*state,
         state->OperandA[2] = GL_SRC_ALPHA;
         /* FALLTHROUGH */
       case GL_LUMINANCE:
+      case GL_RED:
+      case GL_RG:
       case GL_RGB:
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c
index 0bb988e..3436412 100644
--- a/src/mesa/swrast/s_texfilter.c
+++ b/src/mesa/swrast/s_texfilter.c
@@ -3018,6 +3018,9 @@ sample_depth_texture( GLcontext *ctx,
          case GL_ALPHA:
             ASSIGN_4V(texel[i], 0.0F, 0.0F, 0.0F, result);
             break;
+         case GL_RED:
+            ASSIGN_4V(texel[i], result, 0.0F, 0.0F, 1.0F);
+            break;
          default:
             _mesa_problem(ctx, "Bad depth texture mode");
          }

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

Reply via email to