[Mesa-dev] [PATCH v2 1/2] mesa: make glFramebuffer* check immutable texture level bounds
Ilia Mirkin
imirkin at alum.mit.edu
Mon Jan 30 17:23:13 UTC 2017
On Mon, Jan 30, 2017 at 4:36 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Mon, Jan 30, 2017 at 4:33 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>> On 26.01.2017 06:47, Ilia Mirkin wrote:
>>>
>>> When a texture is immutable, we can't tack on extra levels
>>> after-the-fact like we could with glTexImage. So check against that
>>> level limit and return an error if it's surpassed.
>>>
>>> The spec is a little unclear in that it says to check if "level is not a
>>> supported texture level", however that is never fully defined.
>>>
>>> This fixes:
>>> GL45-CTS.geometry_shader.layered_fbo.fb_texture_invalid_level_number
>>>
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>>
>>> v1 -> v2: use NumLevels instead of _MaxLevel.
>>>
>>> Not sure why this isn't showing up as failing in the Intel CI, but it was
>>> definitely failing here.
>>
>>
>> Maybe the Intel CI is running the GLCTS based on the last 4.5 release, and I
>> guess you're running off what's been published on Github? The GLCTS on
>> Github has a bunch of new and possibly broken tests, and may still have a
>> number of regressions as well (since a lot of code was moved around).
>>
>> Can you point out which specific place of the spec you're talking about in
>> your comment?
>
> One of the errors listed for glFramebufferTexture is:
>
> """
> An INVALID_VALUE error is generated if texture is not zero and is not the
> name of a texture object, or if level is not a supported texture level
> for texture
> """
Curiously for glFramebufferTexture1D/2D/3D, it also says:
"""
If textarget is TEXTURE_RECTANGLE or TEXTURE_2D_MULTISAMPLE, then
level must be zero. If textarget is TEXTURE_3D, then level must be
greater than or equal to zero and less than or equal to log2 of the
value of MAX_3D_TEXTURE_- SIZE. If textarget is one of the cube map
face targets from table 8.19, then level must be greater than or equal
to zero and less than or equal to log2 of the value of
MAX_CUBE_MAP_TEXTURE_SIZE. For all other values of textarget, level
must be greater than or equal to zero and no larger than log2 of the
value of MAX_- TEXTURE_SIZE.
"""
which matches the current code. I guess this patch is withdrawn...
-ilia
More information about the mesa-dev
mailing list