diff options
author | Lucas Stach <[email protected]> | 2017-06-26 17:26:20 +0200 |
---|---|---|
committer | Lucas Stach <[email protected]> | 2017-07-14 17:13:12 +0200 |
commit | bccd21ee88f633efafb59d0ef8a42478f2faa90b (patch) | |
tree | ef19fee26b9321d2e4b575a0c87aab4590e9aa07 | |
parent | e9b3381715f55f4c6b0bc6bec3290fb1be338bb8 (diff) |
etnaviv: flush source TS before resolve
If we blit from a rendertarget or a depthstencil buffer there might still
be dirty data in the TS buffer which needs to be flushed out.
Fixes missing shadow tiles in glmark2 shadow.
Signed-off-by: Lucas Stach <[email protected]>
Reviewed-by: Philipp Zabel <[email protected]>
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c index 66c64445330..d9ff9624fa4 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c @@ -479,6 +479,10 @@ etna_try_rs_blit(struct pipe_context *pctx, etna_set_state(ctx->stream, VIVS_GL_FLUSH_CACHE, VIVS_GL_FLUSH_CACHE_COLOR | VIVS_GL_FLUSH_CACHE_DEPTH); etna_stall(ctx->stream, SYNC_RECIPIENT_RA, SYNC_RECIPIENT_PE); + + if (src->levels[blit_info->src.level].ts_size && + src->levels[blit_info->src.level].ts_valid) + etna_set_state(ctx->stream, VIVS_TS_FLUSH_CACHE, VIVS_TS_FLUSH_CACHE_FLUSH); } /* Set up color TS to source surface before blit, if needed */ |