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