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