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