summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2015-07-05 15:00:22 +0200
committerMarek Olšák <[email protected]>2015-07-16 16:52:21 +0200
commit8fba933ca2dd3c3487281135a9063b6ca9bed359 (patch)
tree51e854f7e9a568758930bc55530d6fd47358148b
parent05a12c53a308965aba1c00f0caf36d8e0f32e035 (diff)
gallium: add interface for writable shader buffers
Reviewed-by: Ilia Mirkin <[email protected]>
-rw-r--r--src/gallium/include/pipe/p_context.h18
-rw-r--r--src/gallium/include/pipe/p_state.h10
2 files changed, 28 insertions, 0 deletions
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
index 76873956cc0..f89dae98a2f 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -58,6 +58,7 @@ struct pipe_resource;
struct pipe_sampler_state;
struct pipe_sampler_view;
struct pipe_scissor_state;
+struct pipe_shader_buffer;
struct pipe_shader_state;
struct pipe_stencil_ref;
struct pipe_stream_output_target;
@@ -237,6 +238,23 @@ struct pipe_context {
const float default_inner_level[2]);
/**
+ * Bind an array of shader buffers that will be used by a shader.
+ * Any buffers that were previously bound to the specified range
+ * will be unbound.
+ *
+ * \param shader selects shader stage
+ * \param start_slot first buffer slot to bind.
+ * \param count number of consecutive buffers to bind.
+ * \param buffers array of pointers to the buffers to bind, it
+ * should contain at least \a count elements
+ * unless it's NULL, in which case no buffers will
+ * be bound.
+ */
+ void (*set_shader_buffers)(struct pipe_context *, unsigned shader,
+ unsigned start_slot, unsigned count,
+ struct pipe_shader_buffer *buffers);
+
+ /**
* Bind an array of images that will be used by a shader.
* Any images that were previously bound to the specified range
* will be unbound.
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 78dc5785332..a233610ead6 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -494,6 +494,16 @@ struct pipe_constant_buffer
/**
+ * An untyped shader buffer supporting loads, stores, and atomics.
+ */
+struct pipe_shader_buffer {
+ struct pipe_resource *buffer; /**< the actual buffer */
+ unsigned buffer_offset; /**< offset to start of data in buffer, in bytes */
+ unsigned buffer_size; /**< how much data can be read in shader */
+};
+
+
+/**
* A stream output target. The structure specifies the range vertices can
* be written to.
*