https://bugs.freedesktop.org/show_bug.cgi?id=110897
--- Comment #28 from Richard Thier u9vata@gmail.com --- I still see the glitches with the following changes:
@@ -364,11 +369,21 @@ static void r300_clear(struct pipe_context* pipe, /* Clear. */ if (buffers) { /* Clear using the blitter. */ + + /* FIXME: Twoline HACKZ TO SAVE FLAGS THAT blitter_clear clears */ + bool tmp_zmask_clear_dirty = r300->zmask_clear.dirty; + bool tmp_hiz_clear_dirty = r300->hiz_clear.dirty; + r300_blitter_begin(r300, R300_CLEAR); util_blitter_clear(r300->blitter, width, height, 1, buffers, color, depth, stencil); + /* FIXME: two lines of hack! */ + r300->zmask_clear.dirty = tmp_zmask_clear_dirty; + r300->hiz_clear.dirty = tmp_hiz_clear_dirty; + r300_blitter_end(r300); - } else if (r300->zmask_clear.dirty || +/* TIPP: here maybe not else if, just an if should be present??? */ + } /*else*/ if (r300->zmask_clear.dirty || r300->hiz_clear.dirty || r300->cmask_clear.dirty) {
Even though we are now entering the things after this if and go where the zram clear emit is. Maybe this is not the problem...