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

Marek Olšák maraeo at gmail.com
Tue Jun 28 15:11:13 UTC 2016


I guess you need this because your driver doesn't support LUMINANCE
and st/mesa selects RGBA, right? In that case, you can just set RGBX
in pipe_surface::format and you don't need another flag.

It would be better to select RGBX at renderbuffer creation, but doing
it later is fine as well.

Marek

On Fri, Jun 24, 2016 at 4:43 PM, 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 ||
> +                          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
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list