15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci OES_texture_buffer 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_OES_texture_buffer 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 Pat Brown, NVIDIA 175bd8deadSopenharmony_ci James Helferty, NVIDIA 185bd8deadSopenharmony_ci Graham Connor, Imagination 195bd8deadSopenharmony_ci Ben Bowman, Imagination 205bd8deadSopenharmony_ci Jonathan Putsman, Imagination 215bd8deadSopenharmony_ci Piotr Czubak, Intel 225bd8deadSopenharmony_ci Marcin Kantoch, Mobica 235bd8deadSopenharmony_ci Contributors to ARB_texture_buffer_object 245bd8deadSopenharmony_ci Contributors to ARB_texture_buffer_range 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciNotice 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at 295bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciSpecification Update Policy 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 345bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL ES Working Group. For 355bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 365bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 375bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 385bd8deadSopenharmony_ci described in more detail at 395bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci Portions Copyright (c) 2013-2014 NVIDIA Corporation. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciStatus 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci Approved by the OpenGL ES Working Group 465bd8deadSopenharmony_ci Ratified by the Khronos Board of Promoters on November 7, 2014 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ciVersion 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ci Last Modified Date: July 14, 2014 515bd8deadSopenharmony_ci Revision: 2 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ciNumber 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci OpenGL ES Extension #216 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ciDependencies 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci OpenGL ES 3.1 and OpenGL ES Shading Language 3.10 are required. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci This specification is written against the OpenGL ES 3.1 (March 17, 625bd8deadSopenharmony_ci 2014) and OpenGL ES 3.10 Shading Language (March 17, 2014) 635bd8deadSopenharmony_ci Specifications. 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci This extension interacts with OES_shader_image_atomic. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciOverview 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci This extension provides a new texture type, called a buffer texture. 705bd8deadSopenharmony_ci Buffer textures are one-dimensional arrays of texels whose storage comes 715bd8deadSopenharmony_ci from an attached buffer object. When a buffer object is bound to a 725bd8deadSopenharmony_ci buffer texture, a format is specified, and the data in the buffer object 735bd8deadSopenharmony_ci is treated as an array of texels of the specified format. 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci The use of a buffer object to provide storage allows the texture data to 765bd8deadSopenharmony_ci be specified in a number of different ways: via buffer object loads 775bd8deadSopenharmony_ci (BufferData), direct CPU writes (MapBuffer), or framebuffer readbacks to 785bd8deadSopenharmony_ci pixel buffer objects (ReadPixels). A buffer object can also be loaded by 795bd8deadSopenharmony_ci transform feedback, which captures 805bd8deadSopenharmony_ci selected transformed attributes of vertices processed by the GL. Several 815bd8deadSopenharmony_ci of these mechanisms do not require an extra data copy, which would be 825bd8deadSopenharmony_ci required when using conventional TexImage-like entry points. 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci Buffer textures do not support mipmapping, texture lookups with 855bd8deadSopenharmony_ci normalized floating-point texture coordinates, and texture filtering of 865bd8deadSopenharmony_ci any sort. 875bd8deadSopenharmony_ci They can be accessed via single texel fetch operations in programmable 885bd8deadSopenharmony_ci shaders, using a new sampler type and texel fetch function, and 895bd8deadSopenharmony_ci access can be controlled using the same memory barrier operations 905bd8deadSopenharmony_ci as for other texture types. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci Buffer textures are treated as (potentially large) one-dimensional 935bd8deadSopenharmony_ci textures; the maximum texture size supported for buffer textures in the 945bd8deadSopenharmony_ci initial implementation of this extension is 2^27 texels (note that this 955bd8deadSopenharmony_ci extension only guarantees support for buffer textures with 2^16 texels, 965bd8deadSopenharmony_ci but we expect most implementations to exceed that substantially). When a 975bd8deadSopenharmony_ci buffer object is attached to a buffer texture, a size is not specified; 985bd8deadSopenharmony_ci rather, the number of texels in the texture is taken by dividing the size 995bd8deadSopenharmony_ci of the buffer object by the size of each texel. 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ci This extension also allows a sub-range of the buffer's data store to 1025bd8deadSopenharmony_ci be attached to a texture. This can be used, for example, to allow multiple 1035bd8deadSopenharmony_ci buffer textures to be backed by independent sub-ranges of the same buffer 1045bd8deadSopenharmony_ci object, or for different sub-ranges of a single buffer object to be used 1055bd8deadSopenharmony_ci for different purposes. 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ciNew Procedures and Functions 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci void TexBufferOES(enum target, enum internalformat, uint buffer); 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci void TexBufferRangeOES(enum target, enum internalformat, uint buffer, 1125bd8deadSopenharmony_ci intptr offset, sizeiptr size); 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ciNew Tokens 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci Accepted by the <target> parameter of BindBuffer, BufferData, 1175bd8deadSopenharmony_ci BufferSubData, MapBufferRange, BindTexture, UnmapBuffer, 1185bd8deadSopenharmony_ci GetBufferParameteriv, GetBufferPointerv, TexBufferOES, and 1195bd8deadSopenharmony_ci TexBufferRangeOES: 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci TEXTURE_BUFFER_OES 0x8C2A 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci Accepted by the <pname> parameters of GetBooleanv, GetFloatv, and 1245bd8deadSopenharmony_ci GetIntegerv: 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ci TEXTURE_BUFFER_BINDING_OES 0x8C2A 1275bd8deadSopenharmony_ci (note that this token name is an alias for TEXTURE_BUFFER_OES, 1285bd8deadSopenharmony_ci and is used for naming consistency with queries for the buffers 1295bd8deadSopenharmony_ci bound to other buffer binding points). 1305bd8deadSopenharmony_ci MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B 1315bd8deadSopenharmony_ci TEXTURE_BINDING_BUFFER_OES 0x8C2C 1325bd8deadSopenharmony_ci TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Returned in the <type> parameter of GetActiveUniform, the <params> 1355bd8deadSopenharmony_ci parameter of GetActiveUniformsiv, and the <params> parameter of 1365bd8deadSopenharmony_ci GetProgramResourceiv when the TYPE property is queried on the 1375bd8deadSopenharmony_ci UNIFORM interface: 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci SAMPLER_BUFFER_OES 0x8DC2 1405bd8deadSopenharmony_ci INT_SAMPLER_BUFFER_OES 0x8DD0 1415bd8deadSopenharmony_ci UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 1425bd8deadSopenharmony_ci IMAGE_BUFFER_OES 0x9051 1435bd8deadSopenharmony_ci INT_IMAGE_BUFFER_OES 0x905C 1445bd8deadSopenharmony_ci UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetTexLevelParameter: 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ci TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D 1495bd8deadSopenharmony_ci TEXTURE_BUFFER_OFFSET_OES 0x919D 1505bd8deadSopenharmony_ci TEXTURE_BUFFER_SIZE_OES 0x919E 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ciAdditions to the OpenGL ES 3.1 Specification 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci Modify section 6.1 "Creating and Binding Buffer Objects" 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci Add to table 6.1 "Buffer object binding targets": 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci Target Name Purpose Described in section(s) 1595bd8deadSopenharmony_ci ------------------ ------------------- ----------------------- 1605bd8deadSopenharmony_ci TEXTURE_BUFFER_OES Texture data buffer 8.8tbo 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci Modify section 7.3 "Program Objects" 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci Add to table 7.3 "OpenGL ES Shading Language type tokens...": 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci Type Name Token Keyword 1685bd8deadSopenharmony_ci --------------------------------------- --------------------------- 1695bd8deadSopenharmony_ci SAMPLER_BUFFER_OES samplerBuffer 1705bd8deadSopenharmony_ci INT_SAMPLER_BUFFER_OES isamplerBuffer 1715bd8deadSopenharmony_ci UNSIGNED_INT_SAMPLER_BUFFER_OES usamplerBuffer 1725bd8deadSopenharmony_ci IMAGE_BUFFER_OES imageBuffer 1735bd8deadSopenharmony_ci INT_IMAGE_BUFFER_OES iimageBuffer 1745bd8deadSopenharmony_ci UNSIGNED_INT_IMAGE_BUFFER_OES uimageBuffer 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ci Modify section 7.11 "Shader Memory Access" 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci Change the description of TEXTURE_FETCH_BARRIER_BIT for MemoryBarrier on 1805bd8deadSopenharmony_ci p. 116: 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci * TEXTURE_FETCH_BARRIER_BIT: Texture fetches from shaders, including 1835bd8deadSopenharmony_ci fetches from buffer object memory via buffer textures, after the 1845bd8deadSopenharmony_ci barrier will reflect data written by shaders prior to the barrier. 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci Modify chapter 8 "Textures and Samplers" 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci Add to the fourth paragraph of the section, on p. 128: 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci ... six faces of the cube. Buffer textures are special one-dimensional 1925bd8deadSopenharmony_ci textures whose texel arrays are stored in separate buffer objects. 1935bd8deadSopenharmony_ci 1945bd8deadSopenharmony_ci 1955bd8deadSopenharmony_ci Modify section 8.1 "Texture Objects" 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci Change the first paragraph of the section on p. 129: 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci ... The default texture object is bound to each of the TEXTURE_2D, 2005bd8deadSopenharmony_ci TEXTURE_3D, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP, TEXTURE_2D_MULTISAMPLE, 2015bd8deadSopenharmony_ci and TEXTURE_BUFFER_OES targets ... 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ci Change the paragaph following the description of IsTexture on p. 131: 2055bd8deadSopenharmony_ci 2065bd8deadSopenharmony_ci The texture object name space, including the initial two-, and three- 2075bd8deadSopenharmony_ci dimensional, two-dimensional array, cube map, two-dimensional 2085bd8deadSopenharmony_ci multisample, and buffer texture objects, is shared among all texture 2095bd8deadSopenharmony_ci units. ... 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ci Add new section 8.8tbo following section 8.8 "Multisample Textures": 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci 8.8tbo Buffer Textures 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci In addition to the types of textures described in previous sections, one 2175bd8deadSopenharmony_ci additional type of texture is supported. A <buffer texture> is a 2185bd8deadSopenharmony_ci one-dimensional texture, consisting of a one-dimensional texel array. 2195bd8deadSopenharmony_ci Unlike other texture types, the texel array is not stored as part of the 2205bd8deadSopenharmony_ci texture. Instead, a buffer object is attached to a buffer texture and 2215bd8deadSopenharmony_ci the texel array is taken from that buffer object's data store. When the 2225bd8deadSopenharmony_ci contents of a buffer object's data store are modified, those changes are 2235bd8deadSopenharmony_ci reflected in the contents of any buffer texture to which the buffer 2245bd8deadSopenharmony_ci object is attached. Buffer textures do not have multiple image levels; 2255bd8deadSopenharmony_ci only a single data store is available. 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ci The command 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ci void TexBufferRangeOES(enum target, enum internalformat, uint buffer, 2305bd8deadSopenharmony_ci intptr offset, sizeiptr size); 2315bd8deadSopenharmony_ci 2325bd8deadSopenharmony_ci attaches the range of the storage for the buffer object named <buffer> 2335bd8deadSopenharmony_ci for <size> basic machine units, starting at <offset> (also in basic 2345bd8deadSopenharmony_ci machine units) to the active buffer texture, and specifies an internal 2355bd8deadSopenharmony_ci format for the texel array found in the range of the attached buffer 2365bd8deadSopenharmony_ci object. If <buffer> is zero, then any buffer object attached to the 2375bd8deadSopenharmony_ci buffer texture is detached, the values <offset> and <size> are ignored 2385bd8deadSopenharmony_ci and the state for <offset> and <size> for the buffer texture are reset 2395bd8deadSopenharmony_ci to zero. <target> must be TEXTURE_BUFFER_OES. <internalformat> specifies 2405bd8deadSopenharmony_ci the storage format and must be one of the sized internal formats found 2415bd8deadSopenharmony_ci in Table texbo.1. 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci Errors 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci An INVALID_ENUM error is generated if <target> is not 2465bd8deadSopenharmony_ci TEXTURE_BUFFER_OES. 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci An INVALID_ENUM error is generated if <internalformat> is not one of the 2495bd8deadSopenharmony_ci sized internal formats found in Table texbo.1. 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ci An INVALID_OPERATION error is generated if <buffer> is non-zero, but is 2525bd8deadSopenharmony_ci not the name of an existing buffer object. 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci An INVALID_VALUE error is generated if <offset> is negative, if <size> 2555bd8deadSopenharmony_ci is less than or equal to zero, or if <offset> + <size> is greater than 2565bd8deadSopenharmony_ci the value of BUFFER_SIZE for the buffer bound to <target>. 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ci An INVALID_VALUE error is generated if <offset> is not an integer 2595bd8deadSopenharmony_ci multiple of the value of TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES. 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ci The command 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci void TexBufferOES(enum target, enum internalformat, uint buffer); 2655bd8deadSopenharmony_ci 2665bd8deadSopenharmony_ci is equivalent to 2675bd8deadSopenharmony_ci 2685bd8deadSopenharmony_ci TexBufferRangeOES(target, internalformat, buffer, 0, size); 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci with <size> set to the value of BUFFER_SIZE for <buffer>. 2715bd8deadSopenharmony_ci 2725bd8deadSopenharmony_ci When a range of the storage of a buffer object is attached to a buffer 2735bd8deadSopenharmony_ci texture, the range of the buffer's data store is taken as the texture's 2745bd8deadSopenharmony_ci texel array. The number of texels in the buffer texture's texel array is 2755bd8deadSopenharmony_ci given by 2765bd8deadSopenharmony_ci 2775bd8deadSopenharmony_ci floor(<size> / (<components> * sizeof(<base_type>)), 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci where <components> and <base_type> are the element count and base data 2805bd8deadSopenharmony_ci type for elements, as specified in Table texbo.1. 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci The number of texels in the texel array is then clamped to the value of 2835bd8deadSopenharmony_ci the implementation-dependent limit MAX_TEXTURE_BUFFER_SIZE_OES. When a 2845bd8deadSopenharmony_ci buffer texture is accessed in a shader, the results of a texel fetch are 2855bd8deadSopenharmony_ci undefined if the specified texel coordinate is negative, or greater than 2865bd8deadSopenharmony_ci or equal to the clamped number of texels in the texel array. 2875bd8deadSopenharmony_ci 2885bd8deadSopenharmony_ci When a buffer texture is accessed in a shader, an integer is provided to 2895bd8deadSopenharmony_ci indicate the texel coordinate being accessed. If no buffer object is 2905bd8deadSopenharmony_ci bound to the buffer texture, the results of the texel access are 2915bd8deadSopenharmony_ci undefined. Otherwise, the attached buffer object's data store is 2925bd8deadSopenharmony_ci interpreted as an array of elements of the GL data type corresponding to 2935bd8deadSopenharmony_ci <internalformat>. Each texel consists of one to four elements that are 2945bd8deadSopenharmony_ci mapped to texture components (R, G, B, and A). Element <m> of the texel 2955bd8deadSopenharmony_ci numbered <n> is taken from element <n> * <components> + <m> of the 2965bd8deadSopenharmony_ci attached buffer object's data store. Elements and texels are both 2975bd8deadSopenharmony_ci numbered starting with zero. For texture formats with signed or unsigned 2985bd8deadSopenharmony_ci normalized fixed-point components, the extracted values are converted to 2995bd8deadSopenharmony_ci floating-point values using equations 2.2 or 2.1 respectively. The 3005bd8deadSopenharmony_ci components of the texture are then converted to an (R,G,B,A) vector 3015bd8deadSopenharmony_ci according to Table texbo.1, and returned to the shader as a 3025bd8deadSopenharmony_ci four-component result vector with components of the appropriate data 3035bd8deadSopenharmony_ci type for the texture's internal format. The base data type, component 3045bd8deadSopenharmony_ci count, normalized component information, and mapping of data store 3055bd8deadSopenharmony_ci elements to texture components is specified in Table texbo.1. 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ci Component 3085bd8deadSopenharmony_ci Sized Internal Format Base Type Components Norm 0 1 2 3 3095bd8deadSopenharmony_ci --------------------- --------- ---------- ---- --------- 3105bd8deadSopenharmony_ci R8 ubyte 1 Yes R 0 0 1 3115bd8deadSopenharmony_ci R16F half 1 No R 0 0 1 3125bd8deadSopenharmony_ci R32F float 1 No R 0 0 1 3135bd8deadSopenharmony_ci R8I byte 1 No R 0 0 1 3145bd8deadSopenharmony_ci R16I short 1 No R 0 0 1 3155bd8deadSopenharmony_ci R32I int 1 No R 0 0 1 3165bd8deadSopenharmony_ci R8UI ubyte 1 No R 0 0 1 3175bd8deadSopenharmony_ci R16UI ushort 1 No R 0 0 1 3185bd8deadSopenharmony_ci R32UI uint 1 No R 0 0 1 3195bd8deadSopenharmony_ci RG8 ubyte 2 Yes R G 0 1 3205bd8deadSopenharmony_ci RG16F half 2 No R G 0 1 3215bd8deadSopenharmony_ci RG32F float 2 No R G 0 1 3225bd8deadSopenharmony_ci RG8I byte 2 No R G 0 1 3235bd8deadSopenharmony_ci RG16I short 2 No R G 0 1 3245bd8deadSopenharmony_ci RG32I int 2 No R G 0 1 3255bd8deadSopenharmony_ci RG8UI ubyte 2 No R G 0 1 3265bd8deadSopenharmony_ci RG16UI ushort 2 No R G 0 1 3275bd8deadSopenharmony_ci RG32UI uint 2 No R G 0 1 3285bd8deadSopenharmony_ci RGB32F float 3 No R G B 1 3295bd8deadSopenharmony_ci RGB32I int 3 No R G B 1 3305bd8deadSopenharmony_ci RGB32UI uint 3 No R G B 1 3315bd8deadSopenharmony_ci RGBA8 ubyte 4 Yes R G B A 3325bd8deadSopenharmony_ci RGBA16F half 4 No R G B A 3335bd8deadSopenharmony_ci RGBA32F float 4 No R G B A 3345bd8deadSopenharmony_ci RGBA8I byte 4 No R G B A 3355bd8deadSopenharmony_ci RGBA16I short 4 No R G B A 3365bd8deadSopenharmony_ci RGBA32I int 4 No R G B A 3375bd8deadSopenharmony_ci RGBA8UI ubyte 4 No R G B A 3385bd8deadSopenharmony_ci RGBA16UI ushort 4 No R G B A 3395bd8deadSopenharmony_ci RGBA32UI uint 4 No R G B A 3405bd8deadSopenharmony_ci Table texbo.1, Internal Formats for Buffer Textures. For each 3415bd8deadSopenharmony_ci format, the data type of each element is indicated in the "Base 3425bd8deadSopenharmony_ci Type" column and the element count is in the "Components" column. 3435bd8deadSopenharmony_ci The "Norm" column indicates whether components should be treated as 3445bd8deadSopenharmony_ci normalized floating-point values. The "Component 0, 1, 2, and 3" 3455bd8deadSopenharmony_ci columns indicate the mapping of each element of a texel to texture 3465bd8deadSopenharmony_ci components. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci In addition to attaching buffer objects to textures, buffer objects can 3495bd8deadSopenharmony_ci be bound to the buffer object target named TEXTURE_BUFFER_OES, in order 3505bd8deadSopenharmony_ci to specify, modify, or read the buffer object's data store. The buffer 3515bd8deadSopenharmony_ci object bound to TEXTURE_BUFFER_OES has no effect on rendering. A buffer 3525bd8deadSopenharmony_ci object is bound to TEXTURE_BUFFER_OES by calling BindBuffer with 3535bd8deadSopenharmony_ci <target> set to TEXTURE_BUFFER_OES, as described in chapter 6. 3545bd8deadSopenharmony_ci 3555bd8deadSopenharmony_ci 3565bd8deadSopenharmony_ci Modify section 8.10.3 "Texture Level Parameter Queries" 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci Modify the second and third paragraphs in the description of 3595bd8deadSopenharmony_ci GetTexLevelParameter*, on p. 173: 3605bd8deadSopenharmony_ci 3615bd8deadSopenharmony_ci "<target> may be ... TEXTURE_2D_ARRAY, TEXTURE_BUFFER_OES, one of the 3625bd8deadSopenharmony_ci cube map face ... indicating the ... two-dimensional array texture, 3635bd8deadSopenharmony_ci buffer texture, one of the six distinct ... 3645bd8deadSopenharmony_ci 3655bd8deadSopenharmony_ci <lod> determines which level-of-detail's state is returned. If <target> 3665bd8deadSopenharmony_ci is TEXTURE_BUFFER_OES, <lod> must be zero." 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ci 3695bd8deadSopenharmony_ci Modify section 8.18 "Texture State" 3705bd8deadSopenharmony_ci 3715bd8deadSopenharmony_ci Change the first paragraph of the section on p. 191: 3725bd8deadSopenharmony_ci 3735bd8deadSopenharmony_ci ... Each array has associated with it a width, height (except for buffer 3745bd8deadSopenharmony_ci textures), and depth ... a boolean describing whether the image is 3755bd8deadSopenharmony_ci compressed or not, an integer size of a compressed image, and an integer 3765bd8deadSopenharmony_ci containing the name of a buffer object bound as the data store of the 3775bd8deadSopenharmony_ci image. 3785bd8deadSopenharmony_ci 3795bd8deadSopenharmony_ci Each inital texel array is null ... the compressed flag set to FALSE, a 3805bd8deadSopenharmony_ci zero compressed size, and the bound buffer object name is zero. 3815bd8deadSopenharmony_ci 3825bd8deadSopenharmony_ci Buffer textures also contain two pointer sized integers containing the 3835bd8deadSopenharmony_ci offset and range of the buffer object's data store. 3845bd8deadSopenharmony_ci 3855bd8deadSopenharmony_ci 3865bd8deadSopenharmony_ci Modify section 8.22 "Texture Image Loads and Stores" 3875bd8deadSopenharmony_ci 3885bd8deadSopenharmony_ci On p. 197 in the errors section for BindImageTexture, replace the 3895bd8deadSopenharmony_ci last error with the following: 3905bd8deadSopenharmony_ci 3915bd8deadSopenharmony_ci An INVALID_OPERATION error is generated if <texture> is neither the 3925bd8deadSopenharmony_ci name of a buffer texture, nor the name of an immutable texture object. 3935bd8deadSopenharmony_ci 3945bd8deadSopenharmony_ci Add to table 8.26 "Mapping of image load, store..." 3955bd8deadSopenharmony_ci 3965bd8deadSopenharmony_ci Texture target face/ 3975bd8deadSopenharmony_ci i j k layer 3985bd8deadSopenharmony_ci -------------------------- -- -- -- ----- 3995bd8deadSopenharmony_ci TEXTURE_BUFFER_OES x - - - 4005bd8deadSopenharmony_ci 4015bd8deadSopenharmony_ci 4025bd8deadSopenharmony_ciNew State 4035bd8deadSopenharmony_ci 4045bd8deadSopenharmony_ci Add to table 20.8 "Textures (selector, state per texture unit)" 4055bd8deadSopenharmony_ci 4065bd8deadSopenharmony_ci Initial 4075bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 4085bd8deadSopenharmony_ci ---------------------------------- -------- ----------- ---------- ---------------------------- ----- 4095bd8deadSopenharmony_ci TEXTURE_BINDING_BUFFER_OES 48* x Z+ GetIntegerv 0 Texture object bound 8.1 4105bd8deadSopenharmony_ci to TEXTURE_BUFFER_OES 4115bd8deadSopenharmony_ci 4125bd8deadSopenharmony_ci Add to table 20.10 "Textures (state per texture image)" 4135bd8deadSopenharmony_ci 4145bd8deadSopenharmony_ci Initial 4155bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 4165bd8deadSopenharmony_ci ------------------------------------- ----- -------------------- ------- --------------------------- -------- 4175bd8deadSopenharmony_ci TEXTURE_BUFFER_DATA_STORE_BINDING_OES Z+ GetTexLevelParameter 0 Buffer object bound to the 8.8tbo 4185bd8deadSopenharmony_ci data store for the active 4195bd8deadSopenharmony_ci image unit's buffer texture 4205bd8deadSopenharmony_ci TEXTURE_BUFFER_OFFSET_OES n x Z GetTexLevelParameter 0 Offset into buffer's data 8.8tbo 4215bd8deadSopenharmony_ci store used for the active 4225bd8deadSopenharmony_ci image unit's buffer texture 4235bd8deadSopenharmony_ci TEXTURE_BUFFER_SIZE_OES n x Z GetTexLevelParameter 0 Size of the buffer's data 8.8tbo 4245bd8deadSopenharmony_ci store used for the active 4255bd8deadSopenharmony_ci image unit's buffer texture 4265bd8deadSopenharmony_ci 4275bd8deadSopenharmony_ci Modify the TEXTURE_INTERNAL_FORMAT entry in table 20.10 4285bd8deadSopenharmony_ci 4295bd8deadSopenharmony_ci Initial 4305bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 4315bd8deadSopenharmony_ci ---------------------- ---- -------------------- ------- --------------------------- ------ 4325bd8deadSopenharmony_ci TEXTURE_INTERNAL_FORMAT E GetTexLevelParameter RGBA Internal format[fn1] 8 4335bd8deadSopenharmony_ci or R8 4345bd8deadSopenharmony_ci [fn1] The initial internal format is R8 for texture buffer object 4355bd8deadSopenharmony_ci images, RGBA for all other texture images. 4365bd8deadSopenharmony_ci 4375bd8deadSopenharmony_ci 4385bd8deadSopenharmony_ci Add to table 20.50 "Miscellaneous" 4395bd8deadSopenharmony_ci 4405bd8deadSopenharmony_ci Initial 4415bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 4425bd8deadSopenharmony_ci -------------------------- ---- ----------- ------- --------------------------- ---- 4435bd8deadSopenharmony_ci TEXTURE_BUFFER_BINDING_OES Z+ GetIntegerv 0 Buffer object bound to 6.1 4445bd8deadSopenharmony_ci generic buffer texture 4455bd8deadSopenharmony_ci binding point 4465bd8deadSopenharmony_ci 4475bd8deadSopenharmony_ci 4485bd8deadSopenharmony_ciNew Implementation Dependent State 4495bd8deadSopenharmony_ci 4505bd8deadSopenharmony_ci Add to table 20.41 "Implementation Dependent Values (cont.)" 4515bd8deadSopenharmony_ci 4525bd8deadSopenharmony_ci Minimum 4535bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 4545bd8deadSopenharmony_ci ----------------------------------- ---- ----------- ------- --------------------- -------- 4555bd8deadSopenharmony_ci MAX_TEXTURE_BUFFER_SIZE_OES Z+ GetIntegerv 65536 No. of addressable 8.8tbo 4565bd8deadSopenharmony_ci texels for buffer 4575bd8deadSopenharmony_ci textures 4585bd8deadSopenharmony_ci TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES Z+ GetIntegerv 256 (**) Minimum required 8.8tbo 4595bd8deadSopenharmony_ci alignment for texture 4605bd8deadSopenharmony_ci buffer offsets 4615bd8deadSopenharmony_ci 4625bd8deadSopenharmony_ci (**) the value of TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES is the largest 4635bd8deadSopenharmony_ci allowed value. Smaller values are permitted. 4645bd8deadSopenharmony_ci 4655bd8deadSopenharmony_ciModifications to the OpenGL ES Shading Language Specification, Version 3.10 4665bd8deadSopenharmony_ci 4675bd8deadSopenharmony_ci #extension GL_OES_texture_buffer: <behavior> 4685bd8deadSopenharmony_ci 4695bd8deadSopenharmony_ci The above line is needed to control the GLSL features described in 4705bd8deadSopenharmony_ci this section. 4715bd8deadSopenharmony_ci 4725bd8deadSopenharmony_ci 4735bd8deadSopenharmony_ci A new preprocessor #define is added to the OpenGL ES Shading Language: 4745bd8deadSopenharmony_ci 4755bd8deadSopenharmony_ci #define GL_OES_texture_buffer 1 4765bd8deadSopenharmony_ci 4775bd8deadSopenharmony_ci 4785bd8deadSopenharmony_ci Add the following keywords to section 3.7 "Keywords" on p. 14 and 4795bd8deadSopenharmony_ci remove them from the list of reserved keywords on p. 15: 4805bd8deadSopenharmony_ci 4815bd8deadSopenharmony_ci samplerBuffer 4825bd8deadSopenharmony_ci isamplerBuffer 4835bd8deadSopenharmony_ci usamplerBuffer 4845bd8deadSopenharmony_ci imageBuffer 4855bd8deadSopenharmony_ci iimageBuffer 4865bd8deadSopenharmony_ci uimageBuffer 4875bd8deadSopenharmony_ci 4885bd8deadSopenharmony_ci 4895bd8deadSopenharmony_ci Add to section 4.1 "Basic Types" 4905bd8deadSopenharmony_ci 4915bd8deadSopenharmony_ci Add to table "Floating Point Sampler Types (opaque)" on p. 20: 4925bd8deadSopenharmony_ci 4935bd8deadSopenharmony_ci Type Meaning 4945bd8deadSopenharmony_ci ---------------------- --------------------------------------- 4955bd8deadSopenharmony_ci samplerBuffer a handle for accessing a buffer texture 4965bd8deadSopenharmony_ci imageBuffer 4975bd8deadSopenharmony_ci 4985bd8deadSopenharmony_ci Add to table "Signed Integer Sampler Types (opaque)" on p. 21: 4995bd8deadSopenharmony_ci 5005bd8deadSopenharmony_ci Type Meaning 5015bd8deadSopenharmony_ci ----------------------- ---------------------------------------- 5025bd8deadSopenharmony_ci isamplerBuffer a handle for accessing an integer buffer 5035bd8deadSopenharmony_ci iimageBuffer texture 5045bd8deadSopenharmony_ci 5055bd8deadSopenharmony_ci Add to table "Unsigned Integer Sampler Types (opaque)" on p. 21: 5065bd8deadSopenharmony_ci 5075bd8deadSopenharmony_ci Type Meaning 5085bd8deadSopenharmony_ci ----------------------- ------------------------------------------ 5095bd8deadSopenharmony_ci usamplerBuffer a handle for accessing an unsigned integer 5105bd8deadSopenharmony_ci uimageBuffer buffer texture 5115bd8deadSopenharmony_ci 5125bd8deadSopenharmony_ci 5135bd8deadSopenharmony_ci Modify section 4.7.4 "Default Precision Qualifiers" 5145bd8deadSopenharmony_ci 5155bd8deadSopenharmony_ci Add the following types to the list of types which have no default 5165bd8deadSopenharmony_ci precision qualifiers at the top of p. 65: 5175bd8deadSopenharmony_ci 5185bd8deadSopenharmony_ci samplerBuffer 5195bd8deadSopenharmony_ci isamplerBuffer 5205bd8deadSopenharmony_ci usamplerBuffer 5215bd8deadSopenharmony_ci imageBuffer 5225bd8deadSopenharmony_ci iimageBuffer 5235bd8deadSopenharmony_ci uimageBuffer 5245bd8deadSopenharmony_ci 5255bd8deadSopenharmony_ci 5265bd8deadSopenharmony_ci Modify section 8.9 "Texture Functions" 5275bd8deadSopenharmony_ci 5285bd8deadSopenharmony_ci Add at the end of the paragraph starting "In all functions below" on p. 5295bd8deadSopenharmony_ci 119: 5305bd8deadSopenharmony_ci 5315bd8deadSopenharmony_ci ... performing the texture access operation. No <bias> or <lod> 5325bd8deadSopenharmony_ci parameters for multisample textures or texture buffers are supported, 5335bd8deadSopenharmony_ci because mipmaps are not allowed for these types of textures. 5345bd8deadSopenharmony_ci 5355bd8deadSopenharmony_ci 5365bd8deadSopenharmony_ci Add to the table of Texture Query Functions in section 8.9.1 on p. 120: 5375bd8deadSopenharmony_ci 5385bd8deadSopenharmony_ci highp int textureSize(gsamplerBuffer sampler) 5395bd8deadSopenharmony_ci 5405bd8deadSopenharmony_ci 5415bd8deadSopenharmony_ci Add to the table of Texel Lookup Functions in section 8.9.2 on p. 121: 5425bd8deadSopenharmony_ci 5435bd8deadSopenharmony_ci gvec4 texelFetch(gsamplerBuffer sampler, int P) 5445bd8deadSopenharmony_ci 5455bd8deadSopenharmony_ci 5465bd8deadSopenharmony_ci Modify section 8.14 "Image Functions": 5475bd8deadSopenharmony_ci 5485bd8deadSopenharmony_ci Add to the description of the IMAGE_INFO placeholder in the fourth 5495bd8deadSopenharmony_ci paragraph of the section, on p. 132: 5505bd8deadSopenharmony_ci 5515bd8deadSopenharmony_ci The "IMAGE_INFO" in the prototypes below is a placeholder ... 5525bd8deadSopenharmony_ci 5535bd8deadSopenharmony_ci gimage2DArray image, ivec3 coord 5545bd8deadSopenharmony_ci gimageBuffer image, int P 5555bd8deadSopenharmony_ci 5565bd8deadSopenharmony_ci 5575bd8deadSopenharmony_ci Add to the table of image functions on p. 133: 5585bd8deadSopenharmony_ci 5595bd8deadSopenharmony_ci highp int imageSize(readonly writeonly gimageBuffer image) 5605bd8deadSopenharmony_ci 5615bd8deadSopenharmony_ci 5625bd8deadSopenharmony_ci Change the introduction of section 8.16 "Shader Memory Control 5635bd8deadSopenharmony_ci Functions": 5645bd8deadSopenharmony_ci 5655bd8deadSopenharmony_ci Shaders of all types may read and write the contents of textures and 5665bd8deadSopenharmony_ci buffer objects using image variables. While the order of reads ... 5675bd8deadSopenharmony_ci 5685bd8deadSopenharmony_ci 5695bd8deadSopenharmony_ciDependencies on OES_shader_image_atomic 5705bd8deadSopenharmony_ci 5715bd8deadSopenharmony_ci When OES_shader_image_atomic is supported, all the imageAtomic* functions 5725bd8deadSopenharmony_ci are supported on image buffers. 5735bd8deadSopenharmony_ci 5745bd8deadSopenharmony_ci 5755bd8deadSopenharmony_ciIssues 5765bd8deadSopenharmony_ci 5775bd8deadSopenharmony_ci Note: These issues apply specifically to the definition of the 5785bd8deadSopenharmony_ci OES_texture_buffer specification, which is based on the OpenGL 5795bd8deadSopenharmony_ci extension ARB_texture_buffer_object as updated in OpenGL 4.x. Resolved 5805bd8deadSopenharmony_ci issues from ARB_texture_buffer_object have been removed (with the 5815bd8deadSopenharmony_ci exception of issue 6, which is copied from issue 12 of the ARB 5825bd8deadSopenharmony_ci extension), but remain largely applicable to this extension. 5835bd8deadSopenharmony_ci ARB_texture_buffer_object can be found in the OpenGL Registry. 5845bd8deadSopenharmony_ci 5855bd8deadSopenharmony_ci (1) What functionality was removed from ARB_texture_buffer_object? 5865bd8deadSopenharmony_ci 5875bd8deadSopenharmony_ci - Support for sized buffer formats R16, RG16, and RGBA16, and for 5885bd8deadSopenharmony_ci MapBuffer and GetBufferSubData is removed since they do not exist 5895bd8deadSopenharmony_ci in ES 3.0. 5905bd8deadSopenharmony_ci - Support for ALPHA and LUMINANCE buffer textures is removed since 5915bd8deadSopenharmony_ci they are legacy formats in ES 3.0, and there are no sized ALPHA or 5925bd8deadSopenharmony_ci LUMINANCE formats. 5935bd8deadSopenharmony_ci - GL 4.4 extended support for buffer textures to the 5945bd8deadSopenharmony_ci GetInternalformativ query <target>, but that command in ES 3.0 is 5955bd8deadSopenharmony_ci restricted to returning multisampling information, which is 5965bd8deadSopenharmony_ci irrelevant to buffer textures. 5975bd8deadSopenharmony_ci - Support for TEXTURE_BUFFER_FORMAT is removed. Use the 5985bd8deadSopenharmony_ci GetTexLevelParameter* TEXTURE_INTERNAL_FORMAT query instead. 5995bd8deadSopenharmony_ci 6005bd8deadSopenharmony_ci (2) What functionality was changed and added relative to 6015bd8deadSopenharmony_ci ARB_texture_buffer_object? 6025bd8deadSopenharmony_ci 6035bd8deadSopenharmony_ci - OES_texture_buffer more closely matches OpenGL 4.4 language, 6045bd8deadSopenharmony_ci rather than ARB_texture_buffer_object language. 6055bd8deadSopenharmony_ci * Support for querying buffer texture state with 6065bd8deadSopenharmony_ci GetTexLevelParameter* is added 6075bd8deadSopenharmony_ci * Support for sized R, RG, and RGB formats is added. Per issue (2) 6085bd8deadSopenharmony_ci of ARB_texture_buffer_object, some formats supported by ES 3.0 but 6095bd8deadSopenharmony_ci which may present hardware difficulties are not supported, 6105bd8deadSopenharmony_ci including R*8_SNORM and all RGB formats other than RGB32*. 6115bd8deadSopenharmony_ci - Interactions were added with OpenGL ES 3.1 and other OES extension 6125bd8deadSopenharmony_ci functionality, primarily shader memory access as well as texture 6135bd8deadSopenharmony_ci level parameter queries. 6145bd8deadSopenharmony_ci - incorporates the ability to bind a sub-range of a buffer from 6155bd8deadSopenharmony_ci ARB_texture_buffer_range. 6165bd8deadSopenharmony_ci 6175bd8deadSopenharmony_ci (3) What should the rules on GLSL suffixing be? 6185bd8deadSopenharmony_ci 6195bd8deadSopenharmony_ci RESOLVED: The new sampler and image types are reserved keywords in 6205bd8deadSopenharmony_ci ESSL 3.00 so they can be use without prefix/suffixes. 6215bd8deadSopenharmony_ci 6225bd8deadSopenharmony_ci (4) Do we want the ARB_texture_buffer_range functionality present in GL 6235bd8deadSopenharmony_ci 4.4? This adds useful functionality (backing the buffer texture with 6245bd8deadSopenharmony_ci a selected part of a buffer object) at low increase in complexity of 6255bd8deadSopenharmony_ci the spec. 6265bd8deadSopenharmony_ci 6275bd8deadSopenharmony_ci RESOLVED: Yes, this functionality is included in this extension. 6285bd8deadSopenharmony_ci 6295bd8deadSopenharmony_ci (5) How is the various buffer texture-related state queried? 6305bd8deadSopenharmony_ci 6315bd8deadSopenharmony_ci There are three pieces of state that can be queried: 6325bd8deadSopenharmony_ci (a) the texture object bound to buffer texture binding point for 6335bd8deadSopenharmony_ci the active texture image unit (TEXTURE_BINDING_BUFFER_OES). 6345bd8deadSopenharmony_ci (b) the buffer object whose data store was used by that texture 6355bd8deadSopenharmony_ci object (TEXTURE_BUFFER_DATA_STORE_BINDING_OES). 6365bd8deadSopenharmony_ci (c) the buffer object bound to the TEXTURE_BUFFER_OES binding 6375bd8deadSopenharmony_ci point (TEXTURE_BUFFER_BINDING_OES). 6385bd8deadSopenharmony_ci 6395bd8deadSopenharmony_ci The first and last are queried with GetIntegerv, but the second is 6405bd8deadSopenharmony_ci queried with GetTexLevelParameter. Note that for (a) and (b), the 6415bd8deadSopenharmony_ci texture queried is the one bound to TEXTURE_BUFFER_EXT on the active 6425bd8deadSopenharmony_ci texture image unit. 6435bd8deadSopenharmony_ci 6445bd8deadSopenharmony_ci (6) Should the R16, RG16 and RGBA16 texture formats be supported? 6455bd8deadSopenharmony_ci 6465bd8deadSopenharmony_ci RESOLVED. No. OpenGL ES 3.0 does not support these formats. They were 6475bd8deadSopenharmony_ci considered for late addition to OpenGL ES 3.1 in Bug 11366, but didn't 6485bd8deadSopenharmony_ci make the cut. In the absence of another extension to add them, they 6495bd8deadSopenharmony_ci are not supported here either. 6505bd8deadSopenharmony_ci 6515bd8deadSopenharmony_ci (7) OpenGL ES 3.1 does not allow images to be created from mutable 6525bd8deadSopenharmony_ci textures (ie those created with TexImage). How does this affect 6535bd8deadSopenharmony_ci this extension? 6545bd8deadSopenharmony_ci 6555bd8deadSopenharmony_ci RESOLVED. Buffer textures would technically be considered mutable 6565bd8deadSopenharmony_ci since they are not defined by a TexStorage command and it is possible 6575bd8deadSopenharmony_ci to redefine the buffer storage which backs them. However there is 6585bd8deadSopenharmony_ci currently no ES API for creating immutable buffers 6595bd8deadSopenharmony_ci (ARB_buffer_storage does this for GL) and thus we must allow mutable 6605bd8deadSopenharmony_ci buffers to back buffer textures. 6615bd8deadSopenharmony_ci 6625bd8deadSopenharmony_ci (8) This extension is called OES_texture_buffer, but the desktop name 6635bd8deadSopenharmony_ci is {EXT,ARB}_texture_buffer_object. Is the name change intentional? 6645bd8deadSopenharmony_ci 6655bd8deadSopenharmony_ci RESOLVED. Yes. We want to avoid extensions in ES and GL that have the 6665bd8deadSopenharmony_ci same name, but not the same functionality (except as a subset). 6675bd8deadSopenharmony_ci 6685bd8deadSopenharmony_ci OES_texture_buffer includes the functionality of ARB_texture_buffer_object, 6695bd8deadSopenharmony_ci ARB_texture_buffer_range, and ARB_texture_buffer_rgb32, along with some 6705bd8deadSopenharmony_ci changes that were made with how those operate GL 4.4. It would have been 6715bd8deadSopenharmony_ci too messy and confusing to try to incorporate all these into the existing 6725bd8deadSopenharmony_ci EXT_texture_buffer_object spec from GL as interactions with ES. 6735bd8deadSopenharmony_ci 6745bd8deadSopenharmony_ci 6755bd8deadSopenharmony_ciRevision History 6765bd8deadSopenharmony_ci 6775bd8deadSopenharmony_ci Rev. Date Author Changes 6785bd8deadSopenharmony_ci ---- ---------- --------- ------------------------------------------------- 6795bd8deadSopenharmony_ci 2 07/14/2014 dkoch Clarify that TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 6805bd8deadSopenharmony_ci is queried with GetTexLevelParameter not 6815bd8deadSopenharmony_ci GetIntegerv (Bug 12343). Fix types in unsigned 6825bd8deadSopenharmony_ci sampler types table (Bug 12356) 6835bd8deadSopenharmony_ci 6845bd8deadSopenharmony_ci 1 06/18/2014 dkoch Initial OES version based on EXT. 6855bd8deadSopenharmony_ci No functional changes. 686