15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_EGL_stream_consumer_external
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_NV_EGL_stream_consumer_external
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Acorn Pooley
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContacts
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciStatus
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    DRAFT
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ciVersion
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci    Version 3, July 19, 2012
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ciNumber
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ci    OpenGL ES Extension #104
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciDependencies
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    Requires OpenGL ES 1.1 or OpenGL ES 2.0.
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci    Requires EGL 1.2
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    Requires the EGL_KHR_stream and EGL_NV_stream_consumer_gltexture
365bd8deadSopenharmony_ci    extensions.  (Also requires any EGL stream_producer extension to
375bd8deadSopenharmony_ci    be useful.)
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    This extension is written based on the wording of the OpenGL ES
405bd8deadSopenharmony_ci    2.0 specification, the OpenGL ES Shading Language version 1.0, the
415bd8deadSopenharmony_ci    EGL_KHR_stream extension, and the EGL_NV_stream_consumer_gltexture
425bd8deadSopenharmony_ci    extension.  On an OpenGL ES 2.0 implementation, ignore sections
435bd8deadSopenharmony_ci    which are added only to the OpenGL ES 1.1 specification.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    This extension is also written based on the wording of the OpenGL
465bd8deadSopenharmony_ci    ES 1.1 specification.  On an OpenGL ES 1.X implementation, ignore
475bd8deadSopenharmony_ci    sections which are added only to the OpenGL ES 2.0 or OpenGL ES
485bd8deadSopenharmony_ci    Shading Language specification.  Also ignore all mention of
495bd8deadSopenharmony_ci    MAX_VERTEX_TEXTURE_IMAGE_UNITS, and
505bd8deadSopenharmony_ci    MAX_COMBINED_TEXTURE_IMAGE_UNITS.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    This extension borrows concepts and function names from the
535bd8deadSopenharmony_ci    GL_OES_EGL_image_external extension.  This extension is compatible
545bd8deadSopenharmony_ci    with, but does not require, the GL_OES_EGL_image_external
555bd8deadSopenharmony_ci    extension.  The presence of the GL_OES_EGL_image_external
565bd8deadSopenharmony_ci    extension affects the wording of this extension (and vice versa)
575bd8deadSopenharmony_ci    as described in this (the GL_NV_EGL_stream_consumer_external)
585bd8deadSopenharmony_ci    extension.
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciOverview
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    This extension provides a mechanism for streaming image frames
635bd8deadSopenharmony_ci    into a GL texture.  This extension defines a new texture target,
645bd8deadSopenharmony_ci    TEXTURE_EXTERNAL_OES (which is else defined in the
655bd8deadSopenharmony_ci    GL_OES_EGL_image_external extension).  This texture target can
665bd8deadSopenharmony_ci    only be specified as being the consumer of an EGLStream.  (If the
675bd8deadSopenharmony_ci    GL_OES_EGL_image_external extension is present it may
685bd8deadSopenharmony_ci    alternatively be specified from an EGLImage as described in that
695bd8deadSopenharmony_ci    extension.)
705bd8deadSopenharmony_ci    
715bd8deadSopenharmony_ci    There is no support for most of the functions that manipulate
725bd8deadSopenharmony_ci    other texture targets (e.g. you cannot use gl*Tex*Image*()
735bd8deadSopenharmony_ci    functions with TEXTURE_EXTERNAL_OES).  Also, TEXTURE_EXTERNAL_OES
745bd8deadSopenharmony_ci    targets never have more than a single LOD level.  Because of these
755bd8deadSopenharmony_ci    restrictions, it is possible to bind EGLStreams which have
765bd8deadSopenharmony_ci    internal formats not otherwise supported by OpenGL ES.  For
775bd8deadSopenharmony_ci    example some implementations may allow EGLStreams with planar or
785bd8deadSopenharmony_ci    interleaved YUV data to be GLES texture target siblings.  It is up
795bd8deadSopenharmony_ci    to the implementation exactly what formats are accepted.
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ciGlossary
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    Please see the EGL_KHR_stream specification for a glossary of
845bd8deadSopenharmony_ci    terms used by this specification.
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ciNew Types
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    /* (OpenGL ES 2.x only)
895bd8deadSopenharmony_ci     * New sampler type allowed by the OpenGL ES Shading Language when
905bd8deadSopenharmony_ci     *      #extension GL_NV_EGL_stream_consumer_external
915bd8deadSopenharmony_ci     * is used, also available if GL_OES_EGL_image_external is
925bd8deadSopenharmony_ci     * supported and
935bd8deadSopenharmony_ci     *      #extension GL_OES_EGL_image_external
945bd8deadSopenharmony_ci     * is used.
955bd8deadSopenharmony_ci     */
965bd8deadSopenharmony_ci    samplerExternalOES
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ciNew Tokens
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci     Accepted as a target in the <target> parameter of BindTexture:
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci        TEXTURE_EXTERNAL_OES                                0x8D65
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    (OpenGL ES 2.x only) Returned in the <type> parameter of GetActiveUniform:
1055bd8deadSopenharmony_ci        SAMPLER_EXTERNAL_OES                                0x8D66
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci    Accepted as <value> in GetIntegerv() and GetFloatv() queries:
1085bd8deadSopenharmony_ci        TEXTURE_BINDING_EXTERNAL_OES                        0x8D67
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    Accepted as <value> in GetTexParameter*() queries:
1115bd8deadSopenharmony_ci        REQUIRED_TEXTURE_IMAGE_UNITS_OES                    0x8D68
1125bd8deadSopenharmony_ci    
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.1 or OpenGL 2.0 Specification
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    - For OpenGL ES 2.0 add a new section: "3.7.14 External Textures,"
1175bd8deadSopenharmony_ci    which follows section "3.7.13 Texture Objects."  For OpenGL ES 1.1
1185bd8deadSopenharmony_ci    add the new section after section "3.7.11 Texture Objects." If the
1195bd8deadSopenharmony_ci    GL_OES_EGL_image_external extension is also present, then skip
1205bd8deadSopenharmony_ci    this addition (use section "3.7.14 External Textures," from that
1215bd8deadSopenharmony_ci    extension as-is).  If the GL_OES_EGL_image_external extension is
1225bd8deadSopenharmony_ci    not present then insert it as follows (this is a subset of the
1235bd8deadSopenharmony_ci    section "3.7.14 External Textures" from
1245bd8deadSopenharmony_ci    GL_OES_EGL_image_external).
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci        "3.7.14 External Textures
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci        External textures cannot be used with TexImage2D,
1295bd8deadSopenharmony_ci        TexSubImage2D, CompressedTexImage2D, CompressedTexSubImage2D,
1305bd8deadSopenharmony_ci        CopyTexImage2D, or CopyTexSubImage2D, and an INVALID_ENUM
1315bd8deadSopenharmony_ci        error will be generated if this is attempted.  Their default
1325bd8deadSopenharmony_ci        min filter is LINEAR.  It is an INVALID_ENUM error to set the
1335bd8deadSopenharmony_ci        min filter value to anything other than LINEAR or NEAREST.
1345bd8deadSopenharmony_ci        The default s and t wrap modes are CLAMP_TO_EDGE and it is an
1355bd8deadSopenharmony_ci        INVALID_ENUM error to set the wrap mode to any other value.
1365bd8deadSopenharmony_ci        (For OpenGL ES 1.x only: The texture parameter GENERATE_MIPMAP
1375bd8deadSopenharmony_ci        is always FALSE, and setting it to any other value generates
1385bd8deadSopenharmony_ci        an INVALID_ENUM error.  (For OpenGL ES 2.x only: Calling
1395bd8deadSopenharmony_ci        GenerateMipmaps with <target> set to TEXTURE_EXTERNAL_OES
1405bd8deadSopenharmony_ci        results in an INVALID_ENUM.)
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci        Each TEXTURE_EXTERNAL_OES texture object may require up to 3
1435bd8deadSopenharmony_ci        texture image units for each texture unit to which it is
1445bd8deadSopenharmony_ci        bound.  The number of texture image units required by a bound
1455bd8deadSopenharmony_ci        texture object can be queried using GetTexParameteriv() with
1465bd8deadSopenharmony_ci        <target> set to the texture target in question, <value> set to
1475bd8deadSopenharmony_ci        REQUIRED_TEXTURE_IMAGE_UNITS_OES, and ActiveTexture set to the
1485bd8deadSopenharmony_ci        texture unit to which the texture object is bound.  When
1495bd8deadSopenharmony_ci        <target> is set to TEXTURE_EXTERNAL_OES this value will be
1505bd8deadSopenharmony_ci        between 1 and 3 (inclusive).  For other valid texture targets
1515bd8deadSopenharmony_ci        this value will always be 1.  Note that, when a
1525bd8deadSopenharmony_ci        TEXTURE_EXTERNAL_OES texture object is bound, the number of
1535bd8deadSopenharmony_ci        texture image units required by a single texture unit may be
1545bd8deadSopenharmony_ci        1, 2, or 3, while for other texture objects each texture unit
1555bd8deadSopenharmony_ci        requires exactly 1 texture image unit.
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci        (For OpenGL ES 1.x only) DrawArrays and DrawElements will fail
1585bd8deadSopenharmony_ci        and generate an INVALID_OPERATION error if the number of
1595bd8deadSopenharmony_ci        texture image units required is greater than the number
1605bd8deadSopenharmony_ci        available.  The number of required texture image units is
1615bd8deadSopenharmony_ci        equal to the sum of the requirements for each enabled texture
1625bd8deadSopenharmony_ci        unit.  For each texture unit the requirement is the value
1635bd8deadSopenharmony_ci        returned by GetTexParameteriv() when <value> is set to
1645bd8deadSopenharmony_ci        REQUIRED_TEXTURE_IMAGE_UNITS_OES, <target> is set to the
1655bd8deadSopenharmony_ci        target which is enabled, and ActiveTexture has been set to the
1665bd8deadSopenharmony_ci        texture unit in question.
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci        (For OpenGL ES 2.x only) DrawArrays and DrawElements will fail
1695bd8deadSopenharmony_ci        and generate an INVALID_OPERATION error if the number of
1705bd8deadSopenharmony_ci        texture image units required is greater than the number
1715bd8deadSopenharmony_ci        available.  The number of required texture image units for
1725bd8deadSopenharmony_ci        each stage (fragment or vertex) is equal to the sum of the
1735bd8deadSopenharmony_ci        requirements for each sampler referenced by the stage.  A
1745bd8deadSopenharmony_ci        sampler is considered referenced if its location (returned by
1755bd8deadSopenharmony_ci        GetUniformLocation) is not -1.  For each referenced sampler
1765bd8deadSopenharmony_ci        the requirement is the value returned by GetTexParameteriv()
1775bd8deadSopenharmony_ci        when <value> is set to REQUIRED_TEXTURE_IMAGE_UNITS_OES,
1785bd8deadSopenharmony_ci        <target> is set to the target corresponding to the sampler
1795bd8deadSopenharmony_ci        type, and ActiveTexture has been set to the texture unit
1805bd8deadSopenharmony_ci        corresponding to the value of the sampler uniform.  The
1815bd8deadSopenharmony_ci        condition can be detected by calling ValidateProgram.
1825bd8deadSopenharmony_ci
1835bd8deadSopenharmony_ci        (For OpenGL ES 2.x only) A shader that uses external texture
1845bd8deadSopenharmony_ci        samplers may require some number of hidden uniform variables
1855bd8deadSopenharmony_ci        to implement the conversion from YUV to RGB, and this may
1865bd8deadSopenharmony_ci        reduce the amount of space available for uniforms defined by
1875bd8deadSopenharmony_ci        the shader program.  This may cause a shader program which was
1885bd8deadSopenharmony_ci        working to stop working when a different external texture is
1895bd8deadSopenharmony_ci        used (i.e. when Uniform1i or BindTexture is called).  If there
1905bd8deadSopenharmony_ci        are not enough uniforms available then calls to DrawArrays or
1915bd8deadSopenharmony_ci        DrawElements will fail and generate an INVALID_OPERATION
1925bd8deadSopenharmony_ci        error.  This condition can be detected by calling
1935bd8deadSopenharmony_ci        ValidateProgram.
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ci        Sampling an external texture will return an RGBA vector in the
1965bd8deadSopenharmony_ci        same colorspace as the source image frame.  If the source
1975bd8deadSopenharmony_ci        image frame is stored in YUV (or some other basis) then the
1985bd8deadSopenharmony_ci        YUV values will be transformed to RGB values. (But these RGB
1995bd8deadSopenharmony_ci        values will be in the same colorspace as the original image.
2005bd8deadSopenharmony_ci        Colorspace here includes the linear or non-linear encoding of
2015bd8deadSopenharmony_ci        the samples. For example, if the original image is in the sRGB
2025bd8deadSopenharmony_ci        color space then the RGB value returned by the sampler will
2035bd8deadSopenharmony_ci        also be sRGB, and if the original image is stored in ITU-R
2045bd8deadSopenharmony_ci        Rec. 601 YV12 then the RGB value returned by the sampler will
2055bd8deadSopenharmony_ci        be an RGB value in the ITU-R Rec. 601 colorspace.) The
2065bd8deadSopenharmony_ci        parameters of the transformation from one basis (e.g.  YUV) to
2075bd8deadSopenharmony_ci        RGB (color conversion matrix, sampling offsets, etc) are taken
2085bd8deadSopenharmony_ci        from the producer of the EGLStream that is associated with the
2095bd8deadSopenharmony_ci        external texture.
2105bd8deadSopenharmony_ci        
2115bd8deadSopenharmony_ci        If the image frames in the EGLStream contain alpha values then
2125bd8deadSopenharmony_ci        the value of the alpha component returned is taken from the
2135bd8deadSopenharmony_ci        image; otherwise the alpha component is 1.0.  
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    - In both OpenGL ES 1.x and OpenGL ES 2.0 add a new subsection after
2175bd8deadSopenharmony_ci      the previously described "3.7.14 External Textures" section:
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci        "3.7.14.1 External Textures as Stream Consumers
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ci        To use a TEXTURE_EXTERNAL_OES texture as the consumer of an
2225bd8deadSopenharmony_ci        EGLStream, bind the texture to the active texture unit, and
2235bd8deadSopenharmony_ci        call eglStreamConsumerGLTextureExternalNV() as described in the
2245bd8deadSopenharmony_ci        EGL_NV_stream_consumer_gltexture extension.  The EGLStream
2255bd8deadSopenharmony_ci        must be in the EGL_STREAM_STATE_CREATED_KHR state (i.e. it
2265bd8deadSopenharmony_ci        must not be associated with any consumer or producer yet).
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci        The width, height, format, type, internalformat, border, and
2295bd8deadSopenharmony_ci        image data of the TEXTURE_EXTERNAL_OES texture will all be
2305bd8deadSopenharmony_ci        determined based on the specified EGLStream <stream> once
2315bd8deadSopenharmony_ci        <stream> is associated with a producer.  Until <stream> is
2325bd8deadSopenharmony_ci        associated with a producer these attributes are undefined.
2335bd8deadSopenharmony_ci        Once <stream> is associated with a producer and the producer
2345bd8deadSopenharmony_ci        has inserted one (or more) images into <stream> (as described
2355bd8deadSopenharmony_ci        in the EGL_NV_stream_consumer_gltexture extension) these
2365bd8deadSopenharmony_ci        attributes are determined (internally by the implementation),
2375bd8deadSopenharmony_ci        but they are not exposed to the GL client and there is no way
2385bd8deadSopenharmony_ci        to query their values.
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ci        (Add this paragraph only if OES_EGL_image_external is also
2415bd8deadSopenharmony_ci        supported.) If the TEXTURE_EXTERNAL_OES texture is already
2425bd8deadSopenharmony_ci        bound to an EGLImage then that binding is broken when the
2435bd8deadSopenharmony_ci        texture becomes the consumer of <stream> (i.e. when
2445bd8deadSopenharmony_ci        eglStreamConsumerGLTextureNV() returns successfully). 
2455bd8deadSopenharmony_ci        
2465bd8deadSopenharmony_ci        The TEXTURE_EXTERNAL_OES texture remains the consumer of
2475bd8deadSopenharmony_ci        <stream> until the first of any of these events occur:
2485bd8deadSopenharmony_ci            - The texture is associated with a different EGLStream
2495bd8deadSopenharmony_ci              (with a later call to eglStreamConsumerGLTextureNV).
2505bd8deadSopenharmony_ci            - The texture is bound to an EGLImage (with a call to
2515bd8deadSopenharmony_ci              EGLImageTargetTexture2DOES).
2525bd8deadSopenharmony_ci            - The texture is deleted in a call to DeleteTextures().
2535bd8deadSopenharmony_ci        When any of these events occurs the texture is no longer the
2545bd8deadSopenharmony_ci        consumer of <stream>, and <stream> transitions to the
2555bd8deadSopenharmony_ci        EGL_STREAM_STATE_DISCONNECTED_KHR state (as described in the
2565bd8deadSopenharmony_ci        EGL_NV_stream_consumer_gltexture and EGL_KHR_stream
2575bd8deadSopenharmony_ci        extensions).
2585bd8deadSopenharmony_ci        
2595bd8deadSopenharmony_ci        Sampling an external texture which is not the consumer of any
2605bd8deadSopenharmony_ci        EGLStream and is not associated with any EGLImage sibling will
2615bd8deadSopenharmony_ci        return a sample value of (0,0,0,1). 
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci        Sampling an external texture which is the consumer of an
2645bd8deadSopenharmony_ci        EGLStream will return a sample value of (0,0,0,1) unless an
2655bd8deadSopenharmony_ci        image frame is currently 'latched' into the texture.  An image
2665bd8deadSopenharmony_ci        frame is 'latched' into the texture by any successful call to
2675bd8deadSopenharmony_ci        eglStreamConsumerAcquireNV (as described in the
2685bd8deadSopenharmony_ci        EGL_NV_stream_consumer_gltexture extension).  A call to
2695bd8deadSopenharmony_ci        eglStreamConsumerReleaseNV() unlatches the image frame from
2705bd8deadSopenharmony_ci        the texture.
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        Any context which is bound to the thread that
2735bd8deadSopenharmony_ci        eglStreamConsumerAcquireNV and eglStreamConsumerReleaseNV is
2745bd8deadSopenharmony_ci        called from will "see" the affect of the 'latching' or
2755bd8deadSopenharmony_ci        'unlatching' immediately.  Contexts not bound to that thread
2765bd8deadSopenharmony_ci        may or may not "see" the effects of latching until the
2775bd8deadSopenharmony_ci        texture is bound (or re-bound) to the context by calling
2785bd8deadSopenharmony_ci        glBindTexture.
2795bd8deadSopenharmony_ci        
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ciChanges to section "2.10.4 Shader Variables" of the OpenGL ES 2.0
2825bd8deadSopenharmony_cispecification (ignore for OpenGL ES 1.x)
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    - In the subsection "Uniform Variables" paragraph 13, last sentence, add
2855bd8deadSopenharmony_ci
2865bd8deadSopenharmony_ci        "SAMPLER_EXTERNAL_OES"
2875bd8deadSopenharmony_ci    to the list of types that can be returned.
2885bd8deadSopenharmony_ci    
2895bd8deadSopenharmony_ciChanges to section "2.10.5 Shader Execution" of the OpenGL ES 2.0
2905bd8deadSopenharmony_cispecification (ignore for OpenGL ES 1.x)
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci    - In the subsection "Validation", add to the bullet points in the second
2935bd8deadSopenharmony_ci      paragraph:
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci        "- the number of texture image units required is greater than
2965bd8deadSopenharmony_ci           the number available (see REQUIRED_TEXTURE_IMAGE_UNITS_OES,
2975bd8deadSopenharmony_ci           MAX_COMBINED_TEXTURE_IMAGE_UNITS, MAX_VERTEX_TEXTURE_IMAGE_UNITS,
2985bd8deadSopenharmony_ci           and MAX_TEXTURE_IMAGE_UNITS).
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci        - the number of uniforms required to implement the shader program is
3015bd8deadSopenharmony_ci           greater than the number available."
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ciChanges to section "3.7.5 Texture Parameters" of the OpenGL ES 1.1 specification
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci    - Add to the end of the section a new paragraph:
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ci            "When <target> is TEXTURE_EXTERNAL_OES only NEAREST and LINEAR are
3085bd8deadSopenharmony_ci        accepted as TEXTURE_MIN_FILTER, only CLAMP_TO_EDGE is accepted as
3095bd8deadSopenharmony_ci        TEXTURE_WRAP_S and TEXTURE_WRAP_T, and only FALSE is accepted as
3105bd8deadSopenharmony_ci        GENERATE_MIPMAP.  Attempting to set other values for
3115bd8deadSopenharmony_ci        TEXTURE_MIN_FILTER, TEXTURE_WRAP_S, TEXTURE_WRAP_T, or GENERATE_MIPMAP
3125bd8deadSopenharmony_ci        will result in an INVALID_ENUM error.
3135bd8deadSopenharmony_ci
3145bd8deadSopenharmony_ciChanges to section "3.7.4 Texture Parameters" of the OpenGL ES 2.0 Specification
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci    - Add to the end of the section a new paragraph:
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci            "When <target> is TEXTURE_EXTERNAL_OES only NEAREST and LINEAR are
3195bd8deadSopenharmony_ci        accepted as TEXTURE_MIN_FILTER and only CLAMP_TO_EDGE is accepted as
3205bd8deadSopenharmony_ci        TEXTURE_WRAP_S and TEXTURE_WRAP_T.  Attempting to set other values for
3215bd8deadSopenharmony_ci        TEXTURE_MIN_FILTER, TEXTURE_WRAP_S, or TEXTURE_WRAP_T will result in
3225bd8deadSopenharmony_ci        an INVALID_ENUM error.
3235bd8deadSopenharmony_ci
3245bd8deadSopenharmony_ciChanges to section "3.7.10 Texture State" of the OpenGL ES 1.1 Specification
3255bd8deadSopenharmony_ciand section "3.7.12 Texture State" of the OpenGL ES 2.0 Specification
3265bd8deadSopenharmony_ci
3275bd8deadSopenharmony_ci    - Add an additional sentence at the end of the section:
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci            "In the initial state of a TEXTURE_EXTERNAL_OES texture object,
3305bd8deadSopenharmony_ci        the value assigned to TEXTURE_MIN_FILTER and TEXTURE_MAG_FILTER is
3315bd8deadSopenharmony_ci        LINEAR, and the s and t wrap modes are both set to
3325bd8deadSopenharmony_ci        CLAMP_TO_EDGE."
3335bd8deadSopenharmony_ci
3345bd8deadSopenharmony_ciChanges to section "3.7.11 Mipmap Generation" of the OpenGL ES 2.0 Specification
3355bd8deadSopenharmony_ci(ignore for OpenGL ES 1.x)
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ci    - Add two additional paragraphs to the end of the section:
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci            "When <target> is set to TEXTURE_EXTERNAL_OES, GenerateMipmap
3405bd8deadSopenharmony_ci        always fails and generates an INVALID_ENUM error."
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ciChanges to section "3.7.11 Texture Objects" of the OpenGL ES 1.1 specification
3435bd8deadSopenharmony_ci(ignore for OpenGL ES 2.x)
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    - Modify this section as follows: (changed lines marked with *, and added
3465bd8deadSopenharmony_ci      lines are marked with +)
3475bd8deadSopenharmony_ci
3485bd8deadSopenharmony_ci*           "In addition to the default textures TEXTURE_2D and
3495bd8deadSopenharmony_ci*       TEXTURE_EXTERNAL_OES, named two-dimensional and external texture
3505bd8deadSopenharmony_ci        objects can be created and operated upon.  The name space for texture
3515bd8deadSopenharmony_ci        objects is the unsigned integers, with zero reserved by the GL.
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci            A texture object is created by binding an unused name to
3545bd8deadSopenharmony_ci*       TEXTURE_2D or TEXTURE_EXTERNAL_OES. The binding is effected by calling
3555bd8deadSopenharmony_ci               void BindTexture( enum target, uint texture );
3565bd8deadSopenharmony_ci*       with target set to the desired texture target and texture set to the
3575bd8deadSopenharmony_ci        unused name. The resulting texture object is a new state vector,
3585bd8deadSopenharmony_ci        comprising all the state values listed in section 3.7.10, set to the
3595bd8deadSopenharmony_ci+       same initial values. If the new texture object is bound to TEXTURE_2D
3605bd8deadSopenharmony_ci+       or TEXTURE_EXTERNAL_OES it is and remains a two-dimensional or
3615bd8deadSopenharmony_ci+       external texture respectively until it is deleted.
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci            BindTexture may also be used to bind an existing texture object to
3645bd8deadSopenharmony_ci*       TEXTURE_2D or TEXTURE_EXTERNAL_OES. If the bind is successful no
3655bd8deadSopenharmony_ci        change is made to the state of the bound texture object, and any
3665bd8deadSopenharmony_ci        previous binding to target is broken.
3675bd8deadSopenharmony_ci
3685bd8deadSopenharmony_ci            While a texture object is bound, GL operations on the target to
3695bd8deadSopenharmony_ci        which it is bound affect the bound object, and queries of the target
3705bd8deadSopenharmony_ci        to which it is bound return state from the bound object. If texture
3715bd8deadSopenharmony_ci        mapping is enabled, the state of the bound texture object directs the
3725bd8deadSopenharmony_ci        texturing operation. 
3735bd8deadSopenharmony_ci
3745bd8deadSopenharmony_ci*       In the initial state, TEXTURE_2D and TEXTURE_EXTERNAL_OES have
3755bd8deadSopenharmony_ci*       two-dimensional and external texture state vectors respectively
3765bd8deadSopenharmony_ci*       associated with them.  In order that access to these initial textures
3775bd8deadSopenharmony_ci*       not be lost, they are treated as texture objects all of whose names
3785bd8deadSopenharmony_ci*       are 0. The initial two-dimensional and external texture are therefore
3795bd8deadSopenharmony_ci*       operated upon, queried, and applied as TEXTURE_2D or
3805bd8deadSopenharmony_ci*       TEXTURE_EXTERNAL_OES respectively while 0 is bound to the
3815bd8deadSopenharmony_ci*       corresponding targets.
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci            Texture objects are deleted by calling
3845bd8deadSopenharmony_ci               void DeleteTextures( sizei n, uint *textures );
3855bd8deadSopenharmony_ci        textures contains n names of texture objects to be deleted. After a
3865bd8deadSopenharmony_ci        texture object is deleted, it has no contents, and its name is again
3875bd8deadSopenharmony_ci        unused. If a texture that is currently bound to the target TEXTURE_2D
3885bd8deadSopenharmony_ci*       or TEXTURE_EXTERNAL_OES is deleted, it is as though BindTexture had
3895bd8deadSopenharmony_ci        been executed with the same target and texture zero. Unused names in
3905bd8deadSopenharmony_ci        textures are silently ignored, as is the value zero.
3915bd8deadSopenharmony_ci
3925bd8deadSopenharmony_ci            The command
3935bd8deadSopenharmony_ci               void GenTextures( sizei n, uint *textures );
3945bd8deadSopenharmony_ci        returns n previously unused texture object names in textures. These
3955bd8deadSopenharmony_ci        names are marked as used, for the purposes of GenTextures only, but
3965bd8deadSopenharmony_ci        they acquire texture state only when they are first bound, just as if
3975bd8deadSopenharmony_ci        they were unused.
3985bd8deadSopenharmony_ci
3995bd8deadSopenharmony_ci            The texture object name space, including the initial texture
4005bd8deadSopenharmony_ci        object, is shared among all texture units. A texture object may be
4015bd8deadSopenharmony_ci        bound to more than one texture unit simultaneously. After a texture
4025bd8deadSopenharmony_ci        object is bound, any GL operations on that target object affect any
4035bd8deadSopenharmony_ci        other texture units to which the same texture object is bound.
4045bd8deadSopenharmony_ci
4055bd8deadSopenharmony_ci            Texture binding is affected by the setting of the state
4065bd8deadSopenharmony_ci        ACTIVE_TEXTURE.
4075bd8deadSopenharmony_ci
4085bd8deadSopenharmony_ci            If a texture object is deleted, it is as if all texture units which
4095bd8deadSopenharmony_ci        are bound to that texture object are rebound to texture object zero.
4105bd8deadSopenharmony_ci
4115bd8deadSopenharmony_ciChanges to section "3.7.13 Texture Objects" of the OpenGL ES 2.0 specification
4125bd8deadSopenharmony_ci(ignore for OpenGL ES 1.x)
4135bd8deadSopenharmony_ci
4145bd8deadSopenharmony_ci    - Modify this section as follows: (changed lines marked with *, and added
4155bd8deadSopenharmony_ci      lines are marked with +)
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ci*           "In addition to the default textures TEXTURE_2D, TEXTURE_CUBE_MAP,
4185bd8deadSopenharmony_ci*       and TEXTURE_EXTERNAL_OES, named two-dimensional, cube map, and
4195bd8deadSopenharmony_ci        external texture objects can be created and operated upon.  The name
4205bd8deadSopenharmony_ci        space for texture objects is the unsigned integers, with zero reserved
4215bd8deadSopenharmony_ci        by the GL.
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci            A texture object is created by binding an unused name to
4245bd8deadSopenharmony_ci*       TEXTURE_2D, TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL_OES. The binding is
4255bd8deadSopenharmony_ci        effected by calling
4265bd8deadSopenharmony_ci               void BindTexture( enum target, uint texture );
4275bd8deadSopenharmony_ci        with target set to the desired texture target and texture set to the
4285bd8deadSopenharmony_ci        unused name. The resulting texture object is a new state vector,
4295bd8deadSopenharmony_ci        comprising all the state values listed in section 3.7.12, set to the
4305bd8deadSopenharmony_ci        same initial values. If the new texture object is bound to TEXTURE_2D,
4315bd8deadSopenharmony_ci*       TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL_OES it is and remains a
4325bd8deadSopenharmony_ci*       two-dimensional, cube map, or external texture respectively until it
4335bd8deadSopenharmony_ci        is deleted.
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ci            BindTexture may also be used to bind an existing texture object to
4365bd8deadSopenharmony_ci*       either TEXTURE_2D, TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL_OES. The error
4375bd8deadSopenharmony_ci        INVALID_OPERATION is generated if an attempt is made to bind a texture
4385bd8deadSopenharmony_ci*       object of different target than the specified target. If the bind is
4395bd8deadSopenharmony_ci        successful no change is made to the state of the bound texture object,
4405bd8deadSopenharmony_ci        and any previous binding to target is broken.
4415bd8deadSopenharmony_ci
4425bd8deadSopenharmony_ci            While a texture object is bound, GL operations on the target to
4435bd8deadSopenharmony_ci        which it is bound affect the bound object, and queries of the target to
4445bd8deadSopenharmony_ci        which it is bound return state from the bound object. If texture
4455bd8deadSopenharmony_ci        mapping is enabled, the state of the bound texture object directs the
4465bd8deadSopenharmony_ci        texturing operation.
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ci*           In the initial state, TEXTURE_2D, TEXTURE_CUBE_MAP, and
4495bd8deadSopenharmony_ci*       TEXTURE_EXTERNAL_OES have two-dimensional, cube map, and external
4505bd8deadSopenharmony_ci        texture state vectors respectively associated with them.  In order
4515bd8deadSopenharmony_ci        that access to these initial textures not be lost, they are treated as
4525bd8deadSopenharmony_ci        texture objects all of whose names are 0. The initial two-dimensional,
4535bd8deadSopenharmony_ci*       cube map, and external texture are therefore operated upon, queried,
4545bd8deadSopenharmony_ci*       and applied as TEXTURE_2D, TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL_OES
4555bd8deadSopenharmony_ci        respectively while 0 is bound to the corresponding targets. 
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci            Texture objects are deleted by calling
4585bd8deadSopenharmony_ci               void DeleteTextures( sizei n, uint *textures );
4595bd8deadSopenharmony_ci        textures contains n names of texture objects to be deleted. After a
4605bd8deadSopenharmony_ci        texture object is deleted, it has no contents or dimensionality, and
4615bd8deadSopenharmony_ci        its name is again unused. If a texture that is currently bound to one
4625bd8deadSopenharmony_ci*       of the targets TEXTURE_2D, TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL_OES
4635bd8deadSopenharmony_ci        is deleted, it is as though BindTexture had been executed with the
4645bd8deadSopenharmony_ci        same target and texture zero.  Unused names in textures are silently
4655bd8deadSopenharmony_ci        ignored, as is the value zero.
4665bd8deadSopenharmony_ci
4675bd8deadSopenharmony_ci            The command
4685bd8deadSopenharmony_ci               void GenTextures( sizei n, uint *textures );
4695bd8deadSopenharmony_ci        returns n previously unused texture object names in textures. These
4705bd8deadSopenharmony_ci        names are marked as used, for the purposes of GenTextures only, but
4715bd8deadSopenharmony_ci        they acquire texture state only when they are first bound, just as if
4725bd8deadSopenharmony_ci        they were unused.
4735bd8deadSopenharmony_ci
4745bd8deadSopenharmony_ci            The texture object name space, including the initial texture
4755bd8deadSopenharmony_ci        object, is shared among all texture units. A texture object may be
4765bd8deadSopenharmony_ci        bound to more than one texture unit simultaneously. After a texture
4775bd8deadSopenharmony_ci        object is bound, any GL operations on that target object affect any
4785bd8deadSopenharmony_ci        other texture units to which the same texture object is bound.
4795bd8deadSopenharmony_ci
4805bd8deadSopenharmony_ci            Texture binding is affected by the setting of the state
4815bd8deadSopenharmony_ci        ACTIVE_TEXTURE.
4825bd8deadSopenharmony_ci
4835bd8deadSopenharmony_ci            If a texture object is deleted, it is as if all texture units which
4845bd8deadSopenharmony_ci        are bound to that texture object are rebound to texture object zero.
4855bd8deadSopenharmony_ci
4865bd8deadSopenharmony_ciChanges to section "3.7.13 Texture Application" of the OpenGL ES 1.1
4875bd8deadSopenharmony_cispecification (ignore for OpenGL ES 2.x)
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci    - Replace the first sentence of the first paragraph with:
4905bd8deadSopenharmony_ci
4915bd8deadSopenharmony_ci            "Texturing is enabled or disabled using the generic Enable and
4925bd8deadSopenharmony_ci        Disable commands, with the symbolic constant TEXTURE_2D or
4935bd8deadSopenharmony_ci        TEXTURE_EXTERNAL_OES to enable or disable texturing with the
4945bd8deadSopenharmony_ci        TEXTURE_2D or TEXTURE_EXTERNAL_OES texture target, respectively.  If
4955bd8deadSopenharmony_ci        TEXTURE_EXTERNAL_OES is enabled it takes precedence over TEXTURE_2D, 
4965bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_OES, TEXTURE_RECTANGLE_ARB, and
4975bd8deadSopenharmony_ci        TEXTURE_RECTANGLE_NV."
4985bd8deadSopenharmony_ci
4995bd8deadSopenharmony_ciChanges to section "3.8.2 Shader Execution" of the OpenGL ES 2.0
5005bd8deadSopenharmony_cispecification (ignore for OpenGL ES 1.x)
5015bd8deadSopenharmony_ci
5025bd8deadSopenharmony_ci    - Add to the end of the last paragraph of the subsection "Texture Access"
5035bd8deadSopenharmony_ci
5045bd8deadSopenharmony_ci        "The REQUIRED_TEXTURE_IMAGE_UNITS_OES parameter can change based on the
5055bd8deadSopenharmony_ci        number of external textures which are currently bound (see section
5065bd8deadSopenharmony_ci        3.7.14)."
5075bd8deadSopenharmony_ci
5085bd8deadSopenharmony_ciChanges to section "6.1.3 Enumerated Queries" of the OpenGL ES 1.1 specification
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci    - Change:
5115bd8deadSopenharmony_ci        "...TEXTURE_2D..."
5125bd8deadSopenharmony_ci      to
5135bd8deadSopenharmony_ci        "...TEXTURE_2D or TEXTURE_EXTERNAL..."
5145bd8deadSopenharmony_ci      in the last paragraph.
5155bd8deadSopenharmony_ci
5165bd8deadSopenharmony_ciChanges to section "6.1.3 Enumerated Queries" of the OpenGL ES 2.0 specification
5175bd8deadSopenharmony_ci
5185bd8deadSopenharmony_ci    - Change:
5195bd8deadSopenharmony_ci        "...TEXTURE_2D or TEXTURE_CUBE_MAP..."
5205bd8deadSopenharmony_ci      to
5215bd8deadSopenharmony_ci        "...TEXTURE_2D, TEXTURE_CUBE_MAP, or TEXTURE_EXTERNAL..."
5225bd8deadSopenharmony_ci      in the second paragraph.
5235bd8deadSopenharmony_ci
5245bd8deadSopenharmony_ci
5255bd8deadSopenharmony_ciChanges to section "6.2 State Tables" of the OpenGL ES 1.1 specification
5265bd8deadSopenharmony_ci
5275bd8deadSopenharmony_ci    - Add to "Table 6.13 Textures (state per texture unit and binding point)"
5285bd8deadSopenharmony_ci
5295bd8deadSopenharmony_ci        +-------------------+-------+-------------+-------+------------------+
5305bd8deadSopenharmony_ci        | TEXTURE_BINDING_- | 8*xZ+ | GetIntegerv | 0     | Texture object   |
5315bd8deadSopenharmony_ci        |   EXTERNAL_OES    |       |             |       | bound to         |
5325bd8deadSopenharmony_ci        |                   |       |             |       | TEXTURE_-        |
5335bd8deadSopenharmony_ci        |                   |       |             |       |    EXTERNAL_OES  |
5345bd8deadSopenharmony_ci        +-------------------+-------+-------------+-------+------------------+
5355bd8deadSopenharmony_ci        | TEXTURE_-         | 2*xB  | IsEnabled   | False | True if external |
5365bd8deadSopenharmony_ci        |   EXTERNAL_OES    |       |             |       | texturing is     |
5375bd8deadSopenharmony_ci        |                   |       |             |       | enabled          |
5385bd8deadSopenharmony_ci        +-------------------+-------+-------------+---+----------------------+
5395bd8deadSopenharmony_ci
5405bd8deadSopenharmony_ci    - Add to "Table 6.14 Textures (state per texture object)"
5415bd8deadSopenharmony_ci
5425bd8deadSopenharmony_ci        +--------------------+-------+-----------------+---+----------------+
5435bd8deadSopenharmony_ci        | REQUIRED_TEXTURE_- | n*xZ3 | GetTexParameter | 1 | Number of      |
5445bd8deadSopenharmony_ci        |   IMAGE_UNITS_OES  |       |                 |   | texture image  |
5455bd8deadSopenharmony_ci        |                    |       |                 |   | units required |
5465bd8deadSopenharmony_ci        |                    |       |                 |   |    by texture  |
5475bd8deadSopenharmony_ci        +--------------------+-------+-----------------+---+----------------+
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ciChanges to section "6.2 State Tables" of the OpenGL ES 2.0 specification
5505bd8deadSopenharmony_ci
5515bd8deadSopenharmony_ci    - Add to "Table 6.7 Textures (state per texture unit and binding point)"
5525bd8deadSopenharmony_ci
5535bd8deadSopenharmony_ci        +-------------------+-------+-------------+-------+------------------+
5545bd8deadSopenharmony_ci        | TEXTURE_BINDING_- | 8*xZ+ | GetIntegerv | 0     | Texture object   |
5555bd8deadSopenharmony_ci        |   EXTERNAL_OES    |       |             |       | bound to         |
5565bd8deadSopenharmony_ci        |                   |       |             |       | TEXTURE_-        |
5575bd8deadSopenharmony_ci        |                   |       |             |       |    EXTERNAL_OES  |
5585bd8deadSopenharmony_ci        +-------------------+-------+-------------+-------+------------------+
5595bd8deadSopenharmony_ci
5605bd8deadSopenharmony_ci    - Add to "Table 6.8 Textures (state per texture object)"
5615bd8deadSopenharmony_ci
5625bd8deadSopenharmony_ci        +--------------------+-------+-----------------+---+----------------+
5635bd8deadSopenharmony_ci        | REQUIRED_TEXTURE_- | n*xZ3 | GetTexParameter | 1 | Number of      |
5645bd8deadSopenharmony_ci        |   IMAGE_UNITS_OES  |       |                 |   | texture image  |
5655bd8deadSopenharmony_ci        |                    |       |                 |   | units required |
5665bd8deadSopenharmony_ci        |                    |       |                 |   |    by texture  |
5675bd8deadSopenharmony_ci        +--------------------+-------+-----------------+---+----------------+
5685bd8deadSopenharmony_ci
5695bd8deadSopenharmony_ciChanges to section 3.7 of the OpenGL ES Shading Language specification
5705bd8deadSopenharmony_ci
5715bd8deadSopenharmony_ci    - Add to the list of keywords:
5725bd8deadSopenharmony_ci
5735bd8deadSopenharmony_ci        "samplerExternalOES"
5745bd8deadSopenharmony_ci
5755bd8deadSopenharmony_ciChanges to section 4.1 of the OpenGL ES Shading Language specification
5765bd8deadSopenharmony_ci
5775bd8deadSopenharmony_ci    - Add to the list of basic types:
5785bd8deadSopenharmony_ci
5795bd8deadSopenharmony_ci        "samplerExternalOES   a handle for accessing an external texture"
5805bd8deadSopenharmony_ci
5815bd8deadSopenharmony_ciChanges to section 4.5.3 of the OpenGL ES Shading Language specification
5825bd8deadSopenharmony_ci    
5835bd8deadSopenharmony_ci    - Add to the list of "vertex language has the following predeclared
5845bd8deadSopenharmony_ci    globally scoped default precision statements:"
5855bd8deadSopenharmony_ci
5865bd8deadSopenharmony_ci        "precision lowp samplerExternalOES;"
5875bd8deadSopenharmony_ci
5885bd8deadSopenharmony_ci    - Add to the list of "fragment language has the following predeclared
5895bd8deadSopenharmony_ci    globally scoped default precision statements:"
5905bd8deadSopenharmony_ci
5915bd8deadSopenharmony_ci        "precision lowp samplerExternalOES;"
5925bd8deadSopenharmony_ci
5935bd8deadSopenharmony_ciChanges to section 8.7 of the OpenGL ES Shading Language specification
5945bd8deadSopenharmony_ci
5955bd8deadSopenharmony_ci    - Add to the table the following sampler functions:
5965bd8deadSopenharmony_ci
5975bd8deadSopenharmony_ci        "vec4 texture2D(
5985bd8deadSopenharmony_ci                    samplerExternalOES sampler,
5995bd8deadSopenharmony_ci                    vec2 coord)
6005bd8deadSopenharmony_ci        vec4 texture2DProj(
6015bd8deadSopenharmony_ci                    samplerExternalOES sampler,
6025bd8deadSopenharmony_ci                    vec3 coord)
6035bd8deadSopenharmony_ci        vec4 texture2DProj(
6045bd8deadSopenharmony_ci                    samplerExternalOES sampler,
6055bd8deadSopenharmony_ci                    vec4 coord)"
6065bd8deadSopenharmony_ci
6075bd8deadSopenharmony_ci
6085bd8deadSopenharmony_ciChanges to section 9 of the OpenGL ES Shading Language specification
6095bd8deadSopenharmony_ci
6105bd8deadSopenharmony_ci    - Add to token list:
6115bd8deadSopenharmony_ci
6125bd8deadSopenharmony_ci        "SAMPLEREXTERNAL"
6135bd8deadSopenharmony_ci
6145bd8deadSopenharmony_ci    - Add following "type_specifier_no_prec:"
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ci        "SAMPLEREXTERNAL"
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ciChanges to section "A.7 Counting of Varyings and Uniforms" of the OpenGL ES
6195bd8deadSopenharmony_ciShading Language specification
6205bd8deadSopenharmony_ci
6215bd8deadSopenharmony_ci    - Change the first sentence of the last paragraph to
6225bd8deadSopenharmony_ci
6235bd8deadSopenharmony_ci        "Part of the storage may be reserved by an implementation for its own
6245bd8deadSopenharmony_ci        use e.g. for computation of transcendental functions or conversion of
6255bd8deadSopenharmony_ci        external textures."
6265bd8deadSopenharmony_ci
6275bd8deadSopenharmony_ci
6285bd8deadSopenharmony_ciIssues
6295bd8deadSopenharmony_ci
6305bd8deadSopenharmony_ci    In addition to issues below, see issues from the
6315bd8deadSopenharmony_ci    GL_OES_EGL_image_external extension.  
6325bd8deadSopenharmony_ci
6335bd8deadSopenharmony_ci    1.  Is this extension needed, or is the
6345bd8deadSopenharmony_ci        EGL_NV_stream_consumer_gltexture extension plus the existing
6355bd8deadSopenharmony_ci        GL_OES_EGL_image_external extension enough to cover this?
6365bd8deadSopenharmony_ci
6375bd8deadSopenharmony_ci        SUGGESTION: yes
6385bd8deadSopenharmony_ci
6395bd8deadSopenharmony_ci        DISCUSSION: The EGL_NV_stream_consumer_gltexture and
6405bd8deadSopenharmony_ci        GL_OES_EGL_image_external extensions together define all the
6415bd8deadSopenharmony_ci        types, tokens, and entry points needed to expose this
6425bd8deadSopenharmony_ci        functionality.  The GL_OES_EGL_image_external extension fully
6435bd8deadSopenharmony_ci        describes how external textures work.  The
6445bd8deadSopenharmony_ci        EGL_NV_stream_consumer_gltexture extension fully describes how
6455bd8deadSopenharmony_ci        to associate an EGLStream with an external texture.
6465bd8deadSopenharmony_ci
6475bd8deadSopenharmony_ci        However, there were questions about exactly how it was
6485bd8deadSopenharmony_ci        supposed to work.  This extension clarifies some of those
6495bd8deadSopenharmony_ci        questions.
6505bd8deadSopenharmony_ci
6515bd8deadSopenharmony_ci        Also, this allows the GL driver to expose the extension
6525bd8deadSopenharmony_ci        independent of the EGL driver.  This might be important in
6535bd8deadSopenharmony_ci        situations where 2 GLES drivers exist on the same system, one
6545bd8deadSopenharmony_ci        of which supports this functionality and the other not.
6555bd8deadSopenharmony_ci
6565bd8deadSopenharmony_ci    2.  Should this be an NV, EXT, or OES extension?
6575bd8deadSopenharmony_ci
6585bd8deadSopenharmony_ci        It was originally drafted as OES, but then quickly changed to
6595bd8deadSopenharmony_ci        NV as the policy in the ES group is to not draft extensions
6605bd8deadSopenharmony_ci        as OES until they are ratified.  The assumption is that this
6615bd8deadSopenharmony_ci        will be an OES if the ES group agrees with it, or possibly an
6625bd8deadSopenharmony_ci        EXT otherwise.  For now, while it is a draft, it will be NV.
6635bd8deadSopenharmony_ci
6645bd8deadSopenharmony_ci    3.  Why are the new enumerants suffixed with _OES if this is an NV
6655bd8deadSopenharmony_ci        extension?
6665bd8deadSopenharmony_ci
6675bd8deadSopenharmony_ci        SUGGESTION: These enumerants are all already added (with _OES
6685bd8deadSopenharmony_ci        suffixes) by the GL_OES_EGL_image_external extension.  Adding
6695bd8deadSopenharmony_ci        the same enums with NV suffix would be confusing.
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ciDependencies on OES_EGL_image_external.
6725bd8deadSopenharmony_ci
6735bd8deadSopenharmony_ci    This extension builds on the ideas of the OES_EGL_image_external
6745bd8deadSopenharmony_ci    extension.  If both are supported then this extension adds
6755bd8deadSopenharmony_ci    language to that extension.  If this extension is supported
6765bd8deadSopenharmony_ci    without that one then some parts of that extension get included by
6775bd8deadSopenharmony_ci    this extension.  This is mentioned inline in this extension.  Some
6785bd8deadSopenharmony_ci    of the sections added by this extension are verbatim copies from
6795bd8deadSopenharmony_ci    that extension.  If both are supported these sections should only
6805bd8deadSopenharmony_ci    be added once.
6815bd8deadSopenharmony_ci
6825bd8deadSopenharmony_ciDependencies on EGL_KHR_image_base and EGL_KHR_image
6835bd8deadSopenharmony_ci
6845bd8deadSopenharmony_ci    This extension neither depends on nor affects the wording of
6855bd8deadSopenharmony_ci    EGL_KHR_image_base or EGL_KHR_image.  This extension borrows ideas
6865bd8deadSopenharmony_ci    from the EGLImage related extensions, but does not require them.
6875bd8deadSopenharmony_ci
6885bd8deadSopenharmony_ciRevision History
6895bd8deadSopenharmony_ci
6905bd8deadSopenharmony_ci    #3 - (July 19, 2012) Acorn Pooley
6915bd8deadSopenharmony_ci         Fix name used with #extension in glsl.
6925bd8deadSopenharmony_ci    #2 - (Aug 3, 2011) Acorn Pooley
6935bd8deadSopenharmony_ci         Rename from GL_OES_EGL_stream_consumer_external to
6945bd8deadSopenharmony_ci         GL_NV_EGL_stream_consumer_external
6955bd8deadSopenharmony_ci    #1 - (Aug 2, 2011) Acorn Pooley
6965bd8deadSopenharmony_ci         Original draft
6975bd8deadSopenharmony_ci
6985bd8deadSopenharmony_ci# vim:ai:ts=4:sts=4:expandtab:textwidth=70
699