fix HP occlusion testing when using generic span path
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 24 Jun 2004 16:35:18 +0000 (16:35 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 24 Jun 2004 16:35:18 +0000 (16:35 +0000)
src/mesa/swrast/s_span.c
src/mesa/swrast/s_triangle.c
src/mesa/swrast/s_tritemp.h

index 41db42e2b80726689fe1b1fdf39acdb224fab2f3..0627dea9ddf01742d5d26a7028c4f21a3abaf4d4 100644 (file)
@@ -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];
index 8c2ba368c04550e2d6a546888b478632852f4b7a..5c8d1ebe294eeaaf69519fc2e04c1859b1191c76 100644 (file)
@@ -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);                                    \
index 89f7d29bf841c2ef22195de794aba9f4492373e8..a1a51c4aaa9b2f8a32235a6ac19d28b48e9d2ebb 100644 (file)
@@ -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