[Mesa-dev] [PATCH] mesa: fix GL_{COLOR, DEPTH, STENCIL}_COMPONENTS queries for TBOs

Ilia Mirkin imirkin at alum.mit.edu
Tue Oct 24 01:28:57 UTC 2017


On Mon, Oct 23, 2017 at 9:16 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
>  src/mesa/main/formatquery.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c
> index 05b7810..9c53d7c 100644
> --- a/src/mesa/main/formatquery.c
> +++ b/src/mesa/main/formatquery.c
> @@ -1094,43 +1094,54 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
>     }
>
>     case GL_COLOR_COMPONENTS:
>        /* The ARB_internalformat_query2 spec says:
>         *
>         *     "- COLOR_COMPONENTS: If the internal format contains any color
>         *     components (R, G, B, or A), TRUE is returned in <params>.
>         *     If the internal format is unsupported or contains no color
>         *     components, FALSE is returned."
>         */
> +      if (target == GL_TEXTURE_BUFFER &&
> +          _mesa_validate_texbuffer_format(ctx, internalformat) ==
> +          MESA_FORMAT_NONE)
> +         break;

Because not all color formats are supported for TBO's, right?

Although _mesa_is_color_format returns true for unsupported formats as
well... although that's probably a separate bug.

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

> +
>        if (_mesa_is_color_format(internalformat))
>           buffer[0] = GL_TRUE;
>        break;
>
>     case GL_DEPTH_COMPONENTS:
>        /* The ARB_internalformat_query2 spec says:
>         *
>         *     "- DEPTH_COMPONENTS: If the internal format contains a depth
>         *     component (D), TRUE is returned in <params>. If the internal format
>         *     is unsupported or contains no depth component, FALSE is returned."
>         */
> +      if (target == GL_TEXTURE_BUFFER)
> +         break;
> +
>        if (_mesa_is_depth_format(internalformat) ||
>            _mesa_is_depthstencil_format(internalformat))
>           buffer[0] = GL_TRUE;
>        break;
>
>     case GL_STENCIL_COMPONENTS:
>        /* The ARB_internalformat_query2 spec says:
>         *
>         *     "- STENCIL_COMPONENTS: If the internal format contains a stencil
>         *     component (S), TRUE is returned in <params>. If the internal format
>         *     is unsupported or contains no stencil component, FALSE is returned.
>         */
> +      if (target == GL_TEXTURE_BUFFER)
> +         break;
> +
>        if (_mesa_is_stencil_format(internalformat) ||
>            _mesa_is_depthstencil_format(internalformat))
>           buffer[0] = GL_TRUE;
>        break;
>
>     case GL_COLOR_RENDERABLE:
>     case GL_DEPTH_RENDERABLE:
>     case GL_STENCIL_RENDERABLE:
>        if (!_is_renderable(ctx, internalformat))
>           goto end;
> --
> 2.7.4
>
> _______________________________________________
> 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