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