freedreno/a6xx: fix GPU crash on small render targets

Fixes dEQP-GLES2.functional.multisampled_render_to_texture.readpixels

Signed-off-by: Rob Clark <robdclark@chromium.org>
Acked-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 8eaa2d5021)
This commit is contained in:
Rob Clark 2019-05-31 07:07:57 -07:00 committed by Juan A. Suarez Romero
parent a37f10af7b
commit 3fce389c8b

View file

@ -640,6 +640,13 @@ set_blit_scissor(struct fd_batch *batch, struct fd_ringbuffer *ring)
blit_scissor.maxx = MIN2(pfb->width, batch->max_scissor.maxx);
blit_scissor.maxy = MIN2(pfb->height, batch->max_scissor.maxy);
/* NOTE: blob switches to CP_BLIT instead of CP_EVENT_WRITE:BLIT for
* small render targets. But since we align pitch to binw I think
* we can get away avoiding GPU hangs a simpler way, by just rounding
* up the blit scissor:
*/
blit_scissor.maxx = MAX2(blit_scissor.maxx, batch->ctx->screen->gmem_alignw);
OUT_PKT4(ring, REG_A6XX_RB_BLIT_SCISSOR_TL, 2);
OUT_RING(ring,
A6XX_RB_BLIT_SCISSOR_TL_X(blit_scissor.minx) |