[Mesa-dev] [PATCH 4/4] gallium: add interface for writable shader buffers
Ilia Mirkin
imirkin at alum.mit.edu
Thu Jul 9 15:22:46 PDT 2015
This all seems fine to me. This series is:
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Might want to wait for someone more experienced with all this to also
take a look before pushing.
-ilia
On Thu, Jul 9, 2015 at 5:46 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
> src/gallium/include/pipe/p_context.h | 18 ++++++++++++++++++
> src/gallium/include/pipe/p_state.h | 10 ++++++++++
> 2 files changed, 28 insertions(+)
>
> diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
> index 022ace5..b4512e7 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 f655dda..b269a23 100644
> --- a/src/gallium/include/pipe/p_state.h
> +++ b/src/gallium/include/pipe/p_state.h
> @@ -490,6 +490,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.
> *
> --
> 2.1.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list