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