[Mesa-dev] [PATCH] mesa: Return LINEAR encoding for winsys FBO depth/stencil.

Jordan Justen jordan.l.justen at intel.com
Sat Dec 10 05:45:51 UTC 2016


Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2016-12-09 17:16:37, Kenneth Graunke wrote:
> GetFramebufferAttachmentParameteriv should return GL_LINEAR for the
> window system default framebuffer's GL_DEPTH or GL_STENCIL attachments
> when there are zero depth or stencil bits.
> 
> The GL 4.5 spec's GetFramebufferAttachmentParameteriv section says:
> 
> "If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is not NONE,
>  these queries apply to all other framebuffer types:
> 
>  [...]
> 
>  If attachment is not a color attachment, or no data storage or texture
>  image has been specified for the attachment, then params will contain
>  the value LINEAR."
> 
> Note that we already return LINEAR for the case where there is an actual
> depth or stencil renderbuffer attached.  In the case modified by this
> patch, FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE returns FRAMEBUFFER_DEFAULT
> rather than NONE.
> 
> Fixes a CTS test when run in a visual without depth / stencil buffers:
> GL45-CTS.gtf30.GL3Tests.framebuffer_srgb.framebuffer_srgb_default_encoding
> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/main/fbobject.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index 64c4ab5..26fc15d 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -3788,8 +3788,13 @@ _mesa_get_framebuffer_attachment_parameter(struct gl_context *ctx,
>           goto invalid_pname_enum;
>        }
>        else if (att->Type == GL_NONE) {
> -         _mesa_error(ctx, err, "%s(invalid pname %s)", caller,
> -                     _mesa_enum_to_string(pname));
> +         if (_mesa_is_winsys_fbo(buffer) &&
> +             (attachment == GL_DEPTH || attachment == GL_STENCIL)) {
> +            *params = GL_LINEAR;
> +         } else {
> +            _mesa_error(ctx, err, "%s(invalid pname %s)", caller,
> +                        _mesa_enum_to_string(pname));
> +         }
>        }
>        else {
>           if (ctx->Extensions.EXT_framebuffer_sRGB) {
> -- 
> 2.10.2
> 
> _______________________________________________
> 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