15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_texture_cube_map_array
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_texture_cube_map_array
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jon Leech (oddhack 'at' sonic.net)
125bd8deadSopenharmony_ci    Daniel Koch, NVIDIA (dkoch 'at' nvidia.com)
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciContributors
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Daniel Koch, NVIDIA (dkoch 'at' nvidia.com)
175bd8deadSopenharmony_ci    Dominik Witczak, Mobica
185bd8deadSopenharmony_ci    Graham Connor, Imagination
195bd8deadSopenharmony_ci    Ben Bowman, Imagination
205bd8deadSopenharmony_ci    Jonathan Putsman, Imagination
215bd8deadSopenharmony_ci    Contributors to ARB_texture_cube_map_array
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciNotice
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Copyright (c) 2009-2013 The Khronos Group Inc. Copyright terms at
265bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Portions Copyright (c) 2013-2014 NVIDIA Corporation.
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ciStatus
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ci    Complete.
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciVersion
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    Last Modified Date: March 28, 2014
375bd8deadSopenharmony_ci    Revision: 11
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciNumber
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    OpenGL ES Extension #184
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ciDependencies
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    OpenGL ES 3.1 and OpenGL ES Shading Language 3.10 are required.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    This specification is written against the OpenGL ES 3.1 (March 17,
485bd8deadSopenharmony_ci    2014) and OpenGL ES 3.10 Shading Language (March 17, 2014)
495bd8deadSopenharmony_ci    Specifications.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    EXT_geometry_shader is required.
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    EXT_texture_border_clamp affects the definition of this extension.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    This extension interacts with OES_shader_image_atomic.
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ciOverview
585bd8deadSopenharmony_ci
595bd8deadSopenharmony_ci    OpenGL ES 3.1 supports two-dimensional array textures. An array texture
605bd8deadSopenharmony_ci    is an ordered set of images with the same size and format. Each image in
615bd8deadSopenharmony_ci    an array texture has a unique level. This extension expands texture
625bd8deadSopenharmony_ci    array support to include cube map textures.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    A cube map array texture is a two-dimensional array texture that may
655bd8deadSopenharmony_ci    contain many cube map layers. Each cube map layer is a unique cube map
665bd8deadSopenharmony_ci    image set. Images in a cube map array have the same size and format
675bd8deadSopenharmony_ci    limitations as two-dimensional array textures. A cube map array texture
685bd8deadSopenharmony_ci    is specified using TexImage3D or TexStorage3D in a similar manner to
695bd8deadSopenharmony_ci    two-dimensional arrays. Cube map array textures can be bound to a render
705bd8deadSopenharmony_ci    targets of a frame buffer object just as two-dimensional arrays are,
715bd8deadSopenharmony_ci    using FramebufferTextureLayer.
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    When accessed by a shader, a cube map array texture acts as a single
745bd8deadSopenharmony_ci    unit. The "s", "t", "r" texture coordinates are treated as a regular
755bd8deadSopenharmony_ci    cube map texture fetch. The "q" texture is treated as an unnormalized
765bd8deadSopenharmony_ci    floating-point value identifying the layer of the cube map array
775bd8deadSopenharmony_ci    texture. Cube map array texture lookups do not filter between layers.
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ciNew Procedures and Functions
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    None
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ciNew Tokens
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    Accepted by the <target> parameter of TexParameter{if}, TexParameter{if}v,
865bd8deadSopenharmony_ci    TexParameterI{i ui}vEXT, BindTexture, GenerateMipmap, TexImage3D,
875bd8deadSopenharmony_ci    TexSubImage3D, TexStorage3D, GetTexParameter{if}v,
885bd8deadSopenharmony_ci    GetTexParameter{i ui}vEXT, GetTexLevelParameter{if}v,
895bd8deadSopenharmony_ci    CompressedTexImage3D, CompressedTexSubImage3D and CopyTexSubImage3D:
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_ARRAY_EXT                      0x9009
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv,
945bd8deadSopenharmony_ci    GetIntegerv and GetFloatv:
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci        TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT              0x900A
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci    Returned by the <type> parameter of GetActiveUniform,
995bd8deadSopenharmony_ci    and by the <params> parameter of GetProgramResourceiv
1005bd8deadSopenharmony_ci    when <props> is TYPE:
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci        SAMPLER_CUBE_MAP_ARRAY_EXT                      0x900C
1035bd8deadSopenharmony_ci        SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT               0x900D
1045bd8deadSopenharmony_ci        INT_SAMPLER_CUBE_MAP_ARRAY_EXT                  0x900E
1055bd8deadSopenharmony_ci        UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT         0x900F
1065bd8deadSopenharmony_ci        IMAGE_CUBE_MAP_ARRAY_EXT                        0x9054
1075bd8deadSopenharmony_ci        INT_IMAGE_CUBE_MAP_ARRAY_EXT                    0x905F
1085bd8deadSopenharmony_ci        UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT           0x906A
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ciAdditions to the OpenGL ES 3.1 Specification
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    Add to table 7.3 "OpenGL ES Shading Language type tokens..." on p. 86:
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci        Type Name Token                         Keyword                Buffer
1155bd8deadSopenharmony_ci        --------------------------------------- ---------------------- ------
1165bd8deadSopenharmony_ci        SAMPLER_CUBE_MAP_ARRAY_EXT              samplerCubeArray
1175bd8deadSopenharmony_ci        SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT       samplerCubeArrayShadow
1185bd8deadSopenharmony_ci        INT_SAMPLER_CUBE_MAP_ARRAY_EXT          isamplerCubeArray
1195bd8deadSopenharmony_ci        UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT usamplerCubeArray
1205bd8deadSopenharmony_ci        IMAGE_CUBE_MAP_ARRAY_EXT                imageCubeArray
1215bd8deadSopenharmony_ci        INT_IMAGE_CUBE_MAP_ARRAY_EXT            iimageCubeArray
1225bd8deadSopenharmony_ci        UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT   uimageCubeArray
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    Add to the fourth paragraph of chapter 8, "Textures and Samplers", on p.
1265bd8deadSopenharmony_ci    128:
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    ... A cube map array is a collection of cube map layers stored as a
1295bd8deadSopenharmony_ci    two-dimensional array texture. When accessing a cube map array, the
1305bd8deadSopenharmony_ci    texture coordinate "s", "t", "r" are applied similarly as cube maps
1315bd8deadSopenharmony_ci    while the last texture coordinate "q" is used as the index of one the
1325bd8deadSopenharmony_ci    cube map slices.
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    Modify the first paragraph of section 8.1, "Texture Objects" on p. 129:
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci    ... The default texture object is bound to each of the TEXTURE_2D,
1385bd8deadSopenharmony_ci    TEXTURE_3D, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP, TEXTURE_CUBE_MAP_ARRAY_EXT,
1395bd8deadSopenharmony_ci    and TEXTURE_2D_MULTISAMPLE targets ...
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    Modify the paragraph following IsTexture on p. 131:
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci    The texture object name space, including the initial two-, and three-
1455bd8deadSopenharmony_ci    dimensional, two-dimensional array, cube map, cube map array, and
1465bd8deadSopenharmony_ci    two-dimensional multisample texture objects, is shared among all texture
1475bd8deadSopenharmony_ci    units. ...
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci
1505bd8deadSopenharmony_ci    Modify section 8.5, "Texture Image Specification"
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    Change the description of TexImage3D in the first paragraph of the
1535bd8deadSopenharmony_ci    section, on p. 147:
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci    ... <target> must be one of TEXTURE_3D for a three-dimensional texture,
1565bd8deadSopenharmony_ci    TEXTURE_2D_ARRAY for a two-dimensional array texture, or
1575bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_ARRAY_EXT for a cube map array texture. ...
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    Change the sixth paragraph on p. 148:
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci    Textures with a base internal format of DEPTH_COMPONENT or DEPTH_STENCIL
1635bd8deadSopenharmony_ci    are supported by texture image specification commands only if <target>
1645bd8deadSopenharmony_ci    is TEXTURE_2D, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP, or
1655bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_ARRAY_EXT. Using these formats ...
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci    Add following the first paragraph of section 8.5.3, "Texture Image
1695bd8deadSopenharmony_ci    Structure", on p. 154:
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci    ... image is indexed with the highest value of <k>.
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ci    When <target> is TEXTURE_CUBE_MAP_ARRAY_EXT. specifying a cube map array
1745bd8deadSopenharmony_ci    texture, <k> refers to a layer-face. The layer is given by
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci        <layer> = floor(<k> / 6),
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    and the face is given by
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ci        <face> = <k> mod 6
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    The face number corresponds to the cube map faces as shown in table 9.2.
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    If the internal data type ...
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci
1875bd8deadSopenharmony_ci    Add following the third paragraph on p. 155:
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ci    ... specified sizes can be supported.
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci    An INVALID_VALUE error is generated if target is
1925bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_ARRAY_EXT, and <width> and <height> are not equal, or
1935bd8deadSopenharmony_ci    <depth> is not a multiple of six, indicating 6 * <N> layer-faces in the
1945bd8deadSopenharmony_ci    cube map array.
1955bd8deadSopenharmony_ci
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    Modify the sixth paragraph on p. 155:
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    The maximum allowable width and height of a cube map or cube map array
2005bd8deadSopenharmony_ci    texture must be the same, and must be at least 2^(k-lod) ...
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    Modify the fourth paragraph on p. 156:
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci    ... but may not correspond to any actual texel. See figure 8.3. If
2065bd8deadSopenharmony_ci    <target> is TEXTURE_CUBE_MAP_ARRAY_EXT, the texture value is determined
2075bd8deadSopenharmony_ci    by (s, t, r, q) coordinates where "s", "t", "r" is defined to be the
2085bd8deadSopenharmony_ci    same as for TEXTURE_CUBE_MAP and "q" is defined as the index of a
2095bd8deadSopenharmony_ci    specific cube map in the cube map array.
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci
2125bd8deadSopenharmony_ci    Modify section 3.8.5 "Alternate Texture Image Specification Commands"
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    Change the second paragraph on p. 162:
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    ... and the <target> arguments of TexSubImage3D and CopyTexSubImage3D
2175bd8deadSopenharmony_ci    must be TEXTURE_3D, TEXTURE_2D_ARRAY, or TEXTURE_CUBE_MAP_ARRAY_EXT.
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ci    Change the sixth paragraph on p. 162:
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci    Arguments <xoffset>, <yoffset>, and <zoffset> of TexSubImage3D and
2235bd8deadSopenharmony_ci    CopyTexSubImage3D specify the lower left texel coordinates of a
2245bd8deadSopenharmony_ci    <width>-wide by <height>-high by <depth>-deep rectangular subregion of the
2255bd8deadSopenharmony_ci    texel array. For cube map array textures, <zoffset> is the first
2265bd8deadSopenharmony_ci    layer-face to update, and <depth> is the number of layer-faces to
2275bd8deadSopenharmony_ci    update. The <depth> argument associated with CopyTexSubImage3D ...
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    Modify section 8.9 "Texture Parameters" to change the first paragraph of
2315bd8deadSopenharmony_ci    the section, on p. 170:
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    <target> is the target, and must be one of TEXTURE_2D, TEXTURE_3D,
2345bd8deadSopenharmony_ci    TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP, TEXTURE_CUBE_MAP_ARRAY_EXT, or
2355bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE. <pname> is ...
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    Modify section 8.10.2 "Texture Parameter Queries" in the second
2395bd8deadSopenharmony_ci    paragraph of the section, on p. 172:
2405bd8deadSopenharmony_ci
2415bd8deadSopenharmony_ci    <target> may be one of TEXTURE_2D, TEXTURE_3D, TEXTURE_2D_ARRAY,
2425bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP, TEXTURE_CUBE_MAP_ARRAY_EXT, or TEXTURE_2D_MULTISAMPLE,
2435bd8deadSopenharmony_ci    indicating the currently bound two-dimensional, three-dimensional,
2445bd8deadSopenharmony_ci    two-dimensional array, cube map, cube map array, or two-dimensional
2455bd8deadSopenharmony_ci    multisample texture object, respectively.
2465bd8deadSopenharmony_ci
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ci    Modify section 8.10.3 "Texture Level Parameter Queries" in the second
2495bd8deadSopenharmony_ci    paragraph of the section, on p. 173:
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ci    <target> may be one of TEXTURE_2D, TEXTURE_3D, TEXTURE_2D_ARRAY, one of
2525bd8deadSopenharmony_ci    the cube map face targets from table 8.21, TEXTURE_CUBE_MAP_ARRAY_EXT, or
2535bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE, indicating the currently bound two- or
2545bd8deadSopenharmony_ci    three-dimensional, two-dimensional array, one of the six distinct 2D
2555bd8deadSopenharmony_ci    images making up the cube map texture object, cube map array, or
2565bd8deadSopenharmony_ci    two-dimensional multisample texture.
2575bd8deadSopenharmony_ci
2585bd8deadSopenharmony_ci    <lod> determines ...
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    Modify section 8.13.1 "Scale Factor and Level of Detail" to change the
2625bd8deadSopenharmony_ci    first paragraph in the description of equation 8.6, on p. 177:
2635bd8deadSopenharmony_ci
2645bd8deadSopenharmony_ci    ... For a two-dimensional, two-dimensional array, cube map, or cube map
2655bd8deadSopenharmony_ci    array texture, define w(x,y) == 0.
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci
2685bd8deadSopenharmony_ci    Modify section 8.13.3 "Mipmapping" to change the first clause in the
2695bd8deadSopenharmony_ci    equation for <maxsize> on p. 182 to:
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci        ... max(w_t,h_t)    for 2D, 2D array, cube map, and cube map
2725bd8deadSopenharmony_ci                            array textures
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci    Modify section 8.13.4, "Manual Mipmap Generation" to change the
2765bd8deadSopenharmony_ci    description of GenerateMipmap starting with the first paragraph, on p.
2775bd8deadSopenharmony_ci    185:
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    ... where <target> is one of TEXTURE_2D, TEXTURE_3D, TEXTURE_2D_ARRAY,
2805bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP, or TEXTURE_CUBE_MAP_ARRAY_EXT.
2815bd8deadSopenharmony_ci
2825bd8deadSopenharmony_ci    Mipmap generation affects the texture image attached to <target>.
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    If <target> is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY_EXT, the texture
2855bd8deadSopenharmony_ci    bound to <target> must be cube complete or cube array complete,
2865bd8deadSopenharmony_ci    respectively, as defined in section 8.17.
2875bd8deadSopenharmony_ci
2885bd8deadSopenharmony_ci    ...
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci    The contents of the derived arrays are computed by repeated, filtered
2915bd8deadSopenharmony_ci    reduction of the level_base array. For two-dimensional array and cube
2925bd8deadSopenharmony_ci    map array textures, each layer is filtered independently. ...
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci    Errors
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    ...
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci    An INVALID_OPERATION error is generated if <target> is TEXTURE_CUBE_MAP
2995bd8deadSopenharmony_ci    or TEXTURE_CUBE_MAP_ARRAY_EXT, and the texture bound to <target> is not
3005bd8deadSopenharmony_ci    cube complete or cube array complete respectively.
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci    ...
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci    Modify section 8.16, "Texture Completeness"
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ci    Add a new paragraph definition before the final paragraph (starting
3085bd8deadSopenharmony_ci    "Using the preceding ...") in the introduction to the section, on p.
3095bd8deadSopenharmony_ci    186:
3105bd8deadSopenharmony_ci
3115bd8deadSopenharmony_ci    A cube map array texture is <cube array complete> if it is complete when
3125bd8deadSopenharmony_ci    treated as a two-dimensional array and cube complete for every cube map
3135bd8deadSopenharmony_ci    slice within the array texture.
3145bd8deadSopenharmony_ci
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci    Add a new bullet point to the final paragraph of the section, on p. 186:
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci    Using the preceding definitions, a texture is complete unless any of the
3195bd8deadSopenharmony_ci    following conditions hold true:
3205bd8deadSopenharmony_ci      ...
3215bd8deadSopenharmony_ci      * The texture is a cube map array texture, and is not cube array
3225bd8deadSopenharmony_ci        complete.
3235bd8deadSopenharmony_ci
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ci    Modify section 8.17 "Immutable-Format Texture Images"
3265bd8deadSopenharmony_ci
3275bd8deadSopenharmony_ci    Change the description of TexStorage3D on p. 189:
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci    The command
3305bd8deadSopenharmony_ci
3315bd8deadSopenharmony_ci        void TexStorage3D(enum target ...
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ci    specifies all the levels of a three-dimensional, two-dimensional array,
3345bd8deadSopenharmony_ci    or cube map array texture. The pseudocode depends on <target>:
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci    ...
3375bd8deadSopenharmony_ci
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci    Change the <target>s allowed in the second code example for
3405bd8deadSopenharmony_ci    TexStorage3D, at the top of p. 190:
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci    <target> TEXTURE_2D_ARRAY or TEXTURE_CUBE_MAP_ARRAY_EXT:
3435bd8deadSopenharmony_ci
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    Change the second bullet point in the Errors section on p. 190:
3465bd8deadSopenharmony_ci
3475bd8deadSopenharmony_ci      * <target> is TEXTURE_2D_ARRAY or TEXTURE_CUBE_MAP_ARRAY_EXT and
3485bd8deadSopenharmony_ci        <levels> is greater than floor(log2(max(width,height))) + 1
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci    Modify section 8.18, "Texture State"
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    Change the first paragraph of the section, on p. 191:
3545bd8deadSopenharmony_ci
3555bd8deadSopenharmony_ci    ... First, there are the multiple sets of texel arrays ... and six sets
3565bd8deadSopenharmony_ci    of mipmap arrays each for the cube map and cube map array texture
3575bd8deadSopenharmony_ci    targets) and their number. Each array has associated with it a width,
3585bd8deadSopenharmony_ci    height, and depth (three-dimensional, two-dimensional array, and cube
3595bd8deadSopenharmony_ci    map array only), ...
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci    Change the fourth paragraph of the section, on p. 191:
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci    Next, there are the five sets of texture properties, corresponding to
3645bd8deadSopenharmony_ci    the two-dimensional, two-dimensional array, three-dimensional, cube
3655bd8deadSopenharmony_ci    map, and cube map array texture targets. Each set consists of ...
3665bd8deadSopenharmony_ci
3675bd8deadSopenharmony_ci
3685bd8deadSopenharmony_ci    Modify section 8.22, "Texture Image Loads and Stores":
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ci    Change starting with the third paragraph of the section, on p. 195:
3715bd8deadSopenharmony_ci
3725bd8deadSopenharmony_ci    If the texture identified by <texture> is a two-dimensional array,
3735bd8deadSopenharmony_ci    three-dimensional, cube map, or cube map array texture, it is possible
3745bd8deadSopenharmony_ci    to bind either the entire texture level or a single layer or face of the
3755bd8deadSopenharmony_ci    texture level. If <layered> is TRUE, the entire level is bound. If
3765bd8deadSopenharmony_ci    <layered> is FALSE, only the single layer identified by <layer> will be
3775bd8deadSopenharmony_ci    bound. When <layered> is FALSE, the single bound layer is treated as a
3785bd8deadSopenharmony_ci    different texture target for image accesses:
3795bd8deadSopenharmony_ci
3805bd8deadSopenharmony_ci      * two-dimensional array, three-dimensional, cube map, and cube map
3815bd8deadSopenharmony_ci        array texture layers are treated as two-dimensional textures
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci    For cube map textures where <layered> is FALSE, the face is taken by
3845bd8deadSopenharmony_ci    mapping the layer number to a face according to table 8.25. For cube map
3855bd8deadSopenharmony_ci    array textures where <layered> is FALSE, the selected layer number is
3865bd8deadSopenharmony_ci    mapped to a texture layer and cube face using the following equations
3875bd8deadSopenharmony_ci    and mapping <face> to a face according to table 8.25:
3885bd8deadSopenharmony_ci
3895bd8deadSopenharmony_ci        layer = floor(layer_orig / 6)
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci        face = layer_orig - (layer * 6)
3925bd8deadSopenharmony_ci
3935bd8deadSopenharmony_ci    If the texture identified by <texture> does not have multiple layers or
3945bd8deadSopenharmony_ci    faces ...
3955bd8deadSopenharmony_ci
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci    Add to table 8.26, "Mapping of image load and store...", on p. 196:
3985bd8deadSopenharmony_ci
3995bd8deadSopenharmony_ci        Texture target               face/
4005bd8deadSopenharmony_ci                                   i  j  k  layer
4015bd8deadSopenharmony_ci        -------------------------- -- -- -- -----
4025bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_ARRAY_EXT x  y  -  z
4035bd8deadSopenharmony_ci
4045bd8deadSopenharmony_ci
4055bd8deadSopenharmony_ci    Split the third paragraph on p. 196, starting "If the texture target",
4065bd8deadSopenharmony_ci    into two paragraphs:
4075bd8deadSopenharmony_ci
4085bd8deadSopenharmony_ci    If the texture target has layers or cube map faces, the layer or face
4095bd8deadSopenharmony_ci    number is taken from the <layer> argument of BindImageTexture if the
4105bd8deadSopenharmony_ci    texture is bound with <layered> set to FALSE, or from the coordinate
4115bd8deadSopenharmony_ci    identified by table 8.26 otherwise.
4125bd8deadSopenharmony_ci
4135bd8deadSopenharmony_ci    For cube map and cube map array textures with <layered> set to TRUE, the
4145bd8deadSopenharmony_ci    coordinate is mapped to a layer and face in the same manner as the
4155bd8deadSopenharmony_ci    <layer> argument of BindImageTexture.
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ci    If the individual texel ...
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci
4205bd8deadSopenharmony_ci    Add to the bullet list in section 9.2.2, "Attaching Images to
4215bd8deadSopenharmony_ci    Framebuffer Objects", and add a new final paragraph of the introduction
4225bd8deadSopenharmony_ci    to the section on p. 208:
4235bd8deadSopenharmony_ci
4245bd8deadSopenharmony_ci    There are several types of framebuffer-attachable images
4255bd8deadSopenharmony_ci        ...
4265bd8deadSopenharmony_ci      * A single layer-face of a cube map array texture, which is treated as
4275bd8deadSopenharmony_ci        a two-dimensional image.
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci    Additionally, an entire level of a three-dimensional, cube map, cube map
4305bd8deadSopenharmony_ci    array, two-dimensional array, or ...
4315bd8deadSopenharmony_ci
4325bd8deadSopenharmony_ci
4335bd8deadSopenharmony_ci    Modify section 9.2.8, "Attaching Texture Images to a Framebuffer" to
4345bd8deadSopenharmony_ci    change the description of FramebufferTextureLayer on p. 219:
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci    The command
4375bd8deadSopenharmony_ci
4385bd8deadSopenharmony_ci      void FramebufferTextureLayer(enum target, enum attachment,
4395bd8deadSopenharmony_ci                                   uint texture, int level, int layer);
4405bd8deadSopenharmony_ci
4415bd8deadSopenharmony_ci    operates similarly to FramebufferTexture2D, except that it attaches a
4425bd8deadSopenharmony_ci    single layer of a three-dimensional, two-dimensional array, cube map
4435bd8deadSopenharmony_ci    array, or two-dimensional multisample array texture level.
4445bd8deadSopenharmony_ci
4455bd8deadSopenharmony_ci    ...
4465bd8deadSopenharmony_ci
4475bd8deadSopenharmony_ci    <layer> specifies the layer of a two-dimensional image within <texture>
4485bd8deadSopenharmony_ci    except for cube map array textures, where <layer> is translated into an
4495bd8deadSopenharmony_ci    array layer and a cube map face as described in section 8.22 for
4505bd8deadSopenharmony_ci    layer-face numbers passed to BindImageTexture.
4515bd8deadSopenharmony_ci
4525bd8deadSopenharmony_ci    ...
4535bd8deadSopenharmony_ci
4545bd8deadSopenharmony_ci    Errors
4555bd8deadSopenharmony_ci
4565bd8deadSopenharmony_ci    ...
4575bd8deadSopenharmony_ci
4585bd8deadSopenharmony_ci    An INVALID_OPERATION error is generated if <texture> is non-zero and is
4595bd8deadSopenharmony_ci    not the name of a three dimensional, two-dimensional array, or cube map
4605bd8deadSopenharmony_ci    array texture.
4615bd8deadSopenharmony_ci
4625bd8deadSopenharmony_ci
4635bd8deadSopenharmony_ci    Modify section 9.4.1, "Framebuffer Completeness" to replace the bullet
4645bd8deadSopenharmony_ci    point starting "If <image> is a three-dimensional texture" on p. 223:
4655bd8deadSopenharmony_ci
4665bd8deadSopenharmony_ci    * If <image> is a three-dimensional, two-dimensional array or cube map
4675bd8deadSopenharmony_ci      array texture and the attachment is not layered, the selected layer is
4685bd8deadSopenharmony_ci      less than the depth or layer count of the texture.
4695bd8deadSopenharmony_ci
4705bd8deadSopenharmony_ci    * If <image> is a three-dimensional, two-dimensional array or cube map
4715bd8deadSopenharmony_ci      array texture and the attachment is layered, the depth or layer count
4725bd8deadSopenharmony_ci      of the texture is less than or equal to the value of
4735bd8deadSopenharmony_ci      MAX_FRAMEBUFFER_LAYERS_EXT.
4745bd8deadSopenharmony_ci
4755bd8deadSopenharmony_ci
4765bd8deadSopenharmony_ci    Modify the final bullet point in section 9.4.2 "Whole Framebuffer
4775bd8deadSopenharmony_ci    Completeness", as modified by EXT_geometry_shader (starting "If any
4785bd8deadSopenharmony_ci    framebuffer attachment is layered") on p. 224:
4795bd8deadSopenharmony_ci
4805bd8deadSopenharmony_ci    * If any framebuffer attachment is layered, all populated attachments
4815bd8deadSopenharmony_ci      must be layered. Additionally, all populated color attachments must be
4825bd8deadSopenharmony_ci      from textures of the same target (i.e., three-dimensional, cube map,
4835bd8deadSopenharmony_ci      cube map array, two-dimensional array, or two-dimensional multisample
4845bd8deadSopenharmony_ci      array textures).
4855bd8deadSopenharmony_ci
4865bd8deadSopenharmony_ci      { FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT }
4875bd8deadSopenharmony_ci
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci    Add to the end of section 9.7gs, "Layered Framebuffers":
4905bd8deadSopenharmony_ci
4915bd8deadSopenharmony_ci    When cube map array texture levels are attached to a layered
4925bd8deadSopenharmony_ci    framebuffer, the layer number corresponds to a layer-face. The
4935bd8deadSopenharmony_ci    layer-face is be translated into an array layer and a cube map face as
4945bd8deadSopenharmony_ci    described in section 8.22 for layer-face numbers passed to
4955bd8deadSopenharmony_ci    BindImageTexture.
4965bd8deadSopenharmony_ci
4975bd8deadSopenharmony_ci
4985bd8deadSopenharmony_ciDependencies on EXT_texture_border_clamp
4995bd8deadSopenharmony_ci
5005bd8deadSopenharmony_ci    If EXT_texture_buffer is not supported, then remove all references
5015bd8deadSopenharmony_ci    to TexParameterI{i ui}vEXT and GetTexParameter{i ui}vEXT.
5025bd8deadSopenharmony_ci
5035bd8deadSopenharmony_ciDependencies on OES_shader_image_atomic
5045bd8deadSopenharmony_ci
5055bd8deadSopenharmony_ci    When OES_shader_image_atomic is supported, all the imageAtomic* functions
5065bd8deadSopenharmony_ci    are supported on cube array images.
5075bd8deadSopenharmony_ci
5085bd8deadSopenharmony_ciNew State
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci    Add to table 20.8 "Textures (selector, state per texture unit)"
5115bd8deadSopenharmony_ci
5125bd8deadSopenharmony_ci                                                              Initial
5135bd8deadSopenharmony_ci    Get Value                           Type     Get Command  Value       Description                    Sec.
5145bd8deadSopenharmony_ci    ----------------------------------  -------- -----------  ----------  -----------------------------  ----
5155bd8deadSopenharmony_ci    TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT  48* x Z+ GetIntegerv  0           texture object bound           8.1
5165bd8deadSopenharmony_ci                                                                          to TEXTURE_CUBE_MAP_ARRAY_EXT
5175bd8deadSopenharmony_ci
5185bd8deadSopenharmony_ciModification to the OpenGL ES Shading Language Specification, Version 3.10
5195bd8deadSopenharmony_ci
5205bd8deadSopenharmony_ci    #extension GL_EXT_texture_cube_map_array: <behavior>
5215bd8deadSopenharmony_ci
5225bd8deadSopenharmony_ci    The above line is needed to control the GLSL features described in
5235bd8deadSopenharmony_ci    this section.
5245bd8deadSopenharmony_ci
5255bd8deadSopenharmony_ci
5265bd8deadSopenharmony_ci    A new preprocessor #define is added to the OpenGL ES Shading Language:
5275bd8deadSopenharmony_ci
5285bd8deadSopenharmony_ci      #define GL_EXT_texture_cube_map_array 1
5295bd8deadSopenharmony_ci
5305bd8deadSopenharmony_ci
5315bd8deadSopenharmony_ci    Modifications to Section 3.7 (Keywords)
5325bd8deadSopenharmony_ci
5335bd8deadSopenharmony_ci    Remove from the list of reserved keywords, and add to the list of
5345bd8deadSopenharmony_ci    keywords on p. 14:
5355bd8deadSopenharmony_ci
5365bd8deadSopenharmony_ci    iimageCubeArray
5375bd8deadSopenharmony_ci    imageCubeArray
5385bd8deadSopenharmony_ci    isamplerCubeArray
5395bd8deadSopenharmony_ci    samplerCubeArray
5405bd8deadSopenharmony_ci    samplerCubeArrayShadow
5415bd8deadSopenharmony_ci    uimageCubeArray
5425bd8deadSopenharmony_ci    usamplerCubeArray
5435bd8deadSopenharmony_ci
5445bd8deadSopenharmony_ci
5455bd8deadSopenharmony_ci    Add to section 4.1 "Basic Types"
5465bd8deadSopenharmony_ci
5475bd8deadSopenharmony_ci    Add to table "Floating Point Sampler Types (opaque)" on p. 20:
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ci    Type                         Meaning
5505bd8deadSopenharmony_ci    --------------------------   ---------------------------------------
5515bd8deadSopenharmony_ci    samplerCubeArray             a handle for accessing a cube map array
5525bd8deadSopenharmony_ci    imageCubeArray               texture
5535bd8deadSopenharmony_ci
5545bd8deadSopenharmony_ci    samplerCubeArrayShadow       a handle for accessing a cube map array
5555bd8deadSopenharmony_ci                                 depth texture with comparison
5565bd8deadSopenharmony_ci
5575bd8deadSopenharmony_ci    Add to table "Signed Integer Sampler Types (opaque)" on p. 21:
5585bd8deadSopenharmony_ci
5595bd8deadSopenharmony_ci    Type                    Meaning
5605bd8deadSopenharmony_ci    ----------------------- -----------------------------------------------
5615bd8deadSopenharmony_ci    isamplerCubeArray       a handle for accessing an integer cube map
5625bd8deadSopenharmony_ci    iimageCubeArray         array texture
5635bd8deadSopenharmony_ci
5645bd8deadSopenharmony_ci    Add to table "Unsigned Integer Sampler Types (opaque)" on p. 21:
5655bd8deadSopenharmony_ci
5665bd8deadSopenharmony_ci    Type                    Meaning
5675bd8deadSopenharmony_ci    ----------------------- -----------------------------------------------
5685bd8deadSopenharmony_ci    usamplerCubeArray       a handle for accessing an unsigned integer
5695bd8deadSopenharmony_ci    uimageCubeArray         cube map array texture
5705bd8deadSopenharmony_ci
5715bd8deadSopenharmony_ci
5725bd8deadSopenharmony_ci    Modify the second paragraph of section 4.1.7.2 "Images" on p. 27:
5735bd8deadSopenharmony_ci
5745bd8deadSopenharmony_ci    ... Image accesses should use an image type that matches the target of
5755bd8deadSopenharmony_ci    the texture whose level is bound to the image unit, or for non-layered
5765bd8deadSopenharmony_ci    bindings of 3D or array images should use the image type that matches
5775bd8deadSopenharmony_ci    the dimensionality of the layer of the image (i.e. a layer of 3D,
5785bd8deadSopenharmony_ci    2DArray, Cube, or CubeArray should use image2D). If the ...
5795bd8deadSopenharmony_ci
5805bd8deadSopenharmony_ci    Modify section 4.7.4 "Default Precision Qualifiers"
5815bd8deadSopenharmony_ci
5825bd8deadSopenharmony_ci    Add the following types to the list of types which have no default
5835bd8deadSopenharmony_ci    precision qualifiers at the top of p. 65:
5845bd8deadSopenharmony_ci
5855bd8deadSopenharmony_ci    samplerCubeArray
5865bd8deadSopenharmony_ci    samplerCubeArrayShadow
5875bd8deadSopenharmony_ci    isamplerCubeArray
5885bd8deadSopenharmony_ci    usamplerCubeArray
5895bd8deadSopenharmony_ci    imageCubeArray
5905bd8deadSopenharmony_ci    iimageCubeArray
5915bd8deadSopenharmony_ci    uimageCubeArray
5925bd8deadSopenharmony_ci
5935bd8deadSopenharmony_ci
5945bd8deadSopenharmony_ci    Modify section 7.1.1gs.2, "Geometry Shader Output Variables" to add to
5955bd8deadSopenharmony_ci    the description of gl_Layer:
5965bd8deadSopenharmony_ci
5975bd8deadSopenharmony_ci    gl_Layer takes on a special value when used with an array of cube map
5985bd8deadSopenharmony_ci    textures. Instead of only refering to the layer, it is used to select a
5995bd8deadSopenharmony_ci    cube map face and a layer. Setting gl_Layer to the value (layer*6+face)
6005bd8deadSopenharmony_ci    will render to the face <face> of the cube defined in layer <layer>. The
6015bd8deadSopenharmony_ci    face values are defined in table 8.25 of the OpenGL ES Specification.
6025bd8deadSopenharmony_ci
6035bd8deadSopenharmony_ci    For example, to render to the positive <y> cube map face located in the
6045bd8deadSopenharmony_ci    5th layer of the cube map array, gl_Layer should be set to 5*6 + 2.
6055bd8deadSopenharmony_ci
6065bd8deadSopenharmony_ci
6075bd8deadSopenharmony_ci    Modify section 8.9 "Texture Functions"
6085bd8deadSopenharmony_ci
6095bd8deadSopenharmony_ci    Add to the table of texture query functions in section 8.9.1
6105bd8deadSopenharmony_ci    on p. 120:
6115bd8deadSopenharmony_ci
6125bd8deadSopenharmony_ci      highp ivec3 textureSize(gsamplerCubeArray sampler, int lod)
6135bd8deadSopenharmony_ci      highp ivec3 textureSize(gsamplerCubeArrayShadow sampler, int lod)
6145bd8deadSopenharmony_ci
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ci    Add to the table of texel lookup functions in section 8.9.2 on p. 121:
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ci      gvec4 texture(gsamplerCubeArray sampler, vec4 P [, float bias])
6195bd8deadSopenharmony_ci      float texture(samplerCubeArrayShadow sampler, vec4 P,
6205bd8deadSopenharmony_ci                    float compare)
6215bd8deadSopenharmony_ci
6225bd8deadSopenharmony_ci    Modify the description of the texture functions:
6235bd8deadSopenharmony_ci
6245bd8deadSopenharmony_ci      Use the texture coordinate P to do a texture lookup in the texture
6255bd8deadSopenharmony_ci      currently bound to <sampler>.
6265bd8deadSopenharmony_ci
6275bd8deadSopenharmony_ci      For shadow forms: When <compare> is present, it is used as D_ref and the
6285bd8deadSopenharmony_ci      array layer comes from the last component of P. When compare is not
6295bd8deadSopenharmony_ci      present, the last component of P is used as D_ref and the array layer
6305bd8deadSopenharmony_ci      comes from the second to last component of P.
6315bd8deadSopenharmony_ci
6325bd8deadSopenharmony_ci      For non-shadow forms: the array layer comes from the last component of P.
6335bd8deadSopenharmony_ci
6345bd8deadSopenharmony_ci    Add to the same table on p. 121:
6355bd8deadSopenharmony_ci
6365bd8deadSopenharmony_ci      gvec4 textureLod(gsamplerCubeArray sampler, vec4 P, float lod)
6375bd8deadSopenharmony_ci
6385bd8deadSopenharmony_ci    And add to the same table on p. 124:
6395bd8deadSopenharmony_ci
6405bd8deadSopenharmony_ci      gvec4 textureGrad(gsamplerCubeArray sampler, vec4 P,
6415bd8deadSopenharmony_ci                        vec3 dPdx, vec3 dPdy);
6425bd8deadSopenharmony_ci
6435bd8deadSopenharmony_ci
6445bd8deadSopenharmony_ci    Add to the table of texture gather functions in section 8.9.3 on p. 126:
6455bd8deadSopenharmony_ci
6465bd8deadSopenharmony_ci      gvec4 textureGather(gsamplerCubeArray sampler, vec4 P [, int comp])
6475bd8deadSopenharmony_ci      vec4 textureGather(samplerCubeArrayShadow sampler, vec4 P,
6485bd8deadSopenharmony_ci                         float refZ)
6495bd8deadSopenharmony_ci
6505bd8deadSopenharmony_ci
6515bd8deadSopenharmony_ci    Modify section 8.14 "Texture Lookup Functions" to add to the list of
6525bd8deadSopenharmony_ci    IMAGE_INFO placeholder parameter lists on p. 132:
6535bd8deadSopenharmony_ci
6545bd8deadSopenharmony_ci        ...
6555bd8deadSopenharmony_ci        gimageCubeArray image, ivec3 P
6565bd8deadSopenharmony_ci
6575bd8deadSopenharmony_ci
6585bd8deadSopenharmony_ci    Add to the list of image size functions in the table on p. 133:
6595bd8deadSopenharmony_ci
6605bd8deadSopenharmony_ci        highp ivec3 imageSize(readonly writeonly gimageCubeArray image)
6615bd8deadSopenharmony_ci
6625bd8deadSopenharmony_ciIssues
6635bd8deadSopenharmony_ci
6645bd8deadSopenharmony_ci    Note: These issues apply specifically to the definition of the
6655bd8deadSopenharmony_ci    EXT_texture_cube_map_array specification, which is based on the OpenGL
6665bd8deadSopenharmony_ci    extension ARB_texture_cube_map_array as updated in OpenGL 4.x. Resolved
6675bd8deadSopenharmony_ci    issues from ARB_texture_cube_map_array have been removed, but remain
6685bd8deadSopenharmony_ci    largely applicable to this extension. ARB_texture_cube_map_array can be
6695bd8deadSopenharmony_ci    found in the OpenGL Registry.
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ci    (1) What functionality was removed from ARB_texture_cube_map_array?
6725bd8deadSopenharmony_ci
6735bd8deadSopenharmony_ci      - Interactions with features not supported by the underlying
6745bd8deadSopenharmony_ci        ES 3.1 API and Shading Language, including:
6755bd8deadSopenharmony_ci          * one-dimensional and rectangular textures
6765bd8deadSopenharmony_ci          * texture image readback (GetTexImage)
6775bd8deadSopenharmony_ci
6785bd8deadSopenharmony_ci    (2) What functionality was changed and added relative to
6795bd8deadSopenharmony_ci        ARB_texture_cube_map_array?
6805bd8deadSopenharmony_ci
6815bd8deadSopenharmony_ci      - EXT_texture_cube_map_array more closely matches OpenGL 4.4 language,
6825bd8deadSopenharmony_ci        rather than ARB_texture_cube_map_array language.
6835bd8deadSopenharmony_ci      - Interactions were added with OpenGL ES 3.1 and other EXT extension
6845bd8deadSopenharmony_ci        functionality, including minor interactions with
6855bd8deadSopenharmony_ci        EXT_geometry_shader.
6865bd8deadSopenharmony_ci
6875bd8deadSopenharmony_ci    (3) What should the rules on GLSL suffixing be?
6885bd8deadSopenharmony_ci
6895bd8deadSopenharmony_ci    RESOLVED: The new sampler and image types are not reserved keywords in
6905bd8deadSopenharmony_ci    ESSL 3.00, but they are keywords in GLSL 4.40. ESSL 3.10 updates the
6915bd8deadSopenharmony_ci    reserved keyword list to include all keywords used or reserved in GLSL
6925bd8deadSopenharmony_ci    4.40 (but not otherwise used in ES), and thus we can use the image
6935bd8deadSopenharmony_ci    and sampler keywords directly by moving them from the reserved keywords
6945bd8deadSopenharmony_ci    section. See bug 11179.
6955bd8deadSopenharmony_ci
6965bd8deadSopenharmony_ci    (4) Should cube map array textures be supported for both mutable and
6975bd8deadSopenharmony_ci        immutable textures?
6985bd8deadSopenharmony_ci
6995bd8deadSopenharmony_ci    RESOLVED: Yes. Per Daniel Koch's reasoning: although 2D multisample
7005bd8deadSopenharmony_ci    textures are only supported as immutable textures in ES 3.1, they
7015bd8deadSopenharmony_ci    require new entry points and the ES Working Group prefers having a
7025bd8deadSopenharmony_ci    single way of doing things.
7035bd8deadSopenharmony_ci
7045bd8deadSopenharmony_ci    However, the ES WG also considered only supporting texture gather and
7055bd8deadSopenharmony_ci    stencil texturing on immutable textures and decided against it, on the
7065bd8deadSopenharmony_ci    basis that the only difference was a texture format, texture parameter
7075bd8deadSopenharmony_ci    or how the texture was sampled and thus it was a subtle distinction.
7085bd8deadSopenharmony_ci
7095bd8deadSopenharmony_ci    For cube map array textures, a new texture target is midway between just
7105bd8deadSopenharmony_ci    an access method/format and a whole new entry point. However, a cube map
7115bd8deadSopenharmony_ci    array is similar to a 2D texture array that has a layer size that is a
7125bd8deadSopenharmony_ci    multiple of 6. 2D texture array support for mutable textures already
7135bd8deadSopenharmony_ci    exists in ES 3.0 and it would be odd to not have cube map arrays
7145bd8deadSopenharmony_ci    supported on the same set of entry points.
7155bd8deadSopenharmony_ci
7165bd8deadSopenharmony_ci    Conclusion: support cube map arrays for both types of textures.
7175bd8deadSopenharmony_ci
7185bd8deadSopenharmony_ciRevision History
7195bd8deadSopenharmony_ci
7205bd8deadSopenharmony_ci    Rev.    Date    Author    Changes
7215bd8deadSopenharmony_ci    ----  --------  --------- ----------------------------------------------
7225bd8deadSopenharmony_ci      1   11/11/13  Jon Leech Initial version based on
7235bd8deadSopenharmony_ci                              ARB_texture_cube_map_array.
7245bd8deadSopenharmony_ci      2   11/12/13  Jon Leech Add description of texture state for
7255bd8deadSopenharmony_ci                              cube map arrays and fix description
7265bd8deadSopenharmony_ci                              of binding state for cube map arrays.
7275bd8deadSopenharmony_ci      3   11/20/13  Jon Leech Refer to ES 3.1 instead of 3plus.
7285bd8deadSopenharmony_ci      4   11/21/13  dkoch     Add interactions with EXT_texture_border_clamp
7295bd8deadSopenharmony_ci                              Update functions taking new tokens, etc.
7305bd8deadSopenharmony_ci                              Assume SL keywords will be reserved in ES 3.1.
7315bd8deadSopenharmony_ci      5   12/18/13  dkoch     minor editorial changes
7325bd8deadSopenharmony_ci      6   01/09/14  dkoch     align page numbers with ES 3.0.2, fix typos.
7335bd8deadSopenharmony_ci      7   02/12/14  dkoch     Resolved issue 4.
7345bd8deadSopenharmony_ci      8   03/10/14  Jon Leech Rebase on OpenGL ES 3.1 and change suffix
7355bd8deadSopenharmony_ci                              to EXT.
7365bd8deadSopenharmony_ci      9   03/26/14  dkoch     Update contributors, clarify no default precision.
7375bd8deadSopenharmony_ci      10  03/26/14  Jon Leech Sync with released ES 3.1 specs.
7385bd8deadSopenharmony_ci      11  03/28/14  dkoch     Add interactions with OES_shader_image_atomic.
7395bd8deadSopenharmony_ci
740