summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2010-04-25 17:15:56 +0100
committerJosé Fonseca <jfonseca@vmware.com>2010-04-25 23:41:48 +0100
commit2cd128ab443addeb6e013f80d7c3f6639a66b2f1 (patch)
tree42115c18b73ab2fd39d5922d6603e7bce1aa0d74
parent53e94bd4adb218c5974c522389c3bcf40f3fa7e8 (diff)
llvmpipe: No need to flush the caches for buffers.
-rw-r--r--src/gallium/drivers/llvmpipe/lp_flush.c24
-rw-r--r--src/gallium/drivers/llvmpipe/lp_flush.h2
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,