Mesa (master): Fix an i965 assertion failure on glClear()

Robert Ellison papillo at kemper.freedesktop.org
Thu Feb 12 01:05:28 UTC 2009


Module: Mesa
Branch: master
Commit: 0ccbc3c905f0594a35d72887a1f115e148aaa596
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ccbc3c905f0594a35d72887a1f115e148aaa596

Author: Robert Ellison <papillo at i965-laptop.(none)>
Date:   Wed Feb 11 18:01:34 2009 -0700

Fix an i965 assertion failure on glClear()

While running conform with render-to-texture:

	conform -d 33 -v 2 -t -direct

the i965 driver failed this assertion:

intel_clear.c:77: intel_clear_tris: Assertion `(mask & ~((1 << BUFFER_BACK_LEFT) | (1 << BUFFER_FRONT_LEFT) | (1 << BUFFER_DEPTH) | (1 << BUFFER_STENCIL))) == 0' failed.

The problem is that intel_clear_tris() is called by intelClear() to
clear any and all of the available color buffers, but intel_clear_tris()
actually only handles the back left and front left color buffers; so
the assertion fails as soon as you try to clear a non-standard color
buffer.

The fix is to have intelClear() only call intel_clear_tris() with
buffers that intel_clear_tris() can support.  intelClear() already backs
down to _swrast_Clear() for all buffers that aren't handled explicitly.

---

 src/mesa/drivers/dri/intel/intel_clear.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c
index a47c4d4..b229136 100644
--- a/src/mesa/drivers/dri/intel/intel_clear.c
+++ b/src/mesa/drivers/dri/intel/intel_clear.c
@@ -275,7 +275,7 @@ intelClear(GLcontext *ctx, GLbitfield mask)
    }
    else {
       /* glColorMask in effect */
-      tri_mask |= (mask & BUFFER_BITS_COLOR);
+      tri_mask |= (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT));
    }
 
    /* HW stencil */




More information about the mesa-commit mailing list