15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_texture_storage 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_texture_storage 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Bruce Merry (bmerry 'at' gmail.com) 125bd8deadSopenharmony_ci Ian Romanick, Intel (ian.d.romanick 'at' intel.com) 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciContributors 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Jeremy Sandmel, Apple 175bd8deadSopenharmony_ci Bruce Merry, ARM 185bd8deadSopenharmony_ci Tom Olson, ARM 195bd8deadSopenharmony_ci Benji Bowman, Imagination Technologies 205bd8deadSopenharmony_ci Ian Romanick, Intel 215bd8deadSopenharmony_ci Jeff Bolz, NVIDIA 225bd8deadSopenharmony_ci Pat Brown, NVIDIA 235bd8deadSopenharmony_ci Maurice Ribble, Qualcomm 245bd8deadSopenharmony_ci Lingjun Chen, Qualcomm 255bd8deadSopenharmony_ci Daniel Koch, Transgaming Inc 265bd8deadSopenharmony_ci Benj Lipchak, Apple 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ciStatus 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci Complete. 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ciVersion 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ci Last Modified Date: 22 September, 2021 355bd8deadSopenharmony_ci Author Revision: 29 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ciNumber 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci OpenGL ES Extension #108 405bd8deadSopenharmony_ci OpenGL Extension #556 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ciDependencies 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci OpenGL ES 1.0, OpenGL ES 2.0 or OpenGL 1.2 is required. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci OES_texture_npot, OES_texture_cube_map, OES_texture_3D, 475bd8deadSopenharmony_ci OES_depth_texture, OES_packed_depth_stencil, 485bd8deadSopenharmony_ci OES_compressed_paletted_texture, OES_texture_float, OES_texture_half_float 495bd8deadSopenharmony_ci EXT_texture_type_2_10_10_10_REV, EXT_texture_format_BGRA8888, 505bd8deadSopenharmony_ci EXT_texture3D, EXT_texture_rg, APPLE_texture_2D_limited_npot, 515bd8deadSopenharmony_ci APPLE_rgb_422, APPLE_texture_format_BGRA8888, 525bd8deadSopenharmony_ci ARB_texture_cube_map, ARB_texture_cube_map_array, 535bd8deadSopenharmony_ci ARB_texture_rectangle, SGIS_generate_mipmap, 545bd8deadSopenharmony_ci EXT_direct_state_access, OES_EGL_image, WGL_ARB_render_texture, 555bd8deadSopenharmony_ci GLX_EXT_texture_from_pixmap, and core specifications that 565bd8deadSopenharmony_ci incorporate these extensions affect the definition of this 575bd8deadSopenharmony_ci extension. 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci This extension is written against the OpenGL 3.2 Core Profile 605bd8deadSopenharmony_ci specification. 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ciOverview 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci The texture image specification commands in OpenGL allow each level 655bd8deadSopenharmony_ci to be separately specified with different sizes, formats, types and 665bd8deadSopenharmony_ci so on, and only imposes consistency checks at draw time. This adds 675bd8deadSopenharmony_ci overhead for implementations. 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci This extension provides a mechanism for specifying the entire 705bd8deadSopenharmony_ci structure of a texture in a single call, allowing certain 715bd8deadSopenharmony_ci consistency checks and memory allocations to be done up front. Once 725bd8deadSopenharmony_ci specified, the format and dimensions of the image array become 735bd8deadSopenharmony_ci immutable, to simplify completeness checks in the implementation. 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci When using this extension, it is no longer possible to supply texture 765bd8deadSopenharmony_ci data using TexImage*. Instead, data can be uploaded using TexSubImage*, 775bd8deadSopenharmony_ci or produced by other means (such as render-to-texture, mipmap generation, 785bd8deadSopenharmony_ci or rendering to a sibling EGLImage). 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci This extension has complicated interactions with other extensions. 815bd8deadSopenharmony_ci The goal of most of these interactions is to ensure that a texture 825bd8deadSopenharmony_ci is always mipmap complete (and cube complete for cubemap textures). 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ciIP Status 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci No known IP claims 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ciNew Procedures and Functions 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ci void TexStorage1DEXT(enum target, sizei levels, 915bd8deadSopenharmony_ci enum internalformat, 925bd8deadSopenharmony_ci sizei width); 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci void TexStorage2DEXT(enum target, sizei levels, 955bd8deadSopenharmony_ci enum internalformat, 965bd8deadSopenharmony_ci sizei width, sizei height); 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci void TexStorage3DEXT(enum target, sizei levels, 995bd8deadSopenharmony_ci enum internalformat, 1005bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci void TextureStorage1DEXT(uint texture, enum target, sizei levels, 1035bd8deadSopenharmony_ci enum internalformat, 1045bd8deadSopenharmony_ci sizei width); 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci void TextureStorage2DEXT(uint texture, enum target, sizei levels, 1075bd8deadSopenharmony_ci enum internalformat, 1085bd8deadSopenharmony_ci sizei width, sizei height); 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci void TextureStorage3DEXT(uint texture, enum target, sizei levels, 1115bd8deadSopenharmony_ci enum internalformat, 1125bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ciNew Types 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci None 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ciNew Tokens 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci Accepted by the <value> parameter of GetTexParameter{if}v: 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of TexStorage* when 1255bd8deadSopenharmony_ci implemented on OpenGL ES: 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci ALPHA8_EXT 0x803C /* reuse tokens from EXT_texture */ 1285bd8deadSopenharmony_ci LUMINANCE8_EXT 0x8040 1295bd8deadSopenharmony_ci LUMINANCE8_ALPHA8_EXT 0x8045 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci (if OES_texture_float is supported) 1325bd8deadSopenharmony_ci RGBA32F_EXT 0x8814 /* reuse tokens from ARB_texture_float */ 1335bd8deadSopenharmony_ci RGB32F_EXT 0x8815 1345bd8deadSopenharmony_ci ALPHA32F_EXT 0x8816 1355bd8deadSopenharmony_ci LUMINANCE32F_EXT 0x8818 1365bd8deadSopenharmony_ci LUMINANCE_ALPHA32F_EXT 0x8819 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci (if OES_texture_half_float is supported) 1395bd8deadSopenharmony_ci RGBA16F_EXT 0x881A /* reuse tokens from ARB_texture_float */ 1405bd8deadSopenharmony_ci RGB16F_EXT 0x881B 1415bd8deadSopenharmony_ci ALPHA16F_EXT 0x881C 1425bd8deadSopenharmony_ci LUMINANCE16F_EXT 0x881E 1435bd8deadSopenharmony_ci LUMINANCE_ALPHA16F_EXT 0x881F 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ci (if EXT_texture_type_2_10_10_10_REV is supported) 1465bd8deadSopenharmony_ci RGB10_A2_EXT 0x8059 /* reuse tokens from EXT_texture */ 1475bd8deadSopenharmony_ci RGB10_EXT 0x8052 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ci (if EXT_texture_format_BGRA8888 or APPLE_texture_format_BGRA8888 is supported) 1505bd8deadSopenharmony_ci BGRA8_EXT 0x93A1 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci (if EXT_texture_rg is supported) 1535bd8deadSopenharmony_ci R8_EXT 0x8229 /* reuse tokens from ARB_texture_rg */ 1545bd8deadSopenharmony_ci RG8_EXT 0x822B 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci (if EXT_texture_rg and OES_texture_float are supported) 1575bd8deadSopenharmony_ci R32F_EXT 0x822E /* reuse tokens from ARB_texture_rg */ 1585bd8deadSopenharmony_ci RG32F_EXT 0x8230 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci (if EXT_texture_rg and OES_texture_half_float are supported) 1615bd8deadSopenharmony_ci R16F_EXT 0x822D /* reuse tokens from ARB_texture_g */ 1625bd8deadSopenharmony_ci RG16F_EXT 0x822F 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci (APPLE_rgb_422 is supported) 1655bd8deadSopenharmony_ci RGB_RAW_422_APPLE 0x8A51 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci 1685bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 3.2 Core Profile Specification 1695bd8deadSopenharmony_ci(OpenGL Operation) 1705bd8deadSopenharmony_ci 1715bd8deadSopenharmony_ci None 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 3.2 Core Profile Specification 1745bd8deadSopenharmony_ci(Rasterization) 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci After section 3.8.1 (Texture Image Specification) add a new 1775bd8deadSopenharmony_ci subsection called "Immutable-format texture images": 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci "An alterative set of commands is provided for specifying the 1805bd8deadSopenharmony_ci properties of all levels of a texture at once. Once a texture is 1815bd8deadSopenharmony_ci specified with such a command, the format and dimensions of all 1825bd8deadSopenharmony_ci levels becomes immutable, unless it is a proxy texture (since 1835bd8deadSopenharmony_ci otherwise it would no longer be possible to use the proxy). The 1845bd8deadSopenharmony_ci contents of the images and the parameters can still be modified. 1855bd8deadSopenharmony_ci Such a texture is referred to as an "immutable-format" texture. The 1865bd8deadSopenharmony_ci immutability status of a texture can be determined by calling 1875bd8deadSopenharmony_ci GetTexParameter with <pname> TEXTURE_IMMUTABLE_FORMAT_EXT. 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci Each of the commands below is described by pseudo-code which 1905bd8deadSopenharmony_ci indicates the effect on the dimensions and format of the texture. 1915bd8deadSopenharmony_ci For all of the commands, the following apply in addition to the 1925bd8deadSopenharmony_ci pseudo-code: 1935bd8deadSopenharmony_ci 1945bd8deadSopenharmony_ci - If the default texture object is bound to <target>, an 1955bd8deadSopenharmony_ci INVALID_OPERATION error is generated. 1965bd8deadSopenharmony_ci - If executing the pseudo-code would lead to an error, the error is 1975bd8deadSopenharmony_ci generated and the command will have no effect. 1985bd8deadSopenharmony_ci - Any existing levels that are not replaced are reset to their 1995bd8deadSopenharmony_ci initial state. 2005bd8deadSopenharmony_ci - If <width>, <height>, <depth> or <levels> is less than 1, the 2015bd8deadSopenharmony_ci error INVALID_VALUE is generated. 2025bd8deadSopenharmony_ci - The pixel unpack buffer should be considered to be zero i.e., 2035bd8deadSopenharmony_ci the image contents are unspecified. 2045bd8deadSopenharmony_ci - Since no pixel data are provided, the <format> and <type> values 2055bd8deadSopenharmony_ci used in the pseudo-code are irrelevant; they can be considered to 2065bd8deadSopenharmony_ci be any values that are legal to use with <internalformat>. 2075bd8deadSopenharmony_ci - If the command is successful, TEXTURE_IMMUTABLE_FORMAT_EXT becomes 2085bd8deadSopenharmony_ci TRUE. 2095bd8deadSopenharmony_ci - If <internalformat> is a specific compressed texture format, then 2105bd8deadSopenharmony_ci references to TexImage* should be replaced by CompressedTexImage*, 2115bd8deadSopenharmony_ci with <format>, <type> and <data> replaced by any valid <imageSize> and 2125bd8deadSopenharmony_ci <data>. If there is no <imageSize> for which this command would have 2135bd8deadSopenharmony_ci been valid, an INVALID_OPERATION error is generated [fn: This 2145bd8deadSopenharmony_ci condition is not required for OpenGL, but is necessary for OpenGL 2155bd8deadSopenharmony_ci ES which does not support on-the-fly compression.] 2165bd8deadSopenharmony_ci - If <internalformat> is one of the internal formats listed in table 2175bd8deadSopenharmony_ci 3.11, an INVALID_ENUM error is generated. [fn: The corresponding table 2185bd8deadSopenharmony_ci in OpenGL ES 2.0 is table 3.8.] 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci The command 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ci void TexStorage1DEXT(enum target, sizei levels, 2235bd8deadSopenharmony_ci enum internalformat, 2245bd8deadSopenharmony_ci sizei width); 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ci specifies all the levels of a one-dimensional texture (or proxy) at 2275bd8deadSopenharmony_ci the same time. It is described by the pseudo-code below: 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 2305bd8deadSopenharmony_ci { 2315bd8deadSopenharmony_ci TexImage1D(target, i, internalformat, width, 0, 2325bd8deadSopenharmony_ci format, type, NULL); 2335bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 2345bd8deadSopenharmony_ci } 2355bd8deadSopenharmony_ci 2365bd8deadSopenharmony_ci If <target> is not TEXTURE_1D or PROXY_TEXTURE_1D then INVALID_ENUM 2375bd8deadSopenharmony_ci is generated. If <levels> is greater than floor(log_2(width)) + 1 2385bd8deadSopenharmony_ci then INVALID_OPERATION is generated. 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci The command 2415bd8deadSopenharmony_ci 2425bd8deadSopenharmony_ci void TexStorage2DEXT(enum target, sizei levels, 2435bd8deadSopenharmony_ci enum internalformat, 2445bd8deadSopenharmony_ci sizei width, sizei height); 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ci specifies all the levels of a two-dimensional, cube-map, 2475bd8deadSopenharmony_ci one-dimension array or rectangle texture (or proxy) at the same 2485bd8deadSopenharmony_ci time. The pseudo-code depends on the <target>: 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ci [PROXY_]TEXTURE_2D, [PROXY_]TEXTURE_RECTANGLE or 2515bd8deadSopenharmony_ci PROXY_TEXTURE_CUBE_MAP: 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 2545bd8deadSopenharmony_ci { 2555bd8deadSopenharmony_ci TexImage2D(target, i, internalformat, width, height, 0, 2565bd8deadSopenharmony_ci format, type, NULL); 2575bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 2585bd8deadSopenharmony_ci height = max(1, floor(height / 2)); 2595bd8deadSopenharmony_ci } 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ci TEXTURE_CUBE_MAP: 2625bd8deadSopenharmony_ci 2635bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 2645bd8deadSopenharmony_ci { 2655bd8deadSopenharmony_ci for face in (+X, -X, +Y, -Y, +Z, -Z) 2665bd8deadSopenharmony_ci { 2675bd8deadSopenharmony_ci TexImage2D(face, i, internalformat, width, height, 0, 2685bd8deadSopenharmony_ci format, type, NULL); 2695bd8deadSopenharmony_ci } 2705bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 2715bd8deadSopenharmony_ci height = max(1, floor(height / 2)); 2725bd8deadSopenharmony_ci } 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ci [PROXY_]TEXTURE_1D_ARRAY: 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 2775bd8deadSopenharmony_ci { 2785bd8deadSopenharmony_ci TexImage2D(target, i, internalformat, width, height, 0, 2795bd8deadSopenharmony_ci format, type, NULL); 2805bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 2815bd8deadSopenharmony_ci } 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ci If <target> is not one of those listed above, the error INVALID_ENUM 2845bd8deadSopenharmony_ci is generated. 2855bd8deadSopenharmony_ci 2865bd8deadSopenharmony_ci The error INVALID_OPERATION is generated if any of the following 2875bd8deadSopenharmony_ci conditions hold: 2885bd8deadSopenharmony_ci - <target> is [PROXY_]TEXTURE_1D_ARRAY and <levels> is greater than 2895bd8deadSopenharmony_ci floor(log_2(width)) + 1 2905bd8deadSopenharmony_ci - <target> is not [PROXY_]TEXTURE_1D_ARRAY and <levels> is greater 2915bd8deadSopenharmony_ci than floor(log_2(max(width, height))) + 1 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci The command 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci void TexStorage3DEXT(enum target, sizei levels, enum internalformat, 2965bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 2975bd8deadSopenharmony_ci 2985bd8deadSopenharmony_ci specifies all the levels of a three-dimensional, two-dimensional 2995bd8deadSopenharmony_ci array texture, or cube-map array texture (or proxy). The pseudo-code 3005bd8deadSopenharmony_ci depends on <target>: 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci [PROXY_]TEXTURE_3D: 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 3055bd8deadSopenharmony_ci { 3065bd8deadSopenharmony_ci TexImage3D(target, i, internalformat, width, height, depth, 0, 3075bd8deadSopenharmony_ci format, type, NULL); 3085bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 3095bd8deadSopenharmony_ci height = max(1, floor(height / 2)); 3105bd8deadSopenharmony_ci depth = max(1, floor(depth / 2)); 3115bd8deadSopenharmony_ci } 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ci [PROXY_]TEXTURE_2D_ARRAY, [PROXY_]TEXTURE_CUBE_MAP_ARRAY_ARB: 3145bd8deadSopenharmony_ci 3155bd8deadSopenharmony_ci for (i = 0; i < levels; i++) 3165bd8deadSopenharmony_ci { 3175bd8deadSopenharmony_ci TexImage3D(target, i, internalformat, width, height, depth, 0, 3185bd8deadSopenharmony_ci format, type, NULL); 3195bd8deadSopenharmony_ci width = max(1, floor(width / 2)); 3205bd8deadSopenharmony_ci height = max(1, floor(height / 2)); 3215bd8deadSopenharmony_ci } 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci If <target> is not one of those listed above, the error INVALID_ENUM 3245bd8deadSopenharmony_ci is generated. 3255bd8deadSopenharmony_ci 3265bd8deadSopenharmony_ci The error INVALID_OPERATION is generated if any of the following 3275bd8deadSopenharmony_ci conditions hold: 3285bd8deadSopenharmony_ci - <target> is [PROXY_]TEXTURE_3D and <levels> is greater than 3295bd8deadSopenharmony_ci floor(log_2(max(width, height, depth))) + 1 3305bd8deadSopenharmony_ci - <target> is [PROXY_]TEXTURE_2D_ARRAY or 3315bd8deadSopenharmony_ci [PROXY_]TEXTURE_CUBE_MAP_ARRAY_EXT and <levels> is greater than 3325bd8deadSopenharmony_ci floor(log_2(max(width, height))) + 1 3335bd8deadSopenharmony_ci 3345bd8deadSopenharmony_ci After a successful call to any TexStorage* command with a non-proxy 3355bd8deadSopenharmony_ci target, the value of TEXTURE_IMMUTABLE_FORMAT_EXT for this texture 3365bd8deadSopenharmony_ci object is set to TRUE, and no further changes to the dimensions or 3375bd8deadSopenharmony_ci format of the texture object may be made. Other commands may only 3385bd8deadSopenharmony_ci alter the texel values and texture parameters. Using any of the 3395bd8deadSopenharmony_ci following commands with the same texture will result in the error 3405bd8deadSopenharmony_ci INVALID_OPERATION being generated, even if it does not affect the 3415bd8deadSopenharmony_ci dimensions or format: 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci - TexImage* 3445bd8deadSopenharmony_ci - CompressedTexImage* 3455bd8deadSopenharmony_ci - CopyTexImage* 3465bd8deadSopenharmony_ci - TexStorage* 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci The TextureStorage* commands operate identically to the 3495bd8deadSopenharmony_ci corresponding command where "Texture" is substituted for "Tex" 3505bd8deadSopenharmony_ci except, rather than updating the current bound texture for the 3515bd8deadSopenharmony_ci texture unit indicated by the current active texture state and the 3525bd8deadSopenharmony_ci target parameter, these "Texture" commands update the texture object 3535bd8deadSopenharmony_ci named by the initial texture parameter. The error INVALID_VALUE 3545bd8deadSopenharmony_ci is generated if <texture> is zero. 3555bd8deadSopenharmony_ci " 3565bd8deadSopenharmony_ci 3575bd8deadSopenharmony_ci In section 3.8.6 (Texture Parameters), after the sentence 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ci "In the remainder of section 3.8, denote by lod_min, lod_max, 3605bd8deadSopenharmony_ci level_base, and level_max the values of the texture parameters 3615bd8deadSopenharmony_ci TEXTURE_MIN_LOD, TEXTURE_MAX_LOD, TEXTURE_BASE_LEVEL, and 3625bd8deadSopenharmony_ci TEXTURE_MAX_LEVEL respectively." 3635bd8deadSopenharmony_ci 3645bd8deadSopenharmony_ci add 3655bd8deadSopenharmony_ci 3665bd8deadSopenharmony_ci "However, if TEXTURE_IMMUTABLE_FORMAT_EXT is 3675bd8deadSopenharmony_ci TRUE, then level_base is clamped to the range [0, <levels> - 1] and 3685bd8deadSopenharmony_ci level_max is then clamped to the range [level_base, <levels> - 1], 3695bd8deadSopenharmony_ci where <levels> is the parameter passed the call to TexStorage* for 3705bd8deadSopenharmony_ci the texture object. 3715bd8deadSopenharmony_ci 3725bd8deadSopenharmony_ci In section 3.8.9 (Rendering feedback loops) replace all references 3735bd8deadSopenharmony_ci to TEXTURE_BASE_LEVEL by level_base. 3745bd8deadSopenharmony_ci 3755bd8deadSopenharmony_ci In section 3.8.9 (Mipmapping), replace the paragraph starting "Each 3765bd8deadSopenharmony_ci array in a mipmap is defined..." by 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci "Each array in a mipmap is defined using TexImage3D, TexImage2D, 3795bd8deadSopenharmony_ci CopyTexImage2D, TexImage1D, CopyTexImage1D, or by functions that are 3805bd8deadSopenharmony_ci defined in terms of these functions. Level-of-detail numbers proceed 3815bd8deadSopenharmony_ci from level_base for the original texel array through the maximum 3825bd8deadSopenharmony_ci level p, with each unit increase indicating an array of half the 3835bd8deadSopenharmony_ci dimensions of the previous one (rounded down to the next integer if 3845bd8deadSopenharmony_ci fractional) as already described. For immutable-format textures, 3855bd8deadSopenharmony_ci p is one less than the <levels> parameter passed to TexStorage*; 3865bd8deadSopenharmony_ci otherwise p = floor(log_2(maxsize)) + level_base. All arrays from 3875bd8deadSopenharmony_ci level_base through q = min(p, level_max) must be defined, as 3885bd8deadSopenharmony_ci discussed in section 3.8.12." 3895bd8deadSopenharmony_ci 3905bd8deadSopenharmony_ci In section 3.8.12 (Texture Completeness), modify the last sentence 3915bd8deadSopenharmony_ci to avoid refering to level_base and level_max: 3925bd8deadSopenharmony_ci 3935bd8deadSopenharmony_ci "An implementation may allow a texture image array of level 1 or 3945bd8deadSopenharmony_ci greater to be created only if a mipmap complete set of image arrays 3955bd8deadSopenharmony_ci consistent with the requested array can be supported where the 3965bd8deadSopenharmony_ci values of TEXTURE_BASE_LEVEL and TEXTURE_MAX_LEVEL are 0 and 1000 3975bd8deadSopenharmony_ci respectively." 3985bd8deadSopenharmony_ci 3995bd8deadSopenharmony_ci Modify section 3.8.13 (Texture State and Proxy State) to add the new 4005bd8deadSopenharmony_ci state: 4015bd8deadSopenharmony_ci 4025bd8deadSopenharmony_ci "Each set consists of ..., and a boolean flag indicating whether the 4035bd8deadSopenharmony_ci format and dimensions of the texture are immutable." 4045bd8deadSopenharmony_ci 4055bd8deadSopenharmony_ci Add 4065bd8deadSopenharmony_ci "The initial value of TEXTURE_IMMUTABLE_FORMAT_EXT is FALSE." 4075bd8deadSopenharmony_ci 4085bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 3.2 Core Profile Specification 4095bd8deadSopenharmony_ci(Per-Fragment Operations and the Frame Buffer) 4105bd8deadSopenharmony_ci 4115bd8deadSopenharmony_ci None 4125bd8deadSopenharmony_ci 4135bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 3.2 Compatibility Profile Specification 4145bd8deadSopenharmony_ci(Special Functions) 4155bd8deadSopenharmony_ci 4165bd8deadSopenharmony_ci In section 5.4.1 (Commands Not Usable in Display Lists), add 4175bd8deadSopenharmony_ci TexStorage* to the list of commands that cannot be used. 4185bd8deadSopenharmony_ci 4195bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 3.2 Core Profile Specification 4205bd8deadSopenharmony_ci(State and State Requests) 4215bd8deadSopenharmony_ci 4225bd8deadSopenharmony_ci Replace the following statement in 6.1.3 (Enumerated Queries): 4235bd8deadSopenharmony_ci 4245bd8deadSopenharmony_ci "<value> must be one of the symbolic values in table 3.10." 4255bd8deadSopenharmony_ci 4265bd8deadSopenharmony_ci with 4275bd8deadSopenharmony_ci 4285bd8deadSopenharmony_ci "<value> must be TEXTURE_IMMUTABLE_FORMAT_EXT or one of the symbolic 4295bd8deadSopenharmony_ci values in table 3.22." 4305bd8deadSopenharmony_ci 4315bd8deadSopenharmony_ciAdditions to the AGL/EGL/GLX/WGL Specifications 4325bd8deadSopenharmony_ci 4335bd8deadSopenharmony_ci None 4345bd8deadSopenharmony_ci 4355bd8deadSopenharmony_ciAdditions to OES_compressed_ETC1_RGB8_texture 4365bd8deadSopenharmony_ci 4375bd8deadSopenharmony_ci Add the following to the additions to Chapter 3: 4385bd8deadSopenharmony_ci 4395bd8deadSopenharmony_ci "Since ETC1 images are easily edited along 4x4 texel boundaries, the 4405bd8deadSopenharmony_ci limitations on CompressedTexSubImage2D are relaxed. 4415bd8deadSopenharmony_ci CompressedTexSubImage2D will result in an INVALID_OPERATION error 4425bd8deadSopenharmony_ci only if one of the following conditions occurs: 4435bd8deadSopenharmony_ci 4445bd8deadSopenharmony_ci * <width> is not a multiple of four, and <width> plus <xoffset> is not 4455bd8deadSopenharmony_ci equal to the texture width; 4465bd8deadSopenharmony_ci 4475bd8deadSopenharmony_ci * <height> is not a multiple of four, and <height> plus <yoffset> is 4485bd8deadSopenharmony_ci not equal to the texture height; or 4495bd8deadSopenharmony_ci 4505bd8deadSopenharmony_ci * <xoffset> or <yoffset> is not a multiple of four. 4515bd8deadSopenharmony_ci 4525bd8deadSopenharmony_ci Remove CompressedTexSubImage2D from this error: 4535bd8deadSopenharmony_ci 4545bd8deadSopenharmony_ci "INVALID_OPERATION is generated by CompressedTexSubImage2D, 4555bd8deadSopenharmony_ci TexSubImage2D, or CopyTexSubImage2D if the texture image <level> 4565bd8deadSopenharmony_ci bound to <target> has internal format ETC1_RGB8_OES." 4575bd8deadSopenharmony_ci 4585bd8deadSopenharmony_ci Add the following error: 4595bd8deadSopenharmony_ci 4605bd8deadSopenharmony_ci "INVALID_OPERATION is generated by CompressedTexSubImage2D 4615bd8deadSopenharmony_ci if the region to be modified is not aligned to block boundaries 4625bd8deadSopenharmony_ci (refer to the extension text for details)." 4635bd8deadSopenharmony_ci 4645bd8deadSopenharmony_ciAdditions to AMD_compressed_ATC_texture and AMD_compressed_3DC_texture: 4655bd8deadSopenharmony_ci 4665bd8deadSopenharmony_ci Apply the same changes as for OES_compressed_ETC1_RGB8_texture 4675bd8deadSopenharmony_ci above, substituting the appropriate internal format tokens from 4685bd8deadSopenharmony_ci these extensions. 4695bd8deadSopenharmony_ci 4705bd8deadSopenharmony_ciDependencies on EXT_direct_state_access 4715bd8deadSopenharmony_ci 4725bd8deadSopenharmony_ci If EXT_direct_state_access is not present, references to 4735bd8deadSopenharmony_ci TextureStorage* should be ignored. 4745bd8deadSopenharmony_ci 4755bd8deadSopenharmony_ciDependencies on OpenGL ES 4765bd8deadSopenharmony_ci 4775bd8deadSopenharmony_ci On OpenGL ES without extensions introducing TEXTURE_MAX_LEVEL, 4785bd8deadSopenharmony_ci mipmapped textures specified with TexStorage are required to have a 4795bd8deadSopenharmony_ci full set of mipmaps. If TEXTURE_MAX_LEVEL is not supported, this 4805bd8deadSopenharmony_ci extension is modified as follows: 4815bd8deadSopenharmony_ci 4825bd8deadSopenharmony_ci - Where an upper bound is placed on <levels> in this extension (i.e. 4835bd8deadSopenharmony_ci the maximum number of mipmap levels for a texture of the given 4845bd8deadSopenharmony_ci target and dimensions), an INVALID_OPERATION error is generated if 4855bd8deadSopenharmony_ci <levels> is neither 1 nor this upper bound. 4865bd8deadSopenharmony_ci - q (the effective maximum number of levels) is redefined to clamp 4875bd8deadSopenharmony_ci to the number of levels present in immutable-format textures. 4885bd8deadSopenharmony_ci 4895bd8deadSopenharmony_ci OpenGL ES does not accept sized internal formats (e.g., RGBA8) and 4905bd8deadSopenharmony_ci instead derives an internal format from the <format> and <type> 4915bd8deadSopenharmony_ci parameters of TexImage2D. Since TexStorage* does not specify texel 4925bd8deadSopenharmony_ci data, the API doesn't include <format> and <type> parameters. 4935bd8deadSopenharmony_ci On an OpenGL ES implementation, the values in the <internalformat> 4945bd8deadSopenharmony_ci column in the tables below are accepted as <internalformat> 4955bd8deadSopenharmony_ci parameters, and base internal formats are not accepted. The 4965bd8deadSopenharmony_ci TexImage* calls in the TexStorage* pseudocode are modified so that 4975bd8deadSopenharmony_ci the <internalformat>, <format> and <type> parameters are 4985bd8deadSopenharmony_ci taken from the <format>, <format> and <type> columns (respectively) 4995bd8deadSopenharmony_ci in the tables below, according to the <internalformat> 5005bd8deadSopenharmony_ci specified in the TexStorage* command. 5015bd8deadSopenharmony_ci 5025bd8deadSopenharmony_ci <internalformat> <format> <type> 5035bd8deadSopenharmony_ci ---------------- -------- ------ 5045bd8deadSopenharmony_ci RGB565 RGB UNSIGNED_SHORT_5_6_5 5055bd8deadSopenharmony_ci RGBA4 RGBA UNSIGNED_SHORT_4_4_4_4 5065bd8deadSopenharmony_ci RGB5_A1 RGBA UNSIGNED_SHORT_5_5_5_1 5075bd8deadSopenharmony_ci RGB8_OES RGB UNSIGNED_BYTE 5085bd8deadSopenharmony_ci RGBA8_OES RGBA UNSIGNED_BYTE 5095bd8deadSopenharmony_ci LUMINANCE8_ALPHA8_EXT LUMINANCE_ALPHA UNSIGNED_BYTE 5105bd8deadSopenharmony_ci LUMINANCE8_EXT LUMINANCE UNSIGNED_BYTE 5115bd8deadSopenharmony_ci ALPHA8_EXT ALPHA UNSIGNED_BYTE 5125bd8deadSopenharmony_ci 5135bd8deadSopenharmony_ci If OES_depth_texture is supported: 5145bd8deadSopenharmony_ci 5155bd8deadSopenharmony_ci <internalformat> <format> <type> 5165bd8deadSopenharmony_ci ---------------- -------- ------ 5175bd8deadSopenharmony_ci DEPTH_COMPONENT16_OES DEPTH_COMPONENT UNSIGNED_SHORT 5185bd8deadSopenharmony_ci DEPTH_COMPONENT32_OES DEPTH_COMPONENT UNSIGNED_INT 5195bd8deadSopenharmony_ci 5205bd8deadSopenharmony_ci If OES_packed_depth_stencil is supported: 5215bd8deadSopenharmony_ci 5225bd8deadSopenharmony_ci <internalformat> <format> <type> 5235bd8deadSopenharmony_ci ---------------- -------- ------ 5245bd8deadSopenharmony_ci DEPTH24_STENCIL8_OES DEPTH_STENCIL_OES UNSIGNED_INT 5255bd8deadSopenharmony_ci 5265bd8deadSopenharmony_ci If OES_texture_float is supported: 5275bd8deadSopenharmony_ci 5285bd8deadSopenharmony_ci <internalformat> <format> <type> 5295bd8deadSopenharmony_ci ---------------- -------- ------ 5305bd8deadSopenharmony_ci RGBA32F_EXT RGBA FLOAT 5315bd8deadSopenharmony_ci RGB32F_EXT RGB FLOAT 5325bd8deadSopenharmony_ci LUMINANCE_ALPHA32F_EXT LUMINANCE_ALPHA FLOAT 5335bd8deadSopenharmony_ci LUMINANCE32F_EXT LUMINANCE FLOAT 5345bd8deadSopenharmony_ci ALPHA32F_EXT ALPHA FLOAT 5355bd8deadSopenharmony_ci 5365bd8deadSopenharmony_ci If OES_texture_half_float is supported: 5375bd8deadSopenharmony_ci 5385bd8deadSopenharmony_ci <internalformat> <format> <type> 5395bd8deadSopenharmony_ci ---------------- -------- ------ 5405bd8deadSopenharmony_ci RGBA16F_EXT RGBA HALF_FLOAT_OES 5415bd8deadSopenharmony_ci RGB16F_EXT RGB HALF_FLOAT_OES 5425bd8deadSopenharmony_ci LUMINANCE_ALPHA16F_EXT LUMINANCE_ALPHA HALF_FLOAT_OES 5435bd8deadSopenharmony_ci LUMINANCE16F_EXT LUMINANCE HALF_FLOAT_OES 5445bd8deadSopenharmony_ci ALPHA16F_EXT ALPHA HALF_FLOAT_OES 5455bd8deadSopenharmony_ci 5465bd8deadSopenharmony_ci If EXT_texture_type_2_10_10_10_REV is supported: 5475bd8deadSopenharmony_ci 5485bd8deadSopenharmony_ci <internalformat> <format> <type> 5495bd8deadSopenharmony_ci ---------------- -------- ------ 5505bd8deadSopenharmony_ci RGB10_A2_EXT RGBA UNSIGNED_INT_2_10_10_10_REV_EXT 5515bd8deadSopenharmony_ci RGB10_EXT RGB UNSIGNED_INT_2_10_10_10_REV_EXT 5525bd8deadSopenharmony_ci 5535bd8deadSopenharmony_ci If EXT_texture_format_BGRA8888 or APPLE_texture_format_BGRA8888 is supported: 5545bd8deadSopenharmony_ci 5555bd8deadSopenharmony_ci <internalformat> <format> <type> 5565bd8deadSopenharmony_ci ---------------- -------- ------ 5575bd8deadSopenharmony_ci BGRA8_EXT BGRA_EXT UNSIGNED_BYTE 5585bd8deadSopenharmony_ci 5595bd8deadSopenharmony_ci If EXT_texture_rg is supported: 5605bd8deadSopenharmony_ci 5615bd8deadSopenharmony_ci <internalformat> <format> <type> 5625bd8deadSopenharmony_ci ---------------- -------- ------ 5635bd8deadSopenharmony_ci R8_EXT RED_EXT UNSIGNED_BYTE 5645bd8deadSopenharmony_ci RG8_EXT RG_EXT UNSIGNED_BYTE 5655bd8deadSopenharmony_ci 5665bd8deadSopenharmony_ci If EXT_texture_rg and OES_texture_float are supported: 5675bd8deadSopenharmony_ci 5685bd8deadSopenharmony_ci <internalformat> <format> <type> 5695bd8deadSopenharmony_ci ---------------- -------- ------ 5705bd8deadSopenharmony_ci R32F_EXT RED_EXT FLOAT 5715bd8deadSopenharmony_ci RG32F_EXT RG_EXT FLOAT 5725bd8deadSopenharmony_ci 5735bd8deadSopenharmony_ci If EXT_texture_rg and OES_texture_half_float are supported: 5745bd8deadSopenharmony_ci 5755bd8deadSopenharmony_ci <internalformat> <format> <type> 5765bd8deadSopenharmony_ci ---------------- -------- ------ 5775bd8deadSopenharmony_ci R16F_EXT RED_EXT HALF_FLOAT_OES 5785bd8deadSopenharmony_ci RG16F_EXT RG_EXT HALF_FLOAT_OES 5795bd8deadSopenharmony_ci 5805bd8deadSopenharmony_ci If APPLE_rgb_422 is supported: 5815bd8deadSopenharmony_ci 5825bd8deadSopenharmony_ci <internalformat> <format> <type> 5835bd8deadSopenharmony_ci ---------------- -------- ------ 5845bd8deadSopenharmony_ci RGB_RAW_422_APPLE RGB_422_APPLE UNSIGNED_SHORT_8_8_APPLE 5855bd8deadSopenharmony_ci 5865bd8deadSopenharmony_ci 5875bd8deadSopenharmony_ciDependencies on texture targets 5885bd8deadSopenharmony_ci 5895bd8deadSopenharmony_ci If a particular texture target is not supported by the 5905bd8deadSopenharmony_ci implementation, passing it as a <target> to TexStorage* will 5915bd8deadSopenharmony_ci generate an INVALID_ENUM error. If as a result, any of the commands 5925bd8deadSopenharmony_ci defined in this extension would no longer have any valid <target>, 5935bd8deadSopenharmony_ci all references to the command should be ignored. 5945bd8deadSopenharmony_ci 5955bd8deadSopenharmony_ci In particular, note that OpenGL ES 1.x/2.0 do not have proxy textures, 5965bd8deadSopenharmony_ci 1D textures, or 3D textures, and thus only the TexStorage2DEXT 5975bd8deadSopenharmony_ci entry point is required. If OES_texture_3D is supported, the 5985bd8deadSopenharmony_ci TexStorage3DEXT entry point is also required. 5995bd8deadSopenharmony_ci 6005bd8deadSopenharmony_ciDependencies on OES_texture_npot 6015bd8deadSopenharmony_ci 6025bd8deadSopenharmony_ci If OpenGL ES 2.0 or APPLE_texture_2D_limited_npot is present but 6035bd8deadSopenharmony_ci OES_texture_npot is not present, then INVALID_OPERATION is 6045bd8deadSopenharmony_ci generated by TexStorage* and TexStorage3DEXT if <levels> is 6055bd8deadSopenharmony_ci not one and <width>, <height> or <depth> is not a power of 6065bd8deadSopenharmony_ci two. 6075bd8deadSopenharmony_ci 6085bd8deadSopenharmony_ciDependencies on WGL_ARB_render_texture, GLX_EXT_texture_from_pixmap, EGL 6095bd8deadSopenharmony_ci1.4 and GL_OES_EGL_image 6105bd8deadSopenharmony_ci 6115bd8deadSopenharmony_ci The commands eglBindTexImage, wglBindTexImageARB, glXBindTexImageEXT or 6125bd8deadSopenharmony_ci EGLImageTargetTexture2DOES are not permitted on an immutable-format 6135bd8deadSopenharmony_ci texture. 6145bd8deadSopenharmony_ci They will generate the following errors: 6155bd8deadSopenharmony_ci - EGLImageTargetTexture2DOES: INVALID_OPERATION 6165bd8deadSopenharmony_ci - eglBindTexImage: EGL_BAD_MATCH 6175bd8deadSopenharmony_ci - wglBindTexImage: ERROR_INVALID_OPERATION 6185bd8deadSopenharmony_ci - glXBindTexImageEXT: BadMatch 6195bd8deadSopenharmony_ci 6205bd8deadSopenharmony_ciDependencies on OES_compressed_paletted_texture 6215bd8deadSopenharmony_ci 6225bd8deadSopenharmony_ci The compressed texture formats exposed by 6235bd8deadSopenharmony_ci OES_compressed_paletted_texture are not supported by TexStorage*. 6245bd8deadSopenharmony_ci Passing one of these tokens to TexStorage* will generate an 6255bd8deadSopenharmony_ci INVALID_ENUM error. 6265bd8deadSopenharmony_ci 6275bd8deadSopenharmony_ciDependencies on APPLE_rgb_422 6285bd8deadSopenharmony_ci 6295bd8deadSopenharmony_ci UNSIGNED_SHORT_8_8_APPLE is implied as the <type> when TexStorage2DEXT 6305bd8deadSopenharmony_ci is called with <internalformat> RGB_RAW_422_APPLE. Subsequently supplying 6315bd8deadSopenharmony_ci UNSIGNED_SHORT_8_8_REV_APPLE as the <type> to a TexSubImage2D updating 6325bd8deadSopenharmony_ci such an immutable texture will generate an INVALID_OPERATION error. 6335bd8deadSopenharmony_ci 6345bd8deadSopenharmony_ciErrors 6355bd8deadSopenharmony_ci 6365bd8deadSopenharmony_ci Note that dependencies above modify the errors. 6375bd8deadSopenharmony_ci 6385bd8deadSopenharmony_ci If TexStorage* is called with a <width>, <height>, <depth> or 6395bd8deadSopenharmony_ci <levels> parameter that is less than one, then the error 6405bd8deadSopenharmony_ci INVALID_VALUE is generated. 6415bd8deadSopenharmony_ci 6425bd8deadSopenharmony_ci If the <target> parameter to TexStorage1DEXT is not 6435bd8deadSopenharmony_ci [PROXY_]TEXTURE_1D, then the error INVALID_ENUM is generated. 6445bd8deadSopenharmony_ci 6455bd8deadSopenharmony_ci If the <target> parameter to TexStorage2DEXT is not 6465bd8deadSopenharmony_ci [PROXY_]TEXTURE_2D, [PROXY_]TEXTURE_CUBE_MAP, 6475bd8deadSopenharmony_ci [PROXY_]TEXTURE_RECTANGLE or [PROXY_]TEXTURE_1D_ARRAY, then the 6485bd8deadSopenharmony_ci error INVALID_ENUM is generated. 6495bd8deadSopenharmony_ci 6505bd8deadSopenharmony_ci If the <target> parameter to TexStorage3DEXT is not 6515bd8deadSopenharmony_ci [PROXY_]TEXTURE_3D, [PROXY_]TEXTURE_2D_ARRAY or 6525bd8deadSopenharmony_ci [PROXY_]TEXTURE_CUBE_MAP_ARRAY then the error INVALID_ENUM is 6535bd8deadSopenharmony_ci generated. 6545bd8deadSopenharmony_ci 6555bd8deadSopenharmony_ci If the <levels> parameter to TexStorage* is greater than the 6565bd8deadSopenharmony_ci <target>-specific value listed below then the error 6575bd8deadSopenharmony_ci INVALID_OPERATION is generated: 6585bd8deadSopenharmony_ci [PROXY_]TEXTURE_{1D,1D_ARRAY}: 6595bd8deadSopenharmony_ci floor(log_2(width)) + 1 6605bd8deadSopenharmony_ci [PROXY_]TEXTURE_{2D,2D_ARRAY,CUBE_MAP,CUBE_MAP_ARRAY}: 6615bd8deadSopenharmony_ci floor(log_2(max(width, height))) + 1 6625bd8deadSopenharmony_ci [PROXY_]TEXTURE_3D: 6635bd8deadSopenharmony_ci floor(log_2(max(width, height, depth))) + 1 6645bd8deadSopenharmony_ci [PROXY_]TEXTURE_RECTANGLE: 6655bd8deadSopenharmony_ci 1 6665bd8deadSopenharmony_ci 6675bd8deadSopenharmony_ci If the default texture object is bound to the <target> passed to 6685bd8deadSopenharmony_ci TexStorage*, then the error INVALID_OPERATION is generated. 6695bd8deadSopenharmony_ci 6705bd8deadSopenharmony_ci If the <target> parameter to TextureStorage* does not match the 6715bd8deadSopenharmony_ci dimensionality of <texture>, then the error INVALID_OPERATION is 6725bd8deadSopenharmony_ci generated. 6735bd8deadSopenharmony_ci 6745bd8deadSopenharmony_ci If the <texture> parameter to TextureStorage* is zero, then the 6755bd8deadSopenharmony_ci INVALID_VALUE is generated. 6765bd8deadSopenharmony_ci 6775bd8deadSopenharmony_ci If any pseudo-code listed in this extension would generate an error, 6785bd8deadSopenharmony_ci then that error is generated. 6795bd8deadSopenharmony_ci 6805bd8deadSopenharmony_ci Calling any of the following functions on a texture for which 6815bd8deadSopenharmony_ci TEXTURE_IMMUTABLE_FORMAT_EXT is TRUE will generate an 6825bd8deadSopenharmony_ci INVALID_OPERATION error: 6835bd8deadSopenharmony_ci - TexImage* 6845bd8deadSopenharmony_ci - CompressedTexImage* 6855bd8deadSopenharmony_ci - CopyTexImage* 6865bd8deadSopenharmony_ci 6875bd8deadSopenharmony_ciNew State 6885bd8deadSopenharmony_ci 6895bd8deadSopenharmony_ci Additions to Table 6.8 Textures (state per texture object) 6905bd8deadSopenharmony_ci 6915bd8deadSopenharmony_ci Initial 6925bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 6935bd8deadSopenharmony_ci --------- ---- ----------- ------- ----------- ---- 6945bd8deadSopenharmony_ci TEXTURE_IMMUTABLE_FORMAT_EXT B GetTexParameter FALSE Size and format immutable 2.6 6955bd8deadSopenharmony_ci 6965bd8deadSopenharmony_ciNew Implementation Dependent State 6975bd8deadSopenharmony_ci 6985bd8deadSopenharmony_ci None 6995bd8deadSopenharmony_ci 7005bd8deadSopenharmony_ciIssues 7015bd8deadSopenharmony_ci 7025bd8deadSopenharmony_ci 1. What should this extension be called? 7035bd8deadSopenharmony_ci 7045bd8deadSopenharmony_ci RESOLVED: EXT_texture_storage is chosen for consistency with the 7055bd8deadSopenharmony_ci glRenderbufferStorage entry point. 7065bd8deadSopenharmony_ci 7075bd8deadSopenharmony_ci 2. Should TexStorage* accept a border parameter? 7085bd8deadSopenharmony_ci 7095bd8deadSopenharmony_ci RESOLVED: no. 7105bd8deadSopenharmony_ci 7115bd8deadSopenharmony_ci DISCUSSION: Currently it does not, since borders are a deprecated 7125bd8deadSopenharmony_ci feature which is not supported by all hardware. Users of the 7135bd8deadSopenharmony_ci compatibility profile can continue to use the existing texture 7145bd8deadSopenharmony_ci specification functions, but there is an argument that users of 7155bd8deadSopenharmony_ci compatibility profile may also want to use this extension. 7165bd8deadSopenharmony_ci 7175bd8deadSopenharmony_ci 3. What is the correct error when <levels> specifies a partial 7185bd8deadSopenharmony_ci mipmap pyramid for OpenGL ES? 7195bd8deadSopenharmony_ci 7205bd8deadSopenharmony_ci RESOLVED: INVALID_OPERATION, since it is an interaction between 7215bd8deadSopenharmony_ci parameters rather than a single value being invalid. It also makes 7225bd8deadSopenharmony_ci sense to relax this condition for desktop GL where it makes sense to 7235bd8deadSopenharmony_ci use a truncated pyramid with TEXTURE_MAX_LEVEL. 7245bd8deadSopenharmony_ci 7255bd8deadSopenharmony_ci 4. Should use of these entry-points make the metadata (format and 7265bd8deadSopenharmony_ci dimensions) immutable? 7275bd8deadSopenharmony_ci 7285bd8deadSopenharmony_ci RESOLVED: Yes. 7295bd8deadSopenharmony_ci 7305bd8deadSopenharmony_ci DISCUSSION: The benefits of knowing metadata can't change will 7315bd8deadSopenharmony_ci probably outweigh the extra cost of checking the 7325bd8deadSopenharmony_ci TEXTURE_IMMUTABLE_FORMAT_EXT flag on each texture specification 7335bd8deadSopenharmony_ci call. 7345bd8deadSopenharmony_ci 7355bd8deadSopenharmony_ci 5. Should it be legal to completely replace the texture using a new call 7365bd8deadSopenharmony_ci to TexStorage*? 7375bd8deadSopenharmony_ci 7385bd8deadSopenharmony_ci RESOLVED. It will not be allowed. 7395bd8deadSopenharmony_ci 7405bd8deadSopenharmony_ci DISCUSSION: This is useful to invalidate all levels of a texture. 7415bd8deadSopenharmony_ci Allowing the metadata to be changed here seems easier than trying to 7425bd8deadSopenharmony_ci define a portable definition of what it means to change the metadata 7435bd8deadSopenharmony_ci (e.g. what if you used an unsized internal format the first time and 7445bd8deadSopenharmony_ci the corresponding sized internal format the second time, or vice 7455bd8deadSopenharmony_ci versa)? 7465bd8deadSopenharmony_ci 7475bd8deadSopenharmony_ci However, while this is largely similar to deleting the old texture 7485bd8deadSopenharmony_ci object and replacing it with a new one, it does lose some of the 7495bd8deadSopenharmony_ci advantages of immutability. Specifically, because doing so does not 7505bd8deadSopenharmony_ci reset bindings, it doesn't allow a migration path to an API that 7515bd8deadSopenharmony_ci validates the texture format at bind time. 7525bd8deadSopenharmony_ci 7535bd8deadSopenharmony_ci 6. Should it be legal to use TexImage* after TexStorage* if it doesn't 7545bd8deadSopenharmony_ci affect the metadata? 7555bd8deadSopenharmony_ci 7565bd8deadSopenharmony_ci RESOLVED: No. 7575bd8deadSopenharmony_ci 7585bd8deadSopenharmony_ci DISCUSSION: A potential use case is to allow a single level of a 7595bd8deadSopenharmony_ci texture to be invalidated using a NULL pointer. However, as noted 7605bd8deadSopenharmony_ci above it is non-trivial to determine what constitutes a change. 7615bd8deadSopenharmony_ci 7625bd8deadSopenharmony_ci 7. How does this extension interact with APPLE_texture_2D_limited_npot? 7635bd8deadSopenharmony_ci 7645bd8deadSopenharmony_ci RESOLVED. APPLE_texture_2D_limited_npot is equivalent to the NPOT 7655bd8deadSopenharmony_ci support in OpenGL ES 2.0. 7665bd8deadSopenharmony_ci 7675bd8deadSopenharmony_ci 8. Should this extension be written to work with desktop OpenGL? 7685bd8deadSopenharmony_ci 7695bd8deadSopenharmony_ci RESOLVED: Yes. 7705bd8deadSopenharmony_ci 7715bd8deadSopenharmony_ci DISCUSSION: There has been been interest and it will future-proof it 7725bd8deadSopenharmony_ci against further additions to OpenGL ES. 7735bd8deadSopenharmony_ci 7745bd8deadSopenharmony_ci 9. Which texture targets should be supported? 7755bd8deadSopenharmony_ci 7765bd8deadSopenharmony_ci RESOLVED. All targets except multisample and buffer textures are 7775bd8deadSopenharmony_ci supported. 7785bd8deadSopenharmony_ci 7795bd8deadSopenharmony_ci Initially all targets except TEXTURE_BUFFER were supported. It was 7805bd8deadSopenharmony_ci noted that the entrypoints for multisample targets added no useful 7815bd8deadSopenharmony_ci functionality, since multisample textures have no completeness 7825bd8deadSopenharmony_ci checks beyond being non-empty. 7835bd8deadSopenharmony_ci 7845bd8deadSopenharmony_ci Rectangle textures have completeness checks to prevent filtering of 7855bd8deadSopenharmony_ci integer textures. However, since we decided to only force mipmap 7865bd8deadSopenharmony_ci completeness, this becomes less useful. 7875bd8deadSopenharmony_ci 7885bd8deadSopenharmony_ci 10. Should this extension support proxy textures? 7895bd8deadSopenharmony_ci 7905bd8deadSopenharmony_ci RESOLVED: Yes. 7915bd8deadSopenharmony_ci 7925bd8deadSopenharmony_ci DISCUSSION: It should be orthogonal. 7935bd8deadSopenharmony_ci 7945bd8deadSopenharmony_ci 11. Are the <format> and <type> parameters necessary? 7955bd8deadSopenharmony_ci 7965bd8deadSopenharmony_ci RESOLVED. No, they will be removed. 7975bd8deadSopenharmony_ci 7985bd8deadSopenharmony_ci DISCUSSION: For OpenGL ES the type parameter was necessary to 7995bd8deadSopenharmony_ci determine the precision of the texture, but this can be solved by 8005bd8deadSopenharmony_ci having these functions accept sized internal formats (which are 8015bd8deadSopenharmony_ci already accepted by renderbuffers). 8025bd8deadSopenharmony_ci 8035bd8deadSopenharmony_ci 12. Should it be legal to make the default texture (id 0) 8045bd8deadSopenharmony_ci immutable-format? 8055bd8deadSopenharmony_ci 8065bd8deadSopenharmony_ci RESOLVED: No. 8075bd8deadSopenharmony_ci 8085bd8deadSopenharmony_ci DISCUSSION: This would make it impossible to restore the context to 8095bd8deadSopenharmony_ci it's default state, which is deemed undesirable. There is no good 8105bd8deadSopenharmony_ci reason not to use named texture objects. 8115bd8deadSopenharmony_ci 8125bd8deadSopenharmony_ci 13. Should we try to guarantee that textures made through this path 8135bd8deadSopenharmony_ci will always be complete? 8145bd8deadSopenharmony_ci 8155bd8deadSopenharmony_ci RESOLVED: It should be guaranteed that the texture will be mipmap 8165bd8deadSopenharmony_ci complete. 8175bd8deadSopenharmony_ci 8185bd8deadSopenharmony_ci DISCUSSION: Future separation between images and samplers will still 8195bd8deadSopenharmony_ci allow users to create combinations that are invalid, but 8205bd8deadSopenharmony_ci constraining the simple cases will make these APIs easier to use for 8215bd8deadSopenharmony_ci beginners. 8225bd8deadSopenharmony_ci 8235bd8deadSopenharmony_ci 14. Should these functions use a EXT_direct_state_access approach to 8245bd8deadSopenharmony_ci specifying the texture objects? 8255bd8deadSopenharmony_ci 8265bd8deadSopenharmony_ci UNRESOLVED. 8275bd8deadSopenharmony_ci 8285bd8deadSopenharmony_ci DISCUSSION: as a standalone extension, no DSA-like functions will be 8295bd8deadSopenharmony_ci added. However, interactions with EXT_direct_state_access and 8305bd8deadSopenharmony_ci ARB_direct_state_access need to be resolved. 8315bd8deadSopenharmony_ci 8325bd8deadSopenharmony_ci 15. Should these functions accept generic compressed formats? 8335bd8deadSopenharmony_ci 8345bd8deadSopenharmony_ci RESOLVED: Yes. Note that the spec language will need to be modified 8355bd8deadSopenharmony_ci to allow this for ES, since the pseudocode is written in terms of 8365bd8deadSopenharmony_ci TexImage2D, which does not allow compressed texture formats in ES. 8375bd8deadSopenharmony_ci See also issues 23 and 27. 8385bd8deadSopenharmony_ci 8395bd8deadSopenharmony_ci 16. How should completeness be forced when TEXTURE_MAX_LEVEL is not 8405bd8deadSopenharmony_ci present? 8415bd8deadSopenharmony_ci 8425bd8deadSopenharmony_ci RESOLVED. The maximum level q will be redefined to clamp to the 8435bd8deadSopenharmony_ci highest level available. 8445bd8deadSopenharmony_ci 8455bd8deadSopenharmony_ci DISCUSSION: A single-level texture can be made complete either by 8465bd8deadSopenharmony_ci making it mipmap complete (by setting TEXTURE_MAX_LEVEL to 0) or by 8475bd8deadSopenharmony_ci turning off mipmapping (by choose an appropriate minification 8485bd8deadSopenharmony_ci filter). 8495bd8deadSopenharmony_ci 8505bd8deadSopenharmony_ci Some options: 8515bd8deadSopenharmony_ci 8525bd8deadSopenharmony_ci A: Specify that TexStorage* changes the default minification filter 8535bd8deadSopenharmony_ci for OpenGL ES. This makes it awkward to add TEXTURE_MAX_LEVEL 8545bd8deadSopenharmony_ci support to OpenGL ES later, since switching to match GL would break 8555bd8deadSopenharmony_ci compatibility. The two mechanisms also do not give identical 8565bd8deadSopenharmony_ci results, since the magnification threshold depends on the 8575bd8deadSopenharmony_ci minification filter. 8585bd8deadSopenharmony_ci 8595bd8deadSopenharmony_ci B: Specify that the texture behaves as though TEXTURE_MAX_LEVEL were 8605bd8deadSopenharmony_ci zero. To specify this properly probably requires fairly intrusive 8615bd8deadSopenharmony_ci changes to the OpenGL ES full specification to add back all the 8625bd8deadSopenharmony_ci language relating to the max level. It also does not solve the 8635bd8deadSopenharmony_ci similar problem of what to do with NPOT textures; and it may have 8645bd8deadSopenharmony_ci hardware impacts due to the change in the min/mag crossover. 8655bd8deadSopenharmony_ci 8665bd8deadSopenharmony_ci C: Specify that TexStorage* changes the default minification filter 8675bd8deadSopenharmony_ci for all implementations when a single-level texture is specified. 8685bd8deadSopenharmony_ci This may be slightly counter-intuitive to desktop GL users, but will 8695bd8deadSopenharmony_ci give consistent behaviour across variants of GL and avoids changing 8705bd8deadSopenharmony_ci the functional behaviour of this extension based on the presence or 8715bd8deadSopenharmony_ci absence of some other feature. 8725bd8deadSopenharmony_ci 8735bd8deadSopenharmony_ci Currently B is specified. This has potential hardware implications 8745bd8deadSopenharmony_ci for OpenGL ES because of the effect of the minification filter on 8755bd8deadSopenharmony_ci the min/mag crossover. However, C has potential hardware implications 8765bd8deadSopenharmony_ci for OpenGL due to the separation of texture and sampler state. 8775bd8deadSopenharmony_ci 8785bd8deadSopenharmony_ci 17. How should completeness be forced when only ES2-style NPOT is 8795bd8deadSopenharmony_ci available? 8805bd8deadSopenharmony_ci 8815bd8deadSopenharmony_ci RESOLVED. It is not worth trying to do this, in light of issue 13. 8825bd8deadSopenharmony_ci 8835bd8deadSopenharmony_ci Previous revisions of this extension overrode the minification 8845bd8deadSopenharmony_ci filter and wrap modes, but that is no longer the case. Since 8855bd8deadSopenharmony_ci OES_texture_npot removes the caveats on NPOT textures anyway, it 8865bd8deadSopenharmony_ci might not be worth trying to "fix" this. 8875bd8deadSopenharmony_ci 8885bd8deadSopenharmony_ci 18. For OpenGL ES, how do the new sized internal formats interact 8895bd8deadSopenharmony_ci with OES_required_internal_format? 8905bd8deadSopenharmony_ci 8915bd8deadSopenharmony_ci RESOLVED. 8925bd8deadSopenharmony_ci 8935bd8deadSopenharmony_ci If OES_required_internal_format is not present, then the 8945bd8deadSopenharmony_ci <internalformat> parameter is intended merely to indicate what the 8955bd8deadSopenharmony_ci corresponding <format> and <type> would have been, had TexImage* 8965bd8deadSopenharmony_ci been used instead. If OES_required_internal_format is present, then 8975bd8deadSopenharmony_ci it is intended that the <internalformat> will be interpreted as if 8985bd8deadSopenharmony_ci it had been passed directly to TexImage*. 8995bd8deadSopenharmony_ci 9005bd8deadSopenharmony_ci 19. Should there be some hinting mechanism to indicate whether data 9015bd8deadSopenharmony_ci is coming immediately or later? 9025bd8deadSopenharmony_ci 9035bd8deadSopenharmony_ci RESOLVED. No parameter is needed. An extension can be added to provide 9045bd8deadSopenharmony_ci a TexParameter value which is latched at TexStorage time. 9055bd8deadSopenharmony_ci 9065bd8deadSopenharmony_ci DISCUSSION: Some members felt that this would be useful so that they 9075bd8deadSopenharmony_ci could defer allocation when suitable, particularly if higher- 9085bd8deadSopenharmony_ci resolution images will be streamed in later; or to choose a memory 9095bd8deadSopenharmony_ci type or layout appropriate to the usage. However, implementation 9105bd8deadSopenharmony_ci experience with BufferData is that developers frequently provide 9115bd8deadSopenharmony_ci wrong values and implementations have to guess anyway. 9125bd8deadSopenharmony_ci 9135bd8deadSopenharmony_ci One option suggested was the <usage> parameter currently passed to 9145bd8deadSopenharmony_ci BufferData. Another option was to set it with TexParameter. 9155bd8deadSopenharmony_ci 9165bd8deadSopenharmony_ci 20. How should this extension interact with 9175bd8deadSopenharmony_ci EGLImageTargetTexture2DOES, eglBindTexImage, glXBindTexImage and 9185bd8deadSopenharmony_ci wglBindTexImage? 9195bd8deadSopenharmony_ci 9205bd8deadSopenharmony_ci RESOLVED. These functions will not be permitted after glTexStorage*. 9215bd8deadSopenharmony_ci 9225bd8deadSopenharmony_ci Several options are possible: 9235bd8deadSopenharmony_ci 9245bd8deadSopenharmony_ci A) Disallow these functions. 9255bd8deadSopenharmony_ci B) Allow them, but have them reset the TEXTURE_IMMUTABLE_FORMAT_EXT 9265bd8deadSopenharmony_ci flag. 9275bd8deadSopenharmony_ci C) Allow them unconditionally. 9285bd8deadSopenharmony_ci 9295bd8deadSopenharmony_ci C would violate the design principle that the dimensions and format 9305bd8deadSopenharmony_ci of the mipmap array are immutable. B does not so much modify the 9315bd8deadSopenharmony_ci dimension and formats as replace them with an entirely different 9325bd8deadSopenharmony_ci set. 9335bd8deadSopenharmony_ci 9345bd8deadSopenharmony_ci 21. Should there be a single function for specifying 1D, 2D and 3D 9355bd8deadSopenharmony_ci targets? 9365bd8deadSopenharmony_ci 9375bd8deadSopenharmony_ci RESOLVED. No, we will stick with existing precedent. 9385bd8deadSopenharmony_ci 9395bd8deadSopenharmony_ci 22. Is it possible to use GenerateMipmap with an incomplete mipmap 9405bd8deadSopenharmony_ci pyramid? 9415bd8deadSopenharmony_ci 9425bd8deadSopenharmony_ci RESOLVED. Yes, because the effective max level is limited to the 9435bd8deadSopenharmony_ci levels that were specified, and so GenerateMipmap does not generate 9445bd8deadSopenharmony_ci any new levels. 9455bd8deadSopenharmony_ci 9465bd8deadSopenharmony_ci However, to make automatic mipmap generation work, it is necessary 9475bd8deadSopenharmony_ci to redefine p rather than q, since automatic mipmap generation 9485bd8deadSopenharmony_ci ignores the max level. 9495bd8deadSopenharmony_ci 9505bd8deadSopenharmony_ci 23. How should this extension interact with 9515bd8deadSopenharmony_ci OES_compressed_paletted_texture? 9525bd8deadSopenharmony_ci 9535bd8deadSopenharmony_ci RESOLVED. Paletted textures will not be permitted, and will 9545bd8deadSopenharmony_ci generate INVALID_ENUM. 9555bd8deadSopenharmony_ci 9565bd8deadSopenharmony_ci DISCUSSION: OES_compressed_paletted_texture supplies all the mipmaps 9575bd8deadSopenharmony_ci in a single function call, with the palette specified once. That's 9585bd8deadSopenharmony_ci incompatible with the upload model in this extension. 9595bd8deadSopenharmony_ci 9605bd8deadSopenharmony_ci 24. How can ETC1 textures be used with this extension? 9615bd8deadSopenharmony_ci 9625bd8deadSopenharmony_ci RESOLVED. Add language in this extension to allow subregion uploads 9635bd8deadSopenharmony_ci for ETC1. 9645bd8deadSopenharmony_ci 9655bd8deadSopenharmony_ci DISCUSSION: GL_OES_compressed_ETC1_RGB8_texture doesn't allow 9665bd8deadSopenharmony_ci CompressedTexSubImage*, so it would be impossible to use this 9675bd8deadSopenharmony_ci extension with ETC1. This is seen as an oversight in the ETC1 9685bd8deadSopenharmony_ci extension. While it cannot be fixed in that extension (since it is 9695bd8deadSopenharmony_ci already shipping), this extension can add that capability. 9705bd8deadSopenharmony_ci 9715bd8deadSopenharmony_ci 25. Should any other compressed formats be similarly modified? 9725bd8deadSopenharmony_ci 9735bd8deadSopenharmony_ci RESOLVED. Yes, AMD_compressed_ATC_texture and 9745bd8deadSopenharmony_ci AMD_compressed_3DC_texture can be modified similarly to ETC1 9755bd8deadSopenharmony_ci (Maurice Ribble indicated that both formats use 4x4 blocks). Desktop 9765bd8deadSopenharmony_ci OpenGL requires that whole-image replacement is supported for any 9775bd8deadSopenharmony_ci compressed texture format, and the OpenGL ES extensions 9785bd8deadSopenharmony_ci EXT_texture_compression_dxt1 and IMG_texture_compression_pvrtc 9795bd8deadSopenharmony_ci already allow whole-image replacement, so it is not necessary to 9805bd8deadSopenharmony_ci modify them to be used with this extension. 9815bd8deadSopenharmony_ci 9825bd8deadSopenharmony_ci 26. Should these commands be permitted in display lists? 9835bd8deadSopenharmony_ci 9845bd8deadSopenharmony_ci RESOLVED. No. 9855bd8deadSopenharmony_ci 9865bd8deadSopenharmony_ci DISCUSSION: Display lists are most useful for repeating commands, 9875bd8deadSopenharmony_ci and TexStorage* commands cannot be repeated because the first call 9885bd8deadSopenharmony_ci makes the format immutable. 9895bd8deadSopenharmony_ci 9905bd8deadSopenharmony_ci 27. Should these commands accept unsized internal formats? 9915bd8deadSopenharmony_ci 9925bd8deadSopenharmony_ci RESOLVED: No, for both OpenGL and OpenGL ES. 9935bd8deadSopenharmony_ci 9945bd8deadSopenharmony_ci DISCUSSION: normally the <type> parameter to TexImage* can serve as 9955bd8deadSopenharmony_ci a hint to select a sized format (and in OpenGL ES, this is the only 9965bd8deadSopenharmony_ci mechanism available); since TexStorage* does not have a <type> 9975bd8deadSopenharmony_ci parameter, the implementation has no information on which to base a 9985bd8deadSopenharmony_ci decision. 9995bd8deadSopenharmony_ci 10005bd8deadSopenharmony_ciRevision History 10015bd8deadSopenharmony_ci 10025bd8deadSopenharmony_ci Revision 29, 2021/09/22 (Adam Jackson) 10035bd8deadSopenharmony_ci - Assign OpenGL extension number 10045bd8deadSopenharmony_ci 10055bd8deadSopenharmony_ci Revision 28, 2013/09/18 (Benj Lipchak) 10065bd8deadSopenharmony_ci - Add interaction with APPLE_texture_format_BGRA8888. 10075bd8deadSopenharmony_ci - Fix interaction with APPLE_rgb_422. 10085bd8deadSopenharmony_ci 10095bd8deadSopenharmony_ci Revision 27, 2012/07/24 (Benj Lipchak) 10105bd8deadSopenharmony_ci - Add interaction with APPLE_rgb_422. 10115bd8deadSopenharmony_ci 10125bd8deadSopenharmony_ci Revision 26, 2012/02/29 (Benj Lipchak) 10135bd8deadSopenharmony_ci - Add interaction with EXT_texture_rg. 10145bd8deadSopenharmony_ci 10155bd8deadSopenharmony_ci Revision 25, 2012/01/19 (bmerry) 10165bd8deadSopenharmony_ci - Clarify that the pixel unpack buffer has no effect. 10175bd8deadSopenharmony_ci 10185bd8deadSopenharmony_ci Revision 24, 2011/11/11 (dgkoch) 10195bd8deadSopenharmony_ci - Mark complete. Clarify ES clarifications. 10205bd8deadSopenharmony_ci 10215bd8deadSopenharmony_ci Revision 23, 2011/11/10 (dgkoch) 10225bd8deadSopenharmony_ci - Add GLES clarifcations and interactions with more GLES extensions 10235bd8deadSopenharmony_ci 10245bd8deadSopenharmony_ci Revision 22, 2011/11/10 (bmerry) 10255bd8deadSopenharmony_ci - Update my contact details 10265bd8deadSopenharmony_ci 10275bd8deadSopenharmony_ci Revision 21, 2011/07/25 (bmerry) 10285bd8deadSopenharmony_ci - Remove dangling references to MultiTexStorage in Errors section 10295bd8deadSopenharmony_ci 10305bd8deadSopenharmony_ci Revision 20, 2011/07/21 (bmerry) 10315bd8deadSopenharmony_ci - Remove dangling reference to <samples> in Errors section 10325bd8deadSopenharmony_ci 10335bd8deadSopenharmony_ci Revision 19, 2011/05/02 (Jon Leech) 10345bd8deadSopenharmony_ci - Assign enum value 10355bd8deadSopenharmony_ci 10365bd8deadSopenharmony_ci Revision 18, 2011/01/24 (bmerry) 10375bd8deadSopenharmony_ci - Disallow unsized internal formats (oversight in revision 17). 10385bd8deadSopenharmony_ci 10395bd8deadSopenharmony_ci Revision 17, 2011/01/24 (bmerry) 10405bd8deadSopenharmony_ci - Added and resolved issue 26. 10415bd8deadSopenharmony_ci - Split issue 27 out from issue 15. 10425bd8deadSopenharmony_ci - Disallow TexStorage* in display lists. 10435bd8deadSopenharmony_ci - Use the term "immutable-format" consistently (bug 7281). 10445bd8deadSopenharmony_ci 10455bd8deadSopenharmony_ci Revision 16, 2010/11/23 (bmerry) 10465bd8deadSopenharmony_ci - Disallowed TexStorage on an immutable-format texture 10475bd8deadSopenharmony_ci (resolves issue 5). 10485bd8deadSopenharmony_ci - Deleted MultiTexStorage* commands (other DSA functions still 10495bd8deadSopenharmony_ci unresolved). 10505bd8deadSopenharmony_ci - Some minor wording changes suggested by Pat Brown (bug 7002). 10515bd8deadSopenharmony_ci 10525bd8deadSopenharmony_ci Revision 15, 2010/11/09 (bmerry) 10535bd8deadSopenharmony_ci - Reopened issue 5. 10545bd8deadSopenharmony_ci - Reopened issue 14, pending stabilisation of 10555bd8deadSopenharmony_ci ARB_direct_state_access. 10565bd8deadSopenharmony_ci - Marked issue 9 resolved, pending any objections. 10575bd8deadSopenharmony_ci - Fix references to no object being bound (was meant to refer to 10585bd8deadSopenharmony_ci the default object). 10595bd8deadSopenharmony_ci - Adding missing pseudocode for TEXTURE_1D_ARRAY. 10605bd8deadSopenharmony_ci - Corrected TEXTURE_2D_ARRAY -> TEXTURE_1D_ARRAY in error checks. 10615bd8deadSopenharmony_ci - Changed "levels... are removed" to "levels... are reset to their 10625bd8deadSopenharmony_ci init state", since desktop GL has per-level state apart from the 10635bd8deadSopenharmony_ci texels. 10645bd8deadSopenharmony_ci - Miscellaneous wording fixes. 10655bd8deadSopenharmony_ci 10665bd8deadSopenharmony_ci Revision 14, 2010/09/25 (bmerry) 10675bd8deadSopenharmony_ci - Add issues 24-25 and alterations to 10685bd8deadSopenharmony_ci OES_compressed_ETC1_RGB8_texture, AMD_compressed_ATC_texture and 10695bd8deadSopenharmony_ci AMD_compressed_3DC_texture. 10705bd8deadSopenharmony_ci 10715bd8deadSopenharmony_ci Revision 13, 2010/09/19 (bmerry) 10725bd8deadSopenharmony_ci - Two typo fixes from Daniel Koch 10735bd8deadSopenharmony_ci 10745bd8deadSopenharmony_ci Revision 12, 2010/09/18 (bmerry) 10755bd8deadSopenharmony_ci - Changed resolution to issue 20 10765bd8deadSopenharmony_ci - Added and resolved issue 23 10775bd8deadSopenharmony_ci - Added explanation of how to upload data (in overview) 10785bd8deadSopenharmony_ci - Added spec language to implement resolution to issue 15 10795bd8deadSopenharmony_ci 10805bd8deadSopenharmony_ci Revision 11, 2010/07/21 (bmerry) 10815bd8deadSopenharmony_ci - Resolved issue 16 10825bd8deadSopenharmony_ci - Reopen issue 20 10835bd8deadSopenharmony_ci - Fix some typos 10845bd8deadSopenharmony_ci 10855bd8deadSopenharmony_ci Revision 10, 2010/07/15 (bmerry) 10865bd8deadSopenharmony_ci - Update some issues to match core text 10875bd8deadSopenharmony_ci - Resolved issue 17 10885bd8deadSopenharmony_ci 10895bd8deadSopenharmony_ci Revision 9, 2010/05/24 (bmerry) 10905bd8deadSopenharmony_ci - Marked issue 2 as resolved 10915bd8deadSopenharmony_ci - Resolved issue 19 (as no change) 10925bd8deadSopenharmony_ci - Resolved issue 20 10935bd8deadSopenharmony_ci - Add issues 21-22 10945bd8deadSopenharmony_ci - Add in spec language to forbid use on default textures 10955bd8deadSopenharmony_ci - Redefine level_base, level_max to be clamped forms of 10965bd8deadSopenharmony_ci TEXTURE_BASE_LEVEL/TEXTURE_MAX_LEVEL when using immutable 10975bd8deadSopenharmony_ci textures 10985bd8deadSopenharmony_ci - Redefine p to also be clamped to the provided levels for 10995bd8deadSopenharmony_ci immutable textures, to support automatic mipmap generation 11005bd8deadSopenharmony_ci - Removed multisample functions 11015bd8deadSopenharmony_ci - Removed language stating that texture parameters were reset to 11025bd8deadSopenharmony_ci defaults 11035bd8deadSopenharmony_ci 11045bd8deadSopenharmony_ci Revision 8, 2010/05/18 (bmerry) 11055bd8deadSopenharmony_ci - Added issue about EGLimage 11065bd8deadSopenharmony_ci - Marked issue 14 as resolved 11075bd8deadSopenharmony_ci 11085bd8deadSopenharmony_ci Revision 7, 2010/05/04 (bmerry) 11095bd8deadSopenharmony_ci - Removed some lingering <format>, <type> parameters to the new 11105bd8deadSopenharmony_ci functions that should have been removed in revision 4 11115bd8deadSopenharmony_ci - Trivial typo fixes 11125bd8deadSopenharmony_ci 11135bd8deadSopenharmony_ci Revision 6, 2010/02/18 (bmerry) 11145bd8deadSopenharmony_ci - Resolved issues 5, 6 and 18 11155bd8deadSopenharmony_ci - Added MultiTexStorage* functions for DSA interaction 11165bd8deadSopenharmony_ci - Added error for texture-target mismatch in DSA 11175bd8deadSopenharmony_ci - Allowed TexStorage* to be called again 11185bd8deadSopenharmony_ci 11195bd8deadSopenharmony_ci Revision 5, 2010/01/25 (bmerry) 11205bd8deadSopenharmony_ci - Added to contributors list 11215bd8deadSopenharmony_ci - Require OpenGL 1.2, to simplify interactions with 11225bd8deadSopenharmony_ci TEXTURE_BASE_LEVEL/TEXTURE_MAX_LEVEL and CLAMP_TO_EDGE 11235bd8deadSopenharmony_ci - Change default wrap modes to always be CLAMP_TO_EDGE 11245bd8deadSopenharmony_ci - Change default filters to always be NEAREST 11255bd8deadSopenharmony_ci - Moved language about generating new levels into an interaction, 11265bd8deadSopenharmony_ci since it can only happen on OpenGL ES 11275bd8deadSopenharmony_ci - Added interaction with EXT_direct_state_access 11285bd8deadSopenharmony_ci - Added extra <internalformats> for GL ES when OES_depth_texture, 11295bd8deadSopenharmony_ci OES_packed_depth_stencil and EXT_texture_type_2_10_10_10_REV are 11305bd8deadSopenharmony_ci present. 11315bd8deadSopenharmony_ci - Minor non-functional wording fixes and typos 11325bd8deadSopenharmony_ci - Resolved issue 16 11335bd8deadSopenharmony_ci - Added issues 17-19 11345bd8deadSopenharmony_ci 11355bd8deadSopenharmony_ci Revision 4, 2010/01/13 (bmerry) 11365bd8deadSopenharmony_ci - Changed suffix from ARM to EXT 11375bd8deadSopenharmony_ci - Added list of contributors 11385bd8deadSopenharmony_ci - Added language to force the texture to always be complete 11395bd8deadSopenharmony_ci - Removed <format> and <type> arguments 11405bd8deadSopenharmony_ci - Added issues 14-16 11415bd8deadSopenharmony_ci - Reopened issue 2 11425bd8deadSopenharmony_ci - Reformatted issues to separate resolution and discussion 11435bd8deadSopenharmony_ci - Resolved issues 1, 9 and 11-13 11445bd8deadSopenharmony_ci - Fixed the max number of levels in a cube map array 11455bd8deadSopenharmony_ci 11465bd8deadSopenharmony_ci Revision 3, 2009/12/17 (bmerry) 11475bd8deadSopenharmony_ci - Added missing vendor suffix to TEXTURE_IMMUTABLE_FORMAT_ARM 11485bd8deadSopenharmony_ci - Rewritten to against desktop OpenGL 11495bd8deadSopenharmony_ci - Added prototypes for 1D and multisample storage functions 11505bd8deadSopenharmony_ci - Added issues 8-13 11515bd8deadSopenharmony_ci 11525bd8deadSopenharmony_ci Revision 2, 2009/08/20 (bmerry) 11535bd8deadSopenharmony_ci - Resolved issue 2 (no border parameter) 11545bd8deadSopenharmony_ci - Resolved issue 4 (metadata becomes immutable) 11555bd8deadSopenharmony_ci - Added interaction with OES_texture_cube_map 11565bd8deadSopenharmony_ci - Added error if width != height in a cube map 11575bd8deadSopenharmony_ci - Added issues 5-7 11585bd8deadSopenharmony_ci 11595bd8deadSopenharmony_ci Revision 1, 2009/05/06 (bmerry) 11605bd8deadSopenharmony_ci - First draft 1161