diff options
author | Marek Olšák <[email protected]> | 2015-07-05 15:00:22 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2015-07-16 16:52:21 +0200 |
commit | 8fba933ca2dd3c3487281135a9063b6ca9bed359 (patch) | |
tree | 51e854f7e9a568758930bc55530d6fd47358148b | |
parent | 05a12c53a308965aba1c00f0caf36d8e0f32e035 (diff) |
gallium: add interface for writable shader buffers
Reviewed-by: Ilia Mirkin <[email protected]>
-rw-r--r-- | src/gallium/include/pipe/p_context.h | 18 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_state.h | 10 |
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. * |