diff options
author | José Fonseca <[email protected]> | 2010-04-25 17:03:48 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-04-25 23:41:48 +0100 |
commit | 53e94bd4adb218c5974c522389c3bcf40f3fa7e8 (patch) | |
tree | bc8061898c4f8b0852645124a0c2a6cccdf16880 /src/gallium/drivers/softpipe/sp_flush.h | |
parent | 43b85af56efbe6eb06f4e62d23e9f6f583c5ec2e (diff) |
softpipe: Make softpipe transfers in-order.
Transfer, being now a context operation, should happen in order with
all other contexts operations. If there is rendering pending on the
resource then the driver must flush and potentially wait itself
internally.
Instead of avoiding using transfers internally (as done in llvmpipe) I've
opted to simply pass PIPE_TRANSFER_UNSYNCHRONIZED in all internal
transfers, to avoid infinite recursion.
Diffstat (limited to 'src/gallium/drivers/softpipe/sp_flush.h')
-rw-r--r-- | src/gallium/drivers/softpipe/sp_flush.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gallium/drivers/softpipe/sp_flush.h b/src/gallium/drivers/softpipe/sp_flush.h index 68d9b5fa835..cb97482a71b 100644 --- a/src/gallium/drivers/softpipe/sp_flush.h +++ b/src/gallium/drivers/softpipe/sp_flush.h @@ -28,10 +28,23 @@ #ifndef SP_FLUSH_H #define SP_FLUSH_H +#include "pipe/p_compiler.h" + struct pipe_context; struct pipe_fence_handle; -void softpipe_flush(struct pipe_context *pipe, unsigned flags, - struct pipe_fence_handle **fence); +void +softpipe_flush(struct pipe_context *pipe, unsigned flags, + struct pipe_fence_handle **fence); + +boolean +softpipe_flush_resource(struct pipe_context *pipe, + struct pipe_resource *texture, + unsigned face, + unsigned level, + unsigned flush_flags, + boolean read_only, + boolean cpu_access, + boolean do_not_block); #endif |