summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2004-06-24 16:35:18 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2004-06-24 16:35:18 +0000
commit939dd17653245621bf7488803f09418244b7b0b7 (patch)
tree50eaa1558f277fdb8ccfb748eb1ddd73b56c3d1a
parentde67b3ea18c68f69e0303f1ba88dbb26066049de (diff)
fix HP occlusion testing when using generic span path
-rw-r--r--src/mesa/swrast/s_span.c15
-rw-r--r--src/mesa/swrast/s_triangle.c1
-rw-r--r--src/mesa/swrast/s_tritemp.h4
3 files changed, 12 insertions, 8 deletions
diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c
index 41db42e2b8..0627dea9dd 100644
--- a/src/mesa/swrast/s_span.c
+++ b/src/mesa/swrast/s_span.c
@@ -939,10 +939,13 @@ _swrast_write_index_span( GLcontext *ctx, struct sw_span *span)
}
/* if we get here, something passed the depth test */
- ctx->OcclusionResult = GL_TRUE;
+ if (ctx->Depth.OcclusionTest) {
+ ctx->OcclusionResult = GL_TRUE;
+ }
#if FEATURE_ARB_occlusion_query
if (ctx->Occlusion.Active) {
+ /* update count of 'passed' fragments */
GLuint i;
for (i = 0; i < span->end; i++)
ctx->Occlusion.PassedCounter += span->array->mask[i];
@@ -1155,10 +1158,13 @@ _swrast_write_rgba_span( GLcontext *ctx, struct sw_span *span)
}
/* if we get here, something passed the depth test */
- ctx->OcclusionResult = GL_TRUE;
+ if (ctx->Depth.OcclusionTest) {
+ ctx->OcclusionResult = GL_TRUE;
+ }
#if FEATURE_ARB_occlusion_query
if (ctx->Occlusion.Active) {
+ /* update count of 'passed' fragments */
GLuint i;
for (i = 0; i < span->end; i++)
ctx->Occlusion.PassedCounter += span->array->mask[i];
@@ -1423,10 +1429,13 @@ _swrast_write_texture_span( GLcontext *ctx, struct sw_span *span)
}
/* if we get here, some fragments passed the depth test */
- ctx->OcclusionResult = GL_TRUE;
+ if (ctx->Depth.OcclusionTest) {
+ ctx->OcclusionResult = GL_TRUE;
+ }
#if FEATURE_ARB_occlusion_query
if (ctx->Occlusion.Active) {
+ /* update count of 'passed' fragments */
GLuint i;
for (i = 0; i < span->end; i++)
ctx->Occlusion.PassedCounter += span->array->mask[i];
diff --git a/src/mesa/swrast/s_triangle.c b/src/mesa/swrast/s_triangle.c
index 8c2ba368c0..5c8d1ebe29 100644
--- a/src/mesa/swrast/s_triangle.c
+++ b/src/mesa/swrast/s_triangle.c
@@ -900,7 +900,6 @@ fast_persp_span(GLcontext *ctx, struct sw_span *span,
* Special tri function for occlusion testing
*/
#define NAME occlusion_zless_triangle
-#define DO_OCCLUSION_TEST
#define INTERP_Z 1
#define SETUP_CODE \
ASSERT(ctx->Depth.Test); \
diff --git a/src/mesa/swrast/s_tritemp.h b/src/mesa/swrast/s_tritemp.h
index 89f7d29bf8..a1a51c4aaa 100644
--- a/src/mesa/swrast/s_tritemp.h
+++ b/src/mesa/swrast/s_tritemp.h
@@ -304,9 +304,6 @@ static void NAME(GLcontext *ctx, const SWvertex *v0,
oneOverArea = 1.0F / area;
}
-#ifndef DO_OCCLUSION_TEST
- ctx->OcclusionResult = GL_TRUE;
-#endif
span.facing = ctx->_Facing; /* for 2-sided stencil test */
/* Edge setup. For a triangle strip these could be reused... */
@@ -1329,5 +1326,4 @@ static void NAME(GLcontext *ctx, const SWvertex *v0,
#undef InterpToInt
#undef INTERP_ONE
-#undef DO_OCCLUSION_TEST
#undef NAME