[Mesa-dev] [PATCHv2 1/3] gallium: add interface to clear buffers

Brian Paul brianp at vmware.com
Tue Mar 25 16:57:42 PDT 2014


On 03/25/2014 05:23 PM, Ilia Mirkin wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>
> v1 -> v2: add docs section to context.rst
>
>   src/gallium/docs/source/context.rst  |  5 +++++
>   src/gallium/include/pipe/p_context.h | 11 +++++++++++
>   2 files changed, 16 insertions(+)
>
> diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst
> index 8e14522..efa2a1c 100644
> --- a/src/gallium/docs/source/context.rst
> +++ b/src/gallium/docs/source/context.rst
> @@ -218,6 +218,11 @@ is is also possible to only clear one or the other part). While it is only
>   possible to clear one surface at a time (which can include several layers),
>   this surface need not be bound to the framebuffer.
>
> +``clear_buffer`` clears a PIPE_BUFFER resource with the specified clear value
> +(which may be multiple bytes in length). Logically this is a memset with a
> +multi-byte element value starting at offset bytes from resource start, going
> +for size bytes. It is guaranteed that size % clear_value_size == 0.
> +
>
>   Drawing
>   ^^^^^^^
> diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
> index fe3045a..bf27285 100644
> --- a/src/gallium/include/pipe/p_context.h
> +++ b/src/gallium/include/pipe/p_context.h
> @@ -332,6 +332,17 @@ struct pipe_context {
>                                  unsigned dstx, unsigned dsty,
>                                  unsigned width, unsigned height);
>
> +   /**
> +    * Clear a buffer. Runs a memset over the specified region with the element
> +    * value passed in through clear_value of size clear_value_size.
> +    */
> +   void (*clear_buffer)(struct pipe_context *pipe,
> +                        struct pipe_resource *res,
> +                        unsigned offset,
> +                        unsigned size,
> +                        const void *clear_value,
> +                        int clear_value_size);
> +
>      /** Flush draw commands
>       *
>       * \param flags  bitfield of enum pipe_flush_flags values.
>

Looking ahead a bit, if/when we support GL_ARB_clear_texture I wonder if 
we'll want to have just one pipe_context function for both purposes.
We'd probably replace offset and size above with a mipmap level and 
x,y,z,w,h,d parameters.

Do you have any thoughts on that?

-Brian



More information about the mesa-dev mailing list