• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    ARB_internalformat_query2
4
5Name Strings
6
7    GL_ARB_internalformat_query2
8
9Contact
10
11    Daniel Koch (dkoch 'at' nvidia 'dot' com)
12
13Contributors
14
15    Christophe Riccio, AMD
16    Bruce Merry
17    Yuan Wang, IMG
18    Pat Brown, NVIDIA
19    Piers Daniel, NVIDIA
20    Daniel Koch, TransGaming
21    Jon Leech, Khronos
22    Members of the ARB Working group.
23
24Notice
25
26    Copyright (c) 2012-2013 The Khronos Group Inc. Copyright terms at
27        http://www.khronos.org/registry/speccopyright.html
28
29Specification Update Policy
30
31    Khronos-approved extension specifications are updated in response to
32    issues and bugs prioritized by the Khronos OpenGL Working Group. For
33    extensions which have been promoted to a core Specification, fixes will
34    first appear in the latest version of that core Specification, and will
35    eventually be backported to the extension document. This policy is
36    described in more detail at
37        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
38
39Status
40
41    Complete.
42    Approved by the ARB on 2012/06/12.
43
44Version
45
46    Last Modified Date: October 12, 2018
47    Revision: 20
48
49Number
50
51    ARB Extension #131
52
53Dependencies
54
55    OpenGL 2.0 is required.
56
57    ARB_internalformat_query is required.
58
59    This extension is written against the OpenGL 4.2 (Core Profile)
60    Specification.
61
62    OES_texture_3D, ARB_framebuffer_object, EXT_texture_sRGB,
63    ARB_framebuffer_sRGB, ARB_texture_sRGB_decode,
64    EXT_texture_sRGB_decode, ARB_tessellation_shader,
65    ARB_geometry_shader4, ARB_compute_shader, EXT_texture_array,
66    ARB_texture_cube_map_array, ARB_texture_multisample,
67    ARB_texture_rectangle, ARB_texture_buffer_object,
68    ARB_texture_gather, ARB_debug_output, KHR_debug,
69    ARB_clear_buffer_object, ARB_texture_compression_bptc,
70    ARB_texture_compression_rgtc, ARB_stencil_texturing,
71    ARB_depth_texture, OES_depth_texture, ARB_texture_view,
72    ARB_texture_storage, ARB_texture_storage_multisample,
73    ARB_shader_image_load_store, EXT_direct_state_access,
74    EXT_texture_compression_s3tc, ARB_ES3_compatibility,
75    KHR_texture_compression_astc_ldr, and core specifications
76    that incorporate these extensions affect the definition
77    of this extension.
78
79Overview
80
81    This extension extends the GetInternalformativ query that was added in
82    the ARB_internalformat_query extension to provide applications with more
83    granular per-format capability information.
84
85    This extension allows the remainder of the texture-style targets to
86    be specified along with any possible internal format.
87    We add queries for additional properties supported for an internal
88    format in addition to the multisample-related information that was
89    added in ARB_internalformat_query.
90
91    The goals of this extension are to:
92
93    a) provide a mechanism for implementations to declare support *above* the
94       minimum required by the specification
95
96    b) provide API to allow universally constant information to be queried
97
98    c) provide a user-friendly way of finding out about version- or
99       implementation-specific limitations.
100
101    While much of this information can be determined for a single GL version
102    by careful examination of the specification, support for many of these
103    properties has been gradually introduced over a number of API
104    revisions. This can observed when considering the range in functionality
105    between the various versions of GL 2, 3, and 4, as well as GL ES 2 and 3.
106
107    In the case of an application which wishes to be scalable and able to run
108    on a variety of possible GL or GL ES versions without being specifically
109    tailored for each version, it must either have knowledge of the
110    specifications built up into either the code or tables, or it must do
111    a number of tests on startup to determine which capabilities are present.
112
113    In OpenGL, other than the course-grained extension mechanism, many
114    limitations of, or limited support for, an internalformat can only
115    be signaled by failing an operation or by operating at reduced
116    performance.  Thus, such tests often involve attempts to create resources,
117    using them in specific ways and benchmarking the operations to
118    find out if it is supported in the desired form, and at a required
119    performance level. The extension provides a way for these properties
120    and caveats to be directly queried from the implementation.
121
122    This extension is NOT intended to allow implementations to only support
123    a subset of features that are required by a specific GL version, nor is
124    it intended to replace the proper use of extension checks for optional
125    functionality.
126
127IP Status
128
129    No known IP claims.
130
131New Procedures and Functions
132
133    void GetInternalformati64v(enum target, enum internalformat,
134                               enum pname, sizei bufSize, int64 *params);
135
136New Types
137
138    None.
139
140New Tokens
141
142    Accepted by the <target> parameter of GetInternalformativ
143    and GetInternalformati64v:
144
145        TEXTURE_1D                                      0x0DE0
146        TEXTURE_1D_ARRAY                                0x8C18
147        TEXTURE_2D                                      0x0DE1
148        TEXTURE_2D_ARRAY                                0x8C1A
149        TEXTURE_3D                                      0x806F
150        TEXTURE_CUBE_MAP                                0x8513
151        TEXTURE_CUBE_MAP_ARRAY                          0x9009
152        TEXTURE_RECTANGLE                               0x84F5
153        TEXTURE_BUFFER                                  0x8C2A
154        RENDERBUFFER                                    0x8D41
155        TEXTURE_2D_MULTISAMPLE                          0x9100
156        TEXTURE_2D_MULTISAMPLE_ARRAY                    0x9102
157
158    Accepted by the <pname> parameter of GetInternalformativ
159    and GetInternalformati64v:
160
161        SAMPLES                                         0x80A9
162        NUM_SAMPLE_COUNTS                               0x9380
163        INTERNALFORMAT_SUPPORTED                        0x826F
164        INTERNALFORMAT_PREFERRED                        0x8270
165        INTERNALFORMAT_RED_SIZE                         0x8271
166        INTERNALFORMAT_GREEN_SIZE                       0x8272
167        INTERNALFORMAT_BLUE_SIZE                        0x8273
168        INTERNALFORMAT_ALPHA_SIZE                       0x8274
169        INTERNALFORMAT_DEPTH_SIZE                       0x8275
170        INTERNALFORMAT_STENCIL_SIZE                     0x8276
171        INTERNALFORMAT_SHARED_SIZE                      0x8277
172        INTERNALFORMAT_RED_TYPE                         0x8278
173        INTERNALFORMAT_GREEN_TYPE                       0x8279
174        INTERNALFORMAT_BLUE_TYPE                        0x827A
175        INTERNALFORMAT_ALPHA_TYPE                       0x827B
176        INTERNALFORMAT_DEPTH_TYPE                       0x827C
177        INTERNALFORMAT_STENCIL_TYPE                     0x827D
178        MAX_WIDTH                                       0x827E
179        MAX_HEIGHT                                      0x827F
180        MAX_DEPTH                                       0x8280
181        MAX_LAYERS                                      0x8281
182        MAX_COMBINED_DIMENSIONS                         0x8282
183        COLOR_COMPONENTS                                0x8283
184        DEPTH_COMPONENTS                                0x8284
185        STENCIL_COMPONENTS                              0x8285
186        COLOR_RENDERABLE                                0x8286
187        DEPTH_RENDERABLE                                0x8287
188        STENCIL_RENDERABLE                              0x8288
189        FRAMEBUFFER_RENDERABLE                          0x8289
190        FRAMEBUFFER_RENDERABLE_LAYERED                  0x828A
191        FRAMEBUFFER_BLEND                               0x828B
192        READ_PIXELS                                     0x828C
193        READ_PIXELS_FORMAT                              0x828D
194        READ_PIXELS_TYPE                                0x828E
195        TEXTURE_IMAGE_FORMAT                            0x828F
196        TEXTURE_IMAGE_TYPE                              0x8290
197        GET_TEXTURE_IMAGE_FORMAT                        0x8291
198        GET_TEXTURE_IMAGE_TYPE                          0x8292
199        MIPMAP                                          0x8293
200        MANUAL_GENERATE_MIPMAP                          0x8294
201        AUTO_GENERATE_MIPMAP                            0x8295
202        COLOR_ENCODING                                  0x8296
203        SRGB_READ                                       0x8297
204        SRGB_WRITE                                      0x8298
205        SRGB_DECODE_ARB                                 0x8299
206        FILTER                                          0x829A
207        VERTEX_TEXTURE                                  0x829B
208        TESS_CONTROL_TEXTURE                            0x829C
209        TESS_EVALUATION_TEXTURE                         0x829D
210        GEOMETRY_TEXTURE                                0x829E
211        FRAGMENT_TEXTURE                                0x829F
212        COMPUTE_TEXTURE                                 0x82A0
213        TEXTURE_SHADOW                                  0x82A1
214        TEXTURE_GATHER                                  0x82A2
215        TEXTURE_GATHER_SHADOW                           0x82A3
216        SHADER_IMAGE_LOAD                               0x82A4
217        SHADER_IMAGE_STORE                              0x82A5
218        SHADER_IMAGE_ATOMIC                             0x82A6
219        IMAGE_TEXEL_SIZE                                0x82A7
220        IMAGE_COMPATIBILITY_CLASS                       0x82A8
221        IMAGE_PIXEL_FORMAT                              0x82A9
222        IMAGE_PIXEL_TYPE                                0x82AA
223        IMAGE_FORMAT_COMPATIBILITY_TYPE                 0x90C7
224        SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST             0x82AC
225        SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST           0x82AD
226        SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE            0x82AE
227        SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE          0x82AF
228        TEXTURE_COMPRESSED                              0x86A1
229        TEXTURE_COMPRESSED_BLOCK_WIDTH                  0x82B1
230        TEXTURE_COMPRESSED_BLOCK_HEIGHT                 0x82B2
231        TEXTURE_COMPRESSED_BLOCK_SIZE                   0x82B3
232        CLEAR_BUFFER                                    0x82B4
233        TEXTURE_VIEW                                    0x82B5
234        VIEW_COMPATIBILITY_CLASS                        0x82B6
235
236    Returned as possible responses for various <pname> queries
237    to GetInternalformativ and GetInternalformati64v
238        FULL_SUPPORT                                    0x82B7
239        CAVEAT_SUPPORT                                  0x82B8
240        IMAGE_CLASS_4_X_32                              0x82B9
241        IMAGE_CLASS_2_X_32                              0x82BA
242        IMAGE_CLASS_1_X_32                              0x82BB
243        IMAGE_CLASS_4_X_16                              0x82BC
244        IMAGE_CLASS_2_X_16                              0x82BD
245        IMAGE_CLASS_1_X_16                              0x82BE
246        IMAGE_CLASS_4_X_8                               0x82BF
247        IMAGE_CLASS_2_X_8                               0x82C0
248        IMAGE_CLASS_1_X_8                               0x82C1
249        IMAGE_CLASS_11_11_10                            0x82C2
250        IMAGE_CLASS_10_10_10_2                          0x82C3
251        VIEW_CLASS_128_BITS                             0x82C4
252        VIEW_CLASS_96_BITS                              0x82C5
253        VIEW_CLASS_64_BITS                              0x82C6
254        VIEW_CLASS_48_BITS                              0x82C7
255        VIEW_CLASS_32_BITS                              0x82C8
256        VIEW_CLASS_24_BITS                              0x82C9
257        VIEW_CLASS_16_BITS                              0x82CA
258        VIEW_CLASS_8_BITS                               0x82CB
259        VIEW_CLASS_S3TC_DXT1_RGB                        0x82CC
260        VIEW_CLASS_S3TC_DXT1_RGBA                       0x82CD
261        VIEW_CLASS_S3TC_DXT3_RGBA                       0x82CE
262        VIEW_CLASS_S3TC_DXT5_RGBA                       0x82CF
263        VIEW_CLASS_RGTC1_RED                            0x82D0
264        VIEW_CLASS_RGTC2_RG                             0x82D1
265        VIEW_CLASS_BPTC_UNORM                           0x82D2
266        VIEW_CLASS_BPTC_FLOAT                           0x82D3
267    [interactions with ARB_ES3_compatibility]
268        VIEW_CLASS_EAC_R11                              0x9383
269        VIEW_CLASS_EAC_RG11                             0x9384
270        VIEW_CLASS_ETC2_RGB                             0x9385
271        VIEW_CLASS_ETC2_RGBA                            0x9386
272        VIEW_CLASS_ETC2_EAC_RGBA                        0x9387
273    [interactions with KHR_texture_compression_astc_ldr]
274        VIEW_CLASS_ASTC_4x4_RGBA                        0x9388
275        VIEW_CLASS_ASTC_5x4_RGBA                        0x9389
276        VIEW_CLASS_ASTC_5x5_RGBA                        0x938A
277        VIEW_CLASS_ASTC_6x5_RGBA                        0x938B
278        VIEW_CLASS_ASTC_6x6_RGBA                        0x938C
279        VIEW_CLASS_ASTC_8x5_RGBA                        0x938D
280        VIEW_CLASS_ASTC_8x6_RGBA                        0x938E
281        VIEW_CLASS_ASTC_8x8_RGBA                        0x938F
282        VIEW_CLASS_ASTC_10x5_RGBA                       0x9390
283        VIEW_CLASS_ASTC_10x6_RGBA                       0x9391
284        VIEW_CLASS_ASTC_10x8_RGBA                       0x9392
285        VIEW_CLASS_ASTC_10x10_RGBA                      0x9393
286        VIEW_CLASS_ASTC_12x10_RGBA                      0x9394
287        VIEW_CLASS_ASTC_12x12_RGBA                      0x9395
288
289
290Additions to Chapter 2 of the OpenGL 4.2 (Core Profile) Specification
291(OpenGL Operation)
292
293    None.
294
295Additions to Chapter 3 of the OpenGL 4.2 (Core Profile) Specification
296(Rasterization)
297
298    None.
299
300Additions to Chapter 4 of the OpenGL 4.2 (Core Profile) Specification
301(Per-Fragment Operations and the Frame Buffer)
302
303    None.
304
305Additions to Chapter 5 of the OpenGL 4.2 (Compatibility Profile)
306Specification (Special Functions)
307
308    None.
309
310Additions to Chapter 6 of the OpenGL 4.2 (Core Profile) Specification
311(State and State Requests)
312
313    Replace Section 6.1.15 "Internal Format Queries" with the following:
314
315    "Information about implementation-dependent support for internal formats
316    can be queried with the commands
317
318        void GetInternalformativ(enum target, enum internalformat,
319                                 enum pname, sizei bufSize, int *params);
320        void GetInternalformati64v(enum target, enum internalformat,
321                                   enum pname, sizei bufSize, int64 *params);
322
323    <internalformat> can be any value. The INTERNALFORMAT_SUPPORTED <pname>
324    can be used to determine if the internal format is supported, and the
325    other <pnames> are defined in terms of whether or not the format is
326    supported.
327
328    <target> indicates the usage of the <internalformat>, and must be one of
329    the targets listed in Table 6.xx, otherwise the INVALID_ENUM error is
330    generated.
331
332      Target                         Usage
333      -----------------              ------
334      TEXTURE_1D                     1D texture
335      TEXTURE_1D_ARRAY               1D array texture
336      TEXTURE_2D                     2D texture
337      TEXTURE_2D_ARRAY               2D array texture
338      TEXTURE_2D_MULTISAMPLE         2D multisample texture
339      TEXTURE_2D_MULTISAMPLE_ARRAY   2D multisample array texture
340      TEXTURE_3D                     3D texture
341      TEXTURE_BUFFER                 buffer texture
342      TEXTURE_CUBE_MAP               cube map texture
343      TEXTURE_CUBE_MAP_ARRAY         cube map array texture
344      TEXTURE_RECTANGLE              rectangle texture
345      RENDERBUFFER                   renderbuffer
346
347      Table 6.xx: Possible targets that <internalformat> can be used with
348      and the corresponding usage meaning.
349
350    No more than <bufSize> integers will be written into <params>. If
351    more data are available, they will be ignored and no error will be
352    generated.
353
354    <pname> indicates the information to query. The following list provides
355    the valid values for <pname>, defines the meaning and the possible
356    responses. In the following descriptions, the term /resource/ is used
357    to generically refer to an object of the appropriate type that has
358    been created with <internalformat> and <target>.  If the particualar
359    <target> and <internalformat> combination do not make sense, or if
360    a particular type of <target> is not supported by the implementation
361    the "unsupported" answer should be given. This is not an error.
362
363    All properties can be queried via either GetInternalformat* command.
364    Data conversions are done as defined in section 6.1.2.
365
366    For <pname> queries that return information about supported type of
367    operation in <params>, they have the following meanings:
368
369    - NONE: the requested capability is not supported at all by the
370      implementation.
371
372    - CAVEAT_SUPPORT: the requested capability is supported by the
373      implementation, but there may be some implementation-specific
374      caveats that make support less than optimal. For example using
375      the feature may result in reduced performance (relative to other
376      formats or features), such as software rendering or other mechanisms
377      of emulating the desired feature.
378
379      If a query reports that there is a caveat and the debug output
380      functionality is enabled (see section 5.5 or ARB_debug_output),
381      the GL will generate a debug output message describing the caveat.
382      The message has the source DEBUG_SOURCE_API, the type
383      DEBUG_TYPE_PERFORMANCE, and an implementation-dependent ID.
384
385    - FULL_SUPPORT: the requested capability is fully supported by the
386      implementation.
387
388    The following are the supported values for <pname>:
389
390    - INTERNALFORMAT_SUPPORTED: If <internalformat> is an internal format
391      that is supported by the implementation in at least some subset of
392      possible operations, TRUE is written to <params>.  If <internalformat>
393      if not a valid token for any internal format usage, FALSE is returned.
394
395      <internalformats> that must be supported (in GL 4.2 or later) include
396      the following:
397       - "sized internal formats" from Table 3.12, 3.13, and 3.15,
398       - any specific "compressed internal format" from Table 3.14,
399       - any "image unit format" from Table 3.21.
400       - any generic "compressed internal format" from Table 3.14, if the
401         implementation accepts it for any texture specification commands, and
402       - unsized or base internal format, if the implementation accepts
403         it for texture or image specification.
404
405      In other words, any <internalformat> accepted by any of the commands:
406        ClearBufferData, ClearBufferSubData,
407        CompressedTexImage1D, CompressedTexImage2D, CompressedTexImage3D,
408        CopyTexImage1D, CopyTexImage2D,
409        RenderbufferStorage, RenderbufferStorageMultisample,
410        TexBuffer,
411        TexImage1D, TexImage2D, TexImage3D,
412        TexImage2DMultisample, TexImage3DMultisample,
413        TexStorage1D, TexStorage2D, TexStorage3D,
414        TexStorage2DMultisample, TexStorage3DMultisample
415        TextureView,
416        ClearNamedBufferDataEXT, ClearNamedBufferSubDataEXT,
417        TextureImage1DEXT, TextureImage2DEXT, TextureImage3DEXT
418        CopyTextureImage1DEXT, CopyTextureImage2DEXT,
419        MultiTexImage1DEXT, MultiTexImage2DEXT, MultiTexImage3DEXT
420        CompressedTextureImage3DEXT, CompressedTextureImage2DEXT, CompressedTextureImage1DEXT,
421        CompressedMultiTexImage3DEXT, CompressedMultiTexImage2DEXT, CompressedMultiTexImage1DEXT
422        TextureBufferEXT, MultiTexBufferEXT,
423        NamedRenderbufferStorageEXT, NamedRenderbufferStorageMultisampleEXT,
424        NamedRenderbufferStorageMultisampleCoverageEXT,
425        CopyMultiTexImage1DEXT, CopyMultiTexImage2DEXT,
426        TextureStorage1DEXT, TextureStorage2DEXT, TextureStorage3DEXT,
427        TextureStorage2DMultisampleEXT, TextureStorage3DMultisampleEXT, and
428      any valid <format> accepted by BindImageTexture, must be supported.
429
430    - NUM_SAMPLE_COUNTS: The number of sample counts that would be
431      returned by querying SAMPLES is returned in <params>.
432      * If <internalformat> is not color-renderable, depth-renderable, or
433        stencil-renderable (as defined in section 4.4.4), or if <target>
434        does not support multiple samples (ie other than TEXTURE_2D_MULTISAMPLE,
435        TEXTURE_2D_MULTISAMPLE_ARRAY, or RENDERBUFFER), 0 is returned.
436
437    - SAMPLES: The sample counts supported for this <internalformat> and
438      <target> are written into <params>, in descending order. Only
439      positive values are returned.
440      * Note that querying SAMPLES with a <bufSize> of 1 will return just
441        the maximum supported number of samples for this format.
442      * The maximum value in SAMPLES is guaranteed to be at least the lowest
443        of the following:
444        - The value of GetIntegerv(MAX_INTEGER_SAMPLES), if <internalformat>
445          is a signed or unsigned integer format.
446        - The value of GetIntegerv(MAX_DEPTH_TEXTURE_SAMPLES), if
447          <internalformat> is a depth/stencil-renderable format and <target>
448          is TEXTURE_2D_MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY.
449        - The value of GetIntegerv(MAX_COLOR_TEXTURE_SAMPLES), if
450          <internalformat> is a color-renderable format and <target> is
451          TEXTURE_2D_MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY.
452        - The value of GetIntegerv(MAX_SAMPLES).
453      * If <internalformat> is not color-renderable, depth-renderable, or
454        stencil-renderable (as defined in section 4.4.4), or if <target>
455        does not support multiple samples (ie other than TEXTURE_2D_MULTISAMPLE,
456        TEXTURE_2D_MULTISAMPLE_ARRAY, or RENDERBUFFER), <params> is not
457        modified.
458
459    - INTERNALFORMAT_PREFERRED: The implementation-preferred internal format
460      for representing resources of the specified <internalformat> is returned
461      in <params>. The preferred internal format should have no less precision
462      than the requested one. If the specified <internalformat> is already
463      a preferred format, or is there is no better format that is compatible,
464      the queried <internalformat> value is written to <params>.  If the
465      <internalformat> is not supported, NONE is returned.
466
467    - INTERNALFORMAT_RED_SIZE
468    - INTERNALFORMAT_GREEN_SIZE
469    - INTERNALFORMAT_BLUE_SIZE
470    - INTERNALFORMAT_ALPHA_SIZE
471    - INTERNALFORMAT_DEPTH_SIZE
472    - INTERNALFORMAT_STENCIL_SIZE
473    - INTERNALFORMAT_SHARED_SIZE
474      For uncompressed internal formats, queries of these values return the
475      actual resolutions that would be used for storing image array components
476      for the resource.
477      For compressed internal formats, the resolutions returned specify the
478      component resolution of an uncompressed internal format that produces
479      an image of roughly the same quality as the compressed algorithm.
480      For textures this query will return the same information as querying
481      GetTexLevelParameter{if}v for TEXTURE_*_SIZE would return (except in
482      such cases where GetTexLevelParameter{if}v doesn't support such a query).
483      If the internal format is unsupported, or if a particular component is
484      not present in the format, 0 is written to <params>.
485
486    - INTERNALFORMAT_RED_TYPE
487    - INTERNALFORMAT_GREEN_TYPE
488    - INTERNALFORMAT_BLUE_TYPE
489    - INTERNALFORMAT_ALPHA_TYPE
490    - INTERNALFORMAT_DEPTH_TYPE
491    - INTERNALFORMAT_STENCIL_TYPE
492      For uncompressed internal formats, queries for these values return the
493      data type used to store the component.
494      For compressed internal formats the types returned specify how components
495      are interpreted after decompression.
496      For textures this query returns the same information as querying
497      GetTexLevelParameter{if}v for TEXTURE_*_TYPE would return (except in
498      such cases where GetTexLevelParameter{if}v doesn't support such a
499      query). Possible values return include, NONE, SIGNED_NORMALIZED,
500      UNSIGNED_NORMALIZED, FLOAT, INT, UNSIGNED_INT, representing missing,
501      signed normalized fixed point, unsigned normalized fixed point,
502      floating-point, signed unnormalized integer and unsigned unnormalized
503      integer components. NONE is returned for all component types if the
504      format is unsupported.
505
506    - MAX_WIDTH: The maximum supported width for the resource is returned in
507      <params>. For resources with only one-dimension, this one dimension is
508      considered the width. If the resource is unsupported, zero is returned.
509
510    - MAX_HEIGHT: The maximum supported height for the resource is returned in
511      <params>. For resources with two or more dimensions, the second dimension
512      is considered the height. If the resource does not have at least two
513      dimensions, or if the resource is unsupported, zero is returned.
514
515    - MAX_DEPTH: The maximum supported depth for the resource is returned in
516      <params>. For resources with three or more dimensions, the third
517      dimension is considered the depth. If the resource does not have at least
518      three dimensions, or if the resource is unsupported, zero is returned.
519
520    - MAX_LAYERS: The maximum supported number of layers for the resource is
521      returned in <params>. For 1D array targets, the value returned is the
522      same as the MAX_HEIGHT. For 2D and cube array targets, the value returned
523      is the same as the MAX_DEPTH. If the resource does not support layers,
524      or if the resource is unsupported, zero is returned.
525
526    - MAX_COMBINED_DIMENSIONS: The maximum combined dimensions for the resource
527      is returned in <params>. The combined dimensions is the product of the
528      individual dimensions of the resource. For multisampled surfaces the
529      number of samples is considered an additional dimension. Note that the
530      value returned can be >= 2^32 and should be queried with the 64-bit query.
531      This value should be considered a recommendations for applications. There
532      may be system-dependant reasons why allocations larger than this size may
533      fail, even if there might appear to be sufficient memory available when
534      queried via some other means. This also does not provide a guarantee that
535      allocations smaller than this will succeed because this value is not
536      affected by existing resource allocations.
537      For 1D targets this is the maximum single dimension.
538      For 1D array targets this is the maximum combined width and layers.
539      For 2D targets this is the maximum combined width and height.
540      For 2D multisample targets this is the combined width, height and samples.
541      For 2D array targets this is the max combined width, height and layers.
542      For 2D multisample array targets, this is the max combined width, height,
543      layers and samples.
544      For 3D targets this is the maximum combined width, height and depth.
545      For cube map targets this is the maximum combined width, height and
546      faces.
547      For cube map array targets this is the maximum width, height and
548      layer-faces.
549      If the resource is unsupported, zero is returned.
550
551    - COLOR_COMPONENTS: If the internal format contains any color components
552      (R, G, B, or A), TRUE is returned in <params>. If the internal format is
553      unsupported or contains no color components, FALSE is returned.
554
555    - DEPTH_COMPONENTS: If the internal format contains a depth component (D),
556      TRUE is returned in <params>. If the internal format is unsupported or
557      contains no depth component, FALSE is returned.
558
559    - STENCIL_COMPONENTS: If the internal format contains a stencil component
560      (S), TRUE is returned in <params>. If the internal format is unsupported
561      or contains no stencil component, FALSE is returned.
562
563    - COLOR_RENDERABLE: If <internalformat> is color-renderable (as defined in
564      section 4.4.4), TRUE is returned in <params>.  If the internal format is
565      unsupported, or the internal format is not color-renderable, FALSE
566      is returned.
567
568    - DEPTH_RENDERABLE: If <internalformat> is depth-renderable (as defined in
569      section 4.4.4), TRUE is returned in <params>. If the internal format is
570      unsupported, or if the internal format is not depth-renderable, FALSE
571      is returned.
572
573    - STENCIL_RENDERABLE: If <internalformat> is stencil-renderable (as
574      defined in section 4.4.4), TRUE is returned in <params>. If the internal
575      format is unsupported, or if the internal format is not stencil-
576      renderable, FALSE is returned.
577
578    - FRAMEBUFFER_RENDERABLE: The support for rendering to the resource via
579      framebuffer attachment is returned in <params>.
580      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
581      If the resource is unsupported, NONE is returned.
582
583    - FRAMEBUFFER_RENDERABLE_LAYERED: The support for layered rendering to
584      the resource via framebuffer attachment is returned in <params>.
585      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
586      If the resource is unsupported, NONE is returned.
587
588    - FRAMEBUFFER_BLEND: The support for rendering to the resource
589      via framebuffer attachment when blending is enabled is returned in
590      <params>.
591      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
592      If the resource is unsupported, NONE is returned.
593
594    - READ_PIXELS: The support for reading pixels from the resource when it is
595      attached to a framebuffer is returned in <params>.
596      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
597      If the resource is unsupported, NONE is returned.
598
599    - READ_PIXELS_FORMAT: The <format> to pass to ReadPixels to obtain the best
600      performance and image quality when reading from framebuffers with
601      <internalformat> is returned in <params>.
602      Possible values include any value that is legal to pass for the <format>
603      parameter to ReadPixels, or NONE if <internalformat> is not supported
604      or can never be a valid source for ReadPixels.
605
606    - READ_PIXELS_TYPE: The <type> to pass to ReadPixels to obtain the best
607      performance and image quality when reading from framebuffers with
608      <internalformat> is returned in <params>.
609      Possible values include any value that is legal to pass for the <type>
610      parameter to ReadPixels, or NONE if the internal format is not supported
611      or can never be a source for ReadPixels.
612
613    - TEXTURE_IMAGE_FORMAT: The implementation-preferred <format> to pass to
614      TexImage*D or TexSubImage*D when specifying texture image data for
615      this resource is returned in <params>.
616      Possible values include any value that is legal to pass for the <format>
617      parameter to the Tex*Image*D commands, or NONE if the resource is
618      not supported for this operation.
619
620    - TEXTURE_IMAGE_TYPE: The implementation-preferred <type> to pass to
621      TexImage*D or TexSubImage*D when specifying texture image data for
622      this resource is returned in <params>.
623      Possible values include any value that is legal to pass for the <type>
624      parameter to the Tex*Image*D commands, or NONE if the resource is
625      not supported for this operation.
626
627    - GET_TEXTURE_IMAGE_FORMAT: The implementation-preferred <format> to pass to
628      GetTexImage when querying texture image data from this resource.
629      Possible values include any value that is legal to pass for the <format>
630      parameter to GetTexImage, or NONE if the resource does not support
631      this operation, or if GetTexImage is not supported.
632
633    - GET_TEXTURE_IMAGE_TYPE: The implementation-preferred <type> to pass to
634      GetTexImage when querying texture image data from this resource.
635      Possible values include any value that is legal to pass for the <type>
636      parameter to GetTexImage, or NONE if the resource does not support
637      this operation, or if GetTexImage is not supported.
638
639    - MIPMAP: If the resource supports mipmaps, TRUE is returned in <params>.
640      If the resource is not supported, or if mipmaps are not supported for
641      this type of resource, FALSE is returned.
642
643    - MANUAL_GENERATE_MIPMAP: The support for manually generating mipmaps for
644      the resource is returned in <params>.
645      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
646      If the resource is not supported, or if the operation is not supported,
647      NONE is returned.
648
649    - AUTO_GENERATE_MIPMAP: The support for automatic generation of mipmaps
650      for the resource is returned in <params>.
651      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
652      If the resource is not supported, or if the operation is not supported,
653      NONE is returned.
654
655    - COLOR_ENCODING: The color encoding for the resource is returned in
656      <params>.  Possible values for color buffers are LINEAR or SRGB,
657      for linear or sRGB-encoded color components, respectively. For non-color
658      formats (such as depth or stencil), or for unsupported resources,
659      the value NONE is returned.
660
661    - SRGB_READ: The support for converting from sRGB colorspace on read
662      operations (see section 3.9.18) from the resource is returned in
663      <params>.
664      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
665      If the resource or operation is not supported, NONE is returned.
666
667    - SRGB_WRITE: The support for converting to sRGB colorspace on write
668      operations to the resource is returned in <params>.
669      This indicates that writing to framebuffers with this internalformat
670      will encode to sRGB color spaces when FRAMEBUFFER_SRGB is enabled (see
671      section 4.1.8).
672      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
673      If the resource or operation is not supported, NONE is returned.
674
675    - SRGB_DECODE_ARB: The support for toggling whether sRGB decode happens at
676      sampling time (see EXT/ARB_texture_sRGB_decode) for the resource is
677      returned in <params>.
678      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
679      If the resource or operation is not supported, NONE is returned.
680
681    - FILTER: The support for filter types other than NEAREST or
682      NEAREST_MIPMAP_NEAREST for the resource is written to <params>.
683      This indicates if sampling from such resources supports setting the
684      MIN/MAG filters to LINEAR values.
685      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
686      If the resource or operation is not supported, NONE is returned.
687
688    - VERTEX_TEXTURE: The support for using the resource as a source for
689      texture sampling in a vertex shader is written to <params>.
690      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
691      If the resource or operation is not supported, NONE is returned.
692
693    - TESS_CONTROL_TEXTURE: The support for using the resource as a source for
694      texture sampling in a tessellation control shader is written to <params>.
695      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
696      If the resource or operation is not supported, NONE is returned.
697
698    - TESS_EVALUATION_TEXTURE: The support for using the resource as a source
699      for texture sampling in a tessellation evaluation shader is written to
700      <params>.
701      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
702      If the resource or operation is not supported, NONE is returned.
703
704    - GEOMETRY_TEXTURE: The support for using the resource as a source for
705      texture sampling in a geometry shader is written to <params>.
706      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
707      If the resource or operation is not supported, NONE is returned.
708
709    - FRAGMENT_TEXTURE: The support for using the resource as a source for
710      texture sampling in a fragment shader is written to <params>.
711      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
712      If the resource or operation is not supported, NONE is returned.
713
714    - COMPUTE_TEXTURE: The support for using the resource as a source for
715      texture sampling in a compute shader is written to <params>.
716      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
717      If the resource or operation is not supported, NONE is returned.
718
719    - TEXTURE_SHADOW: The support for using the resource with shadow samplers
720      is written to <params>.
721      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
722      If the resource or operation is not supported, NONE is returned.
723
724    - TEXTURE_GATHER: The support for using the resource with texture gather
725      operations is written to <params>.
726      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
727      If the resource or operation is not supported, NONE is returned.
728
729    - TEXTURE_GATHER_SHADOW: The support for using resource with texture gather
730      operations with shadow samplers is written to <params>.
731      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
732      If the resource or operation is not supported, NONE is returned.
733
734    - SHADER_IMAGE_LOAD: The support for using the resource with image load
735      operations in shaders is written to <params>.
736      In this case the <internalformat> is the value of the <format> parameter
737      that would be passed to BindImageTexture.
738      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
739      If the resource or operation is not supported, NONE is returned.
740
741    - SHADER_IMAGE_STORE: The support for using the resource with image store
742      operations in shaders is written to <params>.
743      In this case the <internalformat> is the value of the <format> parameter
744      that is passed to BindImageTexture.
745      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
746      If the resource or operation is not supported, NONE is returned.
747
748    - SHADER_IMAGE_ATOMIC: The support for using the resource with atomic
749      memory operations from shaders is written to <params>.
750      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
751      If the resource or operation is not supported, NONE is returned.
752
753    - IMAGE_TEXEL_SIZE: The size of a texel when the resource when used as
754      an image texture is returned in <params>.  This is the value from the
755      /Size/ column in Table 3.22. If the resource is not supported for image
756      textures, or if image textures are not supported, zero is returned.
757
758    - IMAGE_COMPATIBILITY_CLASS: The compatibility class of the resource when
759      used as an image texture is returned in <params>.  This corresponds to
760      the value from the /Class/ column in Table 3.22. The possible values
761      returned are IMAGE_CLASS_4_X_32, IMAGE_CLASS_2_X_32, IMAGE_CLASS_1_X_32,
762      IMAGE_CLASS_4_X_16, IMAGE_CLASS_2_X_16, IMAGE_CLASS_1_X_16,
763      IMAGE_CLASS_4_X_8, IMAGE_CLASS_2_X_8, IMAGE_CLASS_1_X_8,
764      IMAGE_CLASS_11_11_10, and IMAGE_CLASS_10_10_10_2, which correspond to
765      the 4x32, 2x32, 1x32, 4x16, 2x16, 1x16, 4x8, 2x8, 1x8, the class
766      (a) 11/11/10 packed floating-point format, and the class (b)
767      10/10/10/2 packed formats, respectively.
768      If the resource is not supported for image textures, or if image
769      textures are not supported, NONE is returned.
770
771    - IMAGE_PIXEL_FORMAT: The pixel format of the resource when used as an
772      image texture is returned in <params>.  This is the value
773      from the /Pixel format/ column in Table 3.22. If the resource is not
774      supported for image textures, or if image textures are not supported,
775      NONE is returned.
776
777    - IMAGE_PIXEL_TYPE: The pixel type of the resource when used as an
778      image texture is returned in <params>.  This is the value from
779      the /Pixel type/ column in Table 3.22. If the resource is not supported
780      for image textures, or if image textures are not supported, NONE is
781      returned.
782
783    - IMAGE_FORMAT_COMPATIBILITY_TYPE: The matching criteria use for the
784      resource when used as an image textures is returned in <params>. This
785      is equivalent to calling GetTexParameter with <value> set to
786      IMAGE_FORMAT_COMPATIBILITY_TYPE. Possible values are
787      IMAGE_FORMAT_COMPATIBILITY_BY_SIZE or IMAGE_FORMAT_COMPATIBILITY_BY_CLASS.
788      If the resource is not supported for image textures, or if image textures
789      are not supported, NONE is returned.
790
791    - SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: The support for using the resource
792      both as a source for texture sampling while it is bound as a buffer for
793      depth test is written to <params>. For example, a depth (or stencil)
794      texture could be bound simultaneously for texturing while it is bound as
795      a depth (and/or stencil) buffer without causing a feedback loop, provided
796      that depth writes are disabled.
797      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
798      If the resource or operation is not supported, NONE is returned.
799
800    - SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: The support for using the resource
801      both as a source for texture sampling while it is bound as a buffer for
802      stencil test is written to <params>. For example, a depth (or stencil)
803      texture could be bound simultaneously for texturing while it is bound as
804      a depth (and/or stencil) buffer without causing a feedback loop,
805      provided that stencil writes are disabled.
806      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
807      If the resource or operation is not supported, NONE is returned.
808
809    - SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: The support for using the resource
810      both as a source for texture sampling while performing depth writes to
811      the resources is written to <params>.  For example, a depth-stencil
812      texture could be bound simultaneously for stencil texturing while it
813      is bound as a depth buffer. Feedback loops cannot occur because sampling
814      a stencil texture only returns the stencil portion, and thus writes to
815      the depth buffer do not modify the stencil portions.
816      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
817      If the resource or operation is not supported, NONE is returned.
818
819    - SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: The support for using the resource
820      both as a source for texture sampling while performing stencil writes to
821      the resources is written to <params>.  For example, a depth-stencil
822      texture could be bound simultaneously for depth-texturing while it is
823      bound as a stencil buffer. Feedback loops cannot occur because sampling
824      a depth texture only returns the depth portion, and thus writes to
825      the stencil buffer could not modify the depth portions.
826      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
827      If the resource or operation is not supported, NONE is returned.
828
829    - TEXTURE_COMPRESSED: If <internalformat> is a compressed format
830      that is supported for this type of resource, TRUE is returned in
831      <params>. If the internal format is not compressed, or the type of
832      resource is not supported, FALSE is returned.
833
834    - TEXTURE_COMPRESSED_BLOCK_WIDTH: If the resource contains a compressed
835      format, the width of a compressed block (in bytes) is returned in
836      <params>. If the internal format is not compressed, or the resource
837      is not supported, 0 is returned.
838
839    - TEXTURE_COMPRESSED_BLOCK_HEIGHT: If the resource contains a compressed
840      format, the height of a compressed block (in bytes) is returned in
841      <params>. If the internal format is not compressed, or the resource
842      is not supported, 0 is returned.
843
844    - TEXTURE_COMPRESSED_BLOCK_SIZE: If the resource contains a compressed
845      format the number of bytes per block is returned in <params>.  If the
846      internal format is not compressed, or the resource is not supported,
847      0 is returned.
848      (combined with the above, allows the bitrate to be computed, and may be
849      useful in conjunction with ARB_compressed_texture_pixel_storage).
850
851    - CLEAR_BUFFER: The support for using the resource with ClearBuffer*Data
852      commands is returned in <params>.
853      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
854      If the resource or operation is not supported, NONE is returned.
855
856    - TEXTURE_VIEW: The support for using the resource with the TextureView
857      command is returned in <params>.
858      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
859      If the resource or operation is not supported, NONE is returned.
860
861    - VIEW_COMPATIBILITY_CLASS: The compatibility class of the resource when
862      used as a texture view is returned in <params>. The compatibility
863      class is one of the values from the /Class/ column of Table 3.X.2
864      (added by the ARB_texture_view extension). If
865      the resource has no other formats that are compatible, the resource
866      does not support views, or if texture views are not supported, NONE is
867      returned.
868
869    If <pname> is not one of the preceeding names, the error INVALID_ENUM
870    is generated."
871
872Additions to Appendix A of the OpenGL 4.2 (Core Profile) Specification
873(Invariance)
874
875    None.
876
877Additions to Appendix D of the OpenGL 4.2 (Core Profile) Specification
878(Shared Objects and Multiple Contexts)
879
880    None.
881
882GLX Protocol
883
884    XXX - TODO.
885
886Dependencies on OpenGL ES 2.0
887    Queries involving any of the following enums for <target>:
888      - TEXTURE_1D
889      - TEXTURE_3D
890      - TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP_ARRAY
891      - TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY
892      - TEXTURE_RECTANGLE
893      - TEXTURE_BUFFER
894    or any of the following <pnames>:
895      - GET_TEXTURE_IMAGE_FORMAT, GET_TEXTURE_IMAGE_TYPE
896      - MAX_LAYERS
897      - FRAMEBUFFER_RENDERABLE_LAYERED
898      - AUTO_GENERATE_MIPMAP
899      - SRGB_READ, SRGB_WRITE
900      - TESS_CONTROL_TEXTURE, TESS_EVALUATION_TEXTURE
901      - GEOMETRY_TEXTURE
902      - COMPUTE_TEXTURE
903      - TEXTURE_SHADOW, TEXTURE_GATHER, TEXTURE_GATHER_SHADOW
904      - SHADER_IMAGE_LOAD, SHADER_IMAGE_STORE, SHADER_IMAGE_ATOMIC
905      - IMAGE_TEXEL_SIZE, IMAGE_PIXEL_FORMAT, IMAGE_PIXEL_TYPE
906      - IMAGE_COMPATIBILITY_CLASS, IMAGE_FORMAT_COMPATIBILITY_TYPE
907      - CLEAR_BUFFER
908      - TEXTURE_VIEW, VIEW_COMPATIBILITY_CLASS
909    return the appropriate "unsupported" response.
910    Queries for unsupported features/targets do NOT set errors.
911
912Dependencies on OES_texture_3D
913    - adds support for TEXTURE_3D targets in OpenGL ES 2.0 implementations.
914
915Dependencies on OpenGL ES 3.0
916    Queries involving any of the following enums for <target>:
917      - TEXTURE_1D
918      - TEXTURE_1D_ARRAY, TEXTURE_CUBE_MAP_ARRAY
919      - TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY
920      - TEXTURE_RECTANGLE
921      - TEXTURE_BUFFER
922    or any of the following <pnames>:
923      - GET_TEXTURE_IMAGE_FORMAT, GET_TEXTURE_IMAGE_TYPE
924      - AUTO_GENERATE_MIPMAP
925      - TESS_CONTROL_TEXTURE, TESS_EVALUATION_TEXTURE
926      - GEOMETRY_TEXTURE
927      - COMPUTE_TEXTURE
928      - TEXTURE_GATHER, TEXTURE_GATHER_SHADOW
929      - SHADER_IMAGE_LOAD, SHADER_IMAGE_STORE, SHADER_IMAGE_ATOMIC
930      - IMAGE_TEXEL_SIZE, IMAGE_PIXEL_FORMAT, IMAGE_PIXEL_TYPE
931      - IMAGE_COMPATIBILITY_CLASS, IMAGE_FORMAT_COMPATIBILITY_TYPE
932      - CLEAR_BUFFER
933      - TEXTURE_VIEW, VIEW_COMPATIBILITY_CLASS
934    return the appropriate "unsupported" response.
935    Queries for unsupported features/targets do NOT set errors.
936
937    If the <pname> is SRGB_WRITE, ignore references to FRAMEBUFFER_SRGB.
938
939Dependencies on OpenGL 2.0
940    Queries involving any of the following enums for <target>:
941      - TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP_ARRAY
942      - TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY
943      - TEXTURE_RECTANGLE
944      - TEXTURE_BUFFER
945      - RENDERBUFFER
946    or any of the following <pnames>:
947      - MAX_LAYERS
948      - FRAMEBUFFER_RENDERABLE
949      - FRAMEBUFFER_RENDERABLE_LAYERED
950      - FRAMEBUFFER_BLEND
951      - MANUAL_GENERATE_MIPMAP
952      - SRGB_READ, SRGB_WRITE
953      - TESS_CONTROL_TEXTURE, TESS_EVALUATION_TEXTURE
954      - GEOMETRY_TEXTURE
955      - COMPUTE_TEXTURE
956      - TEXTURE_SHADOW, TEXTURE_GATHER, TEXTURE_GATHER_SHADOW
957      - SHADER_IMAGE_LOAD, SHADER_IMAGE_STORE, SHADER_IMAGE_ATOMIC
958      - IMAGE_TEXEL_SIZE, IMAGE_PIXEL_FORMAT, IMAGE_PIXEL_TYPE
959      - IMAGE_COMPATIBILITY_CLASS, IMAGE_FORMAT_COMPATIBILITY_TYPE
960      - CLEAR_BUFFER
961      - TEXTURE_VIEW, VIEW_COMPATIBILITY_CLASS
962    return the appropriate "unsupported" response.
963    Queries for unsupported features/targets do NOT set errors.
964
965Dependencies on OpenGL 3.0
966    Queries involving any of the following enums for <target>:
967      - TEXTURE_CUBE_MAP_ARRAY
968      - TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY
969      - TEXTURE_RECTANGLE
970      - TEXTURE_BUFFER
971    or any of the following <pnames>:
972      - TESS_CONTROL_TEXTURE, TESS_EVALUATION_TEXTURE
973      - GEOMETRY_TEXTURE
974      - COMPUTE_TEXTURE
975      - TEXTURE_SHADOW, TEXTURE_GATHER, TEXTURE_GATHER_SHADOW
976      - SHADER_IMAGE_LOAD, SHADER_IMAGE_STORE, SHADER_IMAGE_ATOMIC
977      - IMAGE_TEXEL_SIZE, IMAGE_PIXEL_FORMAT, IMAGE_PIXEL_TYPE
978      - IMAGE_COMPATIBILITY_CLASS, IMAGE_FORMAT_COMPATIBILITY_TYPE
979      - CLEAR_BUFFER
980      - TEXTURE_VIEW, VIEW_COMPATIBILITY_CLASS
981    return the appropriate "unsupported" response.
982    Queries for unsupported features/targets do NOT set errors.
983
984Dependencies on OpenGL 3.2 (Core Profile)
985    In core profiles for OpenGL 3.2 and later versions, queries
986    for the AUTO_GENERATE_MIPMAP <pname> return the appropriate
987    unsupported response.
988
989Dependencies on OpenGL 4.0
990    Queries involving any of the following <pnames>:
991      - COMPUTE_TEXTURE
992      - SHADER_IMAGE_LOAD, SHADER_IMAGE_STORE, SHADER_IMAGE_ATOMIC
993      - IMAGE_TEXEL_SIZE, IMAGE_PIXEL_FORMAT, IMAGE_PIXEL_TYPE
994      - IMAGE_COMPATIBILITY_CLASS, IMAGE_FORMAT_COMPATIBILITY_TYPE
995      - CLEAR_BUFFER
996      - TEXTURE_VIEW, VIEW_COMPATIBILITY_CLASS
997    return the appropriate "unsupported" response.
998    Queries for unsupported features/targets do NOT set errors.
999
1000Dependencies on ARB_framebuffer_object
1001    If ARB_framebuffer_object, EXT_framebuffer_object or equivalent
1002    functionality is not supported, queries involving the RENDERBUFFER
1003    <target> or the following <pnames>:
1004      - FRAMEBUFFER_RENDERABLE
1005      - FRAMEBUFFER_RENDERABLE_LAYERED
1006      - FRAMEBUFFER_BLEND
1007      - MANUAL_GENERATE_MIPMAP
1008    return the appropriate "unsupported" response.
1009
1010Dependencies on EXT_texture_sRGB
1011    If EXT_texture_sRGB or equivalent functionality is not supported,
1012    queries for the SRGB_READ <pname> and for sRGB internalformats
1013    return the appropriate "unsupported" response.
1014
1015Dependencies on ARB_framebuffer_sRGB
1016    If ARB_framebuffer_sRGB or equivalent functionality is not supported,
1017    queries for the SRGB_WRITE <pname> return the appropriate "unsupported"
1018    response.
1019
1020Dependencies on ARB/EXT_texture_sRGB_decode
1021    If ARB_texture_sRGB_decode or EXT_texture_sRGB_decode or equivalent
1022    functionality is not supported, queries for the SRGB_DECODE_ARB <pname>
1023    set the INVALID_ENUM error. (N.B. this is different from all other
1024    extension interactions because this functionality is not present
1025    in any core specification, and thus it behaves as an unrecognized
1026    token rather than as an unsupported feature.)
1027
1028Dependencies on ARB_tessellation_shader
1029    If ARB_tessellation_shader or equivalent functionality is not supported,
1030    queries for the TESS_CONTROL_TEXTURE and TESS_EVALUATION_TEXTURE <pnames>,
1031    return the appropriate "unsupported" response.
1032
1033Dependencies on ARB_geometry_shader4
1034    If ARB_geometry_shader4 or equivalent functionality is not supported,
1035    queries for the GEOMETRY_TEXTURE <pname> will return the appropriate
1036    "unsupported" response.
1037
1038Dependencies on ARB_compute_shader
1039    If ARB_compute_shader or equivalent functionality is not supported,
1040    queries for the COMPUTE_TEXTURE <pname> will return the appropriate
1041    "unsupported" response.
1042
1043Dependencies on EXT_texture_array
1044    If EXT_texture_array or equivalent functionality is not supported,
1045    queries for the TEXTURE_1D_ARRAY and TEXTURE_2D_ARRAY <targets> and
1046    for the FRAMEBUFFER_RENDERABLE_LAYERED <pname> return the appropriate
1047    "unsupported" response.  In addition, the MAX_LAYERS query will return
1048    zero.
1049
1050Dependencies on ARB_texture_cube_map_array
1051    If ARB_texture_cube_map_array or equivalent functionality is not supported,
1052    queries for the TEXTURE_CUBE_MAP_ARRAY <target> will return the
1053    appropriate "unsupported" response.
1054
1055Dependencies on ARB_texture_multisample
1056    If ARB_texture_multisample or equivalent functionality is not supported,
1057    queries for the TEXTURE_2D_MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY
1058    <target> parameter will return the appropriate unsupported response.
1059
1060Dependencies on ARB_texture_rectangle
1061    If ARB_texture_rectange or equivalent functionality is not supported,
1062    queries for the TEXTURE_RECTANGLE <target> parameter will return the
1063    appropriate unsupported response.
1064
1065Dependencies on ARB_texture_buffer_object
1066    If ARB_texture_buffer_object or equivalent functionality is not supported,
1067    queries for the TEXTURE_BUFFER <target> parameter will return the
1068    appropriate unsupported response. Ignore all references to TexBuffer.
1069
1070Dependencies on ARB_texture_gather
1071    If ARB_texture_gather or equivalent functionality is not supported,
1072    queries for the TEXTURE_GATHER <pname> return the appropriate
1073    unsupported response.
1074
1075Dependecies on ARB_debug_output
1076    If ARB_debug_output, KHR_debug or equivalent functionality is not
1077    supported, ignore all references to debug output messages.
1078
1079Dependencies on ARB_clear_buffer_object
1080    If ARB_clear_buffer_object or equivalent functionality is not supported,
1081    queries for the CLEAR_BUFFER <pname> return the appropriate
1082    unsupported response.  Ignore all references to ClearBufferData and
1083    ClearBufferSubData, ClearNamedBufferDataEXT, and ClearNamedBufferSubDataEXT.
1084
1085Dependencies on ARB_texture_compression_bptc
1086    If ARB_texture_compression_bptc or equivalent functionality is not
1087    supported, ignore all references to VIEW_CLASS_BPTC_UNORM and
1088    VIEW_CLASS_BPTC_FLOAT.
1089
1090Dependencies on ARB_texture_compression_rgtc
1091    If ARB_texture_compression_rgtc or equivalent functionality is not
1092    supported, ignore all references to VIEW_CLASS_RGTC1_RED and
1093    VIEW_CLASS_RGTC2_RG.
1094
1095Dependencies on ARB_ES3_compatibility
1096    If ARB_ES3_compatibility or equivalent functionality is not supported,
1097    ingore all references to VIEW_CLASS_EAC_R11, VIEW_CLASS_EAC_RG11,
1098    VIEW_CLASS_ETC2_RGB, VIEW_CLASS_ETC2_RGBA, and VIEW_CLASS_ETC2_EAC_RGBA.
1099
1100Dependencies on KHR_texture_compression_astc_ldr
1101    If KHR_texture_compression_astc_ldr or equivalent functionality is not
1102    supported, ignore all references to VIEW_CLASS_ASTC_4x4_RGBA,
1103    VIEW_CLASS_ASTC_5x4_RGBA, VIEW_CLASS_ASTC_5x5_RGBA,
1104    VIEW_CLASS_ASTC_6x5_RGBA, VIEW_CLASS_ASTC_6x6_RGBA,
1105    VIEW_CLASS_ASTC_8x5_RGBA, VIEW_CLASS_ASTC_8x6_RGBA, VIEW_CLASS_ASTC_8x8_RGBA,
1106    VIEW_CLASS_ASTC_10x5_RGBA, VIEW_CLASS_ASTC_10x6_RGBA,
1107    VIEW_CLASS_ASTC_10x8_RGBA, VIEW_CLASS_ASTC_10x10_RGBA,
1108    VIEW_CLASS_ASTC_12x10_RGBA, and VIEW_CLASS_ASTC_12x12_RGBA.
1109
1110Dependencies on ARB_stencil_texturing
1111    If ARB_stencil_texturing or equivalent functionality is not supported,
1112    ignore all references to stencil texturing.
1113
1114Dependencies on ARB_depth_texture and OES_depth_texture
1115    If ARB_depth_texture, OES_depth_texture or equivalent functionality is
1116    no supported, ignore all references to depth texturing.
1117
1118Dependencies on ARB_texture_view
1119    If ARB_texture_view or equivalent functionality is not supported,
1120    queries for the TEXTURE_VIEW and VIEW_COMPATIBILITY_CLASS <pname> values
1121    return the appropriate unsupported response. Ignore all references
1122    to TextureView.
1123
1124Dependencies on ARB_texture_storage
1125    If ARB_texture_storage, EXT_texture_storage or equivalent functionality
1126    is not supported, ignore all references to TexStorage1D, TexStorage2D,
1127    TexStorage3D, TextureStorage1DEXT, TextureStorage2DEXT, and
1128    TextureStorage3DEXT.
1129
1130Dependencies on ARB_texture_storage_multisample
1131    If ARB_texture_storage_multisample or equivalent functionality is not
1132    supported, ignore all references to TexStorage2DMultisample,
1133    TexImage3DMultisample, TextureStorage2DMultisampleEXT, and
1134    TextureStorage3DMultisampleEXT.
1135
1136Dependencies on ARB_shader_image_load_store
1137    If ARB_shader_image_load_store or equivalent functionality is not
1138    supported, queries for the following <pname> values:
1139      - SHADER_IMAGE_LOAD
1140      - SHADER_IMAGE_STORE
1141      - SHADER_IMAGE_ATOMIC
1142      - IMAGE_TEXEL_SIZE
1143      - IMAGE_COMPATIBILITY_CLASS
1144      - IMAGE_PIXEL_FORMAT
1145      - IMAGE_PIXEL_TYPE
1146      - IMAGE_FORMAT_COMPATIBILITY_TYPE
1147    return the appropriate unsupported response.
1148    Ignore all references to BindImageTexture.
1149
1150Dependencies on EXT_direct_state_access
1151    If EXT_direct_state_access or equivalent functionality is not supported,
1152    ignore all references to:
1153        ClearNamedBufferDataEXT, ClearNamedBufferSubDataEXT,
1154        TextureImage1DEXT, TextureImage2DEXT, TextureImage3DEXT,
1155        CopyTextureImage1DEXT, CopyTextureImage2DEXT,
1156        MultiTexImage1DEXT, MultiTexImage2DEXT, MultiTexImage3DEXT,
1157        CompressedTextureImage3DEXT, CompressedTextureImage2DEXT,
1158        CompressedTextureImage1DEXT, CompressedMultiTexImage3DEXT,
1159        CompressedMultiTexImage2DEXT, CompressedMultiTexImage1DEXT
1160        TextureBufferEXT, MultiTexBufferEXT,
1161        NamedRenderbufferStorageEXT, NamedRenderbufferStorageMultisampleEXT,
1162        NamedRenderbufferStorageMultisampleCoverageEXT,
1163        CopyMultiTexImage1DEXT, CopyMultiTexImage2DEXT,
1164        TextureStorage1DEXT, TextureStorage2DEXT, TextureStorage3DEXT,
1165        TextureStorage2DMultisampleEXT, and TextureStorage3DMultisampleEXT.
1166
1167Dependencies on EXT_texture_compression_s3tc
1168    If EXT_texture_compression_s3tc or equivalent functionality is not
1169    supported, ignore all references to VIEW_CLASS_S3TC_DXT1_RGBA,
1170    VIEW_CLASS_S3TC_DXT1_RGB, VIEW_CLASS_S3TC_DXT3_RGBA, and
1171    VIEW_CLASS_S3TC_DXT5_RGBA.
1172
1173Errors
1174
1175    The INVALID_ENUM error is generated if the <target> parameter to
1176    GetInternalformati*v is not one of the targets listed in Table 6.xx.
1177
1178    The INVALID_ENUM error is generated if the <pname> parameter is
1179    not one of the listed possibilities.
1180
1181New State
1182
1183    None.
1184
1185New Implementation Dependent State
1186
1187    None.
1188
1189Sample Code
1190
1191    TBD
1192
1193Conformance Tests
1194
1195    TBD
1196
1197Issues
1198
1199    1) What should this extension be called?
1200
1201    DISCUSSION: Some options that come to mind:
1202       ARB_internalformat_query2
1203       ARB_internalformat_query_extended
1204    RESOLVED: use ARB_internalformat_query2.
1205
1206    2) Should the <internalformat> parameter take "base internal formats" from
1207    Table 3.11, any of the "generic" compressed formats, or any other unsized
1208    tokens? What about allowing *any* possible value for <internalformat> so
1209    that list of formats queryable is not tied to any particular GL version?
1210
1211    DISCUSSION: Tying the internalformats accepted to various tables in one
1212    specific version of the spec makes it difficult to determine what should
1213    be supported when this is implemented against other versions of the specs
1214    and even worse when you consider extensions which add new formats but
1215    which may not have updated the tables.
1216
1217    RESOLVED: It will be simpler and more useful to allow the query to take
1218    any enum value for the INTERNALFORMAT_SUPPORTED <pname> and then define
1219    the behaviour of all the other queries in terms of "supported internal
1220    formats".
1221
1222    "base internal" formats, "generic compressed" formats and unsized
1223    formats (such as RGBA or RGB_COMPRESSED) are all possible, provided the
1224    implementation supports them for texture or image specification, and will
1225    return appropriate information based on the internal format that the
1226    particular implementation would map them to internally if used as such.
1227
1228    3 a) What if the combination of <target> and <pname> is invalid/nonsense
1229         (e.g. any texture related query on RENDERBUFFER)?
1230      b) What if the <target>/<pname> make sense, but the <internalformat>
1231         does not for that <pname> (e.g. COLOR_ENCODING for non-color internal
1232         format)?
1233
1234    RESOLVED. If the combinations of parameters does not make sense the
1235    reponse best representing "not supported" or "not applicable" is returned
1236    as defined for each <pname>.
1237    In general:
1238     - size- or count-based queries will return zero,
1239     - support-, format- or type-based queries will return NONE,
1240     - boolean-based queries will return FALSE, and
1241     - list-based queries return no entries.
1242
1243    4) Should we expose a way for an implementation to describe what the
1244    caveats might be on a particular operation?
1245
1246    RESOLVED. If ARB_debug_output or equivalent functionality is present
1247    and enabled, the caveat will be written to the debug output log.
1248    The message has the source DEBUG_SOURCE_API, the type
1249    DEBUG_TYPE_PERFORMANCE, and an implementation-dependent ID.
1250
1251    5) Do layers generalize in the MAX_COMBINED_DIMENSIONS? How do cube map
1252    faces and multisample resources work?
1253
1254    RESOLVED.  Yes layers generalize in the MAX_COMBINED_DIMENSIONS, as do
1255    cube map faces and multiple samples.
1256    The calculation for cube maps is: width x height x 6.
1257    The calculation for cube map arrays is: width x height x layers x 6.
1258    The calculation for 2D multisample arrays is: width x height x layers x samples.
1259
1260    6) Is the READ_PIXELS query useful, should we replace it with
1261    READ_PIXELS_FORMAT and READ_PIXELS_TYPE, or have all three of them?
1262
1263    RESOLVED. The READ_PIXELS_FORMAT and READ_PIXELS_TYPE queries have been
1264    added. READ_PIXELS still has value because an implementation may want
1265    to be able to report a caveat on the performance or lack of support.
1266
1267    7) There some <pnames> which it makes no sense to be qualified by
1268    a per-format/target scope, how should we handle them?
1269    e.g. MAX_WIDTH and MAX_HEIGHT might be the same for all formats.
1270    e.g. properties like AUTO_GENERATE_MIPMAP and MANUAL_GENERATE_MIPMAP might
1271     depend only on the GL version.
1272
1273    DISCUSSION:
1274    A) Just use this entry point as is, if there are no per-format or
1275    target differences, it is perfectly acceptable to have the implementation
1276    return the same information for all valid parameters. This does
1277    allow implementations to report caveats that may exist for some
1278    formats but not others, even though all formats/targets may be supported.
1279    B) Introduce new entry point(s) which can report on some general
1280    properties.
1281
1282    RESOLVED: Option A, just the one entry point. It doesn't hurt to
1283    give the implementation the ability to report more information.
1284
1285    8) In GL 4.2 MAX_TEXTURE_3D_SIZE is 2048 (2^11) so the
1286    MAX_COMBINED_DIMENSIONS could be as high as 2^11*2^11*2^11 = 2^33.
1287    The MAX_TEXTURE_SIZE is 16384 (2^14) and MAX_ARRAY_TEXTURE_LAYERS is
1288    2048 (2^11) so the MAX_COMBINED_DIMENSIONS could be 2^14*2^14*2^11
1289    = 2^39. Thus it is possible for the combined dimensions to exceed
1290    32-bits. What should be reported in cases like this?
1291
1292    DISCUSSION: If the max combined size is great than 2^32, the resource
1293    could take at least 2^32 bytes or 4GB of memory. While it is currently
1294    unlikely that implementation would actually support resources of this
1295    size, it is plausible that within a few years it would be possible to
1296    exceed this with a single allocation. Possible alternatives:
1297    A) Saturate the reported value at a max of 2^31 (since <pname> is GLint).
1298    B) Add a 64-bit version of the query.
1299    C) Add a HI and LO query to allow generatation of a 64-bit value.
1300    D) Remove this query.
1301    E) use other units? (MB)
1302
1303    Some other APIs have a maximum allocation size which may be 128 MB or
1304    1/4 or the dedicated VRAM. Option A is not very appealing since it
1305    limits the usefulness of the query when it is most needed. No interest
1306    in Option C. Option E is undesireable since it is too granular for
1307    lower-dimensioned resources. General consensus was either option B or D.
1308
1309    RESOLVED: Option B is specified as it is expected that is query will
1310    be useful.
1311
1312    9) Is a MULTISAMPLE query useful?
1313
1314    RESOLVED: No. The same information can be obtained by querying if
1315    NUM_SAMPLE_COUNTS and checking if it is greater than zero.
1316
1317   10) Is TEXTURE_SHADOW useful?
1318
1319    RESOLVED: Yes. While DEPTH_COMPONENTS tells you if the texture has depth
1320    in it, some implementations may have caveats to report for shadow lookups.
1321    For example there may be caveats that depend on the depth size, or some
1322    hardware may not be able to do non-shadowed look ups and must emulate it
1323    in the shader. Additionally some versions of the API do not support
1324    shadow samplers.
1325
1326   11) Do we need a list of interactions with all extensions?
1327
1328    DISCUSSION: All pnames will always be supported, but return false/not-
1329    supported. Interactions with specific extensions and pnames will be
1330    noted in the interactions section.
1331
1332   12) We have a way to query the component sizes and types, should we have
1333    a way to query the component orderings?
1334
1335    RESOLVED. No. It is unclear what value this would add, and an
1336    implementation could already choose to expose this via the
1337    TEXTURE_IMAGE_FORMAT and TEXTURE_IMAGE_TYPE queries.
1338
1339   13) What does the value returned for the MAX_COMBINED_DIMENSIONS
1340    actually mean?  Does this mean that if you try to create a texture
1341    with more samples or texels than this it is guaranteed to fail
1342    (possibly with OUT_OF_MEMORY)? Or is it just a recommendation that
1343    says it might fail?
1344
1345    RESOLVED. This is a recommendation for applications. There are
1346    system-dependant reasons why allocations larger than this size may
1347    result in failures even if there might appear to be sufficient memory
1348    available when queried via some other means. At the same time, some
1349    systems may not have a single hard-limit on the allocation size and
1350    it may be a combination of hardware and/or software limitations.
1351    This value also does not a guarantee that allocations smaller than
1352    this will succeed because it does not factor in the current available
1353    memory. Applications should be able to reliably allocate resources
1354    that fall under this limit, providing there is sufficient memory
1355    available at the time of the allocation.
1356
1357   14) Can we add some queries for various forms of buffer support, for
1358    example vertex attributes, element arrays or transform feedback?
1359    Some implementations may have caveats they could report for some
1360    formats.
1361
1362    RESOLVED: Deferred. While this is interesting, it is too late for
1363    this version. It is also unclear if we could use the current
1364    entry points which are more targetted at textures and renderbuffers
1365    and keyed off an <internalformat>.  We don't typically use an
1366    internalformat for buffers.
1367
1368   15) Should we have separate values for FILTER, such as TEXTURE_MAG_FILTER
1369    and TEXTURE_MIN_FILTER?
1370
1371    RESOLVED: No. The FITLER query is more about whether or not multi-texel
1372    filtering is directly supported. We don't expect implmentations to
1373    be able to support it for MIN filters but not for MAG, or vice versa.
1374
1375   16) What should we do in cases where a command is defined in terms of
1376    GetTexLevelParameter, but GetTexLevelParameter doesn't support the target
1377    (eg TEXTURE_BUFFER in versions of GL prior to 3.1) or there is no
1378    corresponding pname (such as TEXTURE_STENCIL_TYPE)?
1379
1380    RESOLVED: GetInternalFormat* should return the correct information for the
1381    specific query, it shouldn't be limited by the set of tokens that happen to
1382    be legal for GetTexLevelParameter. This was just used a method of
1383    reducing specification language duplication, and noting that the queries
1384    are effectively the same.
1385
1386Revision History
1387
1388    Rev.  Date        Author    Changes
1389    ----  ----------  --------  --------------------------------------------
1390     20   10/12/2018  dgkoch    Add tokens for ETC2/EAC and ASTC VIEW_CLASSES
1391                                as interactions with ARB_ES3_compatibility
1392                                and KHR_texture_compression_astc_ldr.
1393     19   02/14/2018  dgkoch    Add issue 16, clarify references to
1394                                GetTexLevelParameter (gitlab/opengl/api/65)
1395     18   07/15/2013  Jon Leech Remove redundant list of VIEW_CLASS_* tokens
1396                                (Bug 10518).
1397     17   07/11/2013  Jon Leech Clarify relationship between VIEW_CLASS_*
1398                                tokens and ARB_texture_view (Bug 10518).
1399     16   07/26/2012  dgkoch    rename GENERATE_MIPMAP to MANUAL_GENERATE_MIPMAP
1400                                for clarity and restore previous token (9330)
1401     15   07/24/2012  dgkoch    Fix several token values (bug 9325)
1402     14   07/20/2012  dgkoch    Add _ARB suffix to SRGB_DECODE
1403     13   07/17/2012  dgkoch    Finish adding extension/version interactions.
1404                                SRGB_DECODE is only valid if extension supported (bug 9293).
1405     12   07/10/2012  Jon Leech Change _BIT token names to _BITS (bug 9266).
1406     11   06/15/2012  dgkoch    Grammar fixes noticed in review (bug 9158).
1407     10   06/11/2012  dgkoch    Resolved Issue 13 and updated relevant spec language
1408                                Added Issue 14 and 15 and renamed some tokens (bug 9138)
1409     9    06/06/2012  dgkoch    renamed 64-bit query for consistency
1410                                Resolved Issue 8, and added a bit of related language.
1411                                Added Issue 13.
1412     8    05/07/2012  dgkoch    minor token renaming, misc wording improvements
1413                                started added extension interactions
1414     7    05/05/2012  dgkoch    added 64-bit entry point
1415                                allow any enum for internalformat
1416                                specify 'unsupported' responses for all queries
1417                                add errors
1418                                resolved issues as per Apr-12 F2F
1419                                added clear buffer, image and view related queries
1420     6    04/25/2012  dgkoch    remove MULTISAMPLE (redundant with NUM_SAMPLES > 0)
1421                                remove meta queries
1422                                add issues 9-11
1423                                added READ_PIXELS_FORMAT, READ_PIXELS_TYPE
1424                                added TEXTURE_IMAGE_FORMAT, TEXTURE_IMAGE_TYPE
1425                                added GET_TEXTURE_IMAGE_FORMAT, GET_TEXTURE_IMAGE_TYPE
1426                                changed ACTUAL_INTERNALFORMAT to PREFERRED_INTERNALFORMAT
1427                                added INTERNALFORMAT_x_SIZE/TYPE for
1428                                  RED/GREEN/BLUE/ALPHA/DEPTH/STENCIL/SHARED
1429     5    04/05/2012  dgkoch    Update overview, issue 7.
1430     4    04/04/2012  dgkoch    Incorporate feedback from bmerry (Bug 8595)
1431     3    01/23/2012  dgkoch    Continue adding more details
1432     2    01/23/2012  dgkoch    Add more details
1433     1    10/13/2011  dgkoch    Initial draft
1434
1435