15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_debug_label
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_debug_label
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Seth Sowerby
125bd8deadSopenharmony_ci    Benj Lipchak
135bd8deadSopenharmony_ci    Jean-François Roy
145bd8deadSopenharmony_ci    Charles Brissart
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ciContact
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ci    Benj Lipchak, Apple (lipchak 'at' apple.com)
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ciStatus
215bd8deadSopenharmony_ci    
225bd8deadSopenharmony_ci    Complete
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciVersion
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Date: October 7, 2013
275bd8deadSopenharmony_ci    Revision: 4
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciNumber
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    OpenGL Extension #439
325bd8deadSopenharmony_ci    OpenGL ES Extension #98
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciDependencies
355bd8deadSopenharmony_ci    
365bd8deadSopenharmony_ci    Requires OpenGL ES 1.1.
375bd8deadSopenharmony_ci    
385bd8deadSopenharmony_ci    Written based on the wording of the OpenGL ES 2.0.25 Full Specification
395bd8deadSopenharmony_ci    (November 2, 2010).
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    OpenGL ES 1.1 affects the definition of this extension.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    OES_framebuffer_object affects the definition of this extension.
445bd8deadSopenharmony_ci    
455bd8deadSopenharmony_ci    OES_vertex_array_object affects the definition of this extension.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    EXT_occlusion_query_boolean affects the definition of this extension.
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    EXT_separate_shader_objects affects the definition of this extension.
505bd8deadSopenharmony_ci    
515bd8deadSopenharmony_ci    OpenGL ES 3.0 affects the definition of this extension.
525bd8deadSopenharmony_ci    
535bd8deadSopenharmony_ci    OpenGL 3.3+ and 4.0+ affect the definition of this extension.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciOverview
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    This extension defines a mechanism for OpenGL and OpenGL ES applications to 
585bd8deadSopenharmony_ci    label their objects (textures, buffers, shaders, etc.) with a descriptive 
595bd8deadSopenharmony_ci    string. 
605bd8deadSopenharmony_ci    
615bd8deadSopenharmony_ci    When profiling or debugging such an application within a debugger or 
625bd8deadSopenharmony_ci    profiler it is difficult to identify resources from their object names. 
635bd8deadSopenharmony_ci    Even when the resource itself is viewed it can be problematic to 
645bd8deadSopenharmony_ci    differentiate between similar resources. Attaching a label to an object         
655bd8deadSopenharmony_ci    helps obviate this difficulty.
665bd8deadSopenharmony_ci    
675bd8deadSopenharmony_ci    The intended purpose of this is purely to improve the user experience 
685bd8deadSopenharmony_ci    within OpenGL and OpenGL ES development tools.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciNew Procedures and Functions
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    void LabelObjectEXT(enum type, uint object, sizei length, 
735bd8deadSopenharmony_ci        const char *label);
745bd8deadSopenharmony_ci    void GetObjectLabelEXT(enum type, uint object, sizei bufSize, 
755bd8deadSopenharmony_ci        sizei *length, char *label);
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ciNew Tokens
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    Accepted by the <type> parameter of LabelObjectEXT and 
805bd8deadSopenharmony_ci    GetObjectLabelEXT:
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci        BUFFER_OBJECT_EXT                              0x9151
835bd8deadSopenharmony_ci        SHADER_OBJECT_EXT                              0x8B48
845bd8deadSopenharmony_ci        PROGRAM_OBJECT_EXT                             0x8B40
855bd8deadSopenharmony_ci        VERTEX_ARRAY_OBJECT_EXT                        0x9154
865bd8deadSopenharmony_ci        QUERY_OBJECT_EXT                               0x9153
875bd8deadSopenharmony_ci        PROGRAM_PIPELINE_OBJECT_EXT                    0x8A4F
885bd8deadSopenharmony_ci        
895bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation)
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    None
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    None
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
985bd8deadSopenharmony_ciOperations and the Framebuffer)
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci    None
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions)
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Add a new section titled Debug Labels
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci    Debug labels provide a method for annotating an object (texture, buffer, 
1075bd8deadSopenharmony_ci    shader, etc.) with a descriptive text label. These labels may then be used 
1085bd8deadSopenharmony_ci    by a tool such as a debugger or profiler to describe labeled objects. 
1095bd8deadSopenharmony_ci    
1105bd8deadSopenharmony_ci    The command
1115bd8deadSopenharmony_ci    
1125bd8deadSopenharmony_ci        void LabelObjectEXT(enum type, uint object, sizei length, 
1135bd8deadSopenharmony_ci            const char *label);
1145bd8deadSopenharmony_ci        
1155bd8deadSopenharmony_ci    labels the object <object> of type <type> with the label <label>. <length> 
1165bd8deadSopenharmony_ci    specifies the length of the string passed in <label>. If <label> is a null-
1175bd8deadSopenharmony_ci    terminated string then <length> should not include the terminator. If 
1185bd8deadSopenharmony_ci    <length> is 0 and <label> is non-null then <label> is assumed to be null-
1195bd8deadSopenharmony_ci    terminated. If <label> is NULL, any debug label is effectively removed from 
1205bd8deadSopenharmony_ci    <object>. 
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    If <object> is not an object of type <type>, an INVALID_OPERATION error is 
1235bd8deadSopenharmony_ci    generated.
1245bd8deadSopenharmony_ci    
1255bd8deadSopenharmony_ci    A label is part of the state of the object to which it is associated. 
1265bd8deadSopenharmony_ci    The initial state of an object's label is NULL. Labels need not be unique.
1275bd8deadSopenharmony_ci    
1285bd8deadSopenharmony_ci    Values supported for <type> are: TEXTURE, FRAMEBUFFER, RENDERBUFFER,        
1295bd8deadSopenharmony_ci    BUFFER_OBJECT_EXT, SHADER_OBJECT_EXT, PROGRAM_OBJECT_EXT,
1305bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT_EXT, QUERY_OBJECT_EXT, SAMPLER, TRANSFORM_FEEDBACK, and
1315bd8deadSopenharmony_ci    PROGRAM_PIPELINE_OBJECT_EXT.
1325bd8deadSopenharmony_ci    
1335bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
1345bd8deadSopenharmony_ciRequests)
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    Add a new section titled Debug Labels
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ci    The command
1395bd8deadSopenharmony_ci    
1405bd8deadSopenharmony_ci        void GetObjectLabelEXT(enum type, uint object, sizei bufSize, 
1415bd8deadSopenharmony_ci            sizei *length, char *label);
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci    returns in <label> the string labeling the object <object>. The 
1445bd8deadSopenharmony_ci    string <label> will be null terminated. The actual number of characters 
1455bd8deadSopenharmony_ci    written into <label>, excluding the null terminator, is returned in 
1465bd8deadSopenharmony_ci    <length>. If <length> is NULL, no length is returned. The maximum number 
1475bd8deadSopenharmony_ci    of characters that may be written into <label>, including the null
1485bd8deadSopenharmony_ci    terminator, is specified by <bufSize>. If no debug label was specified for 
1495bd8deadSopenharmony_ci    the object <object> via LabelObjectEXT then <label> will contain an 
1505bd8deadSopenharmony_ci    empty string with null terminator and 0 will be returned in <length>. If 
1515bd8deadSopenharmony_ci    <label> is NULL and <length> is non-NULL then no string will be returned 
1525bd8deadSopenharmony_ci    and the length of the label will be returned in <length>. 
1535bd8deadSopenharmony_ci    
1545bd8deadSopenharmony_ci    If <object> is not an object of type <type>, an INVALID_OPERATION error is 
1555bd8deadSopenharmony_ci    generated.
1565bd8deadSopenharmony_ci    
1575bd8deadSopenharmony_ci    Values supported for <type> are: TEXTURE, FRAMEBUFFER, RENDERBUFFER,        
1585bd8deadSopenharmony_ci    BUFFER_OBJECT_EXT, SHADER_OBJECT_EXT, PROGRAM_OBJECT_EXT, 
1595bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT_EXT, QUERY_OBJECT_EXT, SAMPLER, TRANSFORM_FEEDBACK, and
1605bd8deadSopenharmony_ci    PROGRAM_PIPELINE_OBJECT_EXT.
1615bd8deadSopenharmony_ci    
1625bd8deadSopenharmony_ciInteractions with OpenGL ES 1.1 and OES_framebuffer_object
1635bd8deadSopenharmony_ci
1645bd8deadSopenharmony_ci    If the GL is OpenGL ES 1.1, mentions of SHADER_OBJECT_EXT and 
1655bd8deadSopenharmony_ci    PROGRAM_OBJECT_EXT as types accepted by LabelObjectEXT and 
1665bd8deadSopenharmony_ci    GetObjectLabelEXT are omitted.
1675bd8deadSopenharmony_ci    
1685bd8deadSopenharmony_ci    If OES_framebuffer_object is supported, FRAMEBUFFER and 
1695bd8deadSopenharmony_ci    RENDERBUFFER should be replaced by FRAMEBUFFER_OES and RENDERBUFFER_OES, 
1705bd8deadSopenharmony_ci    respectively. Otherwise they should be omitted.
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ciInteractions with OpenGL ES 3.0 and OpenGL
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ci    If the GL is not OpenGL ES 3.0 or OpenGL 3.3+, mentions of 
1755bd8deadSopenharmony_ci    SAMPLER as a type accepted by LabelObjectEXT and GetObjectLabelEXT are 
1765bd8deadSopenharmony_ci    omitted.
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    If the GL is not OpenGL ES 3.0 or OpenGL 4.0+, mentions of 
1795bd8deadSopenharmony_ci    TRANSFORM_FEEDBACK as a type accepted by LabelObjectEXT and 
1805bd8deadSopenharmony_ci    GetObjectLabelEXT are omitted.
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ciInteractions with OES_vertex_array_object
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    If OES_vertex_array_object is not available, mentions of 
1855bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT_EXT as a type accepted by LabelObjectEXT and 
1865bd8deadSopenharmony_ci    GetObjectLabelEXT is omitted.
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ciInteractions with EXT_occlusion_query_boolean
1895bd8deadSopenharmony_ci
1905bd8deadSopenharmony_ci    If EXT_occlusion_query_boolean is not available, mentions of 
1915bd8deadSopenharmony_ci    QUERY_OBJECT_EXT as a type accepted by LabelObjectEXT and GetObjectLabelEXT
1925bd8deadSopenharmony_ci    is omitted.
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ciInteractions with EXT_separate_shader_objects
1955bd8deadSopenharmony_ci
1965bd8deadSopenharmony_ci    If EXT_separate_shader_objects is not available, mentions of 
1975bd8deadSopenharmony_ci    PROGRAM_PIPELINE_OBJECT_EXT as a type accepted by LabelObjectEXT and 
1985bd8deadSopenharmony_ci    GetObjectLabelEXT is omitted.
1995bd8deadSopenharmony_ci    
2005bd8deadSopenharmony_ciErrors
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci    INVALID_OPERATION is generated by LabelObjectEXT or GetObjectLabelEXT 
2035bd8deadSopenharmony_ci    if the type of <object> does not match <type>.
2045bd8deadSopenharmony_ci    
2055bd8deadSopenharmony_ci    INVALID_ENUM error will be generated by LabelObjectEXT or 
2065bd8deadSopenharmony_ci    GetObjectLabelEXT if <type> is not one of the allowed object types.
2075bd8deadSopenharmony_ci    
2085bd8deadSopenharmony_ci    INVALID_VALUE is generated by LabelObjectEXT if <length> is less than
2095bd8deadSopenharmony_ci    zero.
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci    INVALID_VALUE is generated by GetObjectLabelEXT if <bufSize> is less than
2125bd8deadSopenharmony_ci    zero.
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ciNew State
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    Add the following to Table 6.3 Buffer Object State:
2175bd8deadSopenharmony_ci    
2185bd8deadSopenharmony_ci                                                Initial
2195bd8deadSopenharmony_ci    Get Value          Type  Get Cmnd           Value    Description  Sec
2205bd8deadSopenharmony_ci    -----------------  ----  -----------------  -------  -----------  ---
2215bd8deadSopenharmony_ci    BUFFER_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci    Add the following to Table 6.8 Textures (state per texture object):
2245bd8deadSopenharmony_ci    
2255bd8deadSopenharmony_ci                                          Initial
2265bd8deadSopenharmony_ci    Get Value  Type  Get Cmnd             Value    Description  Sec
2275bd8deadSopenharmony_ci    ---------  ----  -------------------  -------  -----------  ---
2285bd8deadSopenharmony_ci    TEXTURE    0*xc  GetObjectLabelEXT    empty    Debug label  5.X
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    Add the following to Table 6.14 Shader Object State:
2315bd8deadSopenharmony_ci    
2325bd8deadSopenharmony_ci                                                Initial
2335bd8deadSopenharmony_ci    Get Value          Type  Get Cmnd           Value    Description  Sec
2345bd8deadSopenharmony_ci    -----------------  ----  -----------------  -------  -----------  ---
2355bd8deadSopenharmony_ci    SHADER_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci    Add the following to Table 6.15 Program Object State:
2385bd8deadSopenharmony_ci    
2395bd8deadSopenharmony_ci                                                 Initial
2405bd8deadSopenharmony_ci    Get Value           Type  Get Cmnd           Value    Description  Sec
2415bd8deadSopenharmony_ci    ------------------  ----  -----------------  -------  -----------  ---
2425bd8deadSopenharmony_ci    PROGRAM_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    Add the following to Table 6.23 Renderbuffer State:
2455bd8deadSopenharmony_ci    
2465bd8deadSopenharmony_ci                                             Initial
2475bd8deadSopenharmony_ci    Get Value     Type  Get Cmnd             Value    Description  Sec
2485bd8deadSopenharmony_ci    ------------  ----  -------------------  -------  -----------  ---
2495bd8deadSopenharmony_ci    RENDERBUFFER  0*xc  GetObjectLabelEXT    empty    Debug label  5.X
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ci    Add the following to Table 6.24 Framebuffer State:
2525bd8deadSopenharmony_ci    
2535bd8deadSopenharmony_ci                                            Initial
2545bd8deadSopenharmony_ci    Get Value    Type  Get Cmnd             Value    Description  Sec
2555bd8deadSopenharmony_ci    -----------  ----  -------------------  -------  -----------  ---
2565bd8deadSopenharmony_ci    FRAMEBUFFER  0*xc  GetObjectLabelEXT    empty    Debug label  5.X
2575bd8deadSopenharmony_ci
2585bd8deadSopenharmony_ci    Add the following to Table 6.VAO Vertex Array Object State:
2595bd8deadSopenharmony_ci    
2605bd8deadSopenharmony_ci                                                      Initial
2615bd8deadSopenharmony_ci    Get Value                Type  Get Cmnd           Value    Description  Sec
2625bd8deadSopenharmony_ci    -----------------------  ----  -----------------  -------  -----------  ---
2635bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2645bd8deadSopenharmony_ci
2655bd8deadSopenharmony_ci    Add the following to Table 6.QO Query State:
2665bd8deadSopenharmony_ci    
2675bd8deadSopenharmony_ci                                               Initial
2685bd8deadSopenharmony_ci    Get Value         Type  Get Cmnd           Value    Description  Sec
2695bd8deadSopenharmony_ci    ----------------  ----  -----------------  -------  -----------  ---
2705bd8deadSopenharmony_ci    QUERY_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci    Add the following to Table 6.PPO Program Pipeline State:
2735bd8deadSopenharmony_ci    
2745bd8deadSopenharmony_ci                                                          Init.
2755bd8deadSopenharmony_ci    Get Value                    Type  Get Cmnd           Value  Description  Sec
2765bd8deadSopenharmony_ci    ---------------------------  ----  -----------------  -----  -----------  ---
2775bd8deadSopenharmony_ci    PROGRAM_PIPELINE_OBJECT_EXT  0*xc  GetObjectLabelEXT  empty  Debug label  5.X
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    Add the following to Table 6.24 Transform Feedback State:
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci    Get Value                Type  Get Cmnd           Value    Description  Sec
2825bd8deadSopenharmony_ci    -----------------------  ----  -----------------  -------  -----------  ---
2835bd8deadSopenharmony_ci    TRANSFORM_FEEDBACK       0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci    Add the following to the Table 6.1 Textures (state per sampler object):
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    Get Value                Type  Get Cmnd           Value    Description  Sec
2885bd8deadSopenharmony_ci    -----------------------  ----  -----------------  -------  -----------  ---
2895bd8deadSopenharmony_ci    SAMPLER                  0*xc  GetObjectLabelEXT  empty    Debug label  5.X
2905bd8deadSopenharmony_ci
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ciNew Implementation Dependent State
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci    None
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ciIssues
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci    (1) Should labels apply to the currently bound object for the specified 
2995bd8deadSopenharmony_ci    type instead of requiring the object name to be specified?
3005bd8deadSopenharmony_ci    
3015bd8deadSopenharmony_ci    Resolved: No.
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ci    This would require shaders to be attached to a program which was then 
3045bd8deadSopenharmony_ci    linked and bound. This may not occur at the time the shader is created 
3055bd8deadSopenharmony_ci    and/or compiled. It might require significant work for developers to label 
3065bd8deadSopenharmony_ci    their shaders at the point of creation.
3075bd8deadSopenharmony_ci    
3085bd8deadSopenharmony_ci    (2) Should the extension accept FRAGMENT_SHADER & VERTEX_SHADER 
3095bd8deadSopenharmony_ci    instead of SHADER_OBJECT_EXT? ARRAY_BUFFER & ELEMENT_ARRAY_BUFFER instead 
3105bd8deadSopenharmony_ci    of BUFFER_OBJECT_EXT?
3115bd8deadSopenharmony_ci    
3125bd8deadSopenharmony_ci    Resolved: No.
3135bd8deadSopenharmony_ci    
3145bd8deadSopenharmony_ci    Specifying FRAGMENT_SHADER or VERTEX_SHADER to disambiguate the type of 
3155bd8deadSopenharmony_ci    shader would be necessary only if the resolution to issue #1 were yes,
3165bd8deadSopenharmony_ci    in which case one would label a shader attached to the currently bound 
3175bd8deadSopenharmony_ci    program without explicitly specifying the shader's name.  The same applies
3185bd8deadSopenharmony_ci    to buffer objects bound to the current vertex attribute array target versus
3195bd8deadSopenharmony_ci    the current element array target.
3205bd8deadSopenharmony_ci
3215bd8deadSopenharmony_ci    (3) Should the extension support printf-style formatting?
3225bd8deadSopenharmony_ci
3235bd8deadSopenharmony_ci    Resolved: No.
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ci    Providing printf-style formatting would impose a much greater burden on the 
3265bd8deadSopenharmony_ci    extension in terms of error checking the format string and arguments. 
3275bd8deadSopenharmony_ci    Likely all languages capable of calling OpenGL ES have convenient 
3285bd8deadSopenharmony_ci    capabilities for formatting strings so it is acceptable to rely on those.
3295bd8deadSopenharmony_ci    
3305bd8deadSopenharmony_ci    (4) Should labeling a non-existent object effectively create the object?
3315bd8deadSopenharmony_ci    
3325bd8deadSopenharmony_ci    Resolved: No, since some objects require more information (e.g. a texture
3335bd8deadSopenharmony_ci    target) to be properly initialized.
3345bd8deadSopenharmony_ci    
3355bd8deadSopenharmony_ciRevision History
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ci    Date 06/15/2011
3385bd8deadSopenharmony_ci    Revision: 1
3395bd8deadSopenharmony_ci       - draft proposal
3405bd8deadSopenharmony_ci
3415bd8deadSopenharmony_ci    Date 07/22/2011
3425bd8deadSopenharmony_ci    Revision: 2
3435bd8deadSopenharmony_ci       - rename APPLE to EXT, update token names and values
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    Date 10/18/2012
3465bd8deadSopenharmony_ci    Revision: 3
3475bd8deadSopenharmony_ci       - Add OpenGL ES 3.0 interactions: transform feedback and sampler objects
3485bd8deadSopenharmony_ci         
3495bd8deadSopenharmony_ci    Date 10/07/2013
3505bd8deadSopenharmony_ci    Revision: 4
3515bd8deadSopenharmony_ci       - Add support for desktop OpenGL
352