gallium: in clear_stencil_buffer() check surface format to determine stencil clear...
authorBrian <brian.paul@tungstengraphics.com>
Thu, 13 Mar 2008 00:24:46 +0000 (18:24 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Thu, 13 Mar 2008 00:24:46 +0000 (18:24 -0600)
... as we do for the Z and Z+stencil cases

src/mesa/state_tracker/st_cb_clear.c

index eae40f2a4f1d0b4c90d4b2687354cc6d3d6b1a42..cc8a136292d3f0ed90ecc07c6389cf49ea72481d 100644 (file)
@@ -544,6 +544,15 @@ clear_stencil_buffer(GLcontext *ctx, struct gl_renderbuffer *rb)
 
       /* simple clear of whole buffer */
       GLuint clearValue = ctx->Stencil.Clear;
+
+      switch (strb->surface->format) {
+      case PIPE_FORMAT_S8Z24_UNORM:
+         clearValue <<= 24;
+         break;
+      default:
+         ; /* no-op, stencil value is in least significant bits */
+      }  
+
       ctx->st->pipe->clear(ctx->st->pipe, strb->surface, clearValue);
    }
 }