mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
swrast: fix EXT_depth_bounds_test
zMin and zMax can't use _DepthMaxF, because the test is done in Z32_UNORM. Probably a useless patch given how popular swrast is nowadays, but it helped create and validate the piglit test. v2: add an explicit cast to GLuint Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
97f58fb59a
commit
973988ab8d
1 changed files with 12 additions and 2 deletions
|
|
@ -419,8 +419,8 @@ _swrast_depth_bounds_test( struct gl_context *ctx, SWspan *span )
|
|||
struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
struct gl_renderbuffer *rb = fb->Attachment[BUFFER_DEPTH].Renderbuffer;
|
||||
GLubyte *zStart;
|
||||
GLuint zMin = (GLuint) (ctx->Depth.BoundsMin * fb->_DepthMaxF + 0.5F);
|
||||
GLuint zMax = (GLuint) (ctx->Depth.BoundsMax * fb->_DepthMaxF + 0.5F);
|
||||
GLuint zMin = (GLuint)((double)ctx->Depth.BoundsMin * 0xffffffff);
|
||||
GLuint zMax = (GLuint)((double)ctx->Depth.BoundsMax * 0xffffffff);
|
||||
GLubyte *mask = span->array->mask;
|
||||
const GLuint count = span->end;
|
||||
GLuint i;
|
||||
|
|
@ -444,6 +444,16 @@ _swrast_depth_bounds_test( struct gl_context *ctx, SWspan *span )
|
|||
zBufferVals = (const GLuint *) zStart;
|
||||
}
|
||||
else {
|
||||
/* Round the bounds to the precision of the zbuffer. */
|
||||
if (rb->Format == MESA_FORMAT_Z_UNORM16) {
|
||||
zMin = (zMin & 0xffff0000) | (zMin >> 16);
|
||||
zMax = (zMax & 0xffff0000) | (zMax >> 16);
|
||||
} else {
|
||||
/* 24 bits */
|
||||
zMin = (zMin & 0xffffff00) | (zMin >> 24);
|
||||
zMax = (zMax & 0xffffff00) | (zMax >> 24);
|
||||
}
|
||||
|
||||
/* unpack Z values into a temporary array */
|
||||
if (span->arrayMask & SPAN_XY) {
|
||||
get_z32_values(ctx, rb, count, span->array->x, span->array->y,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue