summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2009-03-02 17:32:37 +0000
committerJosé Fonseca <jfonseca@vmware.com>2009-03-02 17:32:37 +0000
commit2c1d40a051187242d7e55c7755e0433d4fb9c93a (patch)
tree76c8053356fdb69c5c8415a3f6564cb0b5363d4d /src
parent802a5ff507e44eafe86b687f603d496c3846fd50 (diff)
pipebuffer: Wait for the GPU to finish reading too.
No real change, as we're not tracking relocations read/write access yet.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
index 91b55c8238..ede2af4460 100644
--- a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
+++ b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
@@ -296,9 +296,10 @@ fenced_buffer_map(struct pb_buffer *buf,
assert(!(flags & ~PIPE_BUFFER_USAGE_CPU_READ_WRITE));
flags &= PIPE_BUFFER_USAGE_CPU_READ_WRITE;
- /* Check for GPU read/write access */
- if(fenced_buf->flags & PIPE_BUFFER_USAGE_GPU_WRITE) {
- /* Wait for the GPU to finish writing */
+ /* Serialize writes */
+ if((fenced_buf->flags & PIPE_BUFFER_USAGE_GPU_WRITE) ||
+ ((fenced_buf->flags & PIPE_BUFFER_USAGE_GPU_READ) && (flags & PIPE_BUFFER_USAGE_CPU_WRITE))) {
+ /* Wait for the GPU to finish */
_fenced_buffer_finish(fenced_buf);
}