freedreno/a6xx: fix lrz overflow

Running the complete deqp_gles2 seems to trigger an overflow in lrz
cmdstream.  We skip the blit clear fast-path if there have been any
draws (so mid-batch clears of any attached buffer hit the 3d pipe).
Which means it is safe to simply discard any lrz clear rendering.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3569>
This commit is contained in:
Rob Clark 2020-01-11 17:30:24 -08:00 committed by Marge Bot
parent 3e79c4f0ed
commit 2f4f46b708

View file

@ -350,16 +350,11 @@ fd6_clear_lrz(struct fd_batch *batch, struct fd_resource *zsbuf, double depth)
struct fd_ringbuffer *ring;
struct fd6_context *fd6_ctx = fd6_context(batch->ctx);
// TODO mid-frame clears (ie. app doing crazy stuff)?? Maybe worth
// splitting both clear and lrz clear out into their own rb's. And
// just throw away any draws prior to clear. (Anything not fullscreen
// clear, just fallback to generic path that treats it as a normal
// draw
if (!batch->lrz_clear) {
batch->lrz_clear = fd_submit_new_ringbuffer(batch->submit, 0x1000, 0);
if (batch->lrz_clear) {
fd_ringbuffer_del(batch->lrz_clear);
}
batch->lrz_clear = fd_submit_new_ringbuffer(batch->submit, 0x1000, 0);
ring = batch->lrz_clear;
emit_marker6(ring, 7);