mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-17 19:20:30 +01:00
llvmpipe: avoid flushing depth buffer cache on swapbuffers
There's no need to push out depth buffer contents on swapbuffers. Note that this change doesn't throw away depth buffer changes, it simply holds them in the cache over calls to swapbuffers. The hope is that swapbuffers will be followed by a clear() which means in that case we won't have to write the changes out.
This commit is contained in:
parent
3adca96114
commit
2a7c39a211
2 changed files with 16 additions and 9 deletions
|
|
@ -72,13 +72,10 @@ llvmpipe_unmap_transfers(struct llvmpipe_context *lp)
|
|||
{
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < lp->framebuffer.nr_cbufs; i++)
|
||||
lp_flush_tile_cache(lp->cbuf_cache[i]);
|
||||
lp_flush_tile_cache(lp->zsbuf_cache);
|
||||
|
||||
for (i = 0; i < lp->framebuffer.nr_cbufs; i++) {
|
||||
lp_tile_cache_unmap_transfers(lp->cbuf_cache[i]);
|
||||
}
|
||||
|
||||
lp_tile_cache_unmap_transfers(lp->zsbuf_cache);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,14 +56,16 @@ llvmpipe_flush( struct pipe_context *pipe,
|
|||
}
|
||||
}
|
||||
|
||||
if (flags & PIPE_FLUSH_RENDER_CACHE) {
|
||||
if (flags & PIPE_FLUSH_SWAPBUFFERS) {
|
||||
/* If this is a swapbuffers, just flush color buffers.
|
||||
*
|
||||
* The zbuffer changes are not discarded, but held in the cache
|
||||
* in the hope that a later clear will wipe them out.
|
||||
*/
|
||||
for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++)
|
||||
if (llvmpipe->cbuf_cache[i])
|
||||
lp_flush_tile_cache(llvmpipe->cbuf_cache[i]);
|
||||
|
||||
if (llvmpipe->zsbuf_cache)
|
||||
lp_flush_tile_cache(llvmpipe->zsbuf_cache);
|
||||
|
||||
/* Need this call for hardware buffers before swapbuffers.
|
||||
*
|
||||
* there should probably be another/different flush-type function
|
||||
|
|
@ -71,7 +73,15 @@ llvmpipe_flush( struct pipe_context *pipe,
|
|||
* to unmap surfaces when flushing.
|
||||
*/
|
||||
llvmpipe_unmap_transfers(llvmpipe);
|
||||
|
||||
}
|
||||
else if (flags & PIPE_FLUSH_RENDER_CACHE) {
|
||||
for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++)
|
||||
if (llvmpipe->cbuf_cache[i])
|
||||
lp_flush_tile_cache(llvmpipe->cbuf_cache[i]);
|
||||
|
||||
if (llvmpipe->zsbuf_cache)
|
||||
lp_flush_tile_cache(llvmpipe->zsbuf_cache);
|
||||
|
||||
llvmpipe->dirty_render_cache = FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue