Fix an i965 assertion failure on glClear()
authorRobert Ellison <papillo@i965-laptop.(none)>
Thu, 12 Feb 2009 01:01:34 +0000 (18:01 -0700)
committerRobert Ellison <papillo@i965-laptop.(none)>
Thu, 12 Feb 2009 01:05:19 +0000 (18:05 -0700)
commit0ccbc3c905f0594a35d72887a1f115e148aaa596
tree399783e289cb57cb921a2aa6518f9068a57fe475
parent8217f24f21a0ea9888a18ec7399d2d974a43d1cb
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