diff options
author | Brian <brian.paul@tungstengraphics.com> | 2007-10-19 10:10:08 -0600 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2007-10-19 10:10:08 -0600 |
commit | 2b2f761e2b0dc160793be2f48e811d2d455e1e22 (patch) | |
tree | 390bd4395ff8f92a84c586142e3703bf32fad006 /src/mesa/pipe/softpipe/sp_flush.c | |
parent | 46c3cf18315345effd15a69987294c1195843e2a (diff) |
Initial implementation of surface tile caching.
Instead of using read/write_quad() functions, do framebuffer accesses via
get/put_tile(). A cache of tiles is used to avoid frequent get/put() calls.
Only implemented for color buffers right now.
Diffstat (limited to 'src/mesa/pipe/softpipe/sp_flush.c')
-rw-r--r-- | src/mesa/pipe/softpipe/sp_flush.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mesa/pipe/softpipe/sp_flush.c b/src/mesa/pipe/softpipe/sp_flush.c index cdf4a53c83..d4eada8228 100644 --- a/src/mesa/pipe/softpipe/sp_flush.c +++ b/src/mesa/pipe/softpipe/sp_flush.c @@ -33,8 +33,11 @@ #include "pipe/p_defines.h" #include "sp_flush.h" #include "sp_context.h" +#include "sp_surface.h" +#include "sp_tile_cache.h" #include "sp_winsys.h" + /* There will be actual work to do here. In future we may want a * fence-like interface instead of finish, and perhaps flush will take * flags to indicate what type of flush is required. @@ -43,9 +46,18 @@ void softpipe_flush( struct pipe_context *pipe, unsigned flags ) { + struct softpipe_context *softpipe = softpipe_context(pipe); + uint i; + /* - flush the quad pipeline * - flush the texture cache * - flush the render cache */ + + for (i = 0; i < softpipe->framebuffer.num_cbufs; i++) { + struct softpipe_surface *sps = softpipe_surface(softpipe->framebuffer.cbufs[i]); + if (sps) + sp_flush_tile_cache(sps); + } } |