[Mesa-dev] [PATCH 1/3] mesa: return 0 for GL_INTERNALFORMAT_SUPPORTED for unsupported TBO formats

Marek Olšák maraeo at gmail.com
Tue Oct 24 10:18:14 UTC 2017


On Tue, Oct 24, 2017 at 12:09 PM, Alejandro Piñeiro
<apinheiro at igalia.com> wrote:
> On 24/10/17 11:53, Marek Olšák wrote:
>> On Tue, Oct 24, 2017 at 11:47 AM, Alejandro Piñeiro
>> <apinheiro at igalia.com> wrote:
>>> On 21/10/17 14:54, Marek Olšák wrote:
>>>> From: Marek Olšák <marek.olsak at amd.com>
>>>>
>>>> ---
>>>>  src/mesa/main/formatquery.c | 5 +++++
>>>>  1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c
>>>> index 77c7faa..05b7810 100644
>>>> --- a/src/mesa/main/formatquery.c
>>>> +++ b/src/mesa/main/formatquery.c
>>>> @@ -895,20 +895,25 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
>>>>        if (pname == GL_NUM_SAMPLE_COUNTS && ctx->API == API_OPENGLES2 &&
>>>>            ctx->Version == 30 && _mesa_is_enum_format_integer(internalformat)) {
>>>>           goto end;
>>>>        }
>>>>
>>>>        ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
>>>>                                        buffer);
>>>>        break;
>>>>
>>>>     case GL_INTERNALFORMAT_SUPPORTED:
>>>> +      /* Reject invalid texture buffer formats. */
>>>> +      if (target == GL_TEXTURE_BUFFER &&
>>>> +          _mesa_validate_texbuffer_format(ctx, internalformat) == MESA_FORMAT_NONE)
>>>> +         break;
>>>> +
>>> _mesa_validate_texbuffer_format with that internalformat if target is
>>> GL_TEXTURE_BUFFER is already called on _is_resource_supported, on line
>>> 864. Why it is needed a second call here?
>>>
>> See the beginning of _is_resource_supported.
>
> Ah true. internalformat_query2, that delightful spec. I'm starting to
> remember. So from the spec:
>
> "
>
>     - INTERNALFORMAT_SUPPORTED: If <internalformat> is an internal format
>       that is supported by the implementation in at least some subset of
>       possible operations, TRUE is written to <params>.  If <internalformat>
>       if not a valid token for any internal format usage, FALSE is returned."
>
> This pname is asking <internalformat> is supported somehow, on at least
> one operation. And note that it says "format", and not "resource" that
> in the wording of this spec for the pair target/internalformat.
>
> Reading it literally, that means that this pname query is independent of
> the target.
>
> So, under that interpretation of your spec, your patch is wrong, as you
> are checking against a specific target, but it should return TRUE as far
> as it is supported for one case.

Are the piglit tests wrong then?

Marek


More information about the mesa-dev mailing list