1c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerName
2c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
3c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    MESA_texture_signed_rgba
4c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
5c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerName Strings
6c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
7c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    GL_MESA_texture_signed_rgba
8c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
9c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerContact
10c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
11c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
12c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
13c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerNotice
14c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
15c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
16c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
17c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerIP Status
18c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
19c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    No known IP issues
20c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
21c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerStatus
22c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
23c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
24c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
25c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerVersion
26c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
27c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    0.3, 2009-03-24
28c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
29c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerNumber
30c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
31c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Not assigned ?
32c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
33c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerDependencies
34c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
35c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Written based on the wording of the OpenGL 2.0 specification.
36c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
37c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    This extension trivially interacts with ARB_texture_float.
38c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    This extension shares some language with ARB_texture_compression_rgtc
39c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    but does not depend on it.
40c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
41c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerOverview
42c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
43c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    OpenGL prior to 3.1 does not support any signed texture formats.
44c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    ARB_texture_compression_rgtc introduces some compressed red and
45c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    red_green signed formats but no uncompressed ones, which might
46c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    still be useful. NV_texture_shader adds signed texture formats,
47ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser    but also a lot of functionality which has been superseded by fragment
48c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    shaders.
49c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    It is usually possible to get the same functionality
50c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    using a unsigned format by doing scale and bias in a shader, but this
51c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    is undesirable since modern hardware has direct support for this.
52c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    This extension adds a signed 4-channel texture format by backporting
53c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    the relevant features from OpenGL 3.1, as a means to support this in
54c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    OpenGL implementations only supporting older versions.
55c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
56c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerIssues
57c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
58c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    1) What should this extension be called?
59c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
60c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: MESA_texture_signed_rgba seems reasonable.
61c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       The rgba part is there because only 4 channel format is supported.
62c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
63c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
64c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    2) Should the full set of signed formats (alpha, luminance, rgb, etc.)
65c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       be supported?
66c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
67c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: NO. To keep this extension simple, only add the most
68c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       universal format, rgba. alpha/luminance can't be trivially supported
69c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       since OpenGL 3.1 does not support them any longer, and there is some
70c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       implied dependency on ARB_texture_rg for red/red_green formats so
71c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       avoid all this. Likewise, only 8 bits per channel is supported.
72c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
73c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
74c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    3) Should this extension use new enums for the texture formats?
75c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
76c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: NO. Same enums as those used in OpenGL 3.1.
77c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
78c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
79c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    4) How are signed integer values mapped to floating-point values?
80c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
81c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: Same as described in issue 5) of
82c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       ARB_texture_compression_rgtc (quote):
83c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       A signed 8-bit two's complement value X is computed to
84c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       a floating-point value Xf with the formula:
85c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
86c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger                { X / 127.0, X > -128
87c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger           Xf = {
88c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger                { -1.0,      X == -128
89c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
90c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       This conversion means -1, 0, and +1 are all exactly representable,
91c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       however -128 and -127 both map to -1.0.  Mapping -128 to -1.0
92c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       avoids the numerical awkwardness of have a representable value
93c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       slightly more negative than -1.0.
94c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
95c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       This conversion is intentionally NOT the "byte" conversion listed
96c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       in Table 2.9 for component conversions.  That conversion says:
97c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
98c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger           Xf = (2*X + 1) / 255.0
99c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
100c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       The Table 2.9 conversion is incapable of exactly representing
101c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       zero.
102c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
103c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       (Difference to ARB_texture_compression_rgtc):
104c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       This is the same mapping as OpenGL 3.1 uses.
105c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       This is also different to what NV_texture_shader used.
106c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       The above mapping should be considered the reference, but there
107c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       is some leeway so other mappings are allowed for implementations which
108ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser       cannot do this. Particularly the mapping given in NV_texture_shader or
109c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       the standard OpenGL byte/float mapping is considered acceptable too, as
110c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by
111c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       127 (that is, uses different scale factors for negative and positive
112c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       numbers).
113c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       Also, it is ok to store incoming GL_BYTE user data as-is, without
114c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       converting to GL_FLOAT (using the standard OpenGL float/byte mapping)
115c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       and converting back (using the mapping described here).
116c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       Other than those subtle issues there are no other non-standard
117c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       conversions used, so when using for instance CopyTexImage2D with
118c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       a framebuffer clamped to [0,1] all converted numbers will be in the range
119c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       [0, 127] (and not scaled and biased).
120c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
121c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
122c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    5) How will signed components resulting from RGBA8_SNORM texture
123c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       fetches interact with fragment coloring?
124c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
125c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: Same as described in issue 6) of
126c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       ARB_texture_compression_rgtc (quote):
127c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       The specification language for this extension is silent
128c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       about clamping behavior leaving this to the core specification
129c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       and other extensions.  The clamping or lack of clamping is left
130c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       to the core specification and other extensions.
131c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
132c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       For assembly program extensions supporting texture fetches
133c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       (ARB_fragment_program, NV_fragment_program, NV_vertex_program3,
134c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       etc.) or the OpenGL Shading Language, these signed formats will
135c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       appear as expected with unclamped signed components as a result
136c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       of a texture fetch instruction.
137c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
138c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       If ARB_color_buffer_float is supported, its clamping controls
139c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       will apply.
140c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
141c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       NV_texture_shader extension, if supported, adds support for
142c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       fixed-point textures with signed components and relaxed the
143c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       fixed-function texture environment clamping appropriately.  If the
144c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       NV_texture_shader extension is supported, its specified behavior
145c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       for the texture environment applies where intermediate values
146c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       are clamped to [-1,1] unless stated otherwise as in the case
147c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       of explicitly clamped to [0,1] for GL_COMBINE.  or clamping the
148c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND.
149c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
150c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       Otherwise, the conventional core texture environment clamps
151c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       incoming, intermediate, and output color components to [0,1].
152c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
153c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       This implies that the conventional texture environment
154c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       functionality of unextended OpenGL 1.5 or OpenGL 2.0 without
155c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       using GLSL (and with none of the extensions referred to above)
156c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       is unable to make proper use of the signed texture formats added
157c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       by this extension because the conventional texture environment
158c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       requires texture source colors to be clamped to [0,1].  Texture
159c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       filtering of these signed formats would be still signed, but
160c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       negative values generated post-filtering would be clamped to
161c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       zero by the core texture environment functionality.  The
162c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       expectation is clearly that this extension would be co-implemented
163c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       with one of the previously referred to extensions or used with
164c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       GLSL for the new signed formats to be useful.
165c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
166c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
167c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage
168c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       functions?
169c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
170c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: YES.
171c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
172c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
173c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    7) What to do with GetTexParameter if ARB_texture_float is supported,
174c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       in particular what datatype should this return for TEXTURE_RED_TYPE_ARB,
175c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB?
176c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
177c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       RESOLVED: ARB_texture_float states type is either NONE,
178c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum,
179c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       SIGNED_NORMALIZED, which will be returned accordingly. This is the
180c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger       same behaviour as in OpenGL 3.1.
181c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
182c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
183c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerNew Tokens
184c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
185c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
186c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Accepted by the <internalformat> parameter of
187c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D:
188c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
189c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger        RGBA_SNORM                                0x8F93
190c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger        RGBA8_SNORM                               0x8F97
191c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
192c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Returned by the <params> parameter of GetTexLevelParameter:
193c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
194c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger        SIGNED_NORMALIZED                         0x8F9C
195c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
196c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
197c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerAdditions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization):
198c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
199c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger -- Section 3.8.1, Texture Image Specification
200c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
201c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Add to Table 3.16 (page 154): Sized internal formats
202c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
203c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Sized             Base             R    G    B    A    L    I    D
204c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    Internal Format   Internal Format bits bits bits bits bits bits bits
205c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    ---------------   --------------- ---- ---- ---- ---- ---- ---- ----
206c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    RGBA8_SNORM       RGBA             8    8    8    8    0    0    0
207c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
208c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
209c6a6cc191813e8343a17b028146a34f193a6ce44Roland ScheideggerDependencies on ARB_texture_float extension:
210c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger
211c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    If ARB_texture_float is supported, GetTexParameter queries with <value>
212c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or
213c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if
214c6a6cc191813e8343a17b028146a34f193a6ce44Roland Scheidegger    the base internal format is RGBA_SNORM.
215