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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev