diff options
Diffstat (limited to 'src/gallium/drivers/freedreno/freedreno_gmem.c')
-rw-r--r-- | src/gallium/drivers/freedreno/freedreno_gmem.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_gmem.c b/src/gallium/drivers/freedreno/freedreno_gmem.c index 37a2f33365d..1cd254b3629 100644 --- a/src/gallium/drivers/freedreno/freedreno_gmem.c +++ b/src/gallium/drivers/freedreno/freedreno_gmem.c @@ -135,6 +135,8 @@ calculate_tiles(struct fd_batch *batch) cbuf_cpp[i] = util_format_get_blocksize(pfb->cbufs[i]->format); else cbuf_cpp[i] = 4; + /* if MSAA, color buffers are super-sampled in GMEM: */ + cbuf_cpp[i] *= pfb->samples; } if (!memcmp(gmem->zsbuf_cpp, zsbuf_cpp, sizeof(zsbuf_cpp)) && @@ -393,9 +395,11 @@ fd_gmem_render_tiles(struct fd_batch *batch) if (ctx->emit_sysmem_prep && !batch->nondraw) { if (batch->cleared || batch->gmem_reason || - ((batch->num_draws > 5) && !batch->blit)) { - DBG("GMEM: cleared=%x, gmem_reason=%x, num_draws=%u", - batch->cleared, batch->gmem_reason, batch->num_draws); + ((batch->num_draws > 5) && !batch->blit) || + (pfb->samples > 1)) { + DBG("GMEM: cleared=%x, gmem_reason=%x, num_draws=%u, samples=%u", + batch->cleared, batch->gmem_reason, batch->num_draws, + pfb->samples); } else if (!(fd_mesa_debug & FD_DBG_NOBYPASS)) { sysmem = true; } |