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