[Mesa-dev] [PATCH] gallium: add PIPE_BIND_BLENDABLE flag

Brian Paul brianp at vmware.com
Wed Oct 12 07:12:22 PDT 2011


On 10/10/2011 01:53 PM, Christoph Bumiller wrote:
> This is required for d3d1x's CheckFormatSupport query.
>
> It also seems generally useful for state trackers, which could
> choose alternative rendering paths or formats if blending would
> come at a significant performance loss.
> ---
>   src/gallium/docs/source/screen.rst   |    3 +++
>   src/gallium/include/pipe/p_defines.h |    9 +++++----
>   2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
> index 924858e..4a61835 100644
> --- a/src/gallium/docs/source/screen.rst
> +++ b/src/gallium/docs/source/screen.rst
> @@ -160,6 +160,9 @@ resources might be created and handled quite differently.
>   * ``PIPE_BIND_DEPTH_STENCIL``: A depth (Z) buffer and/or stencil buffer. Any
>     depth/stencil surface/resource attached to pipe_framebuffer_state::zsbuf must
>     have this flag set.
> +* ``PIPE_BIND_BLENDABLE``: Used in conjunction with PIPE_BIND_RENDER_TARGET to query
> +  whether a device supports blending for a given format.
> +  If surface creation succeeds with this flag set, the driver must emulate blending.
>   * ``PIPE_BIND_DISPLAY_TARGET``: A surface that can be presented to screen. Arguments to
>     pipe_screen::flush_front_buffer must have this flag set.
>   * ``PIPE_BIND_SAMPLER_VIEW``: A texture that may be sampled from in a fragment
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index acae4b1..447df35 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -295,10 +295,11 @@ enum pipe_transfer_usage {
>    */
>   #define PIPE_BIND_DEPTH_STENCIL        (1<<  0) /* create_surface */
>   #define PIPE_BIND_RENDER_TARGET        (1<<  1) /* create_surface */
> -#define PIPE_BIND_SAMPLER_VIEW         (1<<  2) /* create_sampler_view */
> -#define PIPE_BIND_VERTEX_BUFFER        (1<<  3) /* set_vertex_buffers */
> -#define PIPE_BIND_INDEX_BUFFER         (1<<  4) /* draw_elements */
> -#define PIPE_BIND_CONSTANT_BUFFER      (1<<  5) /* set_constant_buffer */
> +#define PIPE_BIND_BLENDABLE            (1<<  2) /* create_surface */
> +#define PIPE_BIND_SAMPLER_VIEW         (1<<  3) /* create_sampler_view */
> +#define PIPE_BIND_VERTEX_BUFFER        (1<<  4) /* set_vertex_buffers */
> +#define PIPE_BIND_INDEX_BUFFER         (1<<  5) /* draw_elements */
> +#define PIPE_BIND_CONSTANT_BUFFER      (1<<  6) /* set_constant_buffer */
>   #define PIPE_BIND_DISPLAY_TARGET       (1<<  8) /* flush_front_buffer */
>   #define PIPE_BIND_TRANSFER_WRITE       (1<<  9) /* get_transfer */
>   #define PIPE_BIND_TRANSFER_READ        (1<<  10) /* get_transfer */

So do we need to go in and add PIPE_BIND_BLENDABLE to all of our 
existing surface-create calls in the state tracker, etc?

-Brian


More information about the mesa-dev mailing list