[Mesa-dev] [PATCH 1/3] mesa: Disallow deprecated SNORM formats for renderbuffers

Ian Romanick idr at freedesktop.org
Tue Dec 4 15:31:08 PST 2012


On 12/04/2012 10:56 AM, Eric Anholt wrote:
> Ian Romanick <idr at freedesktop.org> writes:
>
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> The OpenGL 3.2 core profile spec says:
>>
>>      "The following base internal formats from table 3.11 are
>>      color-renderable: RED, RG, RGB, and RGBA. The sized internal formats
>>      from table 3.12 that have a color-renderable base internal format
>>      are also color-renderable. No other formats, including compressed
>>      internal formats, are color-renderable."
>>
>> The OpenGL 3.2 compatibility profile spec says (only ALPHA is added):
>>
>>      "The following base internal formats from table 3.16 are
>>      color-renderable: ALPHA, RED, RG, RGB, and RGBA. The sized internal formats
>>      from table 3.17 that have a color-renderable base internal format
>>      are also color-renderable. No other formats, including compressed
>>      internal formats, are color-renderable."
>>
>> Table 3.12 in the core profile spec and table 3.17 in the compatibility
>> profile spec list SNORM formats as having a base internal format of RED,
>> RG, RGB, or RGBA.  From this we infer that they should also be color
>> renderable.
>
> This sounds sort of like the description of the bottom half of the
> change, to remove L/LA/I snorm formats.  (ALPHA being left in place,
> which I missed at first).
>
> I wonder, do they also not support FBOs with unorm L/LA/I, despite
> ARB_framebuffer_object?  fbo-clear-formats should tell.  I'd be happy to
> see those go if nobody else supports them either, and it would make this
> change make more sense to me.

Ken pointed out that this patch really should have been two patches. 
I've split it into a patch that just makes the deprecated SNORM formats 
non-renderable and a second patch that makes all of the other SNORM 
formats non-renderable in ES.

I had some discussions with the ES group on this topic.  They said the 
intention of the spec is the formats not listed as renderable in the 
table are not allowed to be renderable *ever*... unless you have an 
extension that adds them to the table.  The conformance tests check for 
this, and allowing extra formats causes them to fail.

>> The OpenGL ES 3.0 spec says:
>>
>>      "An internal format is color-renderable if it is one of the formats
>>      from table 3.12 noted as color-renderable or if it is unsized format
>>      RGBA or RGB. No other formats, including compressed internal
>>      formats, are color-renderable."
>>
>> In the OpenGL ES 3.0 spec, none of the SNORM formats have "color-
>> renderable" marked in table 3.12.  The RGB I and UI formats also are not
>> color-renderable in ES3, but we'll save that change for another patch.
>>
>> As a data point, NVIDIA's closed-source driver (version 304.64) rejects
>> *all* SNORM formats for renderbuffers in an OpenGL 4.x compatibility
                                                       ^^^

Not that it matters, but this should say "3.3 compatibility profile."  I 
forgot my NVIDIA card can't do 4.x. :)

>> profile.
>
> This sounds like the description of the top half of the change, and this
> half if pulled out would get my r-b.



More information about the mesa-dev mailing list