intel: Set the swizzling for depth textures using the GL_RED depth mode.
authorEric Anholt <eric@anholt.net>
Thu, 9 Dec 2010 21:51:21 +0000 (13:51 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 9 Dec 2010 22:41:50 +0000 (14:41 -0800)
Fixes depth-tex-modes-rg.

src/mesa/drivers/dri/i965/brw_wm.c
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index e0aa3fd..656501b 100644 (file)
@@ -378,6 +378,10 @@ static void brw_wm_populate_key( struct brw_context *brw,
               swizzles[2] = SWIZZLE_ZERO;
            } else if (t->DepthMode == GL_LUMINANCE) {
               swizzles[3] = SWIZZLE_ONE;
+           } else if (t->DepthMode == GL_RED) {
+              swizzles[1] = SWIZZLE_ZERO;
+              swizzles[2] = SWIZZLE_ZERO;
+              swizzles[3] = SWIZZLE_ZERO;
            }
         }
 
index fb0e34e..ad74404 100644 (file)
@@ -139,6 +139,8 @@ static GLuint translate_tex_format( gl_format mesa_format,
          return BRW_SURFACEFORMAT_I16_UNORM;
       else if (depth_mode == GL_ALPHA)
          return BRW_SURFACEFORMAT_A16_UNORM;
+      else if (depth_mode == GL_RED)
+         return BRW_SURFACEFORMAT_R16_UNORM;
       else
          return BRW_SURFACEFORMAT_L16_UNORM;
 
@@ -174,6 +176,8 @@ static GLuint translate_tex_format( gl_format mesa_format,
          return BRW_SURFACEFORMAT_I24X8_UNORM;
       else if (depth_mode == GL_ALPHA)
          return BRW_SURFACEFORMAT_A24X8_UNORM;
+      else if (depth_mode == GL_RED)
+         return BRW_SURFACEFORMAT_R24_UNORM_X8_TYPELESS;
       else
          return BRW_SURFACEFORMAT_L24X8_UNORM;