15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    OES_EGL_image_external_essl3
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_OES_EGL_image_external_essl3
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jan-Harald Fredriksen, ARM (jan-harald.fredriksen 'at' arm.com)
125bd8deadSopenharmony_ci    James Helferty, NVIDIA (jhelferty 'at' nvidia.com)
135bd8deadSopenharmony_ci    Mark Callow, ArtSpark Holdings Inc (callow.mark 'a' artspark.co.jp)
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Contributors to GL_OES_EGL_image_external.
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciContacts
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    Jan-Harald Fredriksen, ARM (jan-harald.fredriksen 'at' arm.com)
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ciNotice
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci    Copyright (c) 2014-2015 The Khronos Group Inc. Copyright terms at
245bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ciSpecification Update Policy
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
295bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL ES Working Group. For
305bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
315bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
325bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
335bd8deadSopenharmony_ci    described in more detail at
345bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ciStatus
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    Complete.
395bd8deadSopenharmony_ci    Approved by the OpenGL ES Working Group.
405bd8deadSopenharmony_ci    Ratified by the Khronos Board of Promoters on January 23, 2015.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ciVersion
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    January 29, 2016 (version 10)
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ciNumber
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    OpenGL ES Extension #220
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ciDependencies
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    Requires OpenGL ES 3.0 and ESSL 3.0.
535bd8deadSopenharmony_ci    Requires EGL 1.2
545bd8deadSopenharmony_ci    Requires either the EGL_KHR_image_base or the EGL_KHR_image extension.
555bd8deadSopenharmony_ci    Requires OES_EGL_image_external.
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    This extension is written based on the wording of the OpenGL ES 3.0.3
585bd8deadSopenharmony_ci    specification, the OpenGL ES Shading Language version 3.0 rev4, and the
595bd8deadSopenharmony_ci    OES_EGL_image_external extension.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci    This extension interacts with OpenGL ES 3.1.
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    This extension interacts with GL_EXT_gpu_shader5 and GL_OES_gpu_shader5.
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci    This extension borrows concepts and function names from the
665bd8deadSopenharmony_ci    GL_OES_EGL_image and OES_EGL_image_external extensions. This extension
675bd8deadSopenharmony_ci    is compatible with GL_OES_EGL_image but does not require it.
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ciOverview
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci    OES_EGL_image_external provides a mechanism for creating EGLImage texture
725bd8deadSopenharmony_ci    targets from EGLImages, but only specified language interactions for the
735bd8deadSopenharmony_ci    OpenGL ES Shading Language version 1.0. This extension adds support for
745bd8deadSopenharmony_ci    versions 3.x of the OpenGL ES Shading Language.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ciGlossary
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    Please see the EGL_OES_image_base specification for a list of terms
795bd8deadSopenharmony_ci    used by this specification.
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ciNew Types
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci     * New sampler type allowed by the OpenGL ES Shading Language when
845bd8deadSopenharmony_ci     *      #extension GL_OES_EGL_image_external_essl3
855bd8deadSopenharmony_ci     * is used.
865bd8deadSopenharmony_ci     */
875bd8deadSopenharmony_ci    samplerExternalOES
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ciNew Procedures and Functions
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    None.
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ciNew Tokens
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    None.
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ciChanges to section 3.8.2 ("Sampler Objects") of the OpenGL ES 3.0.3 specification
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    - Add to the description BindSampler:
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci        "If state is present in a sampler object bound to a texture unit that
1025bd8deadSopenharmony_ci         would have been rejected by a call to TexParameter* for the texture
1035bd8deadSopenharmony_ci         bound to that unit, the behavior of the implementation is as if the
1045bd8deadSopenharmony_ci         texture were incomplete. For example, if TEXTURE_WRAP_S or
1055bd8deadSopenharmony_ci         TEXTURE_WRAP_T is set to anything but CLAMP_TO_EDGE on the sampler
1065bd8deadSopenharmony_ci         object bound to a texture unit and the texture bound to that unit is
1075bd8deadSopenharmony_ci         an external texture, the texture will be considered incomplete.
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci         Sampler object state which does not affect sampling for the type of
1105bd8deadSopenharmony_ci         texture bound to a texture unit, such as TEXTURE_WRAP_R for an external
1115bd8deadSopenharmony_ci         texture, does not affect completeness."
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ciChanges to section 3.7.14 ("External Textures") of the OES_EGL_image_external
1145bd8deadSopenharmony_cispecification
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci        "It is an INVALID_OPERATION error to set the TEXTURE_BASE_LEVEL
1175bd8deadSopenharmony_ci         to a value other than zero."
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci[[Only if OpenGL ES 3.1 is supported]]
1205bd8deadSopenharmony_ciChanges to section 8.22 ("Texture Image Loads and Stores") of the
1215bd8deadSopenharmony_ciOpenGL ES 3.1 specification
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ci    On p. 196 in the errors section for BindImageTexture, replace the
1245bd8deadSopenharmony_ci    last error with the following:
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci        "An INVALID_OPERATION error is generated if <texture> is neither the
1275bd8deadSopenharmony_ci         name of an immutable texture object, nor the name of an external
1285bd8deadSopenharmony_ci         texture object.
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    Add to table 8.26 "Mapping of image load, store..."
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci        Texture target               face/
1335bd8deadSopenharmony_ci                                   i  j  k  layer
1345bd8deadSopenharmony_ci        -------------------------- -- -- -- -----
1355bd8deadSopenharmony_ci        TEXTURE_EXTERNAL_OES       x  y  -  -
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ciChanges to section 3.7 ("Keywords") of the OpenGL ES Shading Language
1385bd8deadSopenharmony_cispecification
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    - Add to the list of keywords:
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci        "samplerExternalOES"
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ciChanges to section 4.1 ("Basic Types") of the OpenGL ES Shading Language
1455bd8deadSopenharmony_cispecification
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    - Add to the list of Floating Point Sampler Types (opaque):
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci        "samplerExternalOES   a handle for accessing an external 2D texture"
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    - Add a paragraph at the end of the section:
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci        "The samplerExternalOES type is optional and must be enabled by
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci         #extension GL_OES_EGL_image_external_essl3 : enable"
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ciChanges to section 4.5.4 ("Default Precision Qualifiers") of the OpenGL ES
1585bd8deadSopenharmony_ciShading Language specification
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    - Add the following paragraph:
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci      "All languages have the following predeclared globally scoped default
1635bd8deadSopenharmony_ci       precision statements:
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci        precision lowp samplerExternalOES;"
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ciChanges to section 8.8 ("Texture Lookup Functions") of the OpenGL ES Shading
1685bd8deadSopenharmony_ciLanguage specification
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci    - Add to the table the following sampler functions:
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci      "highp ivec2 textureSize(samplerExternalOES sampler, int lod)
1735bd8deadSopenharmony_ci       vec4 texture(samplerExternalOES sampler, vec2 P [, float bias] )
1745bd8deadSopenharmony_ci       vec4 textureProj(samplerExternalOES sampler, vec3 P [, float bias] )
1755bd8deadSopenharmony_ci       vec4 textureProj(samplerExternalOES sampler, vec4 P [, float bias])
1765bd8deadSopenharmony_ci       vec4 texelFetch(samplerExternalOES sampler, ivec2 P, int lod)"
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ciChanges to section 9 ("Shading Language Grammar") of the OpenGL ES Shading
1795bd8deadSopenharmony_ciLanguage specification
1805bd8deadSopenharmony_ci
1815bd8deadSopenharmony_ci    - Add to token list:
1825bd8deadSopenharmony_ci
1835bd8deadSopenharmony_ci        "SAMPLEREXTERNAL"
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci    - Add following "type_specifier_no_array:"
1865bd8deadSopenharmony_ci
1875bd8deadSopenharmony_ci        "SAMPLEREXTERNAL"
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ciChanges to section 11 ("Counting of Inputs and Outputs") of the OpenGL ES
1905bd8deadSopenharmony_ciShading Language specification
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci    - Add a paragraph at the end
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci        "Part of the storage may be reserved by an implementation for its own
1955bd8deadSopenharmony_ci         use e.g. for conversion of external textures. This reduces the number
1965bd8deadSopenharmony_ci         of uniforms available to the shader. The size of this reduction is
1975bd8deadSopenharmony_ci         undefined but should be minimized.
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ciDependencies on OpenGL ES 3.1 and ESSL 3.10
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci    All texture built-in functions added in ESSL 3.10 are excluded from this
2025bd8deadSopenharmony_ci    extension per Issue 4. This extension is expected to work without
2035bd8deadSopenharmony_ci    modification for ESSL 3.10.
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci    If OpenGL ES 3.1 is not supported, ignore changes to section 8.22 since
2065bd8deadSopenharmony_ci    image load store is not supported.
2075bd8deadSopenharmony_ci
2085bd8deadSopenharmony_ciInteractions with EXT_gpu_shader5 and OES_gpu_shader5
2095bd8deadSopenharmony_ci
2105bd8deadSopenharmony_ci    If either of these extensions is supported, add the following paragraph
2115bd8deadSopenharmony_ci    to the end of section 4.1.7.1 ("Samplers") of the ESSL 3.10 specification:
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci        "When aggregated into arrays within a shader, external samplers can
2145bd8deadSopenharmony_ci         only be indexed with a constant integral expression. All other sampler
2155bd8deadSopenharmony_ci         types can only be indexed with a dynamically uniform integral
2165bd8deadSopenharmony_ci         expression, otherwise results are undefined."
2175bd8deadSopenharmony_ci
2185bd8deadSopenharmony_ciIssues
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ci    1.  Why is this functionality not added as an interaction to the
2215bd8deadSopenharmony_ci        OES_EGL_image_external extension as in interaction with ESSL 3.x?
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci        RESOLVED.
2245bd8deadSopenharmony_ci
2255bd8deadSopenharmony_ci        Since the built-in texture functions in ESSL were modified going from
2265bd8deadSopenharmony_ci        ESSL 1.0 to 3.x, the original extension does not trivially apply to
2275bd8deadSopenharmony_ci        ESSL 3.x.
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci        There are also many shipping implementations of OES_EGL_image_external
2305bd8deadSopenharmony_ci        extension that have chosen to not extend support to ESSL 3.x. If we
2315bd8deadSopenharmony_ci        were to amend the original extension, there would be no way for
2325bd8deadSopenharmony_ci        applications to determine whether a particular implementation supported
2335bd8deadSopenharmony_ci        the language extension for ESSL 3.x or not.
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci    2.  Should this extension require OES_EGL_image_external?
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci        RESOLVED: Yes.
2385bd8deadSopenharmony_ci
2395bd8deadSopenharmony_ci        This extension currently depends on OES_EGL_image_external to define the
2405bd8deadSopenharmony_ci        API extensions. This also implies that an implementation cannot choose
2415bd8deadSopenharmony_ci        to support this extension for ESSL 3.x only.
2425bd8deadSopenharmony_ci
2435bd8deadSopenharmony_ci    3.  What should this extension be called?
2445bd8deadSopenharmony_ci
2455bd8deadSopenharmony_ci        RESOLVED: OES_EGL_image_external_essl3
2465bd8deadSopenharmony_ci
2475bd8deadSopenharmony_ci    4.  Should built-in functions beyond ESSL1 compatibility be supported in
2485bd8deadSopenharmony_ci        ESSL 3.x shaders?
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci        RESOLVED: Yes.
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci        It seems useful to add some of these. The ESSL 3.x built-ins that are
2535bd8deadSopenharmony_ci        only useful for mipmapped textures are excluded since external textures
2545bd8deadSopenharmony_ci        cannot be mipmapped. The ESSL 3.x built-ins that require offsets are
2555bd8deadSopenharmony_ci        excluded since it is not clear how these should work with sub-sampled
2565bd8deadSopenharmony_ci        YUV formats.
2575bd8deadSopenharmony_ci
2585bd8deadSopenharmony_ci        Required for ESSL1 feature compatibility:
2595bd8deadSopenharmony_ci        - texture
2605bd8deadSopenharmony_ci        - textureProj (two versions)
2615bd8deadSopenharmony_ci
2625bd8deadSopenharmony_ci        Also included in this extension:
2635bd8deadSopenharmony_ci        - textureSize
2645bd8deadSopenharmony_ci        - texelFetch
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci        Excluded from this extension:
2675bd8deadSopenharmony_ci        - textureLod
2685bd8deadSopenharmony_ci        - textureLodOffset
2695bd8deadSopenharmony_ci        - textureProjLod
2705bd8deadSopenharmony_ci        - textureProjLodOffset
2715bd8deadSopenharmony_ci        - textureGrad
2725bd8deadSopenharmony_ci        - textureGradOffset
2735bd8deadSopenharmony_ci        - textureProjGrad
2745bd8deadSopenharmony_ci        - textureProjGradOffset
2755bd8deadSopenharmony_ci        - textureOffset
2765bd8deadSopenharmony_ci        - texelFetchOffset
2775bd8deadSopenharmony_ci        - textureProjOffset
2785bd8deadSopenharmony_ci        - textureGather [for ESSL 3.10]
2795bd8deadSopenharmony_ci        - textureGatherOffset [for ESSL 3.10]
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci    5.  Should external integer textures be supported in ESSL 3.x shaders?
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci        RESOLVED: No.
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci        The built-in functions added for ESSL1 always return floating point
2865bd8deadSopenharmony_ci        values, but that's in part because OpenGL ES 2.0 did not support
2875bd8deadSopenharmony_ci        integer textures. For ESSL 3.x, we could allow the same return values
2885bd8deadSopenharmony_ci        for external textures as for regular 2D textures. This would require
2895bd8deadSopenharmony_ci        adding new sampler types, such as samplerExternaliOES and
2905bd8deadSopenharmony_ci        samplerExternaluOES. Since there is no obvious use-case for external
2915bd8deadSopenharmony_ci        integer textures these are not added by this extension.
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci    6.  What token should be used to enable this extension in ESSL 3.x?
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci        RESOLVED: GL_OES_EGL_image_external_essl3
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci        The alternatives are a) reuse the GL_OES_image_external token (this
2985bd8deadSopenharmony_ci        should not cause problems since the original extension did not apply
2995bd8deadSopenharmony_ci        to ESSL 3.x), b) use the name of this extension. Option b) is chosen
3005bd8deadSopenharmony_ci        since there is no clear benefit to reusing the old name.
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci    7.  What is the interaction with separate sampler objects?
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci        RESOLVED: The texture is incomplete if the sampler object state is
3055bd8deadSopenharmony_ci                  not compatible with the sampler state.
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ci        The OES_EGL_image_external specifies that the only supported min filter
3085bd8deadSopenharmony_ci        modes for external textures is LINEAR or NEAREST and that the only
3095bd8deadSopenharmony_ci        valid s and t wrap mode is CLAMP_TO_EDGE. TexParameter* will generate
3105bd8deadSopenharmony_ci        errors if these are called while an external texture is bound. In ES3.x
3115bd8deadSopenharmony_ci        it is possible to attach a sampler object that has any wrap mode and
3125bd8deadSopenharmony_ci        min filter. In this case, the external texture will be treated as
3135bd8deadSopenharmony_ci        incomplete if the sampler object state is incompatible with such
3145bd8deadSopenharmony_ci        textures.
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci        Sampler state that affects completeness of external textures:
3175bd8deadSopenharmony_ci         - TEXTURE_MIN_FILTER
3185bd8deadSopenharmony_ci         - TEXTURE_WRAP_S
3195bd8deadSopenharmony_ci         - TEXTURE_WRAP_T
3205bd8deadSopenharmony_ci
3215bd8deadSopenharmony_ci        Sampler state that has no additional constraints for external textures:
3225bd8deadSopenharmony_ci         - TEXTURE_MAG_FILTER
3235bd8deadSopenharmony_ci
3245bd8deadSopenharmony_ci        Sampler state that does not affect external textures, and thus have
3255bd8deadSopenharmony_ci        no impact on completeness or behavior:
3265bd8deadSopenharmony_ci         - TEXTURE_WRAP_R       (3D or 2Darray for external textures)
3275bd8deadSopenharmony_ci         - TEXTURE_COMPARE_MODE (no shadow sampler for external textures)
3285bd8deadSopenharmony_ci         - TEXTURE_COMPARE_FUNC (no shadow sampler for external textures)
3295bd8deadSopenharmony_ci         - TEXTURE_MIN_LOD      (no mipmapping for external textures)
3305bd8deadSopenharmony_ci         - TEXTURE_MAX_LOD      (no mipmapping for external textures)
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci    8.  What is the interaction with the texture base level?
3335bd8deadSopenharmony_ci
3345bd8deadSopenharmony_ci        RESOLVED: The base level must be zero for external textures.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci        External textures do not support mipmap filtering. It is consistent
3375bd8deadSopenharmony_ci        with the behavior for 2D multisampled textures in ES3.1 to make it an
3385bd8deadSopenharmony_ci        error to specify a base level other than zero for external textures.
3395bd8deadSopenharmony_ci
3405bd8deadSopenharmony_ci        This error is not specified in GL_OES_EGL_image_external so adding an
3415bd8deadSopenharmony_ci        error may break existing applications using that extension (in ESSL 1.x)
3425bd8deadSopenharmony_ci        in combination with OpenGL ES 3.x if they set the base level to any
3435bd8deadSopenharmony_ci        other value.
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    9.  What formats are supported?
3465bd8deadSopenharmony_ci
3475bd8deadSopenharmony_ci        This is implementation defined. GL_OES_EGL_image_external does not
3485bd8deadSopenharmony_ci        require any specific formats, and this extension does not change
3495bd8deadSopenharmony_ci        that. On a given implementation, it is expected that the same set
3505bd8deadSopenharmony_ci        of formats is supported in all shader stages.
3515bd8deadSopenharmony_ci
3525bd8deadSopenharmony_ci    10. Should image / load store be supported? And, if so, how?
3535bd8deadSopenharmony_ci
3545bd8deadSopenharmony_ci        RESOLVED: Yes, in a limited form.
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci        Allowing image / load store on external textures enables compute
3575bd8deadSopenharmony_ci        shaders to write to these textures.
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci        A limited set of use-cases is enabled by making glBindImageTexture
3605bd8deadSopenharmony_ci        accept external textures. Shaders can access such external textures
3615bd8deadSopenharmony_ci        using the existing <image2D> sampler type.
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci        Since the image format must be specified by the shader, no additional
3645bd8deadSopenharmony_ci        format conversion is done for external textures accessed via image
3655bd8deadSopenharmony_ci        load/store. This implies that the shader author must know the format of
3665bd8deadSopenharmony_ci        the external texture in order to do useful work. Also, only the image
3675bd8deadSopenharmony_ci        formats already supported by image load store are available (i.e, there
3685bd8deadSopenharmony_ci        is no automatic conversion to, for example, YUV formats.)
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ciRevision History
3715bd8deadSopenharmony_ci
3725bd8deadSopenharmony_ci    #10 - (Jan 29, 2016) Fixed typo in issue 10. 
3735bd8deadSopenharmony_ci    #9 - (Apr 10, 2015) Clarified issue 10. Specified default precision for
3745bd8deadSopenharmony_ci                        samplerExternalOES as lowp for all shader stages.
3755bd8deadSopenharmony_ci    #8 - (Feb 6, 2015) Fixed typo in return value of textureSize (vec2->ivec2)
3765bd8deadSopenharmony_ci    #7 - (Oct 15, 2014) Resolved issue 10. Added interaction with EXT_gpu_shader5.
3775bd8deadSopenharmony_ci    #6 - (Oct 10, 2014) Added issue 10 and its tentative resolution.
3785bd8deadSopenharmony_ci    #5 - (Sep 25, 2014) Updated resolution of issue 7.
3795bd8deadSopenharmony_ci                        Added issues 8 and 9.
3805bd8deadSopenharmony_ci                        Converted to OES.
3815bd8deadSopenharmony_ci    #4 - (Sep 24, 2014) Added issue 7 with proposed resolution.
3825bd8deadSopenharmony_ci    #3 - (Jul 30, 2014) Excluded textureGather from this extension.
3835bd8deadSopenharmony_ci    #2 - (Jul 30, 2014) Updated based feedback. Tentatively resolved issues.
3845bd8deadSopenharmony_ci                        Added issue 6.
3855bd8deadSopenharmony_ci    #1 - (Jul 15, 2014) Original draft.
386