diff options
author | Eric Anholt <[email protected]> | 2011-12-02 17:32:53 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2011-12-14 13:17:45 -0800 |
commit | 657f3214e7b2df525fb0637f764682c1157b766e (patch) | |
tree | 0c5e6fbad2685ac823e9c48caba17122c9eeeb63 /src/mesa | |
parent | 5d1de8bc7d83a20ed5ace7b408e7d3e1da7f9087 (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]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/swrast/s_drawpix.c | 6 |
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; |