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