summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2011-12-02 17:32:53 -0800
committerEric Anholt <[email protected]>2011-12-14 13:17:45 -0800
commit657f3214e7b2df525fb0637f764682c1157b766e (patch)
tree0c5e6fbad2685ac823e9c48caba17122c9eeeb63
parent5d1de8bc7d83a20ed5ace7b408e7d3e1da7f9087 (diff)
swrast: Don't do Z24S8 drawpixels fast-paths with Z32_X24S8 input data.
The cool part was that in the "fbo-depthstencil -drawpixels GL_DEPTH24_STENCIL8 32F_24_8_REV" testcase, the shifting happened to end up with a value awfully close to the expected value, except for every other pixel being 0 (the stencil value, shifted away to nothing). Reviewed-by: Brian Paul <[email protected]>
-rw-r--r--src/mesa/swrast/s_drawpix.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c
index b6c433753af..7259881c19a 100644
--- a/src/mesa/swrast/s_drawpix.c
+++ b/src/mesa/swrast/s_drawpix.c
@@ -625,7 +625,8 @@ draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
GL_DEPTH_STENCIL_EXT, type, i, 0);
if (ctx->Depth.Mask) {
- if (!scaleOrBias && ctx->DrawBuffer->Visual.depthBits == 24) {
+ if (!scaleOrBias && ctx->DrawBuffer->Visual.depthBits == 24 &&
+ type == GL_UNSIGNED_INT_24_8) {
/* fast path 24-bit zbuffer */
GLuint zValues[MAX_WIDTH];
GLint j;
@@ -639,7 +640,8 @@ draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
else
depthRb->PutRow(ctx, depthRb, width, x, y + i, zValues,NULL);
}
- else if (!scaleOrBias && ctx->DrawBuffer->Visual.depthBits == 16) {
+ else if (!scaleOrBias && ctx->DrawBuffer->Visual.depthBits == 16 &&
+ type == GL_UNSIGNED_INT_24_8) {
/* fast path 16-bit zbuffer */
GLushort zValues[MAX_WIDTH];
GLint j;