[Mesa-dev] [PATCH] mesa: more TBO fixes for ARB_internalformat_query2

Marek Olšák maraeo at gmail.com
Tue Oct 24 09:50:55 UTC 2017


Also: "mesa: fix GL_{COLOR,DEPTH,STENCIL}_COMPONENTS queries for TBOs"

Marek

On Tue, Oct 24, 2017 at 11:44 AM, Alejandro Piñeiro
<apinheiro at igalia.com> wrote:
> On 24/10/17 11:41, Alejandro Piñeiro wrote:
>> Well, I have just realized one thing: "more TBO fixes"? did I miss the
>> first TBO fixes?
>
> Never mind, I found it on the ARB_compatibility thread. Sorry for the noise.
>
>>
>> On 24/10/17 11:02, Marek Olšák wrote:
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> ---
>>>  src/mesa/main/formatquery.c | 8 ++++++++
>>>  1 file changed, 8 insertions(+)
>>>
>>> diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c
>>> index 9c53d7c..619904f 100644
>>> --- a/src/mesa/main/formatquery.c
>>> +++ b/src/mesa/main/formatquery.c
>>> @@ -919,20 +919,25 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
>>>         *
>>>         *     "- INTERNALFORMAT_PREFERRED: The implementation-preferred internal
>>>         *     format for representing resources of the specified <internalformat> is
>>>         *     returned in <params>.
>>>         *
>>>         * Therefore, we let the driver answer. Note that if we reach this
>>>         * point, it means that the internalformat is supported, so the driver
>>>         * is called just to try to get a preferred format. If not supported,
>>>         * GL_NONE was already returned and the driver is not called.
>>>         */
>>> +      if (target == GL_TEXTURE_BUFFER &&
>>> +          _mesa_validate_texbuffer_format(ctx, internalformat) ==
>>> +          MESA_FORMAT_NONE)
>>> +         goto end;
>>> +
>>>        ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
>>>                                        buffer);
>>>        break;
>>>
>>>     case GL_INTERNALFORMAT_RED_SIZE:
>>>     case GL_INTERNALFORMAT_GREEN_SIZE:
>>>     case GL_INTERNALFORMAT_BLUE_SIZE:
>>>     case GL_INTERNALFORMAT_ALPHA_SIZE:
>>>     case GL_INTERNALFORMAT_DEPTH_SIZE:
>>>     case GL_INTERNALFORMAT_STENCIL_SIZE:
>>> @@ -1139,20 +1144,23 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
>>>            _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;
>>>
>>> +      if (target == GL_TEXTURE_BUFFER)
>>> +         goto end;
>>> +
>>>        if (pname == GL_COLOR_RENDERABLE) {
>>>           if (!_mesa_is_color_format(internalformat))
>>>              goto end;
>>>        } else {
>>>           GLenum baseFormat = _mesa_base_fbo_format(ctx, internalformat);
>>>           if (baseFormat != GL_DEPTH_STENCIL &&
>>>               ((pname == GL_DEPTH_RENDERABLE && baseFormat != GL_DEPTH_COMPONENT) ||
>>>                (pname == GL_STENCIL_RENDERABLE && baseFormat != GL_STENCIL_INDEX)))
>>>              goto end;
>>>        }
>> _______________________________________________
>> 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