diff options
author | José Fonseca <[email protected]> | 2010-04-25 17:15:56 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-04-25 23:41:48 +0100 |
commit | 2cd128ab443addeb6e013f80d7c3f6639a66b2f1 (patch) | |
tree | 42115c18b73ab2fd39d5922d6603e7bce1aa0d74 /src | |
parent | 53e94bd4adb218c5974c522389c3bcf40f3fa7e8 (diff) |
llvmpipe: No need to flush the caches for buffers.
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_flush.c | 24 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_flush.h | 2 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_flush.c b/src/gallium/drivers/llvmpipe/lp_flush.c index 470132d49fa..644b821957a 100644 --- a/src/gallium/drivers/llvmpipe/lp_flush.c +++ b/src/gallium/drivers/llvmpipe/lp_flush.c @@ -103,7 +103,7 @@ llvmpipe_flush( struct pipe_context *pipe, */ boolean llvmpipe_flush_resource(struct pipe_context *pipe, - struct pipe_resource *texture, + struct pipe_resource *resource, unsigned face, unsigned level, unsigned flush_flags, @@ -113,21 +113,23 @@ llvmpipe_flush_resource(struct pipe_context *pipe, { unsigned referenced; - referenced = pipe->is_resource_referenced(pipe, texture, face, level); + referenced = pipe->is_resource_referenced(pipe, resource, face, level); if ((referenced & PIPE_REFERENCED_FOR_WRITE) || ((referenced & PIPE_REFERENCED_FOR_READ) && !read_only)) { - /* - * TODO: The semantics of these flush flags are too obtuse. They should - * disappear and the pipe driver should just ensure that all visible - * side-effects happen when they need to happen. - */ - if (referenced & PIPE_REFERENCED_FOR_WRITE) - flush_flags |= PIPE_FLUSH_RENDER_CACHE; + if (resource->target != PIPE_BUFFER) { + /* + * TODO: The semantics of these flush flags are too obtuse. They should + * disappear and the pipe driver should just ensure that all visible + * side-effects happen when they need to happen. + */ + if (referenced & PIPE_REFERENCED_FOR_WRITE) + flush_flags |= PIPE_FLUSH_RENDER_CACHE; - if (referenced & PIPE_REFERENCED_FOR_READ) - flush_flags |= PIPE_FLUSH_TEXTURE_CACHE; + if (referenced & PIPE_REFERENCED_FOR_READ) + flush_flags |= PIPE_FLUSH_TEXTURE_CACHE; + } if (cpu_access) { /* diff --git a/src/gallium/drivers/llvmpipe/lp_flush.h b/src/gallium/drivers/llvmpipe/lp_flush.h index 1b38820b5a4..7b605681a93 100644 --- a/src/gallium/drivers/llvmpipe/lp_flush.h +++ b/src/gallium/drivers/llvmpipe/lp_flush.h @@ -39,7 +39,7 @@ llvmpipe_flush(struct pipe_context *pipe, unsigned flags, boolean llvmpipe_flush_resource(struct pipe_context *pipe, - struct pipe_resource *texture, + struct pipe_resource *resource, unsigned face, unsigned level, unsigned flush_flags, |