aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/include
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-12-21 17:03:22 +0100
committerMarek Olšák <[email protected]>2013-01-04 13:18:33 +0100
commit598cc1f74d7ae924e84dee801b456ab7b0b22f84 (patch)
tree5dcbab29d7ed274768892a9890fd1dec5f964a6d /src/gallium/include
parent4ad5ebaefa3c5918001a40ed6099521aa0142c95 (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.h6
-rw-r--r--src/gallium/include/pipe/p_defines.h6
-rw-r--r--src/gallium/include/state_tracker/st_api.h1
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.