On 01/09/2012 12:09 PM, Jose Fonseca wrote:
----- Original Message -----
We were comparing 32-bit Z buffer values against 16-bit fragment
values.
Need to do scaling like for the 24-bit case.
Triangle Z testing was OK since it didn't hit this code path.
---
src/mesa/swrast/s_depth.c | 36
+++++++++++++++++++++++++++++-------
1 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c
index 53f21cb..42724c7 100644
--- a/src/mesa/swrast/s_depth.c
+++ b/src/mesa/swrast/s_depth.c
@@ -205,6 +205,7 @@ _swrast_depth_clamp_span( struct gl_context *ctx,
SWspan *span )
/**
* Get array of 32-bit z values from the depth buffer. With
clipping.
+ * Note: the returned values are always in the range [0, 2^32-1].
*/
static void
get_z32_values(struct gl_context *ctx, struct gl_renderbuffer *rb,
@@ -235,6 +236,11 @@ get_z32_values(struct gl_context *ctx, struct
gl_renderbuffer *rb,
}
}
+
+/**
+ * Put an array of 32-bit z values into the depth buffer.
+ * Note: the z values are always in the range [0, 2^32-1].
+ */
static void
put_z32_values(struct gl_context *ctx, struct gl_renderbuffer *rb,
GLuint count, const GLint x[], const GLint y[],
@@ -284,8 +290,8 @@ _swrast_depth_test_span(struct gl_context *ctx,
SWspan *span)
void *zBufferVals;
GLuint *zBufferTemp = NULL;
GLuint passed;
+ GLuint zBits = _mesa_get_format_bits(rb->Format, GL_DEPTH_BITS);
GLboolean ztest16 = GL_FALSE;
is ztest16 still necessary?
Yes, for the case of depth-testing 16-bit Z values for a horizontal
run of pixels using a MESA_FORMAT_Z16 buffer, we can do an optimized
16-bit depth test.
Otherwise looks good.
-Brian
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev