diff options
author | Marek Olšák <[email protected]> | 2012-12-21 17:03:22 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-01-04 13:18:33 +0100 |
commit | 598cc1f74d7ae924e84dee801b456ab7b0b22f84 (patch) | |
tree | 5dcbab29d7ed274768892a9890fd1dec5f964a6d /src/gallium/include | |
parent | 4ad5ebaefa3c5918001a40ed6099521aa0142c95 (diff) |
gallium: extend pipe_context::flush for it to accept an END_OF_FRAME flag
Usage with pipe_context:
pipe->flush(pipe, NULL, PIPE_FLUSH_END_OF_FRAME);
Usage with st_context_iface:
st->flush(st, ST_FLUSH_END_OF_FRAME, NULL);
The flag is only a hint for drivers. Radeon will use it for buffer eviction
heuristics in the kernel (e.g. for queries like how many frames have passed
since a buffer was used).
The flag is currently only generated by st/dri on SwapBuffers.
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Stéphane Marchesin <[email protected]>
Diffstat (limited to 'src/gallium/include')
-rw-r--r-- | src/gallium/include/pipe/p_context.h | 6 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_defines.h | 6 | ||||
-rw-r--r-- | src/gallium/include/state_tracker/st_api.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index c5dcae56501..7ed946e2ca9 100644 --- a/src/gallium/include/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h @@ -31,6 +31,7 @@ #include "p_compiler.h" #include "p_format.h" #include "p_video_enums.h" +#include "p_defines.h" #ifdef __cplusplus extern "C" { @@ -349,8 +350,9 @@ struct pipe_context { /** Flush draw commands */ - void (*flush)( struct pipe_context *pipe, - struct pipe_fence_handle **fence ); + void (*flush)(struct pipe_context *pipe, + struct pipe_fence_handle **fence, + enum pipe_flush_flags flags); /** * Create a view on a texture to be used by a shader stage. diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 5c4ce8bcfeb..4a0594fc1df 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -288,6 +288,12 @@ enum pipe_transfer_usage { }; +/** + * Flags for the flush function. + */ +enum pipe_flush_flags { + PIPE_FLUSH_END_OF_FRAME = (1 << 0) +}; /* * Resource binding flags -- state tracker must specify in advance all diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index 419f825696c..9f3d2a12cb4 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -158,6 +158,7 @@ enum st_context_resource_type { * Flush flags. */ #define ST_FLUSH_FRONT (1 << 0) +#define ST_FLUSH_END_OF_FRAME (1 << 1) /** * Value to st_manager->get_param function. |