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