[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