Name

    AMD_gpu_shader_half_float_fetch

Name Strings

    GL_AMD_gpu_shader_half_float_fetch

Contact

    Rex Xu, AMD (rex.xu 'at' amd.com)

Contributors

    Rex Xu, AMD
    Qun Lin, AMD
    Daniel Rakos, AMD
    Graham Sellers, AMD
    Dominik Witczak, AMD

Status

    Shipping

Version

    Last Modified Date:         9/20/2017
    Author Revision:            5

Number

    519

Dependencies

    This extension is written against the OpenGL 4.5 (Core Profile) Specification.

    This extension is written against version 4.50 of the OpenGL Shading Language Specification.

    OpenGL 4.0 and GLSL 4.00 are required.

    This extension requires AMD_gpu_shader_half_float.

    This extension interacts with ARB_sparse_texture2.

    This extension interacts with ARB_sparse_texture_clamp.

    This extension interacts with KHR_vulkan_glsl.

    This extension interacts with AMD_texture_gather_bias_lod.

Overview

    This extension was developed based on the AMD_gpu_shader_half_float extension to allow
    implementations supporting half-precision floating-point both in shader texture functions and
    in shader image memory functions.

New Procedures and Functions

    None.

New Tokens

    Returned by the <type> parameter of GetActiveUniform and GetProgramResourceiv:

    (New tokens)

        FLOAT16_SAMPLER_1D_AMD                          0x91CE
        FLOAT16_SAMPLER_2D_AMD                          0x91CF
        FLOAT16_SAMPLER_3D_AMD                          0x91D0
        FLOAT16_SAMPLER_CUBE_AMD                        0x91D1
        FLOAT16_SAMPLER_2D_RECT_AMD                     0x91D2
        FLOAT16_SAMPLER_1D_ARRAY_AMD                    0x91D3
        FLOAT16_SAMPLER_2D_ARRAY_AMD                    0x91D4
        FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD              0x91D5
        FLOAT16_SAMPLER_BUFFER_AMD                      0x91D6
        FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD              0x91D7
        FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD        0x91D8

        FLOAT16_SAMPLER_1D_SHADOW_AMD                   0x91D9
        FLOAT16_SAMPLER_2D_SHADOW_AMD                   0x91DA
        FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD              0x91DB
        FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD             0x91DC
        FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD             0x91DD
        FLOAT16_SAMPLER_CUBE_SHADOW_AMD                 0x91DE
        FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD       0x91DF

        FLOAT16_IMAGE_1D_AMD                            0x91E0
        FLOAT16_IMAGE_2D_AMD                            0x91E1
        FLOAT16_IMAGE_3D_AMD                            0x91E2
        FLOAT16_IMAGE_2D_RECT_AMD                       0x91E3
        FLOAT16_IMAGE_CUBE_AMD                          0x91E4
        FLOAT16_IMAGE_1D_ARRAY_AMD                      0x91E5
        FLOAT16_IMAGE_2D_ARRAY_AMD                      0x91E6
        FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD                0x91E7
        FLOAT16_IMAGE_BUFFER_AMD                        0x91E8
        FLOAT16_IMAGE_2D_MULTISAMPLE_AMD                0x91E9
        FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD          0x91EA

Additions to Chapter 7 of the OpenGL 4.5 (Core Profile) Specification (Program Objects)

    Modify Section 7.3.1, Program Interfaces

    (add to Table 7.3, OpenGL Shading Language type tokens, p. 107)

    +-------------------------------------------+---------------------------+------+------+------+
    | Type Name Token                           | Keyword                   |Attrib| Xfb  |Buffer|
    +-------------------------------------------+---------------------------+------+------+------+
    | FLOAT16_SAMPLER_1D_AMD                    | f16sampler1D              |      |      |      |
    | FLOAT16_SAMPLER_2D_AMD                    | f16sampler2D              |      |      |      |
    | FLOAT16_SAMPLER_3D_AMD                    | f16sampler3D              |      |      |      |
    | FLOAT16_SAMPLER_CUBE_AMD                  | f16samplerCube            |      |      |      |
    | FLOAT16_SAMPLER_2D_RECT_AMD               | f16sampler2DRect          |      |      |      |
    | FLOAT16_SAMPLER_1D_ARRAY_AMD              | f16sampler1DArray         |      |      |      |
    | FLOAT16_SAMPLER_2D_ARRAY_AMD              | f16sampler2DArray         |      |      |      |
    | FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD        | f16sampler1DArray         |      |      |      |
    | FLOAT16_SAMPLER_BUFFER_AMD                | f16samplerBuffer          |      |      |      |
    | FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD        | f16sampler2DMS            |      |      |      |
    | FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD  | f16sampler2DMSArray       |      |      |      |
    | FLOAT16_SAMPLER_1D_SHADOW_AMD             | f16sampler1DShadow        |      |      |      |
    | FLOAT16_SAMPLER_2D_SHADOW_AMD             | f16sampler2DShadow        |      |      |      |
    | FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD        | f16sampler2DRectShadow    |      |      |      |
    | FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD       | f16sampler1DArrayShaow    |      |      |      |
    | FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD       | f16sampler2DArrayShadow   |      |      |      |
    | FLOAT16_SAMPLER_CUBE_SHADOW_AMD           | f16samplerCubeShadow      |      |      |      |
    | FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD | f16samplerCubeArrayShadow |      |      |      |
    | FLOAT16_IMAGE_1D_AMD                      | f16image1D                |      |      |      |
    | FLOAT16_IMAGE_2D_AMD                      | f16image2D                |      |      |      |
    | FLOAT16_IMAGE_3D_AMD                      | f16image3D                |      |      |      |
    | FLOAT16_IMAGE_2D_RECT_AMD                 | f16image2DRect            |      |      |      |
    | FLOAT16_IMAGE_CUBE_AMD                    | f16imageCube              |      |      |      |
    | FLOAT16_IMAGE_1D_ARRAY_AMD                | f16image1DArray           |      |      |      |
    | FLOAT16_IMAGE_2D_ARRAY_AMD                | f16image2DArray           |      |      |      |
    | FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD          | f16imageCubeArray         |      |      |      |
    | FLOAT16_IMAGE_BUFFER_AMD                  | f16imageBuffer            |      |      |      |
    | FLOAT16_IMAGE_2D_MULTISAMPLE_AMD          | f16image2DMS              |      |      |      |
    | FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD    | f16image2DMSArray         |      |      |      |
    +-------------------------------------------+---------------------------+------+------+------+

Modifications to the OpenGL Shading Language Specification, Version 4.50

    Including the following line in a shader can be used to control the language features described
    in this extension:

        #extension GL_AMD_gpu_shader_half_float_fetch : <behavior>

    where <behavior> is as specified in section 3.3.

    New preprocessor #defines are added to the OpenGL Shading Language:

        #define GL_AMD_gpu_shader_half_float_fetch    1

Additions to Chapter 3 of the OpenGL Shading Language Specification (Basics)

    Modify Section 3.6, Keywords

    (add the following to the list of reserved keywords at p. 18)

        f16sampler1D  f16sampler2D  f16sampler3D  f16sampler2DRect  f16samplerCube
        f16sampler1DArray  f16sampler2DArray  f16samplerCubeArray
        f16samplerBuffer  f16sampler2DMS  f16sampler2DMSArray
        f16sampler1DShadow  f16sampler2DShadow  f16sampler1DArrayShadow f16sampler2DArrayShadow
        f16sampler2DRectShadow  f16samplerCubeShadow  f16samplerCubeArrayShadow
        f16image1D  f16image2D  f16image3D  f16image2DRect
        f16imageCube  f16image1DArray  f16image2DArray  f16imageCubeArray
        f16imageBuffer  f16image2DMS  f16image2DMSArray

Additions to Chapter 4 of the OpenGL Shading Language Specification (Variables and Types)

    Modify Section 4.1, Basic Types

    (insert new types, interleaved with the existing types, to the "Type" table cell of the table
     "Floating-Point Opaque Types", p. 23)

    +---------------------------+-----------------------------------------------------------------+
    | Type                      | Meaning                                                         |
    +---------------------------+-----------------------------------------------------------------+
    | f16sampler1D              | a handle for accessing a 1D texture (the result is half-        |
    | f16image1D                | precision if it is floating-point typed)                        |
    | f16sampler2D              | a handle for accessing a 2D texture (the result is half-        |
    | f16image2D                | precision if it is floating-point typed)                        |
    | f16sampler3D              | a handle for accessing a 3D texture (the result is half-        |
    | f16image3D                | precision if it is floating-point typed)                        |
    | f16samplerCube            | a handle for accessing a cube mapped texture (the result is     |
    | f16imageCube              | half-precision if it is floating-point typed)                   |
    | f16sampler2DRect          | a handle for accessing a rectangle texture (the result is half- |
    | f16image2DRect            | precision if it is floating-point typed)                        |
    | f16sampler1DArray         | a handle for accessing a 1D array texture (the result is half-  |
    | f16image1DArray           | precision if it is floating-point typed)                        |
    | f16sampler2DArray         | a handle for accessing a 2D array texture (the result is half-  |
    | f16image2DArray           | precision if it is floating-point typed)                        |
    | f16samplerBuffer          | a handle for accessing a buffer texture (the result is half-    |
    | f16imageBuffer            | precision if it is floating-point typed)                        |
    | f16sampler2DMS            | a handle for accessing a 2D multi-sample texture (the result is |
    | f16image2DMS              | half-precision if it is floating-point typed)                   |
    | f16sampler2DMSArray       | a handle for accessing a 2D multi-sample array texture (the     |
    | f16image2DMSArray         | result is half-precision if it is floating-point typed)         |
    | f16samplerCubeArray       | a handle for accessing a cube map array texture (the result is  |
    | f16imageCubeArray         | half-precision if it is floating-point typed)                   |
    | f16sampler1DShadow        | a handle for accessing a 1D depth texture with comparison (the  |
    |                           | result is half-precision if it is floating-point typed)         |
    | f16sampler2DShadow        | a handle for accessing a 2D depth texture with comparison (the  |
    |                           | result is half-precision if it is floating-point typed)         |
    | f16sampler2DRectShadow    | a handle for accessing a rectangle texture with comparison (the |
    |                           | result is half-precision if it is floating-point typed)         |
    | f16sampler1DArrayShadow   | a handle for accessing a 1D array depth texture with comparison |
    |                           | (the result is half-precision if it is floating-point typed)    |
    | f16sampler2DArrayShadow   | a handle for accessing a 2D array depth texture with comparison |
    |                           | (the result is half-precision if it is floating-point typed)    |
    | f16samplerCubeShadow      | a handle for accessing a cube map depth texture with comparison |
    |                           | (the result is half-precision if it is floating-point typed)    |
    | f16samplerCubeArrayShadow | a handle for accessing a cube map array depth texture with      |
    |                           | comparison (the result is half-precision if it is floating-point|
    |                           | typed)                                                          |
    +---------------------------+-----------------------------------------------------------------+

    Modify Section 4.4.6.2 Format Layout Qualifiers

    (modify the third sentence of the first paragraph on p. 83)

    ... any image variable declaration. For image variables with floating-point component types
    (keywords starting with "image" or "f16image"), signed integer component types (keywords
    starting with "iimage"), or unsigned integer component types (keywords starting with "uimage"),
    the format qualifier used must match the float-image-format-qualifier, int-image-format-
    qualifier, or uint-image-format-qualifier grammar rules, respectively.

Additions to Chapter 8 of the OpenGL Shading Language Specification (Built-in Functions)

    Modify Section 8.9 Texture Functions

    (modify the second paragraph on p. 160)

    Texture data can be stored by the GL as floating point, unsigned normalized integer, unsigned
    integer or signed integer data. This is determined by the type of the internal format of the
    texture. Texture lookups on unsigned normalized integer and floating-point data return single-
    precision or half-precision floating-point values in the range [0, 1].

    (modify table head on p. 160)

    +------------------+-------------------------------------+----------------+------------------+
    | Internal Texture | Single-Precision or Half-Precision  | Signed Integer | Unsigned Integer |
    | Format           | Floating Point Sampler Types        | Sampler Types  | Sampler Types    |
    +------------------+-------------------------------------+----------------+------------------+

    (modify the third sentence of the fourth paragraph on p. 160)

    ... a uvec4. If a single-precision floating-point sampler type is used, the result of a texture
    lookup is a vec4. If a half-precision floating-point sampler type is used, the result of a
    texture lookup is a f16vec4.

    In the prototypes below, the "g" in the return type "gvec4" is used as a placeholder for
    nothing, "f16", "i", or "u" making a return type of vec4, f16vec4, ivec4, uvec4. In these
    cases, the sampler argument type also starts with "g", indicating the same substitution done on
    the return type; it is either a single-precision floating point, half-precision floating point,
    signed integer, or unsigned integer sampler, matching the basic type of the return type, as
    described above.

    Modify Section 8.9.1 Texture Query Functions

    (insert new functions, whose prototypes are different from those existing ones, to the "Syntax"
     table cell of each query function group on p. 162-163)

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | int   textureSize(f16sampler1DShadow sampler, int lod)       | Returns the dimensions of    |
    | ivec2 textureSize(f16sampler2DShadow sampler, int lod)       | level <lod> (if present) for |
    | ivec2 textureSize(f16samplerCubeShadow sampler, int lod)     | the texture bound to sampler,|
    | ivec3 textureSize(f16samplerCubeArrayShadow sampler, int lod)| ...                          |
    | ivec2 textureSize(f16sampler2DRectShadow sampler)            |                              |
    | ivec2 textureSize(f16sampler1DArrayShadow sampler, int lod)  |                              |
    | ivec3 textureSize(f16sampler2DArrayShadow sampler, int lod)  |                              |
    +--------------------------------------------------------------+------------------------------+
    | vec2 textureQueryLod(f16sampler1D sampler, float16_t P)      | Returns the mipmap array(s)  |
    | vec2 textureQueryLod(f16sampler2D sampler, f16vec2 P)        | that would be accessed in the|
    | vec2 textureQueryLod(f16sampler3D sampler, f16vec3 P)        | x component of the return    |
    | vec2 textureQueryLod(f16samplerCube sampler, f16vec3 P)      | value.                       |
    | vec2 textureQueryLod(f16sampler1DArray sampler,              | ...                          |
    |                      float16_t P)                            |                              |
    | vec2 textureQueryLod(f16sampler2DArray sampler, f16vec2 P)   |                              |
    | vec2 textureQueryLod(f16samplerCubeArray sampler,            |                              |
    |                      f16vec3 P)                              |                              |
    | vec2 textureQueryLod(f16sampler1DShadow sampler,             |                              |
    |                      float16_t P)                            |                              |
    | vec2 textureQueryLod(f16sampler2DShadow sampler,             |                              |
    |                      f16vec2 P)                              |                              |
    | vec2 textureQueryLod(f16samplerCubeShadow sampler,           |                              |
    |                      f16vec3 P)                              |                              |
    | vec2 textureQueryLod(f16sampler1DArrayShadow sampler,        |                              |
    |                      float16_t P)                            |                              |
    | vec2 textureQueryLod(f16sampler2DArrayShadow sampler,        |                              |
    |                      f16vec2 P)                              |                              |
    | vec2 textureQueryLod(f16samplerCubeArrayShadow sampler,      |                              |
    |                      f16vec3 P)                              |                              |
    +--------------------------------------------------------------+------------------------------+
    | int textureQueryLevels(f16sampler1DShadow sampler)           | Returns the number of mipmap |
    | int textureQueryLevels(f16sampler2DShadow sampler)           | levels accessible in the     |
    | int textureQueryLevels(f16samplerCubeShadow sampler)         | texture associated with      |
    | int textureQueryLevels(f16sampler1DArrayShadow sampler)      | sampler, ...                 |
    | int textureQueryLevels(f16sampler2DArrayShadow sampler)      |                              |
    | int textureQueryLevels(f16samplerCubeArrayShadow sampler)    |                              |
    +--------------------------------------------------------------+------------------------------+

    Modify Section 8.9.2 Texel Lookup Functions

    (insert new functions, whose prototypes are different from those existing ones, to the "Syntax"
     table cell of each lookup function group, and modify certain descriptions in the "Description"
     table cells of texture() and textureProj() on p. 164-170)

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   texture(f16sampler1D sampler, float16_t P          | Use the texture coordinate P |
    |                   [, float16_t bias])                        | to do a texture lookup in the|
    | f16vec4   texture(f16sampler2D sampler, f16vec2 P            | texture currently bound to   |
    |                   [, float16_t bias])                        | <sampler>.                   |
    | f16vec4   texture(f16sampler3D sampler, f16vec3 P            |                              |
    |                   [, float16_t bias])                        | For shadow forms: When       |
    | f16vec4   texture(f16samplerCube sampler, f16vec3 P          | <compare> is present, it is  |
    |                   [, float16_t bias])                        | used as <Dref>, and the array|
    | float16_t texture(f16sampler1DShadow sampler, vec3 P         | layer comes from the last    |
    |                   [, float bias])                            | component of <P>. When       |
    | float16_t texture(f16sampler1DShadow sampler, f16vec2 P,     | <compare> is not present, the|
    |                   float compare [, float16_t bias])          | last component of <P> is used|
    | float16_t texture(f16sampler2DShadow sampler, vec3 P         | as <Dref> and the array layer|
    |                   [, float bias])                            | comes from the second to last|
    | float16_t texture(f16sampler2DShadow sampler, f16vec2 P,     | component of <P>.            |
    |                   float compare [, float16_t bias])          |                              |
    | float16_t texture(f16samplerCubeShadow sampler, vec4 P       | ...                          |
    |                   [, float bias])                            |                              |
    | float16_t texture(f16samplerCubeShadow sampler, f16vec3 P,   |                              |
    |                   float compare [, float16_t bias])          |                              |
    | f16vec4   texture(f16sampler1DArray sampler, f16vec2 P       |                              |
    |                   [, float16_t bias])                        |                              |
    | f16vec4   texture(f16sampler2DArray sampler, f16vec3 P       |                              |
    |                   [, float16_t bias])                        |                              |
    | f16vec4   texture(f16samplerCubeArray sampler, f16vec4 P     |                              |
    |                   [, float16_t bias])                        |                              |
    | float16_t texture(f16sampler1DArrayShadow sampler, vec3 P    |                              |
    |                   [, float bias])                            |                              |
    | float16_t texture(f16sampler1DArrayShadow sampler, f16vec2 P,|                              |
    |                   float compare [, float16_t bias])          |                              |
    | float16_t texture(f16sampler2DArrayShadow sampler, vec4 P)   |                              |
    | float16_t texture(f16sampler2DArrayShadow sampler, f16vec3 P,|                              |
    |                   float compare)                             |                              |
    | f16vec4   texture(f16sampler2DRect sampler, f16vec2 P)       |                              |
    | float16_t texture(f16sampler2DRectShadow sampler, vec3 P)    |                              |
    | float16_t texture(f16sampler2DRectShadow sampler, f16vec2 P, |                              |
    |                   float compare)                             |                              |
    | float16_t texture(f16samplerCubeArrayShadow sampler, vec4 P, |                              |
    |                   float compare)                             |                              |
    | float16_t texture(f16samplerCubeArrayShadow sampler,         |                              |
    |                   f16vec4 P, float compare)                  |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProj(f16sampler1D sampler, f16vec2 P        | Do a texture lookup with     |
    |                       [, float16_t bias])                    | projection. The texture      |
    | f16vec4   textureProj(f16sampler1D sampler, f16vec4 P        | coordinates consumed from    |
    |                       [, float16_t bias])                    | <P>, not including the last  |
    | f16vec4   textureProj(f16sampler2D sampler, f16vec3 P        | component of <P>, and        |
    |                       [, float16_t bias])                    | <compare>, if present in the |
    | f16vec4   textureProj(f16sampler2D sampler, f16vec4 P        | shadow forms, are divided by |
    |                       [, float16_t bias])                    | the last component of <P>.   |
    | f16vec4   textureProj(f16sampler3D sampler, f16vec4 P        | When present in the shadow   |
    |                       [, float16_t bias])                    | forms, the resulting         |
    | float16_t textureProj(f16sampler1DShadow sampler, vec4 P     | <compare> is used as Dref.   |
    |                       [, float bias])                        | When <compare> is not        |
    | float16_t textureProj(f16sampler1DShadow sampler, f16vec3 P  | present, the resulting 3rd   |
    |                       float compare [, float16_t bias])      | component of <P> in the      |
    | float16_t textureProj(f16sampler2DShadow sampler, vec4 P     | shadow forms is used as      |
    |                       [, float bias])                        | <Dref>. After these values   |
    | float16_t textureProj(f16sampler2DShadow sampler, f16vec3 P  | are computed, texture lookup |
    |                       float compare [, float16_t bias])      | proceeds as in texture().    |
    | f16vec4   textureProj(f16sampler2DRect sampler, f16vec3 P)   |                              |
    | f16vec4   textureProj(f16sampler2DRect sampler, f16vec4 P)   |                              |
    | float16_t textureProj(f16sampler2DRectShadow sampler, vec4 P)|                              |
    | float16_t textureProj(f16sampler2DRectShadow sampler,        |                              |
    |                       f16vec3 P, float compare)              |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureLod(f16sampler1D sampler, float16_t P,      | Do a texture lookup as in    |
    |                      float16_t lod)                          | texture() but with explicit  |
    | f16vec4   textureLod(f16sampler2D sampler, f16vec2 P,        | LOD; ...                     |
    |                      float16_t lod)                          |                              |
    | f16vec4   textureLod(f16sampler3D sampler, f16vec3 P,        |                              |
    |                      float16_t lod)                          |                              |
    | f16vec4   textureLod(f16samplerCube sampler, f16vec3 P,      |                              |
    |                      float16_t lod)                          |                              |
    | float16_t textureLod(f16sampler1DShadow sampler, vec3 P,     |                              |
    |                      float lod)                              |                              |
    | float16_t textureLod(f16sampler1DShadow sampler, f16vec2 P,  |                              |
    |                      float compare, float16_t lod)           |                              |
    | float16_t textureLod(f16sampler2DShadow sampler, vec3 P,     |                              |
    |                      float lod)                              |                              |
    | float16_t textureLod(f16sampler2DShadow sampler, f16vec2 P,  |                              |
    |                      float compare, float16_t lod)           |                              |
    | f16vec4   textureLod(f16sampler1DArray sampler, f16vec2 P,   |                              |
    |                      float16_t lod)                          |                              |
    | f16vec4   textureLod(f16sampler2DArray sampler, f16vec3 P,   |                              |
    |                      float16_t lod)                          |                              |
    | float16_t textureLod(f16sampler1DArrayShadow sampler, vec3 P,|                              |
    |                      float lod)                              |                              |
    | float16_t textureLod(f16sampler1DArrayShadow sampler,        |                              |
    |                      f16vec2 P, float compare, float16_t lod)|                              |
    | f16vec4   textureLod(f16samplerCubeArray sampler, f16vec4 P, |                              |
    |                      float16_t lod)                          |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureOffset(f16sampler1D sampler, float16_t P,   | Do a texture lookup as in    |
    |                         int offset [, float16_t bias])       | texture() but with <offset>  |
    | f16vec4   textureOffset(f16sampler2D sampler, f16vec2 P,     | added to the (u,v,w) texel   |
    |                         ivec2 offset [, float16_t bias])     | coordinates before looking up|
    | f16vec4   textureOffset(f16sampler3D sampler, f16vec3 P,     | each texel. ...              |
    |                         ivec3 offset [, float16_t bias])     |                              |
    | f16vec4   textureOffset(f16sampler2DRect sampler, f16vec2 P, |                              |
    |                         ivec2 offset)                        |                              |
    | float16_t textureOffset(f16sampler2DRectShadow sampler,      |                              |
    |                         vec3 P, ivec2 offset)                |                              |
    | float16_t textureOffset(f16sampler2DRectShadow sampler,      |                              |
    |                         f16vec2 P, float compare,            |                              |
    |                         ivec2 offset)                        |                              |
    | float16_t textureOffset(f16sampler1DShadow sampler, vec3 P,  |                              |
    |                         int offset [, float bias])           |                              |
    | float16_t textureOffset(f16sampler1DShadow sampler,          |                              |
    |                         f16vec2 P, float compare, int offset |                              |
    |                         [, float16_t bias])                  |                              |
    | float16_t textureOffset(f16sampler2DShadow sampler, vec3 P,  |                              |
    |                         ivec2 offset [, float bias])         |                              |
    | float16_t textureOffset(f16sampler2DShadow sampler,          |                              |
    |                         f16vec2 P, float compare,            |                              |
    |                         ivec2 offset [, float16_t bias])     |                              |
    | f16vec4   textureOffset(f16sampler1DArray sampler, f16vec2 P,|                              |
    |                         int offset [, float16_t bias])       |                              |
    | f16vec4   textureOffset(f16sampler2DArray sampler, f16vec3 P,|                              |
    |                         ivec2 offset [, float16_t bias])     |                              |
    | float16_t textureOffset(f16sampler1DArrayShadow sampler,     |                              |
    |                         vec3 P, int offset [, float bias])   |                              |
    | float16_t textureOffset(f16sampler1DArrayShadow sampler,     |                              |
    |                         f16vec2 P, float compare, int offset |                              |
    |                         [, float16_t bias])                  |                              |
    | float16_t textureOffset(f16sampler2DArrayShadow sampler,     |                              |
    |                         vec4 P, ivec2 offset)                |                              |
    | float16_t textureOffset(f16sampler2DArrayShadow sampler,     |                              |
    |                         f16vec3 P, float compare,            |                              |
    |                         ivec2 offset)                        |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProjOffset(f16sampler1D sampler, f16vec2 P, | Do a projective texture      |
    |                             int offset [, float16_t bias])   | lookup as described in       |
    | f16vec4   textureProjOffset(f16sampler1D sampler, f16vec4 P, | textureProj() offset by      |
    |                             int offset [, float16_t bias])   | <offset> as described in     |
    | f16vec4   textureProjOffset(f16sampler2D sampler, f16vec3 P, | textureOffset().             |
    |                             ivec2 offset [, float16_t bias]) |                              |
    | f16vec4   textureProjOffset(f16sampler2D sampler, f16vec4 P, |                              |
    |                             ivec2 offset [, float16_t bias]) |                              |
    | f16vec4   textureProjOffset(f16sampler3D sampler, f16vec4 P, |                              |
    |                             ivec3 offset [, float16_t bias]) |                              |
    | f16vec4   textureProjOffset(f16sampler2DRect sampler,        |                              |
    |                             f16vec3 P, ivec2 offset)         |                              |
    | f16vec4   textureProjOffset(f16sampler2DRect sampler,        |                              |
    |                             f16vec4 P, ivec2 offset)         |                              |
    | float16_t textureProjOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             vec4 P, ivec2 offset)            |                              |
    | float16_t textureProjOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             f16vec3 P, float compare,        |                              |
    |                             ivec2 offset)                    |                              |
    | float16_t textureProjOffset(f16sampler1DShadow sampler,      |                              |
    |                             vec4 P, int offset               |                              |
    |                             [, float bias])                  |                              |
    | float16_t textureProjOffset(f16sampler1DShadow sampler,      |                              |
    |                             f16vec3 P, float compare,        |                              |
    |                             int offset [, float16_t bias])   |                              |
    | float16_t textureProjOffset(f16sampler2DShadow sampler,      |                              |
    |                             vec4 P, ivec2 offset             |                              |
    |                             [, float bias])                  |                              |
    | float16_t textureProjOffset(f16sampler2DShadow sampler,      |                              |
    |                             f16vec3 P, float compare,        |                              |
    |                             ivec2 offset [, float16_t bias]) |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureLodOffset(f16sampler1D sampler, float16_t P,| Do an offset texture lookup  |
    |                            float16_t lod, int offset)        | with explicit LOD. ...       |
    | f16vec4   textureLodOffset(f16sampler2D sampler, f16vec2 P,  |                              |
    |                            float16_t lod, ivec2 offset)      |                              |
    | f16vec4   textureLodOffset(f16sampler3D sampler, f16vec3 P,  |                              |
    |                            float16_t lod, ivec3 offset)      |                              |
    | float16_t textureLodOffset(f16sampler1DShadow sampler,       |                              |
    |                            vec3 P, float lod, int offset)    |                              |
    | float16_t textureLodOffset(f16sampler1DShadow sampler,       |                              |
    |                            f16vec2 P, float compare,         |                              |
    |                            float16_t lod, int offset)        |                              |
    | float16_t textureLodOffset(f16sampler2DShadow sampler,       |                              |
    |                            vec3 P, float lod, ivec2 offset)  |                              |
    | float16_t textureLodOffset(f16sampler2DShadow sampler,       |                              |
    |                            f16vec2 P, float compare,         |                              |
    |                            float16_t lod, ivec2 offset)      |                              |
    | f16vec4   textureLodOffset(f16sampler1DArray sampler,        |                              |
    |                            f16vec2 P, float16_t lod,         |                              |
    |                            int offset)                       |                              |
    | f16vec4   textureLodOffset(f16sampler2DArray sampler,        |                              |
    |                            f16vec3 P, float16_t lod,         |                              |
    |                            ivec2 offset)                     |                              |
    | float16_t textureLodOffset(f16sampler1DArrayShadow sampler,  |                              |
    |                            vec3 P, float lod, int offset)    |                              |
    | float16_t textureLodOffset(f16sampler1DArrayShadow sampler,  |                              |
    |                            f16vec2 P, float compare,         |                              |
    |                            float16_t lod, int offset)        |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProjLod(f16sampler1D sampler, f16vec2 P,    | Do a projective texture      |
    |                          float16_t lod)                      | lookup with explicit LOD. ...|
    | f16vec4   textureProjLod(f16sampler1D sampler, f16vec4 P,    |                              |
    |                          float16_t lod)                      |                              |
    | f16vec4   textureProjLod(f16sampler2D sampler, f16vec3 P,    |                              |
    |                          float16_t lod)                      |                              |
    | f16vec4   textureProjLod(f16sampler2D sampler, f16vec4 P,    |                              |
    |                          float16_t lod)                      |                              |
    | f16vec4   textureProjLod(f16sampler3D sampler, f16vec4 P,    |                              |
    |                          float16_t lod)                      |                              |
    | float16_t textureProjLod(f16sampler1DShadow sampler, vec4 P, |                              |
    |                          float lod)                          |                              |
    | float16_t textureProjLod(f16sampler1DShadow sampler,         |                              |
    |                          f16vec3 P, float compare,           |                              |
    |                          float16_t lod)                      |                              |
    | float16_t textureProjLod(f16sampler2DShadow sampler, vec4 P, |                              |
    |                          float lod)                          |                              |
    | float16_t textureProjLod(f16sampler2DShadow sampler,         |                              |
    |                          f16vec3 P, float compare,           |                              |
    |                          float16_t lod)                      |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProjLodOffset(f16sampler1D sampler,         | Do a offset projective       |
    |                                f16vec2 P, float16_t lod,     | texture lookup with explicit |
    |                                int offset)                   | LOD. ...                     |
    | f16vec4   textureProjLodOffset(f16sampler1D sampler,         |                              |
    |                                f16vec4 P, float16_t lod,     |                              |
    |                                int offset)                   |                              |
    | f16vec4   textureProjLodOffset(f16sampler2D sampler,         |                              |
    |                                f16vec3 P, float16_t lod,     |                              |
    |                                ivec2 offset)                 |                              |
    | f16vec4   textureProjLodOffset(f16sampler2D sampler,         |                              |
    |                                f16vec4 P, float16_t lod,     |                              |
    |                                ivec2 offset)                 |                              |
    | f16vec4   textureProjLodOffset(f16sampler3D sampler,         |                              |
    |                                f16vec4 P, float16_t lod,     |                              |
    |                                ivec3 offset)                 |                              |
    | float16_t textureProjLodOffset(f16sampler1DShadow sampler,   |                              |
    |                                vec4 P, float lod, int offset)|                              |
    | float16_t textureProjLodOffset(f16sampler1DShadow sampler,   |                              |
    |                                f16vec3 P, float compare,     |                              |
    |                                float16_t lod, int offset)    |                              |
    | float16_t textureProjLodOffset(f16sampler2DShadow sampler,   |                              |
    |                                vec4 P, float lod,            |                              |
    |                                ivec2 offset)                 |                              |
    | float16_t textureProjLodOffset(f16sampler2DShadow sampler,   |                              |
    |                                f16vec3 P, float compare,     |                              |
    |                                float16_t lod, ivec2 offset)  |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureGrad(f16sampler1D sampler, float16_t P,     | Do a texture lookup as in    |
    |                       float16_t dPdx, float16_t dPdy)        | texture() but with explicit  |
    | f16vec4   textureGrad(f16sampler2D sampler, f16vec2 P,       | gradients. ...               |
    |                       f16vec2 dPdx, f16vec2 dPdy)            |                              |
    | f16vec4   textureGrad(f16sampler3D sampler, f16vec3 P,       |                              |
    |                       f16vec3 dPdx, f16vec3 dPdy)            |                              |
    | f16vec4   textureGrad(f16samplerCube sampler, f16vec3 P,     |                              |
    |                       f16vec3 dPdx, f16vec3 dPdy)            |                              |
    | f16vec4   textureGrad(f16sampler2DRect sampler, f16vec2 P,   |                              |
    |                       f16vec2 dPdx, f16vec2 dPdy)            |                              |
    | float16_t textureGrad(f16sampler2DRectShadow sampler, vec3 P,|                              |
    |                       vec2 dPdx, vec2 dPdy)                  |                              |
    | float16_t textureGrad(f16sampler2DRectShadow sampler,        |                              |
    |                       f16vec2 P, float compare, f16vec2 dPdx,|                              |
    |                       f16vec2 dPdy)                          |                              |
    | float16_t textureGrad(f16sampler1DShadow sampler, vec3 P,    |                              |
    |                       float dPdx, float dPdy)                |                              |
    | float16_t textureGrad(f16sampler1DShadow sampler, f16vec2 P, |                              |
    |                       float compare, float16_t dPdx,         |                              |
    |                       float16_t dPdy)                        |                              |
    | float16_t textureGrad(f16sampler2DShadow sampler, vec3 P,    |                              |
    |                       vec2 dPdx, vec2 dPdy)                  |                              |
    | float16_t textureGrad(f16sampler2DShadow sampler, f16vec2 P, |                              |
    |                       float compare, f16vec2 dPdx,           |                              |
    |                       f16vec2 dPdy)                          |                              |
    | float16_t textureGrad(f16samplerCubeShadow sampler, vec4 P,  |                              |
    |                       vec3 dPdx, vec3 dPdy)                  |                              |
    | float16_t textureGrad(f16samplerCubeShadow sampler,          |                              |
    |                       f16vec3 P, float compare, f16vec3 dPdx,|                              |
    |                       f16vec3 dPdy)                          |                              |
    | f16vec4   textureGrad(f16sampler1DArray sampler, f16vec2 P,  |                              |
    |                       float16_t dPdx, float16_t dPdy)        |                              |
    | f16vec4   textureGrad(f16sampler2DArray sampler, f16vec3 P,  |                              |
    |                       f16vec2 dPdx, f16vec2 dPdy)            |                              |
    | float16_t textureGrad(f16sampler1DArrayShadow sampler,       |                              |
    |                       vec3 P, float dPdx, float dPdy)        |                              |
    | float16_t textureGrad(f16sampler1DArrayShadow sampler,       |                              |
    |                       f16vec2 P, float compare,              |                              |
    |                       float16_t dPdx, float16_t dPdy)        |                              |
    | float16_t textureGrad(f16sampler2DArrayShadow sampler,       |                              |
    |                       vec4 P, vec2 dPdx, vec2 dPdy)          |                              |
    | float16_t textureGrad(f16sampler2DArrayShadow sampler,       |                              |
    |                       f16vec3 P, float compare, f16vec2 dPdx,|                              |
    |                       f16vec2 dPdy)                          |                              |
    | f16vec4   textureGrad(f16samplerCubeArray sampler,           |                              |
    |                       f16vec4 P, f16vec3 dPdx, f16vec3 dPdy) |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureGradOffset(f16sampler1D sampler,            | Do a texture lookup with both|
    |                             float16_t P, float16_t dPdx,     | explicit gradient and offset,|
    |                             float16_t dPdy, int offset)      | as described in textureGrad()|
    | f16vec4   textureGradOffset(f16sampler2D sampler, f16vec2 P, | and textureOffset().         |
    |                             f16vec2 dPdx, f16vec2 dPdy,      |                              |
    |                             ivec2 offset)                    |                              |
    | f16vec4   textureGradOffset(f16sampler3D sampler, f16vec3 P, |                              |
    |                             f16vec3 dPdx, f16vec3 dPdy,      |                              |
    |                             ivec3 offset)                    |                              |
    | f16vec4   textureGradOffset(f16sampler2DRect sampler,        |                              |
    |                             f16vec2 P, f16vec2 dPdx,         |                              |
    |                             f16vec2 dPdy, ivec2 offset)      |                              |
    | float16_t textureGradOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             vec3 P, vec2 dPdx, vec2 dPdy,    |                              |
    |                             ivec2 offset)                    |                              |
    | float16_t textureGradOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             f16vec2 P, float compare,        |                              |
    |                             f16vec2 dPdx, f16vec2 dPdy,      |                              |
    |                             ivec2 offset)                    |                              |
    | float16_t textureGradOffset(f16sampler1DShadow sampler,      |                              |
    |                             vec3 P, float dPdx, float dPdy,  |                              |
    |                             int offset)                      |                              |
    | float16_t textureGradOffset(f16sampler1DShadow sampler,      |                              |
    |                             f16vec2 P, float compare,        |                              |
    |                             float16_t dPdx, float16_t dPdy,  |                              |
    |                             int offset)                      |                              |
    | float16_t textureGradOffset(f16sampler2DShadow sampler,      |                              |
    |                             vec3 P, vec2 dPdx, vec2 dPdy,    |                              |
    |                             ivec2 offset)                    |                              |
    | float16_t textureGradOffset(f16sampler2DShadow sampler,      |                              |
    |                             f16vec2 P, float compare,        |                              |
    |                             f16vec2 dPdx, f16vec2 dPdy,      |                              |
    |                             ivec2 offset)                    |                              |
    | f16vec4   textureGradOffset(f16sampler1DArray sampler,       |                              |
    |                             f16vec2 P, float16_t dPdx,       |                              |
    |                             float16_t dPdy, int offset)      |                              |
    | f16vec4   textureGradOffset(f16sampler2DArray sampler,       |                              |
    |                             f16vec3 P, f16vec2 dPdx,         |                              |
    |                             f16vec2 dPdy, ivec2 offset)      |                              |
    | float16_t textureGradOffset(f16sampler1DArrayShadow sampler, |                              |
    |                             vec3 P, float dPdx, float dPdy,  |                              |
    |                             int offset)                      |                              |
    | float16_t textureGradOffset(f16sampler1DArrayShadow sampler, |                              |
    |                             f16vec2 P, float compare,        |                              |
    |                             float16_t dPdx, float16_t dPdy,  |                              |
    |                             int offset)                      |                              |
    | float16_t textureGradOffset(f16sampler2DArrayShadow sampler, |                              |
    |                             vec4 P, vec2 dPdx, vec2 dPdy,    |                              |
    |                             ivec2 offset)                    |                              |
    | float16_t textureGradOffset(f16sampler2DArrayShadow sampler, |                              |
    |                             f16vec3 P, float compare,        |                              |
    |                             f16vec2 dPdx, f16vec2 dPdy,      |                              |
    |                             ivec2 offset)                    |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProjGrad(f16sampler1D sampler, f16vec2 P,   | Do a texture lookup both     |
    |                           float16_t dPdx, float16_t dPdy)    | projectively, as described in|
    | f16vec4   textureProjGrad(f16sampler1D sampler, f16vec4 P,   | textureProj(), and with      |
    |                           float16_t dPdx, float16_t dPdy)    | explicit gradient as         |
    | f16vec4   textureProjGrad(f16sampler2D sampler, f16vec3 P,   | described in textureGrad().  |
    |                           f16vec2 dPdx, f16vec2 dPdy)        | ...                          |
    | f16vec4   textureProjGrad(f16sampler2D sampler, f16vec4 P,   |                              |
    |                           f16vec2 dPdx, f16vec2 dPdy)        |                              |
    | f16vec4   textureProjGrad(f16sampler3D sampler, f16vec4 P,   |                              |
    |                           f16vec3 dPdx, f16vec3 dPdy)        |                              |
    | f16vec4   textureProjGrad(f16sampler2DRect sampler,          |                              |
    |                           f16vec3 P, f16vec2 dPdx,           |                              |
    |                           f16vec2 dPdy)                      |                              |
    | f16vec4   textureProjGrad(f16sampler2DRect sampler,          |                              |
    |                           f16vec4 P, f16vec2 dPdx,           |                              |
    |                           f16vec2 dPdy)                      |                              |
    | float16_t textureProjGrad(f16sampler2DRectShadow sampler,    |                              |
    |                           vec4 P, vec2 dPdx, vec2 dPdy)      |                              |
    | float16_t textureProjGrad(f16sampler2DRectShadow sampler,    |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           f16vec2 dPdx, f16vec2 dPdy)        |                              |
    | float16_t textureProjGrad(f16sampler1DShadow sampler, vec4 P,|                              |
    |                           float dPdx, float dPdy)            |                              |
    | float16_t textureProjGrad(f16sampler1DShadow sampler,        |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           float16_t dPdx, float16_t dPdy)    |                              |
    | float16_t textureProjGrad(f16sampler2DShadow sampler, vec4 P,|                              |
    |                           vec2 dPdx, vec2 dPdy)              |                              |
    | float16_t textureProjGrad(f16sampler2DShadow sampler,        |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           f16vec2 dPdx, f16vec2 dPdy)        |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureProjGradOffset(f16sampler1D sampler,        | Do a texture lookup          |
    |                                 f16vec2 P, float16_t dPdx,   | projectively and with        |
    |                                 float16_t dPdy, int offset)  | explicit gradient as         |
    | f16vec4   textureProjGradOffset(f16sampler1D sampler,        | described in                 |
    |                                 f16vec4 P, float16_t dPdx,   | textureProjGrad(), as well as|
    |                                 float16_t dPdy, int offset)  | with offset, as described in |
    | f16vec4   textureProjGradOffset(f16sampler2D sampler,        | textureOffset().             |
    |                                 f16vec3 P, f16vec2 dPdx,     |                              |
    |                                 f16vec2 dPdy, ivec2 offset)  |                              |
    | f16vec4   textureProjGradOffset(f16sampler2D sampler,        |                              |
    |                                 f16vec4 P, f16vec2 dPdx,     |                              |
    |                                 f16vec2 dPdy, ivec2 offset)  |                              |
    | f16vec4   textureProjGradOffset(f16sampler2DRect sampler,    |                              |
    |                                 f16vec3 P, f16vec2 dPdx,     |                              |
    |                                 f16vec2 dPdy, ivec2 offset)  |                              |
    | f16vec4   textureProjGradOffset(f16sampler2DRect sampler,    |                              |
    |                                 f16vec4 P, f16vec2 dPdx,     |                              |
    |                                 f16vec2 dPdy, ivec2 offset)  |                              |
    | float16_t textureProjGradOffset(f16sampler2DRectShadow       |                              |
    |                                 sampler, vec4 P, vec2 dPdx,  |                              |
    |                                 vec2 dPdy, ivec2 offset)     |                              |
    | float16_t textureProjGradOffset(f16sampler2DRectShadow       |                              |
    |                                 sampler, f16vec3 P,          |                              |
    |                                 float compare, f16vec2 dPdx, |                              |
    |                                 f16vec2 dPdy, ivec2 offset)  |                              |
    | f16vec4   textureProjGradOffset(f16sampler3D sampler,        |                              |
    |                                 f16vec4 P, f16vec3 dPdx,     |                              |
    |                                 f16vec3 dPdy, ivec3 offset)  |                              |
    | float16_t textureProjGradOffset(f16sampler1DShadow sampler,  |                              |
    |                                 vec4 P, float dPdx,          |                              |
    |                                 float dPdy, int offset)      |                              |
    | float16_t textureProjGradOffset(f16sampler1DShadow sampler,  |                              |
    |                                 f16vec3 P, float compare,    |                              |
    |                                 float16_t dPdx,              |                              |
    |                                 float16_t dPdy, int offset)  |                              |
    | float16_t textureProjGradOffset(f16sampler2DShadow sampler,  |                              |
    |                                 vec4 P, vec2 dPdx, vec2 dPdy,|                              |
    |                                 ivec2 offset)                |                              |
    | float16_t textureProjGradOffset(f16sampler2DShadow sampler,  |                              |
    |                                 f16vec3 P, float compare,    |                              |
    |                                 f16vec2 dPdx, f16vec2 dPdy,  |                              |
    |                                 ivec2 offset)                |                              |
    +--------------------------------------------------------------+------------------------------+

    Modify Section 8.9.3 Texture Gather Functions

    (modify the first sentence of the first paragraph on p. 170)

    The texture gather functions take components of a single or half floating-point vector operand
    as a texture coordinate, determine a set of four texels to sample from the base level of detail
    of the specified texture image, and return one component from each texel in a four-component
    result vector.

    (insert new functions, whose prototypes are different from those existing ones, to the "Syntax"
     table cell of each gather function group on p. 171-172)

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGather(f16sampler2D sampler, f16vec2 P        | Returns the value            |
    |                       [, int comp])                          |                              |
    | f16vec4 textureGather(f16sampler2DArray sampler, f16vec3 P   | gvec4(                       |
    |                       [, int comp])                          |   Sample_i0_j1(P, base).comp,|
    | f16vec4 textureGather(f16samplerCube sampler, f16vec3 P      |   Sample_i1_j1(P, base).comp,|
    |                       [, int comp])                          |   Sample_i1_j0(P, base).comp,|
    | f16vec4 textureGather(f16samplerCubeArray sampler, f16vec4 P |   Sample_i0_j0(P, base).comp)|
    |                       [, int comp])                          | ...                          |
    | f16vec4 textureGather(f16sampler2DRect sampler, f16vec2 P    |                              |
    |                       [, int comp])                          |                              |
    | f16vec4 textureGather(f16sampler2DShadow sampler, vec2 P,    |                              |
    |                       float refZ)                            |                              |
    | f16vec4 textureGather(f16sampler2DShadow sampler, f16vec2 P, |                              |
    |                       float refZ)                            |                              |
    | f16vec4 textureGather(f16sampler2DArrayShadow sampler,       |                              |
    |                       vec3 P, float refZ)                    |                              |
    | f16vec4 textureGather(f16sampler2DArrayShadow sampler,       |                              |
    |                       f16vec3 P, float refZ)                 |                              |
    | f16vec4 textureGather(f16samplerCubeShadow sampler, vec3 P,  |                              |
    |                       float refZ)                            |                              |
    | f16vec4 textureGather(f16samplerCubeShadow sampler,          |                              |
    |                       f16vec3 P, float refZ)                 |                              |
    | f16vec4 textureGather(f16samplerCubeArrayShadow sampler,     |                              |
    |                       vec4 P, float refZ)                    |                              |
    | f16vec4 textureGather(f16samplerCubeArrayShadow sampler,     |                              |
    |                       f16vec4 P, float refZ)                 |                              |
    | f16vec4 textureGather(f16sampler2DRectShadow sampler, vec2 P,|                              |
    |                       float refZ)                            |                              |
    | f16vec4 textureGather(f16sampler2DRectShadow sampler,        |                              |
    |                       f16vec2 P, float refZ)                 |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherOffset(f16sampler2D sampler, f16vec2 P, | Perform a texture gather     |
    |                             ivec2 offset [, int comp])       | operation as in              |
    | f16vec4 textureGatherOffset(f16sampler2DArray sampler,       | textureGather() by <offset>  |
    |                             f16vec3 P, ivec2 offset          | as described in              |
    |                             [, int comp])                    | textureOffset() except that  |
    | f16vec4 textureGatherOffset(f16sampler2DRect sampler,        | the <offset> can be variable |
    |                             f16vec2 P, ivec2 offset          | (non constant) and ...       |
    |                             [, int comp])                    |                              |
    | f16vec4 textureGatherOffset(f16sampler2DShadow sampler,      |                              |
    |                             vec2 P, float refZ, ivec2 offset)|                              |
    | f16vec4 textureGatherOffset(f16sampler2DShadow sampler,      |                              |
    |                             f16vec2 P, float refZ,           |                              |
    |                             ivec2 offset)                    |                              |
    | f16vec4 textureGatherOffset(f16sampler2DArrayShadow sampler, |                              |
    |                             vec3 P, float refZ, ivec2 offset)|                              |
    | f16vec4 textureGatherOffset(f16sampler2DArrayShadow sampler, |                              |
    |                             f16vec3 P, float refZ,           |                              |
    |                             ivec2 offset)                    |                              |
    | f16vec4 textureGatherOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             vec2 P, float refZ, ivec2 offset)|                              |
    | f16vec4 textureGatherOffset(f16sampler2DRectShadow sampler,  |                              |
    |                             f16vec2 P, float refZ,           |                              |
    |                             ivec2 offset)                    |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherOffsets(f16sampler2D sampler, f16vec2 P,| Operate identically to       |
    |                             ivec2 offsets[4] [, int comp])   | textureGatherOffset() except |
    | f16vec4 textureGatherOffsets(f16sampler2DArray sampler,      | that <offsets> is used to    |
    |                              f16vec3 P, ivec2 offsets[4]     | determine the location of the|
    |                              [, int comp])                   | four texels to sample. ...   |
    | f16vec4 textureGatherOffsets(f16sampler2DRect sampler,       |                              |
    |                              f16vec2 P, ivec2 offsets[4]     |                              |
    |                              [, int comp])                   |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DShadow sampler,     |                              |
    |                              vec2 P, float refZ, ivec2       |                              |
    |                              offsets[4])                     |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DShadow sampler,     |                              |
    |                              f16vec2 P, float refZ, ivec2    |                              |
    |                              offsets[4])                     |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DArrayShadow sampler,|                              |
    |                              vec3 P, float refZ, ivec2       |                              |
    |                              offsets[4])                     |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DArrayShadow sampler,|                              |
    |                              f16vec3 P, float refZ, ivec2    |                              |
    |                              offsets[4])                     |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DRectShadow sampler, |                              |
    |                              vec2 P, float refZ, ivec2       |                              |
    |                              offsets[4])                     |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DRectShadow sampler, |                              |
    |                              f16vec2 P, float refZ, ivec2    |                              |
    |                              offsets[4])                     |                              |
    +--------------------------------------------------------------+------------------------------+

    Modify Section 8.12 Image Functions

    (modify the second paragraph on p. 177)

    Loads and stores support single-precision float, half-precision float, integer, and unsigned
    integer types. The data types below starting "gimage" serve as placeholders meaning types
    starting either "image", "f16image", "iimage", or "uimage" in the same way as gvec or gsampler
    in earlier sections.

    The IMAGE_PARAMS in the prototypes below is a placeholder representing 44 separate functions,
    each for a different type of image variable.

    (modify the first sentence of the fourth paragraph on p. 177)

    where each of the lines represents one of four different image variable types, and image, P,
    and sample specify the individual texel to operate on.

    Modify Section 9, Shading Language Grammar for Core Profile

    (add to the list of tokens on p. 189)

        ...
        F16SAMPLER1D  F16SAMPLER2D  F16SAMPLER3D  F16SAMPLER2DRECT  F16SAMPLERCUBE
        F16SAMPLER1DARRAY  F16SAMPLER2DARRAY  F16SAMPLERCUBEARRAY
        F16SAMPLERBUFFER  F16SAMPLER2DMS  F16SAMPLER2DMSARRAY
        F16SAMPLER1DSHADOW  F16SAMPLER2DSHADOW  F16SAMPLER1DARRAYSHADOW  F16SAMPLER2DARRAYSHADOW
        F16SAMPLER2DRECTSHADOW  F16SAMPLERCUBESHADOW  F16SAMPLERCUBEARRAYSHADOW

        F16IMAGE1D  F16IMAGE2D  F16IMAGE3D  F16IMAGE2DRECT
        F16IMAGECUBE  F16IMAGE1DARRAY  F16IMAGE2DARRAY  F16IMAGECUBEARRAY
        F16IMAGEBUFFER  F16IMAGE2DMS  F16IMAGE2DMSARRAY
        ...

    (add to the rule of "type_specifier_nonarray" on p. 197)

        type_specifier_nonarray:
            ...
            F16SAMPLER1D
            F16SAMPLER2D
            F16SAMPLER3D
            F16SAMPLER2DRECT
            F16SAMPLERCUBE
            F16SAMPLER1DARRAY
            F16SAMPLER2DARRAY
            F16SAMPLERCUBEARRAY
            F16SAMPLERBUFFER
            F16SAMPLER2DMS
            F16SAMPLER2DMSARRAY
            F16SAMPLER1DSHADOW
            F16SAMPLER2DSHADOW
            F16SAMPLER1DARRAYSHADOW
            F16SAMPLER2DRECTSHADOW
            F16SAMPLERCUBESHADOW
            F16SAMPLERCUBEARRAYSHADOW
            F16IMAGE1D
            F16IMAGE2D
            F16IMAGE3D
            F16IMAGE2DRECT
            F16IMAGECUBE
            F16IMAGE1DARRAY
            F16IMAGE2DARRAY
            F16IMAGECUBEARRAY
            F16IMAGEBUFFER
            F16IMAGE2DMS
            F16IMAGE2DMSARRAY
            ...

Dependencies on AMD_gpu_shader_half_float

    If the shader do not enable AMD_gpu_shader_half_float, half-precision floating-point opaque
    types added by this extension, together with those new built-in texture and image memory
    functions, are unable to be used.

Dependencies on ARB_sparse_texture2

    If the shader enables ARB_sparse_texture2, this extension adds additional texture lookup
    functions, whose prototypes are different from those existing ones.

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureARB(f16sampler2D sampler, f16vec2 P,        | Do a filtered texture lookup |
    |                      out f16vec4 texel [, float16_t bias])   | as in texture(), but return  |
    | int sparseTextureARB(f16sampler3D sampler, f16vec3 P,        | texture access residency     |
    |                      out f16vec4 texel [, float16_t bias])   | information from the function|
    | int sparseTextureARB(f16samplerCube sampler, f16vec3 P,      | and the filtered lookup      |
    |                      out f16vec4 texel [, float16_t bias])   | result in the out parameter  |
    | int sparseTextureARB(f16sampler2DShadow sampler, vec3 P,     | <texel>.                     |
    |                      out float16_t texel [, float bias])     |                              |
    | int sparseTextureARB(f16sampler2DShadow sampler, f16vec2 P,  |                              |
    |                      float compare, out float16_t texel      |                              |
    |                      [, float16_t bias])                     |                              |
    | int sparseTextureARB(f16samplerCubeShadow sampler, vec4 P,   |                              |
    |                      out float16_t texel [, float bias])     |                              |
    | int sparseTextureARB(f16samplerCubeShadow sampler, f16vec3 P,|                              |
    |                      float compare, out float16_t texel      |                              |
    |                      [, float16_t bias])                     |                              |
    | int sparseTextureARB(f16sampler2DArray sampler, f16vec3 P,   |                              |
    |                      out f16vec4 texel [, float16_t bias])   |                              |
    | int sparseTextureARB(f16samplerCubeArray sampler, f16vec4 P, |                              |
    |                      out f16vec4 texel [, float16_t bias])   |                              |
    | int sparseTextureARB(f16sampler2DArrayShadow sampler, vec4 P,|                              |
    |                      out float16_t texel)                    |                              |
    | int sparseTextureARB(f16sampler2DArrayShadow sampler,        |                              |
    |                      f16vec3 P, float compare,               |                              |
    |                      out float16_t texel)                    |                              |
    | int sparseTextureARB(f16sampler2DRect sampler, f16vec2 P,    |                              |
    |                      out f16vec4 texel)                      |                              |
    | int sparseTextureARB(f16sampler2DRectShadow sampler, vec3 P, |                              |
    |                      out float16_t texel)                    |                              |
    | int sparseTextureARB(f16sampler2DRectShadow sampler,         |                              |
    |                      f16vec2 P, float compare,               |                              |
    |                      out float16_t texel)                    |                              |
    | int sparseTextureARB(f16samplerCubeArrayShadow sampler,      |                              |
    |                      vec4 P, float compare,                  |                              |
    |                      out float16_t texel)                    |                              |
    | int sparseTextureARB(f16samplerCubeArrayShadow sampler,      |                              |
    |                      f16vec4 P, float compare,               |                              |
    |                      out float16_t texel)                    |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureLodARB(f16sampler2D sampler, f16vec2 P,     | Do a filtered texture lookup |
    |                         float16_t lod, out f16vec4 texel)    | as in textureLod(), but      |
    | int sparseTextureLodARB(f16sampler3D sampler, f16vec3 P,     | return texture access        |
    |                         float16_t lod, out f16vec4 texel)    | residency information from   |
    | int sparseTextureLodARB(f16samplerCube sampler, f16vec3 P,   | the function and the filtered|
    |                         float16_t lod, out f16vec4 texel)    | lookup result in the out     |
    | int sparseTextureLodARB(f16sampler2DShadow sampler, vec3 P,  | parameter <texel>.           |
    |                         float lod, out float16_t texel)      |                              |
    | int sparseTextureLodARB(f16sampler2DShadow sampler,          |                              |
    |                         f16vec2 P, float compare,            |                              |
    |                         float16_t lod, out float16_t texel)  |                              |
    | int sparseTextureLodARB(f16sampler2DArray sampler, f16vec3 P,|                              |
    |                         float16_t lod, out f16vec4 texel)    |                              |
    | int sparseTextureLodARB(f16samplerCubeArray sampler,         |                              |
    |                         f16vec4 P, float16_t lod,            |                              |
    |                         out f16vec4 texel)                   |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureOffsetARB(f16sampler2D sampler, f16vec2 P,  | Do a filtered texture lookup |
    |                            ivec2 offset, out f16vec4 texel   | as in textureOffset(), but   |
    |                            [, float16_t bias])               | return texture access        |
    | int sparseTextureOffsetARB(f16sampler3D sampler, f16vec3 P,  | residency information from   |
    |                            ivec3 offset, out f16vec4 texel   | the function and the filtered|
    |                            [, float16_t bias])               | lookup result in the out     |
    | int sparseTextureOffsetARB(f16sampler2DRect sampler,         | parameter <texel>.           |
    |                            f16vec2 P, ivec2 offset,          |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureOffsetARB(f16sampler2DRectShadow sampler,   |                              |
    |                            vec3 P, ivec2 offset,             |                              |
    |                            out float16_t texel)              |                              |
    | int sparseTextureOffsetARB(f16sampler2DRectShadow sampler,   |                              |
    |                            f16vec2 P, float compare,         |                              |
    |                            ivec2 offset, out float16_t texel)|                              |
    | int sparseTextureOffsetARB(f16sampler2DShadow sampler,       |                              |
    |                            vec3 P, ivec2 offset,             |                              |
    |                            out float16_t texel               |                              |
    |                            [, float bias])                   |                              |
    | int sparseTextureOffsetARB(f16sampler2DShadow sampler,       |                              |
    |                            f16vec2 P, float compare,         |                              |
    |                            ivec2 offset, out float16_t texel |                              |
    |                            [, float16_t bias])               |                              |
    | int sparseTextureOffsetARB(f16sampler2DArray sampler,        |                              |
    |                            f16vec3 P, ivec2 offset,          |                              |
    |                            out f16vec4 texel                 |                              |
    |                            [, float16_t bias])               |                              |
    | int sparseTextureOffsetARB(f16sampler2DArrayShadow sampler,  |                              |
    |                            vec4 P, ivec2 offset,             |                              |
    |                            out float16_t texel)              |                              |
    | int sparseTextureOffsetARB(f16sampler2DArrayShadow sampler,  |                              |
    |                            f16vec3 P, float compare,         |                              |
    |                            ivec2 offset, out float16_t texel)|                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureLodOffsetARB(f16sampler2D sampler,          | Do a filtered texture lookup |
    |                               f16vec2 P, float16_t lod,      | as in textureLodOffset(),    |
    |                               ivec2 offset,                  | but return texture access    |
    |                               out f16vec4 texel)             | residency information from   |
    | int sparseTextureLodOffsetARB(f16sampler3D sampler,          | the function and the filtered|
    |                               f16vec3 P, float16_t lod,      | lookup result in the out     |
    |                               ivec3 offset,                  | parameter <texel>.           |
    |                               out f16vec4 texel)             |                              |
    | int sparseTextureLodOffsetARB(f16sampler2DShadow sampler,    |                              |
    |                               vec3 P, float lod,             |                              |
    |                               ivec2 offset,                  |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureLodOffsetARB(f16sampler2DShadow sampler,    |                              |
    |                               f16vec2 P, float compare,      |                              |
    |                               float16_t lod, ivec2 offset,   |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureLodOffsetARB(f16sampler2DArray sampler,     |                              |
    |                               f16vec3 P, float16_t lod,      |                              |
    |                               ivec2 offset,                  |                              |
    |                               out f16vec4 texel)             |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGradARB(f16sampler2D sampler, f16vec2 P,    | Do a filtered texture lookup |
    |                          f16vec2 dPdx, f16vec2 dPdy,         | as in textureGrad(), but     |
    |                          out f16vec4 texel)                  | return texture access        |
    | int sparseTextureGradARB(f16sampler3D sampler, f16vec3 P,    | residency information from   |
    |                          f16vec3 dPdx, f16vec3 dPdy,         | the function and the filtered|
    |                          out f16vec4 texel)                  | lookup result in the out     |
    | int sparseTextureGradARB(f16samplerCube sampler, f16vec3 P,  | parameter <texel>.           |
    |                          f16vec3 dPdx, f16vec3 dPdy,         |                              |
    |                          out f16vec4 texel)                  |                              |
    | int sparseTextureGradARB(f16sampler2DRect sampler, f16vec2 P,|                              |
    |                          f16vec2 dPdx, f16vec2 dPdy,         |                              |
    |                          out f16vec4 texel)                  |                              |
    | int sparseTextureGradARB(f16sampler2DRectShadow sampler,     |                              |
    |                          vec3 P, vec2 dPdx, vec2 dPdy,       |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16sampler2DRectShadow sampler,     |                              |
    |                          f16vec2 P, float compare,           |                              |
    |                          f16vec2 dPdx, f16vec2 dPdy,         |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16sampler2DShadow sampler, vec3 P, |                              |
    |                          vec2 dPdx, vec2 dPdy,               |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16sampler2DShadow sampler,         |                              |
    |                          f16vec2 P, float compare,           |                              |
    |                          f16vec2 dPdx, f16vec2 dPdy,         |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16samplerCubeShadow sampler,       |                              |
    |                          vec4 P, vec3 dPdx, vec3 dPdy,       |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16samplerCubeShadow sampler,       |                              |
    |                          f16vec3 P, float compare,           |                              |
    |                          f16vec3 dPdx, f16vec3 dPdy,         |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16sampler2DArray sampler,          |                              |
    |                          f16vec3 P, f16vec2 dPdx,            |                              |
    |                          f16vec2 dPdy, out f16vec4 texel)    |                              |
    | int sparseTextureGradARB(f16sampler2DArrayShadow sampler,    |                              |
    |                          vec4 P, vec2 dPdx, vec2 dPdy,       |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16sampler2DArrayShadow sampler,    |                              |
    |                          f16vec3 P, float compare,           |                              |
    |                          f16vec2 dPdx, f16vec2 dPdy,         |                              |
    |                          out float16_t texel)                |                              |
    | int sparseTextureGradARB(f16samplerCubeArray sampler,        |                              |
    |                          f16vec4 P, f16vec3 dPdx,            |                              |
    |                          f16vec3 dPdy, out f16vec4 texel)    |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGradOffsetARB(f16sampler2D sampler,         | Do a filtered texture lookup |
    |                                f16vec2 P, f16vec2 dPdx,      | as in textureGradOffset(),   |
    |                                f16vec2 dPdy, ivec2 offset,   | but return texture access    |
    |                                out f16vec4 texel)            | residency information from   |
    | int sparseTextureGradOffsetARB(f16sampler3D sampler,         | the function and the filtered|
    |                                f16vec3 P, f16vec3 dPdx,      | lookup result in the out     |
    |                                f16vec3 dPdy, ivec3 offset,   | parameter <texel>.           |
    |                                out f16vec4 texel)            |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DRect sampler,     |                              |
    |                                f16vec2 P, f16vec2 dPdx,      |                              |
    |                                f16vec2 dPdy, ivec2 offset,   |                              |
    |                                out f16vec4 texel)            |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DRectShadow        |                              |
    |                                sampler, vec3 P, vec2 dPdx,   |                              |
    |                                vec2 dPdy, ivec2 offset,      |                              |
    |                                out float16_t texel)          |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DRectShadow        |                              |
    |                                sampler, f16vec2 P,           |                              |
    |                                float compare, f16vec2 dPdx,  |                              |
    |                                f16vec2 dPdy, ivec2 offset,   |                              |
    |                                out float16_t texel)          |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DShadow sampler,   |                              |
    |                                vec3 P, vec2 dPdx, vec2 dPdy, |                              |
    |                                ivec2 offset,                 |                              |
    |                                out float16_t texel)          |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DShadow sampler,   |                              |
    |                                f16vec2 P, float compare,     |                              |
    |                                f16vec2 dPdx, f16vec2 dPdy,   |                              |
    |                                ivec2 offset,                 |                              |
    |                                out float16_t texel)          |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DArray sampler,    |                              |
    |                                f16vec3 P, f16vec2 dPdx,      |                              |
    |                                f16vec2 dPdy, ivec2 offset,   |                              |
    |                                out f16vec4 texel)            |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DArrayShadow       |                              |
    |                                sampler, vec4 P,              |                              |
    |                                vec2 dPdx, vec2 dPdy,         |                              |
    |                                ivec2 offset,                 |                              |
    |                                out float16_t texel)          |                              |
    | int sparseTextureGradOffsetARB(f16sampler2DArrayShadow       |                              |
    |                                sampler, f16vec3 P,           |                              |
    |                                float compare, f16vec2 dPdx,  |                              |
    |                                f16vec2 dPdy, ivec2 offset,   |                              |
    |                                out float16_t texel)          |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherARB(f16sampler2D sampler, f16vec2 P,  | Do a texture gather operation|
    |                            out f16vec4 texel [, int comp])   | as in textureGather(), but   |
    | int sparseTextureGatherARB(f16sampler2DArray sampler, vec3 P,| return texture access        |
    |                            out f16vec4 texel [, int comp])   | residency information from   |
    | int sparseTextureGatherARB(f16samplerCube sampler, f16vec3 P,| the function and the filtered|
    |                            out f16vec4 texel [, int comp])   | lookup result in the out     |
    | int sparseTextureGatherARB(f16samplerCubeArray sampler,      | parameter <texel>.           |
    |                            f16vec4 P, out f16vec4 texel      |                              |
    |                            [, int comp])                     |                              |
    | int sparseTextureGatherARB(f16sampler2DRect sampler,         |                              |
    |                            f16vec2 P, out f16vec4 texel      |                              |
    |                            [, int comp])                     |                              |
    | int sparseTextureGatherARB(f16sampler2DShadow sampler,       |                              |
    |                            vec2 P, float refZ,               |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16sampler2DShadow sampler,       |                              |
    |                            f16vec2 P, float refZ,            |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16sampler2DArrayShadow sampler,  |                              |
    |                            vec3 P, float refZ,               |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16sampler2DArrayShadow sampler,  |                              |
    |                            f16vec3 P, float refZ,            |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16samplerCubeShadow sampler,     |                              |
    |                            vec3 P, float refZ,               |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16samplerCubeShadow sampler,     |                              |
    |                            f16vec3 P, float refZ,            |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16samplerCubeArrayShadow sampler,|                              |
    |                            vec4 P, float refZ,               |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16samplerCubeArrayShadow sampler,|                              |
    |                            f16vec4 P, float refZ,            |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16sampler2DRectShadow sampler,   |                              |
    |                            vec2 P, float refZ,               |                              |
    |                            out f16vec4 texel)                |                              |
    | int sparseTextureGatherARB(f16sampler2DRectShadow sampler,   |                              |
    |                            f16vec2 P, float refZ,            |                              |
    |                            out f16vec4 texel)                |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherOffsetARB(f16sampler2D sampler,       | Do a texture gather operation|
    |                                  f16vec2 P, ivec2 offset,    | as in textureGatherOffset(), |
    |                                  out f16vec4 texel           | but return texture access    |
    |                                  [, int comp])               | residency information from   |
    | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler,  | the function and the filtered|
    |                                  f16vec3 P, ivec2 offset,    | lookup result in the out     |
    |                                  out f16vec4 texel           | parameter <texel>.           |
    |                                  [, int comp])               |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DRect sampler,   |                              |
    |                                  f16vec2 P, ivec2 offset,    |                              |
    |                                  out f16vec4 texel           |                              |
    |                                  [, int comp])               |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DShadow sampler, |                              |
    |                                  vec2 P, float refZ,         |                              |
    |                                  ivec2 offset,               |                              |
    |                                  out f16vec4 texel)          |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DShadow sampler, |                              |
    |                                  f16vec2 P, float refZ,      |                              |
    |                                  ivec2 offset,               |                              |
    |                                  out f16vec4 texel)          |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DArrayShadow     |                              |
    |                                  sampler, vec3 P, float refZ,|                              |
    |                                  ivec2 offset,               |                              |
    |                                  out f16vec4 texel)          |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DArrayShadow     |                              |
    |                                  sampler, f16vec3 P,         |                              |
    |                                  float refZ, ivec2 offset,   |                              |
    |                                  out f16vec4 texel)          |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DRectShadow      |                              |
    |                                  sampler, vec2 P, float refZ,|                              |
    |                                  ivec2 offset,               |                              |
    |                                  out f16vec4 texel)          |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DRectShadow      |                              |
    |                                  sampler, f16vec2 P,         |                              |
    |                                  float refZ, ivec2 offset,   |                              |
    |                                  out f16vec4 texel)          |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherOffsetsARB(f16sampler2D sampler,      | Do a texture gather operation|
    |                                   f16vec2 P,                 | as in textureGatherOffsets(),|
    |                                   ivec2 offsets[4],          | but return texture access    |
    |                                   out f16vec4 texel          | residency information from   |
    |                                   [, int comp])              | the function and the filtered|
    | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, | lookup result in the out     |
    |                                   f16vec3 P,                 | parameter <texel>.           |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel          |                              |
    |                                   [, int comp])              |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DRect sampler,  |                              |
    |                                   f16vec2 P,                 |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel          |                              |
    |                                   [, int comp])              |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DShadow sampler,|                              |
    |                                   vec2 P, float refZ,        |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DShadow sampler,|                              |
    |                                   f16vec2 P, float refZ,     |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DArrayShadow    |                              |
    |                                   sampler, vec3 P,           |                              |
    |                                   float refZ,                |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DArrayShadow    |                              |
    |                                   sampler, f16vec3 P,        |                              |
    |                                   float refZ,                |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DRectShadow     |                              |
    |                                   sampler, vec2 P,           |                              |
    |                                   float refZ,                |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DRectShadow     |                              |
    |                                   sampler, f16vec2 P,        |                              |
    |                                   float refZ,                |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel)         |                              |
    +--------------------------------------------------------------+------------------------------+

Dependencies on ARB_sparse_texture_clamp

    If the shader enables ARB_sparse_texture_clamp, this extension adds additional texture lookup
    functions, whose prototypes are different from those existing ones.

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureClampARB(f16sampler2D sampler, f16vec2 P,   | Do a filtered texture lookup |
    |                           float16_t lodClamp,                | as in texture(), but return  |
    |                           out f16vec4 texel                  | texture access residency     |
    |                           [, float16_t bias])                | information from the function|
    | int sparseTextureClampARB(f16sampler3D sampler, f16vec3 P,   | and the filtered lookup      |
    |                           float16_t lodClamp,                | result in the out parameter  |
    |                           out f16vec4 texel                  | <texel>. Additionally,       |
    |                           [, float16_t bias])                | clamp the automatically      |
    | int sparseTextureClampARB(f16samplerCube sampler, f16vec3 P, | computed level of detail to  |
    |                           float16_t lodClamp,                | be greater than or equal to  |
    |                           out f16vec4 texel                  | <lodClamp>.                  |
    |                           [, float16_t bias])                |                              |
    | int sparseTextureClampARB(f16sampler2DShadow sampler, vec3 P,|                              |
    |                           float lodClamp, out float16_t texel|                              |
    |                           [, float bias])                    |                              |
    | int sparseTextureClampARB(f16sampler2DShadow sampler,        |                              |
    |                           f16vec2 P, float compare,          |                              |
    |                           float16_t lodClamp,                |                              |
    |                           out float16_t texel                |                              |
    |                           [, float16_t bias])                |                              |
    | int sparseTextureClampARB(f16samplerCubeShadow sampler,      |                              |
    |                           vec4 P, float lodClamp,            |                              |
    |                           out float16_t texel                |                              |
    |                           [, float bias])                    |                              |
    | int sparseTextureClampARB(f16samplerCubeShadow sampler,      |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           float16_t lodClamp,                |                              |
    |                           out float16_t texel                |                              |
    |                           [, float16_t bias])                |                              |
    | int sparseTextureClampARB(f16sampler2DArray sampler,         |                              |
    |                           f16vec3 P, float16_t lodClamp,     |                              |
    |                           out f16vec4 texel                  |                              |
    |                           [, float16_t bias])                |                              |
    | int sparseTextureClampARB(f16samplerCubeArray sampler,       |                              |
    |                           f16vec4 P, float16_t lodClamp,     |                              |
    |                           out f16vec4 texel                  |                              |
    |                           [, float16_t bias])                |                              |
    | int sparseTextureClampARB(f16sampler2DArrayShadow sampler,   |                              |
    |                           vec4 P, float lodClamp,            |                              |
    |                           out float16_t texel)               |                              |
    | int sparseTextureClampARB(f16sampler2DArrayShadow sampler,   |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           float16_t lodClamp,                |                              |
    |                           out float16_t texel)               |                              |
    | int sparseTextureClampARB(f16samplerCubeArrayShadow sampler, |                              |
    |                           vec4 P, float compare,             |                              |
    |                           float lodClamp,                    |                              |
    |                           out float16_t texel)               |                              |
    | int sparseTextureClampARB(f16samplerCubeArrayShadow sampler, |                              |
    |                           f16vec4 P, float compare,          |                              |
    |                           float16_t lodClamp,                |                              |
    |                           out float16_t texel)               |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureClampARB(f16sampler1D sampler, float16_t P, | Do a filtered texture lookup |
    |                           float lodClamp [, float16_t bias]) | as in texture(), but clamp   |
    | f16vec4   textureClampARB(f16sampler2D sampler, vec2 P,      | the automatically computed   |
    |                           float lodClamp [, float16_t bias]) | level of detail to be greater|
    | f16vec4   textureClampARB(f16sampler3D sampler, vec3 P,      | than or equal to <lodClamp>. |
    |                           float lodClamp [, float16_t bias]) |                              |
    | f16vec4   textureClampARB(f16samplerCube sampler, vec3 P,    |                              |
    |                           float lodClamp [, float16_t bias]) |                              |
    | float16_t textureClampARB(f16sampler1DShadow sampler, vec3 P,|                              |
    |                           float lodClamp [, float bias])     |                              |
    | float16_t textureClampARB(f16sampler1DShadow sampler,        |                              |
    |                           f16vec2 P, float compare,          |                              |
    |                           float16_t lodClamp                 |                              |
    |                           [, float16_t bias])                |                              |
    | float16_t textureClampARB(f16sampler2DShadow sampler, vec3 P,|                              |
    |                           float lodClamp [, float bias])     |                              |
    | float16_t textureClampARB(f16sampler2DShadow sampler,        |                              |
    |                           f16vec2 P, float compare,          |                              |
    |                           float16_t lodClamp                 |                              |
    |                           [, float16_t bias])                |                              |
    | float16_t textureClampARB(f16samplerCubeShadow sampler,      |                              |
    |                           vec4 P, float lodClamp             |                              |
    |                           [, float bias])                    |                              |
    | float16_t textureClampARB(f16samplerCubeShadow sampler,      |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           float16_t lodClamp                 |                              |
    |                           [, float16_t bias])                |                              |
    | f16vec4   textureClampARB(f16sampler1DArray sampler,         |                              |
    |                           f16vec2 P, float16_t lodClamp      |                              |
    |                           [, float16_t bias])                |                              |
    | f16vec4   textureClampARB(f16sampler2DArray sampler,         |                              |
    |                           f16vec3 P, float16_t lodClamp      |                              |
    |                           [, float16_t bias])                |                              |
    | f16vec4   textureClampARB(f16samplerCubeArray sampler,       |                              |
    |                           f16vec4 P, float16_t lodClamp      |                              |
    |                           [, float16_t bias])                |                              |
    | float16_t textureClampARB(f16sampler1DArrayShadow sampler,   |                              |
    |                           vec3 P, float lodClamp             |                              |
    |                           [, float bias])                    |                              |
    | float16_t textureClampARB(f16sampler1DArrayShadow sampler,   |                              |
    |                           f16vec2 P, float compare,          |                              |
    |                           float16_t lodClamp                 |                              |
    |                           [, float16_t bias])                |                              |
    | float16_t textureClampARB(f16sampler2DArrayShadow sampler,   |                              |
    |                           vec4 P, float lodClamp)            |                              |
    | float16_t textureClampARB(f16sampler2DArrayShadow sampler,   |                              |
    |                           f16vec3 P, float compare,          |                              |
    |                           float16_t lodClamp)                |                              |
    | float16_t textureClampARB(f16samplerCubeArrayShadow sampler, |                              |
    |                           vec4 P, float compare,             |                              |
    |                           float lodClamp)                    |                              |
    | float16_t textureClampARB(f16samplerCubeArrayShadow sampler, |                              |
    |                           f16vec4 P, float compare,          |                              |
    |                           float16_t lodClamp)                |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureOffsetClampARB(f16sampler2D sampler,        | Do a filtered texture lookup |
    |                                 f16vec2 P, ivec2 offset,     | as in textureOffset(), but   |
    |                                 float16_t lodClamp,          | return texture access        |
    |                                 out f16vec4 texel            | residency information from   |
    |                                 [, float16_t bias])          | the function and the filtered|
    | int sparseTextureOffsetClampARB(f16sampler3D sampler,        | lookup result in the out     |
    |                                 f16vec3 P, ivec3 offset,     | parameter <texel>.           |
    |                                 float16_t lodClamp,          | Additionally, clamp the      |
    |                                 out f16vec4 texel            | automatically computed level |
    |                                 [, float16_t bias])          | of detail to be greater than |
    | int sparseTextureOffsetClampARB(f16sampler2DShadow sampler,  | or equal to <lodClamp>.      |
    |                                 vec3 P, ivec2 offset,        |                              |
    |                                 float lodClamp,              |                              |
    |                                 out float16_t texel          |                              |
    |                                 [, float bias])              |                              |
    | int sparseTextureOffsetClampARB(f16sampler2DShadow sampler,  |                              |
    |                                 f16vec2 P, float compare,    |                              |
    |                                 ivec2 offset,                |                              |
    |                                 float16_t lodClamp,          |                              |
    |                                 out float16_t texel          |                              |
    |                                 [, float16_t bias])          |                              |
    | int sparseTextureOffsetClampARB(f16sampler2DArray sampler,   |                              |
    |                                 f16vec3 P, ivec2 offset,     |                              |
    |                                 float16_t lodClamp,          |                              |
    |                                 out f16vec4 texel            |                              |
    |                                 [, float16_t bias])          |                              |
    | int sparseTextureOffsetClampARB(f16sampler2DArrayShadow      |                              |
    |                                 sampler, vec4 P,             |                              |
    |                                 ivec2 offset, float lodClamp,|                              |
    |                                 out float16_t texel)         |                              |
    | int sparseTextureOffsetClampARB(f16sampler2DArrayShadow      |                              |
    |                                 sampler, f16vec3 P,          |                              |
    |                                 float compare, ivec2 offset, |                              |
    |                                 float16_t lodClamp,          |                              |
    |                                 out float16_t texel)         |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureOffsetClampARB(f16sampler1D sampler,        | Do a filtered texture lookup |
    |                                 float16_t P, int offset,     | as in textureOffset(), but   |
    |                                 float16_t lodClamp           | clamp the automatically      |
    |                                 [, float16_t bias])          | computed level of detail to  |
    | f16vec4   textureOffsetClampARB(f16sampler2D sampler,        | be greater than or equal to  |
    |                                 f16vec2 P, ivec2 offset,     | <lodClamp>.                  |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | f16vec4   textureOffsetClampARB(f16sampler3D sampler,        |                              |
    |                                 f16vec3 P, ivec3 offset,     |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | float16_t textureOffsetClampARB(f16sampler1DShadow sampler,  |                              |
    |                                 vec3 P, int offset,          |                              |
    |                                 float lodClamp               |                              |
    |                                 [, float bias])              |                              |
    | float16_t textureOffsetClampARB(f16sampler1DShadow sampler,  |                              |
    |                                 f16vec2 P, float compare,    |                              |
    |                                 int offset,                  |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | float16_t textureOffsetClampARB(f16sampler2DShadow sampler,  |                              |
    |                                 vec3 P, ivec2 offset,        |                              |
    |                                 float lodClamp               |                              |
    |                                 [, float bias])              |                              |
    | float16_t textureOffsetClampARB(f16sampler2DShadow sampler,  |                              |
    |                                 f16vec2 P, float compare,    |                              |
    |                                 ivec2 offset,                |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | f16vec4   textureOffsetClampARB(f16sampler1DArray sampler,   |                              |
    |                                 f16vec2 P, int offset,       |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | f16vec4   textureOffsetClampARB(f16sampler2DArray sampler,   |                              |
    |                                 f16vec3 P, ivec2 offset,     |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | float16_t textureOffsetClampARB(f16sampler1DArrayShadow      |                              |
    |                                 sampler, vec3 P, int offset, |                              |
    |                                 float lodClamp               |                              |
    |                                 [, float bias])              |                              |
    | float16_t textureOffsetClampARB(f16sampler1DArrayShadow      |                              |
    |                                 sampler, f16vec2 P,          |                              |
    |                                 float compare, int offset,   |                              |
    |                                 float16_t lodClamp           |                              |
    |                                 [, float16_t bias])          |                              |
    | float16_t textureOffsetClampARB(f16sampler2DArrayShadow      |                              |
    |                                 sampler, vec4 P,             |                              |
    |                                 ivec2 offset,                |                              |
    |                                 float lodClamp)              |                              |
    | float16_t textureOffsetClampARB(f16sampler2DArrayShadow      |                              |
    |                                 sampler, f16vec3 P,          |                              |
    |                                 float compare, ivec2 offset, |                              |
    |                                 float16_t lodClamp)          |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGradClampARB(f16sampler2D sampler,          | Do a filtered texture lookup |
    |                               f16vec2 P, f16vec2 dPdx,       | as in textureGrad(), but     |
    |                               f16vec2 dPdy,                  | return texture access        |
    |                               float16_t lodClamp,            | residency information from   |
    |                               out f16vec4 texel)             | the function and the filtered|
    | int sparseTextureGradClampARB(f16sampler3D sampler,          | lookup result in the out     |
    |                               f16vec3 P, f16vec3 dPdx,       | parameter <texel>.           |
    |                               f16vec3 dPdy,                  | Additionally, clamp the      |
    |                               float16_t lodClamp,            | automatically computed level |
    |                               out f16vec4 texel)             | of detail to be greater than |
    | int sparseTextureGradClampARB(f16samplerCube sampler,        | or equal to <lodClamp>.      |
    |                               f16vec3 P, f16vec3 dPdx,       |                              |
    |                               f16vec3 dPdy,                  |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out f16vec4 texel)             |                              |
    | int sparseTextureGradClampARB(f16sampler2DShadow sampler,    |                              |
    |                               vec3 P, vec2 dPdx, vec2 dPdy,  |                              |
    |                               float lodClamp,                |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16sampler2DShadow sampler,    |                              |
    |                               f16vec2 P, float compare,      |                              |
    |                               f16vec2 dPdx, f16vec2 dPdy,    |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16samplerCubeShadow sampler,  |                              |
    |                               vec4 P, vec3 dPdx, vec3 dPdy,  |                              |
    |                               float lodClamp,                |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16samplerCubeShadow sampler,  |                              |
    |                               f16vec3 P, float compare,      |                              |
    |                               f16vec3 dPdx, f16vec3 dPdy,    |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16sampler2DArray sampler,     |                              |
    |                               f16vec3 P, f16vec2 dPdx,       |                              |
    |                               f16vec2 dPdy,                  |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out f16vec4 texel)             |                              |
    | int sparseTextureGradClampARB(f16sampler2DArrayShadow        |                              |
    |                               sampler, vec4 P, vec2 dPdx,    |                              |
    |                               vec2 dPdy, float lodClamp,     |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16sampler2DArrayShadow        |                              |
    |                               sampler, f16vec3 P,            |                              |
    |                               float compare, f16vec2 dPdx,   |                              |
    |                               f16vec2 dPdy,                  |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out float16_t texel)           |                              |
    | int sparseTextureGradClampARB(f16samplerCubeArray sampler,   |                              |
    |                               f16vec4 P, f16vec3 dPdx,       |                              |
    |                               f16vec3 dPdy,                  |                              |
    |                               float16_t lodClamp,            |                              |
    |                               out f16vec4 texel)             |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureGradClampARB(f16sampler1D sampler,          | Do a filtered texture lookup |
    |                               float16_t P, float16_t dPdx,   | as in textureGrad(), but     |
    |                               float16_t dPdy,                | clamp the automatically      |
    |                               float16_t lodClamp)            | computed level of detail to  |
    | f16vec4   textureGradClampARB(f16sampler2D sampler,          | be greater than or equal to  |
    |                               f16vec2 P, f16vec2 dPdx,       | <lodClamp>.                  |
    |                               f16vec2 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    | f16vec4   textureGradClampARB(f16sampler3D sampler,          |                              |
    |                               f16vec3 P, f16vec3 dPdx,       |                              |
    |                               f16vec3 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    | f16vec4   textureGradClampARB(f16samplerCube sampler,        |                              |
    |                               f16vec3 P, f16vec3 dPdx,       |                              |
    |                               f16vec3 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    | float16_t textureGradClampARB(f16sampler1DShadow sampler,    |                              |
    |                               vec3 P, float dPdx, float dPdy,|                              |
    |                               float lodClamp)                |                              |
    | float16_t textureGradClampARB(f16sampler1DShadow sampler,    |                              |
    |                               f16vec2 P, float compare,      |                              |
    |                               float16_t dPdx, float16_t dPdy,|                              |
    |                               float16_t lodClamp)            |                              |
    | float16_t textureGradClampARB(f16sampler2DShadow sampler,    |                              |
    |                               vec3 P, vec2 dPdx, vec2 dPdy,  |                              |
    |                               float lodClamp)                |                              |
    | float16_t textureGradClampARB(f16sampler2DShadow sampler,    |                              |
    |                               f16vec2 P, float compare,      |                              |
    |                               f16vec2 dPdx, f16vec2 dPdy,    |                              |
    |                               float16_t lodClamp)            |                              |
    | float16_t textureGradClampARB(f16samplerCubeShadow sampler,  |                              |
    |                               vec4 P, vec3 dPdx, vec3 dPdy,  |                              |
    |                               float lodClamp)                |                              |
    | float16_t textureGradClampARB(f16samplerCubeShadow sampler,  |                              |
    |                               f16vec3 P, float compare,      |                              |
    |                               f16vec3 dPdx, f16vec3 dPdy,    |                              |
    |                               float16_t lodClamp)            |                              |
    | f16vec4   textureGradClampARB(f16sampler1DArray sampler,     |                              |
    |                               f16vec2 P, float16_t dPdx,     |                              |
    |                               float16_t dPdy,                |                              |
    |                               float16_t lodClamp)            |                              |
    | f16vec4   textureGradClampARB(f16sampler2DArray sampler,     |                              |
    |                               f16vec3 P, f16vec2 dPdx,       |                              |
    |                               f16vec2 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    | float16_t textureGradClampARB(f16sampler1DArrayShadow        |                              |
    |                               sampler, vec3 P, float dPdx,   |                              |
    |                               float dPdy, float lodClamp)    |                              |
    | float16_t textureGradClampARB(f16sampler1DArrayShadow        |                              |
    |                               sampler, f16vec2 P,            |                              |
    |                               float compare, float16_t dPdx, |                              |
    |                               float16_t dPdy,                |                              |
    |                               float16_t lodClamp)            |                              |
    | float16_t textureGradClampARB(f16sampler2DArrayShadow        |                              |
    |                               sampler, vec4 P, vec2 dPdx,    |                              |
    |                               vec2 dPdy, float lodClamp)     |                              |
    | float16_t textureGradClampARB(f16sampler2DArrayShadow        |                              |
    |                               sampler, f16vec3 P,            |                              |
    |                               float compare, f16vec2 dPdx,   |                              |
    |                               f16vec2 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    | f16vec4   textureGradClampARB(f16samplerCubeArray sampler,   |                              |
    |                               f16vec4 P, f16vec3 dPdx,       |                              |
    |                               f16vec3 dPdy,                  |                              |
    |                               float16_t lodClamp)            |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGradOffsetClampARB(f16sampler2D sampler,    | Do a filtered texture lookup |
    |                                     f16vec2 P, f16vec2 dPdx, | as in textureGradOffset(),   |
    |                                     f16vec2 dPdy,            | but return texture access    |
    |                                     ivec2 offset,            | residency information from   |
    |                                     float16_t lodClamp,      | the function and the filtered|
    |                                     out f16vec4 texel)       | lookup result in the out     |
    | int sparseTextureGradOffsetClampARB(f16sampler3D sampler,    | parameter <texel>.           |
    |                                     f16vec3 P, f16vec3 dPdx, | Additionally, clamp the      |
    |                                     f16vec3 dPdy,            | automatically computed level |
    |                                     ivec3 offset,            | of detail to be greater than |
    |                                     float16_t lodClamp,      | or equal to <lodClamp>.      |
    |                                     out f16vec4 texel)       |                              |
    | int sparseTextureGradOffsetClampARB(f16sampler2DShadow       |                              |
    |                                     sampler, vec3 P,         |                              |
    |                                     vec2 dPdx, vec2 dPdy,    |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float lodClamp,          |                              |
    |                                     out float16_t texel)     |                              |
    | int sparseTextureGradOffsetClampARB(f16sampler2DShadow       |                              |
    |                                     sampler, f16vec2 P,      |                              |
    |                                     float compare,           |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp,      |                              |
    |                                     out float16_t texel)     |                              |
    | int sparseTextureGradOffsetClampARB(f16sampler2DArray        |                              |
    |                                     sampler, f16vec3 P,      |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp,      |                              |
    |                                     out f16vec4 texel)       |                              |
    | int sparseTextureGradOffsetClampARB(f16sampler2DArrayShadow  |                              |
    |                                     sampler, vec4 P,         |                              |
    |                                     vec2 dPdx, vec2 dPdy,    |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float lodClamp,          |                              |
    |                                     out float16_t texel)     |                              |
    | int sparseTextureGradOffsetClampARB(f16sampler2DArrayShadow  |                              |
    |                                     sampler, f16vec3 P,      |                              |
    |                                     float compare,           |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp,      |                              |
    |                                     out float16_t texel)     |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4   textureGradOffsetClampARB(f16sampler1D sampler,    | Do a filtered texture lookup |
    |                                     float16_t P,             | as in textureGradOffset(),   |
    |                                     float16_t dPdx,          | but clamp the  automatically |
    |                                     float16_t dPdy,          | computed level of detail to  |
    |                                     int offset,              | be greater than or equal to  |
    |                                     float16_t lodClamp)      | <lodClamp>.                  |
    | f16vec4   textureGradOffsetClampARB(f16sampler2D sampler,    |                              |
    |                                     f16vec2 P, f16vec2 dPdx, |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp)      |                              |
    | f16vec4   textureGradOffsetClampARB(f16sampler3D sampler,    |                              |
    |                                     f16vec3 P, f16vec3 dPdx, |                              |
    |                                     f16vec3 dPdy,            |                              |
    |                                     ivec3 offset,            |                              |
    |                                     float16_t lodClamp)      |                              |
    | float16_t textureGradOffsetClampARB(f16sampler1DShadow       |                              |
    |                                     sampler, vec3 P,         |                              |
    |                                     float dPdx, float dPdy,  |                              |
    |                                     int offset,              |                              |
    |                                     float lodClamp)          |                              |
    | float16_t textureGradOffsetClampARB(f16sampler1DShadow       |                              |
    |                                     sampler, f16vec2 P,      |                              |
    |                                     float compare,           |                              |
    |                                     float16_t dPdx,          |                              |
    |                                     float16_t dPdy,          |                              |
    |                                     int offset,              |                              |
    |                                     float16_t lodClamp)      |                              |
    | float16_t textureGradOffsetClampARB(f16sampler2DShadow       |                              |
    |                                     sampler, vec3 P,         |                              |
    |                                     vec2 dPdx, vec2 dPdy,    |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float lodClamp)          |                              |
    | float16_t textureGradOffsetClampARB(f16sampler2DShadow       |                              |
    |                                     sampler, f16vec2 P,      |                              |
    |                                     float compare,           |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp)      |                              |
    | f16vec4   textureGradOffsetClampARB(f16sampler1DArray        |                              |
    |                                     sampler, f16vec2 P,      |                              |
    |                                     float16_t dPdx,          |                              |
    |                                     float16_t dPdy,          |                              |
    |                                     int offset,              |                              |
    |                                     float16_t lodClamp)      |                              |
    | f16vec4   textureGradOffsetClampARB(f16sampler2DArray        |                              |
    |                                     sampler, f16vec3 P,      |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp)      |                              |
    | float16_t textureGradOffsetClampARB(f16sampler1DArrayShadow  |                              |
    |                                     sampler, vec3 P,         |                              |
    |                                     float dPdx, float dPdy,  |                              |
    |                                     int offset,              |                              |
    |                                     float lodClamp)          |                              |
    | float16_t textureGradOffsetClampARB(f16sampler1DArrayShadow  |                              |
    |                                     sampler, f16vec2 P,      |                              |
    |                                     float compare,           |                              |
    |                                     float16_t dPdx,          |                              |
    |                                     float16_t dPdy,          |                              |
    |                                     int offset,              |                              |
    |                                     float16_t lodClamp)      |                              |
    | float16_t textureGradOffsetClampARB(f16sampler2DArrayShadow  |                              |
    |                                     sampler, vec4 P,         |                              |
    |                                     vec2 dPdx, vec2 dPdy,    |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float lodClamp)          |                              |
    | float16_t textureGradOffsetClampARB(f16sampler2DArrayShadow  |                              |
    |                                     sampler, f16vec3 P,      |                              |
    |                                     float compare,           |                              |
    |                                     f16vec2 dPdx,            |                              |
    |                                     f16vec2 dPdy,            |                              |
    |                                     ivec2 offset,            |                              |
    |                                     float16_t lodClamp)      |                              |
    +--------------------------------------------------------------+------------------------------+

Dependencies on KHR_vulkan_glsl

    Modify Section, Overview - Subpass Inputs

    (add new types prefixed by "f16" to the list of the second paragraph)

    Subpasses are read through a new set of types, available only to fragment shaders:

           subpassInput
           subpassInputMS
        f16subpassInput
        f16subpassInputMS
        ...

    Modify Section, Changes to Chapter 3 of the OpenGL Shading Language Specification

    (add new keyword prefixed by "f16" to the list of the second paragraph)

    Add the following keywords to section 3.6 Keywords:

        texture1D        texture2D        texture3D
        textureCube      texture2DRect    texture1DArray
        texture2DArray   textureBuffer    texture2DMS
        texture2DMSArray textureCubeArray

        f16texture1D        f16texture2D        f16texture3D
        f16textureCube      f16texture2DRect    f16texture1DArray
        f16texture2DArray   f16textureBuffer    f16texture2DMS
        f16texture2DMSArray f16textureCubeArray

        ...

        subpassInput     f16subpassInput     isubpassInput     usubpassInput
        subpassInputMS   f16subpassInputMS   isubpassInputMS   usubpassInputMS

    Modify Section, Changes to Chapter 4 of the OpenGL Shading Language Specification

    (add new types to the list of "Floating-Point Opaque Types", interleaved with the existing
     types)

        Floating-Point Opaque Types

            f16texture1D
            f16texture2D
            f16texture3D
            f16textureCube
            f16texture2DRect
            f16texture1DArray
            f16texture2DArray
            f16textureBuffer
            f16texture2DMS
            f16texture2DMSArray
            f16textureCubeArray
            f16subpassInput
            f16subpassInputMS

Dependencies on AMD_texture_gather_bias_lod

    If the shader enables AMD_texture_gather_bias_lod, this extension adds additional texture
    gather functions, whose prototypes are different from those existing ones.

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGather(f16sampler2D sampler, vec2 P           | Returns the value            |
    |                       [, int comp [, float bias]])           |                              |
    | f16vec4 textureGather(f16sampler2D sampler, f16vec2 P        | gvec4(                       |
    |                       [, int comp [, float16_t bias]])       |   Sample_i0_j1(              |
    | f16vec4 textureGather(f16sampler2DArray sampler, vec3 P      |     P, base, bias).comp,     |
    |                       [, int comp [, float bias]])           |   Sample_i1_j1(              |
    | f16vec4 textureGather(f16sampler2DArray sampler, f16vec3 P   |     P, base, bias).comp,     |
    |                       [, int comp [, float16_t bias]])       |   Sample_i1_j0(              |
    | f16vec4 textureGather(f16samplerCube sampler, vec3 P         |     P, base, bias).comp,     |
    |                       [, int comp [, float bias]])           |   Sample_i0_j0(              |
    | f16vec4 textureGather(f16samplerCube sampler, f16vec3 P      |     P, base, bias).comp,     |
    |                       [, int comp [, float16_t bias]])       | ...                          |
    | f16vec4 textureGather(f16samplerCubeArray sampler, vec4 P    |                              |
    |                       [, int comp [, float bias]])           |                              |
    | f16vec4 textureGather(f16samplerCubeArray sampler, f16vec4 P |                              |
    |                       [, int comp [, float16_t bias]])       |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherOffset(f16sampler2D sampler, vec2 P,    | Perform a texture gather     |
    |                             ivec2 offset [, int comp         | operation as in              |
    |                             [, float bias]])                 | textureGather() by <offset>  |
    | f16vec4 textureGatherOffset(f16sampler2D sampler, f16vec2 P, | as described in              |
    |                             ivec2 offset [, int comp         | textureOffset() except that  |
    |                             [, float16_t bias]])             | the <offset> can be variable |
    | f16vec4 textureGatherOffset(f16sampler2DArray sampler,       | (non constant) and ...       |
    |                             vec3 P, ivec2 offset             |                              |
    |                             [, int comp [, float bias]])     |                              |
    | f16vec4 textureGatherOffset(f16sampler2DArray sampler,       |                              |
    |                             f16vec3 P, ivec2 offset          |                              |
    |                             [, int comp [, float16_t bias]]) |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherOffsets(f16sampler2D sampler, vec2 P,   | Operate identically to       |
    |                              ivec2 offsets[4] [, int comp    | textureGatherOffset() except |
    |                              [, float bias]])                | that <offsets> is used to    |
    | f16vec4 textureGatherOffsets(f16sampler2D sampler, f16vec2 P,| determine the location of the|
    |                              ivec2 offsets[4] [, int comp    | four texels to sample. ...   |
    |                              [, float16_t bias]])            |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DArray sampler,      |                              |
    |                              vec3 P, ivec2 offsets[4]        |                              |
    |                              [, int comp [, float bias]])    |                              |
    | f16vec4 textureGatherOffsets(f16sampler2DArray sampler,      |                              |
    |                              f16vec3 P, ivec2 offsets[4]     |                              |
    |                              [, int comp [, float16_t bias]])|                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherLodAMD(f16sampler2D sampler, vec2 P,    | Perform a texture gather     |
    |                             float lod [, int comp])          | operation as in              |
    | f16vec4 textureGatherLodAMD(f16sampler2D sampler, f16vec2 P, | textureGather() with explicit|
    |                             float16_t lod [, int comp])      | LOD, but the four-texel      |
    | f16vec4 textureGatherLodAMD(f16sampler2DArray sampler,       | sampling is modified as      |
    |                             vec3 P, float lod [, int comp])  | follow:                      |
    | f16vec4 textureGatherLodAMD(f16sampler2DArray sampler,       |                              |
    |                             f16vec3 P, float16_t lod         | gvec4(                       |
    |                             [, int comp])                    |   Sample_i0_j1(P, lod).comp, |
    | f16vec4 textureGatherLodAMD(f16samplerCube sampler,          |   Sample_i1_j1(P, lod).comp, |
    |                             vec3 P, float lod [, int comp])  |   Sample_i1_j0(P, lod).comp, |
    | f16vec4 textureGatherLodAMD(f16samplerCube sampler,          |   Sample_i0_j0(P, lod).comp) |
    |                             f16vec3 P, float16_t lod         |                              |
    |                             [, int comp])                    |                              |
    | f16vec4 textureGatherLodAMD(f16samplerCubeArray sampler,     |                              |
    |                             vec4 P, float lod [, int comp])  |                              |
    | f16vec4 textureGatherLodAMD(f16samplerCubeArray sampler,     |                              |
    |                             f16vec4 P, float16_t lod         |                              |
    |                             [, int comp])                    |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherLodOffsetAMD(f16sampler2D sampler,      | Perform a texture gather     |
    |                                   vec2 P, float lod,         | operation as in              |
    |                                   ivec2 offset [, int comp]) | textureGatherOffset() but    |
    | f16vec4 textureGatherLodOffsetAMD(f16sampler2D sampler,      | with explicit LOD.           |
    |                                   f16vec2 P, float16_t lod,  |                              |
    |                                   ivec2 offset [, int comp]) |                              |
    | f16vec4 textureGatherLodOffsetAMD(f16sampler2DArray sampler, |                              |
    |                                   vec3 P, float lod,         |                              |
    |                                   ivec2 offset [, int comp]) |                              |
    | f16vec4 textureGatherLodOffsetAMD(f16sampler2DArray sampler, |                              |
    |                                   f16vec3 P, float16_t lod,  |                              |
    |                                   ivec2 offset [, int comp]) |                              |
    +--------------------------------------------------------------+------------------------------+
    | f16vec4 textureGatherLodOffsetsAMD(f16sampler2D sampler,     | Perform a texture gather     |
    |                                    vec2 P, float lod,        | operation as in              |
    |                                    ivec2 offsets[4]          | textureGatherOffsets() but   |
    |                                    [, int comp])             | with explicit LOD.           |
    | f16vec4 textureGatherLodOffsetsAMD(f16sampler2D sampler,     |                              |
    |                                    f16vec2 P, float16_t lod, |                              |
    |                                    ivec2 offsets[4]          |                              |
    |                                    [, int comp])             |                              |
    | f16vec4 textureGatherLodOffsetsAMD(f16sampler2DArray sampler,|                              |
    |                                    vec3 P, float lod,        |                              |
    |                                    ivec2 offsets[4]          |                              |
    |                                    [, int comp])             |                              |
    | f16vec4 textureGatherLodOffsetsAMD(f16sampler2DArray sampler,|                              |
    |                                    f16vec3 P, float16_t lod, |                              |
    |                                    ivec2 offsets[4]          |                              |
    |                                    [, int comp])             |                              |
    +--------------------------------------------------------------+------------------------------+

    If the shader enables both AMD_texture_gather_bias_lod and ARB_sparse_texture2, this extension
    adds additional sparse texture gather functions, whose prototypes are different from those
    existing ones.

    +--------------------------------------------------------------+------------------------------+
    | Syntax                                                       | Description                  |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherARB(f16sampler2D sampler, vec2 P,     | Do a texture gather operation|
    |                            out f16vec4 texel [, int comp     | as in textureGather(), but   |
    |                            [, float bias]])                  | return texture access        |
    | int sparseTextureGatherARB(f16sampler2D sampler, f16vec2 P,  | residency information from   |
    |                            out f16vec4 texel [, int comp     | the function and the filtered|
    |                            [, float16_t bias]])              | lookup result in the out     |
    | int sparseTextureGatherARB(f16sampler2DArray sampler,        | parameter <texel>.           |
    |                            vec3 P, out f16vec4 texel         |                              |
    |                            [, int comp [, float bias]])      |                              |
    | int sparseTextureGatherARB(f16sampler2DArray sampler,        |                              |
    |                            f16vec3 P, out f16vec4 texel      |                              |
    |                            [, int comp [, float16_t bias]])  |                              |
    | int sparseTextureGatherARB(f16samplerCube sampler, vec3 P,   |                              |
    |                            out f16vec4 texel [, int comp     |                              |
    |                            [, float bias]])                  |                              |
    | int sparseTextureGatherARB(f16samplerCube sampler, f16vec3 P,|                              |
    |                            out f16vec4 texel [, int comp     |                              |
    |                            [, float16_t bias]])              |                              |
    | int sparseTextureGatherARB(f16samplerCubeArray sampler,      |                              |
    |                            vec4 P, out f16vec4 texel         |                              |
    |                            [, int comp [, float bias]])      |                              |
    | int sparseTextureGatherARB(f16samplerCubeArray sampler,      |                              |
    |                            f16vec4 P, out f16vec4 texel      |                              |
    |                            [, int comp [, float16_t bias]])  |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherOffsetARB(f16sampler2D sampler,       | Do a texture gather operation|
    |                                  vec2 P, ivec2 offset,       | as in textureGatherOffset(), |
    |                                  out f16vec4 texel           | but return texture access    |
    |                                  [, int comp [, float bias]])| residency information from   |
    | int sparseTextureGatherOffsetARB(f16sampler2D sampler,       | the function and the filtered|
    |                                  f16vec2 P, ivec2 offset,    | lookup result in the out     |
    |                                  out f16vec4 texel           | parameter <texel>.           |
    |                                  [, int comp                 |                              |
    |                                  [, float16_t bias]])        |                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler,  |                              |
    |                                  vec3 P, ivec2 offset,       |                              |
    |                                  out f16vec4 texel           |                              |
    |                                  [, int comp [, float bias]])|                              |
    | int sparseTextureGatherOffsetARB(f16sampler2DArray sampler,  |                              |
    |                                  f16vec3 P, ivec2 offset,    |                              |
    |                                  out f16vec4 texel           |                              |
    |                                  [, int comp                 |                              |
    |                                  [, float16_t bias]])        |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherOffsetsARB(f16sampler2D sampler,      | Do a texture gather operation|
    |                                   vec2 P, ivec2 offsets[4],  | as in textureGatherOffsets(),|
    |                                   out f16vec4 texel          | but return texture access    |
    |                                   [, int comp                | residency information from   |
    |                                   [, float bias]])           | the function and the filtered|
    | int sparseTextureGatherOffsetsARB(f16sampler2D sampler,      | lookup result in the out     |
    |                                   f16vec2 P,                 | parameter <texel>.           |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel          |                              |
    |                                   [, int comp                |                              |
    |                                   [, float16_t bias]])       |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, |                              |
    |                                   vec3 P, ivec2 offsets[4],  |                              |
    |                                   out f16vec4 texel          |                              |
    |                                   [, int comp                |                              |
    |                                   [, float bias]])           |                              |
    | int sparseTextureGatherOffsetsARB(f16sampler2DArray sampler, |                              |
    |                                   f16vec3 P,                 |                              |
    |                                   ivec2 offsets[4],          |                              |
    |                                   out f16vec4 texel          |                              |
    |                                   [, int comp                |                              |
    |                                   [, float16_t bias]])       |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherLodAMD(f16sampler2D sampler,          | Do a texture gather operation|
    |                               vec2 P, float lod,             | as in textureGather() with,  |
    |                               out f16vec4 texel [, int comp])| explicit LOD, but return     |
    | int sparseTextureGatherLodAMD(f16sampler2D sampler,          | texture access residency     |
    |                               f16vec2 P, float16_t lod,      | information from the function|
    |                               out f16vec4 texel [, int comp])| and the filtered lookup      |
    | int sparseTextureGatherLodAMD(f16sampler2DArray sampler,     | result in the out parameter  |
    |                               vec3 P, float lod,             | <texel>.                     |
    |                               out f16vec4 texel [, int comp])|                              |
    | int sparseTextureGatherLodAMD(f16sampler2DArray sampler,     |                              |
    |                               f16vec3 P, float16_t lod,      |                              |
    |                               out f16vec4 texel [, int comp])|                              |
    | int sparseTextureGatherLodAMD(f16samplerCube sampler,        |                              |
    |                               vec3 P, float lod,             |                              |
    |                               out f16vec4 texel [, int comp])|                              |
    | int sparseTextureGatherLodAMD(f16samplerCube sampler,        |                              |
    |                               f16vec3 P, float16_t lod,      |                              |
    |                               out f16vec4 texel [, int comp])|                              |
    | int sparseTextureGatherLodAMD(f16samplerCubeArray sampler,   |                              |
    |                               vec4 P, float lod,             |                              |
    |                               out f16vec4 texel [, int comp])|                              |
    | int sparseTextureGatherLodAMD(f16samplerCubeArray sampler,   |                              |
    |                               f16vec4 P, float16_t lod,      |                              |
    |                               out f16vec4 texel [, int comp])|                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherLodOffsetAMD(f16sampler2D sampler,    | Do a texture gather operation|
    |                                     vec2 P, float lod,       | as in textureGatherOffset()  |
    |                                     ivec2 offset,            | with explicit LOD, but return|
    |                                     out f16vec4 texel        | texture access residency     |
    |                                     [, int comp])            | information from the function|
    | int sparseTextureGatherLodOffsetAMD(f16sampler2D sampler,    | and the filtered lookup      |
    |                                     f16vec2 P, float16_t lod,| result in the out parameter  |
    |                                     ivec2 offset,            | <texel>.                     |
    |                                     out f16vec4 texel        |                              |
    |                                     [, int comp])            |                              |
    | int sparseTextureGatherLodOffsetAMD(f16sampler2DArray        |                              |
    |                                     sampler, vec3 P,         |                              |
    |                                     float lod,               |                              |
    |                                     ivec2 offset,            |                              |
    |                                     out f16vec4 texel        |                              |
    |                                     [, int comp])            |                              |
    | int sparseTextureGatherLodOffsetAMD(f16sampler2DArray        |                              |
    |                                     sampler, f16vec3 P,      |                              |
    |                                     float16_t lod,           |                              |
    |                                     ivec2 offset,            |                              |
    |                                     out f16vec4 texel        |                              |
    |                                     [, int comp])            |                              |
    +--------------------------------------------------------------+------------------------------+
    | int sparseTextureGatherLodOffsetsAMD(f16sampler2D sampler,   | Do a texture gather operation|
    |                                      vec2 P, float lod,      | as in textureGatherOffsets() |
    |                                      ivec2 offsets[4],       | with explicit LOD, but return|
    |                                      out f16vec4 texel       | texture access residency     |
    |                                      [, int comp])           | information from the function|
    | int sparseTextureGatherLodOffsetsAMD(f16sampler2D sampler,   | and the filtered lookup      |
    |                                      f16vec2 P,              | result in the out parameter  |
    |                                      float16_t lod,          | <texel>.                     |
    |                                      ivec2 offsets[4],       |                              |
    |                                      out f16vec4 texel       |                              |
    |                                      [, int comp])           |                              |
    | int sparseTextureGatherLodOffsetsAMD(f16sampler2DArray       |                              |
    |                                      sampler, vec3 P,        |                              |
    |                                      float lod,              |                              |
    |                                      ivec2 offsets[4],       |                              |
    |                                      out f16vec4 texel       |                              |
    |                                      [, int comp])           |                              |
    | int sparseTextureGatherLodOffsetsAMD(f16sampler2DArray       |                              |
    |                                      sampler, f16vec3 P,     |                              |
    |                                      float16_t lod,          |                              |
    |                                      ivec2 offsets[4],       |                              |
    |                                      out f16vec4 texel       |                              |
    |                                      [, int comp])           |                              |
    +--------------------------------------------------------------+------------------------------+

Errors

    None.

New State

    None.

New Implementation Dependent State

    None.

Issues

    (1) What is the intention of this extension?

      RESOLVED: This extension is designed to support half-precision floating-point fetch
      operations in shader texture functions and shader image memory functions. We define new
      opaque types and built-in functions to achieve this goal and minimize type conversion between
      single-precision and half-precision floating-point. Data types, other than opaque sampler and
      image types, that could be half float include: texture lookup result, float texture
      coordinates, explicit float LOD, LOD bias, minimum LOD clamp, input data for image store,
      output data from image load.

    (2) I see there are two half-precision floating-point forms for the same texture lookup
        function, why?

      RESOLVED: The difference between these two forms are: in the one form, only texture lookup
      result and opaque sampler types are half-precision floating-point while in the other form,
      other arguments become half-precision floating-point as well, such as texture coordinates,
      explicit LOD, LOD bias, and minimum LOD clamp. The motive is to provide flexibility for the
      shader and to minimize type conversion that might be involved.

      Still, you have to pay special attention to the depth reference value (denoted as <compare>
      or <refZ> in the function syntax). They are always single float typed. We do not want to
      introduce unexpected incorrectness of depth comparison because of insufficient precision of
      the depth reference value.

Revision History

    Rev.  Date      Author    Changes
    ----  --------  --------  ---------------------------------------------------------------------
     6    3/9/18    rexu      Add some missing function prototypes when this extension interacts
                              with AMD_texture_gather_bias_lod.

     5    9/20/17   dwitczak  Fix incorrect definitions of some of the textureClampARB(),
                              textureGradClampARB(), textureLod() and textureProjLodOffset()
                              function prototypes. Remove duplicate function prototype definitions.

     4    11/24/16  rexu      Clarify that when <compare> is present in shadow forms of
                              textureProj*(), the resulting <compare>, by divding its initial value
                              with the last component of <P>, is used as <Dref>.

     3    11/21/16  rexu      Add the interaction with AMD_texture_gather_bias_lod.

     2    11/14/16  rexu      Rename this extension from AMD_gpu_shader_half_float_texture to
                              AMD_gpu_shader_half_float_fetch. The former name is somewhat
                              confusing, which could also refer to F16 texture internal format used
                              in OpenGL APIs. Clarify that when half-precision floating-point
                              opaque types are used in shader texture functions and shader image
                              memory functions, the results are half-precision if they are
                              floating-point typed.

     1    11/03/16  rexu      Initial draft.
