15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_ES3_compatibility
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_ES3_compatibility
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Piers Daniell, NVIDIA Corporation (pdaniell 'at' nvidia.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Bruce Merry
165bd8deadSopenharmony_ci    Jeff Bolz, NVIDIA
175bd8deadSopenharmony_ci    John Kessenich
185bd8deadSopenharmony_ci    Jon Leech
195bd8deadSopenharmony_ci    Pat Brown, NVIDIA
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ciNotice
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci    Copyright (c) 2012-2013 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 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 ARB on 2012/06/12.
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ciVersion
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    Last Modified Date:         October 18, 2013
445bd8deadSopenharmony_ci    Revision:                   10
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ciNumber
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    ARB Extension #127
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ciDependencies
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    OpenGL 3.3, ARB_ES2_compatibility, ARB_invalidate_subdata, and
535bd8deadSopenharmony_ci    ARB_texture_storage are required.
545bd8deadSopenharmony_ci    
555bd8deadSopenharmony_ci    The ETC2 and EAC texture compression formats added to OpenGL-ES 3.0
565bd8deadSopenharmony_ci    OES_compressed_ETC2_RGB8_texture,
575bd8deadSopenharmony_ci    OES_compressed_ETC2_sRGB8_texture,
585bd8deadSopenharmony_ci    OES_compressed_ETC2_punchthroughA_RGBA8_texture,
595bd8deadSopenharmony_ci    OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture,
605bd8deadSopenharmony_ci    OES_compressed_ETC2_RGBA8_texture,
615bd8deadSopenharmony_ci    OES_compressed_ETC2_sRGB8_alpha8_texture,
625bd8deadSopenharmony_ci    OES_compressed_EAC_R11_unsigned_texture,
635bd8deadSopenharmony_ci    OES_compressed_EAC_R11_signed_texture,
645bd8deadSopenharmony_ci    OES_compressed_EAC_RG11_unsigned_texture and
655bd8deadSopenharmony_ci    OES_compressed_EAC_RG11_signed_texture are required.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    This extension is written against The OpenGL 4.2 (Compatibility Profile)
685bd8deadSopenharmony_ci    specification.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciOverview
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    This extension adds support for features of OpenGL ES 3.0 that are
735bd8deadSopenharmony_ci    missing from OpenGL 3.x. Enabling these features will ease the process
745bd8deadSopenharmony_ci    of porting applications from OpenGL ES 3.0 to OpenGL. These features
755bd8deadSopenharmony_ci    include conservative boolean occlusion queries, primitive restart with a
765bd8deadSopenharmony_ci    fixed index, the OpenGL ES Shading Language 3.00 specification, and the
775bd8deadSopenharmony_ci    dependencies stated above.
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ciNew Procedures and Functions
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    None
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ciNew Tokens
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of CompressedTexImage2D
865bd8deadSopenharmony_ci        COMPRESSED_RGB8_ETC2                             0x9274
875bd8deadSopenharmony_ci        COMPRESSED_SRGB8_ETC2                            0x9275
885bd8deadSopenharmony_ci        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2         0x9276
895bd8deadSopenharmony_ci        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2        0x9277
905bd8deadSopenharmony_ci        COMPRESSED_RGBA8_ETC2_EAC                        0x9278
915bd8deadSopenharmony_ci        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC                 0x9279
925bd8deadSopenharmony_ci        COMPRESSED_R11_EAC                               0x9270
935bd8deadSopenharmony_ci        COMPRESSED_SIGNED_R11_EAC                        0x9271
945bd8deadSopenharmony_ci        COMPRESSED_RG11_EAC                              0x9272
955bd8deadSopenharmony_ci        COMPRESSED_SIGNED_RG11_EAC                       0x9273
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    Accepted by the <target> parameter of Enable and Disable:
985bd8deadSopenharmony_ci    
995bd8deadSopenharmony_ci        PRIMITIVE_RESTART_FIXED_INDEX                    0x8D69
1005bd8deadSopenharmony_ci        
1015bd8deadSopenharmony_ci    Accepted by the <target> parameter of BeginQuery, EndQuery,
1025bd8deadSopenharmony_ci    GetQueryIndexediv and GetQueryiv:
1035bd8deadSopenharmony_ci    
1045bd8deadSopenharmony_ci        ANY_SAMPLES_PASSED_CONSERVATIVE                  0x8D6A
1055bd8deadSopenharmony_ci        
1065bd8deadSopenharmony_ci    Accepted by the <value> parameter of the GetInteger* functions:
1075bd8deadSopenharmony_ci        
1085bd8deadSopenharmony_ci        MAX_ELEMENT_INDEX                                0x8D6B
1095bd8deadSopenharmony_ci        
1105bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetTexParameterfv and 
1115bd8deadSopenharmony_ci    GetTexParameteriv:
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ci        TEXTURE_IMMUTABLE_LEVELS                         0x82DF
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 4.2 (Compatibility Profile)
1165bd8deadSopenharmony_ciSpecification (OpenGL Operation)
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    Modify Section 1.7.1 (OpenGL Shading Language) to require the OpenGL
1195bd8deadSopenharmony_ci    ES Shading Language specifications:
1205bd8deadSopenharmony_ci    
1215bd8deadSopenharmony_ci    "This specification should be read together with a companion documents
1225bd8deadSopenharmony_ci    titled The OpenGL Shading Language and The OpenGL ES Shading Language.
1235bd8deadSopenharmony_ci    ..."
1245bd8deadSopenharmony_ci  
1255bd8deadSopenharmony_ci    And later in this section:
1265bd8deadSopenharmony_ci    
1275bd8deadSopenharmony_ci    "OpenGL 4.2 implementations are guaranteed to support version 4.20 of the
1285bd8deadSopenharmony_ci    OpenGL Shading Language, version 1.00 of the OpenGL ES Shading Language
1295bd8deadSopenharmony_ci    and version 3.00 of the OpenGL ES Shading Language, and the version
1305bd8deadSopenharmony_ci    required by the application is specified in the shader source. ..."
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    Modify Section 2.8 (Vertex Arrays) on page 45 before the start of
1335bd8deadSopenharmony_ci    Section 2.8.1:
1345bd8deadSopenharmony_ci    
1355bd8deadSopenharmony_ci    "Primitive restart can also be enabled or disabled with a <target> of
1365bd8deadSopenharmony_ci    PRIMITIVE_RESTART_FIXED_INDEX. In this case, the primitive restart index
1375bd8deadSopenharmony_ci    is equal to 2^N-1, where N is 8, 16 or 32 if the type is UNSIGNED_BYTE,
1385bd8deadSopenharmony_ci    UNSIGNED_SHORT, or UNSIGNED_INT, respectively, and the <index> value
1395bd8deadSopenharmony_ci    specified by PrimitiveRestartIndex is ignored.
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    If both PRIMITIVE_RESTART and PRIMITIVE_RESTART_FIXED_INDEX are enabled,
1425bd8deadSopenharmony_ci    the <index> value determined by PRIMITIVE_RESTART_FIXED_INDEX is used.
1435bd8deadSopenharmony_ci    If PRIMITIVE_RESTART_FIXED_INDEX is enabled, primitive restart is not
1445bd8deadSopenharmony_ci    performed for array elements transferred by any drawing command not
1455bd8deadSopenharmony_ci    taking a <type> parameter, including ArrayElement or any of the Draw*
1465bd8deadSopenharmony_ci    commands other than *DrawElements*."
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci    Modify Section 2.18 (Asynchronous Queries) on page 195 to add
1495bd8deadSopenharmony_ci    ANY_SAMPLES_PASSED_CONSERVATIVE as another <target> option:
1505bd8deadSopenharmony_ci    
1515bd8deadSopenharmony_ci    "BeginQuery sets the active query object name for the query type given by
1525bd8deadSopenharmony_ci    <target> to <id>. If BeginQuery is called with an id of zero, if the
1535bd8deadSopenharmony_ci    active query object name for target is non-zero (for the targets
1545bd8deadSopenharmony_ci    SAMPLES_PASSED, ANY_SAMPLES_PASSED, and ANY_SAMPLES_PASSED_CONSERVATIVE if
1555bd8deadSopenharmony_ci    the active query for either target is non-zero), if <id> is the name of an
1565bd8deadSopenharmony_ci    existing query object whose type does not match target, if <id> is the
1575bd8deadSopenharmony_ci    active query object name for any query type, or if id is the active query
1585bd8deadSopenharmony_ci    object  for condtional rendering (see section 2.19), the error
1595bd8deadSopenharmony_ci    INVALID_OPERATION is generated."
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    Modify Section 2.19 (Conditional Rendering) on page 197 to add
1625bd8deadSopenharmony_ci    ANY_SAMPLES_PASSED_CONSERVATIVE as another <mode> option:
1635bd8deadSopenharmony_ci    
1645bd8deadSopenharmony_ci    "If the result (SAMPLES_PASSED) of the query is zero, or if the result
1655bd8deadSopenharmony_ci    (ANY_SAMPLES_PASSED or ANY_SAMPLES_PASSED_CONSERVATIVE) is false, all
1665bd8deadSopenharmony_ci    rendering comands between BeginConditionalRender and the corresponding
1675bd8deadSopenharmony_ci    EndConditionalRender are discarded. ..."
1685bd8deadSopenharmony_ci    
1695bd8deadSopenharmony_ci    And later in this paragraph:
1705bd8deadSopenharmony_ci    
1715bd8deadSopenharmony_ci    "... If the result (SAMPLES_PASSED) of the query is non-zero, or if the
1725bd8deadSopenharmony_ci    result (ANY_SAMPLES_PASSED or ANY_SAMPLES_PASSED_CONSERVATIVE) is true,
1735bd8deadSopenharmony_ci    such commands are not discarded."
1745bd8deadSopenharmony_ci    
1755bd8deadSopenharmony_ci    Again at the end of Section 2.19 (Conditional Rendering) on page 198:
1765bd8deadSopenharmony_ci    
1775bd8deadSopenharmony_ci    "If <id> is the name of a query object with a target other than
1785bd8deadSopenharmony_ci    SAMPLES_PASSED, ANY_SAMPLES_PASSED or ANY_SAMPLES_PASSED_CONSERVATIVE,
1795bd8deadSopenharmony_ci    or if <id> is the name of a query currently in progress, the error
1805bd8deadSopenharmony_ci    INVALID_OPERATION is generated."
1815bd8deadSopenharmony_ci    
1825bd8deadSopenharmony_ci    Modify subsection 3.10.15 (Texture State and Proxy State):
1835bd8deadSopenharmony_ci    
1845bd8deadSopenharmony_ci    Modify the end of the first paragraph on page 345
1855bd8deadSopenharmony_ci    
1865bd8deadSopenharmony_ci    "... The value of TEXTURE_IMMUTABLE_FORMAT is FALSE. The value of
1875bd8deadSopenharmony_ci    TEXTURE_IMMUTABLE_LEVELS is 0. The values of DEPTH_TEXTURE_MODE,
1885bd8deadSopenharmony_ci    TEXTURE_COMPARE_MODE, and TEXTURE_COMPARE_FUNC are LUMINANCE,
1895bd8deadSopenharmony_ci    NONE, and LEQUAL respectively. ..."
1905bd8deadSopenharmony_ci    
1915bd8deadSopenharmony_ci    Modify subsection 3.10.16 (Immutable-Format Texture Images):
1925bd8deadSopenharmony_ci    
1935bd8deadSopenharmony_ci    Modify the second to last bullet on page 347
1945bd8deadSopenharmony_ci    
1955bd8deadSopenharmony_ci    "If the command is successful, TEXTURE_IMMUTABLE_FORMAT becomes
1965bd8deadSopenharmony_ci    TRUE and TEXTURE_IMMUTABLE_LEVELS becomes <levels>."
1975bd8deadSopenharmony_ci
1985bd8deadSopenharmony_ci    Modify Section 4.1.7 (Occlusion Queries) to add
1995bd8deadSopenharmony_ci    ANY_SAMPLES_PASSED_CONSERVATIVE as another <target> option:
2005bd8deadSopenharmony_ci    
2015bd8deadSopenharmony_ci    "Occlusion queries use query objects to track the number of fragments or
2025bd8deadSopenharmony_ci    samples that pass the depth test. An occlusion query can be started and
2035bd8deadSopenharmony_ci    finished by calling BeginQuery and EndQuery, respectively, with a target
2045bd8deadSopenharmony_ci    of SAMPLES_PASSED, ANY_SAMPLES_PASSED or ANY_SAMPLES_PASSED_CONSERVATIVE."
2055bd8deadSopenharmony_ci    
2065bd8deadSopenharmony_ci    Modify last paragraph in Section 4.1.7:
2075bd8deadSopenharmony_ci    
2085bd8deadSopenharmony_ci    "When an occlusion query is started with the target ANY_SAMPLES_PASSED,
2095bd8deadSopenharmony_ci    the samples-boolean state maintained by the GL is set to FALSE. While that
2105bd8deadSopenharmony_ci    occlusion query is active, the samples-boolean state is set to TRUE if any
2115bd8deadSopenharmony_ci    fragment or sample passes the depth test. If the target of the query is
2125bd8deadSopenharmony_ci    ANY_SAMPLES_PASSED_CONSERVATIVE, an implementation may choose to use a
2135bd8deadSopenharmony_ci    less precise version of the test which can additionally set the
2145bd8deadSopenharmony_ci    samples-boolean state to TRUE in some other implementation-dependent
2155bd8deadSopenharmony_ci    cases. This may offer better performance on some implementations at the
2165bd8deadSopenharmony_ci    expense of false positives. When the occlusion query finishes, the
2175bd8deadSopenharmony_ci    samples-boolean state of FALSE or TRUE is written to the corresponding
2185bd8deadSopenharmony_ci    query object as the query result value, and the query result for that
2195bd8deadSopenharmony_ci    object is marked as available."
2205bd8deadSopenharmony_ci    
2215bd8deadSopenharmony_ci    Modify the list of allowed <value> parameters to GetTexParameter* in
2225bd8deadSopenharmony_ci    section 6.1.3 on page 478:
2235bd8deadSopenharmony_ci    
2245bd8deadSopenharmony_ci    "<value> must be IMAGE_FORMAT_COMPATIBILITY_TYPE,
2255bd8deadSopenharmony_ci    TEXTURE_IMMUTABLE_FORMAT, TEXTURE_IMMUTABLE_LEVELS, TEXTURE_RESIDENT,
2265bd8deadSopenharmony_ci    or one of the symbolic values in table 3.22"
2275bd8deadSopenharmony_ci    
2285bd8deadSopenharmony_ci    Modify the first paragraph of Section 6.1.13 (Asynchronous Queries) as
2295bd8deadSopenharmony_ci    follows:
2305bd8deadSopenharmony_ci    
2315bd8deadSopenharmony_ci    "... <target> identifies the query target, and must be one of
2325bd8deadSopenharmony_ci    SAMPLES_PASSED, ANY_SAMPLES_PASSED or ANY_SAMPLES_PASSED_CONSERVATIVE
2335bd8deadSopenharmony_ci    for occlusion queries, ..."
2345bd8deadSopenharmony_ci    
2355bd8deadSopenharmony_ci    Modify the first paragraph of page 488 in Section 6.1.13:
2365bd8deadSopenharmony_ci    
2375bd8deadSopenharmony_ci    "For occlusion queries with target ANY_SAMPLES_PASSED or
2385bd8deadSopenharmony_ci    ANY_SAMPLES_PASSED_CONSERVATIVE, if the number of bits is non-zero, the
2395bd8deadSopenharmony_ci    minimum number of bits is 1. ..."
2405bd8deadSopenharmony_ci    
2415bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 4.2 (Compatibility Profile)
2425bd8deadSopenharmony_ciSpecification (Rasterization)
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    Add to Table 3.20: Generic and specific compressed internal formats on
2455bd8deadSopenharmony_ci    page 303:
2465bd8deadSopenharmony_ci    
2475bd8deadSopenharmony_ci    Compressed Internal Format                 Base Internal Format Type
2485bd8deadSopenharmony_ci    ------------------------------------------ -------------------- ----------
2495bd8deadSopenharmony_ci    COMPRESSED_RGB8_ETC2                       RGB                  Specific
2505bd8deadSopenharmony_ci    COMPRESSED_SRGB8_ETC2                      RGBA                 Specific
2515bd8deadSopenharmony_ci    COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2   RGB                  Specific
2525bd8deadSopenharmony_ci    COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2  RGB                  Specific
2535bd8deadSopenharmony_ci    COMPRESSED_RGBA8_ETC2_EAC                  RGBA                 Specific
2545bd8deadSopenharmony_ci    COMPRESSED_SRGB8_ALPHA8_ETC2_EAC           RGBA                 Specific
2555bd8deadSopenharmony_ci    COMPRESSED_R11_EAC                         RED                  Specific
2565bd8deadSopenharmony_ci    COMPRESSED_SIGNED_R11_EAC                  RED                  Specific
2575bd8deadSopenharmony_ci    COMPRESSED_RG11_EAC                        RG                   Specific
2585bd8deadSopenharmony_ci    COMPRESSED_SIGNED_RG11_EAC                 RG                   Specific
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    Add the following text to the Table 3.20 key:
2615bd8deadSopenharmony_ci    
2625bd8deadSopenharmony_ci    "The specific RGTC, BPTC, ETC2 and EAC formats are described in Appendix C."
2635bd8deadSopenharmony_ci    
2645bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 4.2 (Compatibility Profile)
2655bd8deadSopenharmony_ciSpecification (Per-Fragment Operations and the Framebuffer)
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci    Add to section 4.4.2 in the unnumbered "Required Renderbuffer Formats"
2685bd8deadSopenharmony_ci    subsection, following the paragraph starting "Implementations are
2695bd8deadSopenharmony_ci    required to support..."
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    "Implementations are also required to support STENCIL_INDEX8."
2725bd8deadSopenharmony_ci
2735bd8deadSopenharmony_ci    Modify section 4.4.2 in the unnumbered "Required Framebuffer Formats"
2745bd8deadSopenharmony_ci    subsection, changing the third sentence to read
2755bd8deadSopenharmony_ci    
2765bd8deadSopenharmony_ci   "The depth attachment may be in any of the required depth or combined
2775bd8deadSopenharmony_ci    depth+stencil formats described in those sections, and the stencil
2785bd8deadSopenharmony_ci    attachment may be in any of the required stencil or combined
2795bd8deadSopenharmony_ci    depth+stencil formats."
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ciAdditions to Appendix C of the OpenGL 4.20.6 Specification (Compressed Texture
2825bd8deadSopenharmony_ciImage Formats)
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    Add a new section to Appendix C:
2855bd8deadSopenharmony_ci    
2865bd8deadSopenharmony_ci    "C.3 ETC2/EAC Compressed Texture Image Formats
2875bd8deadSopenharmony_ci    
2885bd8deadSopenharmony_ci    The following sub-sections describe the texture compression format for the
2895bd8deadSopenharmony_ci    ETC2/EAC family of compression formats. It is not necessary for the
2905bd8deadSopenharmony_ci    GL to implement these compression formats in hardware and is acceptable
2915bd8deadSopenharmony_ci    for the decode to occur in software and be represented internally as
2925bd8deadSopenharmony_ci    uncompressed images."
2935bd8deadSopenharmony_ci    
2945bd8deadSopenharmony_ci    Then copy in the body of the OpenGL ES 3.0 Specification, Appendix C.1
2955bd8deadSopenharmony_ci    "ETC Compressed Texture Image Formats", which describes the details of
2965bd8deadSopenharmony_ci    the ETC2 and EAC formats required by this extension. Change "OpenGL ES
2975bd8deadSopenharmony_ci    implementations" to "OpenGL implementations" when performing this
2985bd8deadSopenharmony_ci    copying.
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL Shading Language 4.20.6 Specification
3015bd8deadSopenharmony_ci(Basics)
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ci    Modify the paragraph at the bottom of page 12 in Section 3.3
3045bd8deadSopenharmony_ci    (Preprocessor) as follows:
3055bd8deadSopenharmony_ci    
3065bd8deadSopenharmony_ci    "... Shaders that specify #version 100 will be treated as targeting
3075bd8deadSopenharmony_ci    version 1.00 of the OpenGL ES Shading Language. Shaders that specify
3085bd8deadSopenharmony_ci    #version 300 will be treated as targeting version 3.00 of the OpenGL
3095bd8deadSopenharmony_ci    ES Shading Language. Shaders declaring 1.40, 1.50, ..."
3105bd8deadSopenharmony_ci    
3115bd8deadSopenharmony_ci    Modify the second paragraph at the of page 13 in Section 3.3
3125bd8deadSopenharmony_ci    (Preprocessor) as follows:
3135bd8deadSopenharmony_ci    
3145bd8deadSopenharmony_ci    "If the optional <profile> argument is provided, it must be the name of
3155bd8deadSopenharmony_ci    an OpenGL profile. Currently there are three choices:
3165bd8deadSopenharmony_ci        core
3175bd8deadSopenharmony_ci        compatibility
3185bd8deadSopenharmony_ci        es
3195bd8deadSopenharmony_ci        
3205bd8deadSopenharmony_ci    A <profile> argument can only be used with version 150 or greater. If no
3215bd8deadSopenharmony_ci    profile argument is provided and the version is 150 or greater, the
3225bd8deadSopenharmony_ci    default is <core>. If #version 300 is specified, the profile argument is
3235bd8deadSopenharmony_ci    not optional and must be <es>, or a compile-time error results. The
3245bd8deadSopenharmony_ci    Language Specification for the <es> profile is specified in  The OpenGL
3255bd8deadSopenharmony_ci    ES Shading Language specification. Unless otherwise specified, this ..."
3265bd8deadSopenharmony_ci
3275bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci    None
3305bd8deadSopenharmony_ci
3315bd8deadSopenharmony_ciInteractions with the OpenGL 4.2 Core Profile
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ci    In the core profile, remove ArrayElement from the list of drawing
3345bd8deadSopenharmony_ci    commands for which primitive restart is not performed when
3355bd8deadSopenharmony_ci    PRIMITIVE_RESTART_FIXED_INDEX is enabled.
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ciErrors
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci    None
3405bd8deadSopenharmony_ci
3415bd8deadSopenharmony_ciNew State
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci    (add to table 6.13, p. 520 (Vertex Array Data (not in Vertex Array Objects)))
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci                                                        Initial                          
3465bd8deadSopenharmony_ci    Get Value                     Type  Get Command     Value     Description               Sec.    Attribute
3475bd8deadSopenharmony_ci    ------------------------      ----  --------------- -------   ----------------------    -----   ------------
3485bd8deadSopenharmony_ci    PRIMITIVE_RESTART_FIXED_INDEX  B    IsEnabled       FALSE     Primitive restart with    2.8     vertex-array
3495bd8deadSopenharmony_ci                                                                  fixed index enable                
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci    (add to table 6.24, p. 531 (Textures (state per texture object)))
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci                                                        Initial   
3545bd8deadSopenharmony_ci    Get Value                     Type  Get Command     Value     Description               Sec.    Attribute
3555bd8deadSopenharmony_ci    ------------------------      ----  --------------- -------   ------------------------  ------- ---------
3565bd8deadSopenharmony_ci    TEXTURE_IMMUTABLE_LEVELS       Z+   GetTexParameter 0         storage number of levels  3.10.15 texture
3575bd8deadSopenharmony_ci
3585bd8deadSopenharmony_ciNew Implementation Dependent State
3595bd8deadSopenharmony_ci                                  
3605bd8deadSopenharmony_ci    Get Value                     Type  Get Command     Value     Description               Sec.
3615bd8deadSopenharmony_ci    -----------------             ----  -------------   --------  ---------------------     ----
3625bd8deadSopenharmony_ci    MAX_ELEMENT_INDEX              Z+   GetInteger64v   2^32 - 1  Maximum element index     2.6
3635bd8deadSopenharmony_ci
3645bd8deadSopenharmony_ciIssues
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci    1) OpenGL-ES 3.0 contains several features that have been deprecated from
3675bd8deadSopenharmony_ci       the latest OpenGL Core specification. These were retained in OpenGL-ES
3685bd8deadSopenharmony_ci       3.0 in order to provide backwards compatibility with OpenGL-ES 2.0. Those
3695bd8deadSopenharmony_ci       features are:
3705bd8deadSopenharmony_ci       
3715bd8deadSopenharmony_ci        * Wide lines - LineWidth values greater than 1.0 will generate an INVALID_-
3725bd8deadSopenharmony_ci        VALUE error. The value ALIASED_LINE_WIDTH_RANGE is the max width supported.
3735bd8deadSopenharmony_ci
3745bd8deadSopenharmony_ci        * Global component limit query - the implementation-dependent values
3755bd8deadSopenharmony_ci        MAX_VARYING_COMPONENTS and MAX_VARYING_FLOATS.
3765bd8deadSopenharmony_ci
3775bd8deadSopenharmony_ci        * Application-generated object names - the names of all object types, such as
3785bd8deadSopenharmony_ci        buffer, query, and texture objects, must be generated using the corresponding
3795bd8deadSopenharmony_ci        Gen* commands. Trying to bind an object name not returned by a Gen*
3805bd8deadSopenharmony_ci        command will result in an INVALID_OPERATION error. This behavior is already
3815bd8deadSopenharmony_ci        the case for framebuffer, renderbuffer, and vertex array objects. Object
3825bd8deadSopenharmony_ci        types which have default objects (objects named zero), such as vertex array,
3835bd8deadSopenharmony_ci        framebuffer, and texture objects, may also bind the default object, even
3845bd8deadSopenharmony_ci        though it is not returned by Gen*.
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci        * Client vertex and index arrays - all vertex array attribute and element array
3875bd8deadSopenharmony_ci        index pointers must refer to buffer objects. The default vertex array object
3885bd8deadSopenharmony_ci        (the name zero) is also deprecated. Calling VertexAttribPointer when no
3895bd8deadSopenharmony_ci        buffer object or no vertex array object is bound will generate an INVALID_-
3905bd8deadSopenharmony_ci        OPERATION error, as will calling any array drawing command when no vertex
3915bd8deadSopenharmony_ci        array object is bound.
3925bd8deadSopenharmony_ci
3935bd8deadSopenharmony_ci        * Legacy pixel formats - all ALPHA, LUMINANCE, LUMINANCE_ALPHA
3945bd8deadSopenharmony_ci
3955bd8deadSopenharmony_ci        * Hints - GENERATE_MIPMAP_HINT targets to Hint (section 5.4).
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci        * Unified extension string - EXTENSIONS target to GetString.
3985bd8deadSopenharmony_ci        
3995bd8deadSopenharmony_ci       Should we bring these features back into the OpenGL 4.x Core specification
4005bd8deadSopenharmony_ci       so that it is a complete super-set of OpenGL-ES 3.0?
4015bd8deadSopenharmony_ci       
4025bd8deadSopenharmony_ci       RESOLVED: No, these will not be brought back into OpenGL 4.x Core. Apps
4035bd8deadSopenharmony_ci       written for OpenGL-ES 3.0 that want to also be compatible with OpenGL
4045bd8deadSopenharmony_ci       should make sure they don't use these features.
4055bd8deadSopenharmony_ci
4065bd8deadSopenharmony_ci    2) OpenGL ES 3.0 has some differences to OpenGL that may affect how the
4075bd8deadSopenharmony_ci       application operates. For example, in OpenGL ES 3.0 cubemaps are
4085bd8deadSopenharmony_ci       always seamless but with OpenGL this needs to be explicitly enabled.
4095bd8deadSopenharmony_ci       Also sRGB is handled differently. In OpenGL ES 3.0 a surface is either
4105bd8deadSopenharmony_ci       sRGB or not sRGB and this cannot be changed. With OpenGL a surface can
4115bd8deadSopenharmony_ci       be sRGB capable and the mode can be toggled. How do we deal with
4125bd8deadSopenharmony_ci       these differences?
4135bd8deadSopenharmony_ci       
4145bd8deadSopenharmony_ci       RESOLVED: If the application needs a strict OpenGL ES 3.0
4155bd8deadSopenharmony_ci       implementation, it should not attempt to use a desktop GL context
4165bd8deadSopenharmony_ci       with the ES3_compatibility extension supported. Instead, use the
4175bd8deadSopenharmony_ci       {GLX|WGL}_EXT_create_context_es_profile extensions to request an
4185bd8deadSopenharmony_ci       actual OpenGL ES 3.0 context, which will not have these caveats.
4195bd8deadSopenharmony_ci
4205bd8deadSopenharmony_ciRevision History
4215bd8deadSopenharmony_ci
4225bd8deadSopenharmony_ci    Rev.    Date    Author    Changes
4235bd8deadSopenharmony_ci    ----  --------  --------  -----------------------------------------------
4245bd8deadSopenharmony_ci    10    10/18/13  Jon Leech Refer to OpenGL ES 3.0 specification appendix
4255bd8deadSopenharmony_ci                              C.1 for ETC2/EAC formats, instead of to OES
4265bd8deadSopenharmony_ci                              extensions (Bug 7522).
4275bd8deadSopenharmony_ci
4285bd8deadSopenharmony_ci    9     03/12/13  Jon Leech Update issue 2 resolution and fix typo.
4295bd8deadSopenharmony_ci
4305bd8deadSopenharmony_ci    8     11/10/12  pdaniell  Add the missing token TEXTURE_IMMUTABLE_LEVELS
4315bd8deadSopenharmony_ci                              from ARB_texture_view, which is in ES 3.0, and
4325bd8deadSopenharmony_ci                              add language describing its behavior; add
4335bd8deadSopenharmony_ci                              PRIMITIVE_RESTART_FIXED_INDEX to state tables
4345bd8deadSopenharmony_ci                              (Bug 9559).
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci    7     09/16/12  Jon Leech Add language to chapter 4 requiring
4375bd8deadSopenharmony_ci                              STENCIL_INDEX8 support (Bug 9418).
4385bd8deadSopenharmony_ci
4395bd8deadSopenharmony_ci    6     05/30/12  Jon Leech Add language specifying how the two types of
4405bd8deadSopenharmony_ci                              primitive restart enable interact and that the
4415bd8deadSopenharmony_ci                              fixed index form only applies to
4425bd8deadSopenharmony_ci                              *DrawElements* commands taking a <type>
4435bd8deadSopenharmony_ci                              parameter. Reorder ETC2/EAC formats to match
4445bd8deadSopenharmony_ci                              Halti appendix.
4455bd8deadSopenharmony_ci
4465bd8deadSopenharmony_ci    5     04/27/12  pdaniell  Updates based on feedback from John Kessenich.
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ci    4     04/20/12  pdaniell  Resolve issue 2.
4495bd8deadSopenharmony_ci
4505bd8deadSopenharmony_ci    3     03/19/12  pdaniell  Remove references to RGB565, which are now fixed
4515bd8deadSopenharmony_ci                              in ARB_ES2_compatibility and an updated OpenGL
4525bd8deadSopenharmony_ci                              4.2 core spec. Make the ETC2/EAC compression
4535bd8deadSopenharmony_ci                              formats compulsory and bring in the tokens.
4545bd8deadSopenharmony_ci    
4555bd8deadSopenharmony_ci    2     01/31/12  pdaniell  Incorporated feedback from Bruce.
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci    1     01/23/12  pdaniell  Initial version.
458