[Mesa-dev] [PATCH] st/mesa: set the new pipe_surface::alpha_one field for RGB surfaces

Ilia Mirkin imirkin at alum.mit.edu
Fri Jun 24 15:16:37 UTC 2016


On Fri, Jun 24, 2016 at 10:43 AM, Brian Paul <brianp at vmware.com> wrote:
> This indicates the alpha channel of the surface should always be one.
> Drivers can use this to adjust blending terms when needed.
>
> v2: also check for R, RG, LUMINANCE surfaces, per Ilia
> ---
>  src/mesa/state_tracker/st_cb_fbo.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
> index 9801b1f..843ff83 100644
> --- a/src/mesa/state_tracker/st_cb_fbo.c
> +++ b/src/mesa/state_tracker/st_cb_fbo.c
> @@ -216,6 +216,11 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx,
>        return FALSE;
>
>     u_surface_default_template(&surf_tmpl, strb->texture);
> +   surf_tmpl.alpha_one = (strb->Base._BaseFormat == GL_RGB ||
> +                          strb->Base._BaseFormat == GL_RG ||
> +                          strb->Base._BaseFormat == GL_R ||

I know I'm the one who said GL_R, but actually this probably needs to
be GL_RED... not sure where GL_R is used. With that touched up,

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

> +                          strb->Base._BaseFormat == GL_LUMINANCE);
> +
>     strb->surface = pipe->create_surface(pipe,
>                                          strb->texture,
>                                          &surf_tmpl);
> @@ -463,6 +468,10 @@ st_update_renderbuffer_surface(struct st_context *st,
>        /* create a new pipe_surface */
>        struct pipe_surface surf_tmpl;
>        memset(&surf_tmpl, 0, sizeof(surf_tmpl));
> +      surf_tmpl.alpha_one = (strb->Base._BaseFormat == GL_RGB ||
> +                             strb->Base._BaseFormat == GL_RG ||
> +                             strb->Base._BaseFormat == GL_R ||
> +                             strb->Base._BaseFormat == GL_LUMINANCE);
>        surf_tmpl.format = format;
>        surf_tmpl.u.tex.level = level;
>        surf_tmpl.u.tex.first_layer = first_layer;
> --
> 1.9.1
>


More information about the mesa-dev mailing list