15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_debug_marker
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_debug_marker
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Seth Sowerby
125bd8deadSopenharmony_ci    Benj Lipchak
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciContact
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Benj Lipchak, Apple (lipchak 'at' apple.com)
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciStatus
195bd8deadSopenharmony_ci    
205bd8deadSopenharmony_ci    Complete
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciVersion
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Date: October 7, 2013
255bd8deadSopenharmony_ci    Revision: 3
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciNumber
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    OpenGL Extension #440
305bd8deadSopenharmony_ci    OpenGL ES Extension #99
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciDependencies
335bd8deadSopenharmony_ci    
345bd8deadSopenharmony_ci    Requires OpenGL ES 1.1.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    Written based on the wording of the OpenGL ES 2.0.25 Full Specification
375bd8deadSopenharmony_ci    (November 2, 2010).
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciOverview
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    This extension defines a mechanism for OpenGL and OpenGL ES applications to
425bd8deadSopenharmony_ci    annotate their command stream with markers for discrete events and groups 
435bd8deadSopenharmony_ci    of commands using descriptive text markers. 
445bd8deadSopenharmony_ci    
455bd8deadSopenharmony_ci    When profiling or debugging such an application within a debugger or 
465bd8deadSopenharmony_ci    profiler it is difficult to relate the commands within the command stream 
475bd8deadSopenharmony_ci    to the elements of the scene or parts of the program code to which they 
485bd8deadSopenharmony_ci    correspond. Markers help obviate this by allowing applications to specify 
495bd8deadSopenharmony_ci    this link.
505bd8deadSopenharmony_ci    
515bd8deadSopenharmony_ci    The intended purpose of this is purely to improve the user experience 
525bd8deadSopenharmony_ci    within OpenGL and OpenGL ES development tools.
535bd8deadSopenharmony_ci    
545bd8deadSopenharmony_ciNew Procedures and Functions
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    void InsertEventMarkerEXT(sizei length, const char *marker);
575bd8deadSopenharmony_ci    void PushGroupMarkerEXT(sizei length, const char *marker);
585bd8deadSopenharmony_ci    void PopGroupMarkerEXT();
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciNew Tokens
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    None
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation)
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    None
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    None
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
735bd8deadSopenharmony_ciOperations and the Framebuffer)
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    None
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions)
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    Add a new section titled Debug Makers
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    Debug markers provide a method for annotating a command stream with markers 
825bd8deadSopenharmony_ci    for discrete events and groups of commands using a descriptive text marker.
835bd8deadSopenharmony_ci    These names may then be used by a tool such as a debugger or profiler to 
845bd8deadSopenharmony_ci    label the command stream.
855bd8deadSopenharmony_ci    
865bd8deadSopenharmony_ci    The command
875bd8deadSopenharmony_ci    
885bd8deadSopenharmony_ci        void InsertEventMarkerEXT(sizei length, const char *marker);
895bd8deadSopenharmony_ci        
905bd8deadSopenharmony_ci    inserts an event marker string <marker> into the command stream. <length> 
915bd8deadSopenharmony_ci    specifies the length of the string passed in <marker>. If <marker> is a 
925bd8deadSopenharmony_ci    null-terminated string then <length> should not include the terminator. 
935bd8deadSopenharmony_ci    If <length> is 0 then <marker> is assumed to be null-terminated.
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    The command
965bd8deadSopenharmony_ci    
975bd8deadSopenharmony_ci        void PushGroupMarkerEXT(sizei length, const char *marker);
985bd8deadSopenharmony_ci        
995bd8deadSopenharmony_ci    pushes a group marker string <marker> into the command stream. <length> 
1005bd8deadSopenharmony_ci    specifies the length of the string passed in <marker>. If <marker> is a 
1015bd8deadSopenharmony_ci    null-terminated string then <length> should not include the terminator. If 
1025bd8deadSopenharmony_ci    <length> is 0 then <marker> is assumed to be null-terminated. If <marker> 
1035bd8deadSopenharmony_ci    is null then an empty string is pushed on the stack.
1045bd8deadSopenharmony_ci        
1055bd8deadSopenharmony_ci    The command
1065bd8deadSopenharmony_ci    
1075bd8deadSopenharmony_ci        void PopGroupMarkerEXT();
1085bd8deadSopenharmony_ci        
1095bd8deadSopenharmony_ci    pops the most recent group marker. If there is no group marker to pop then 
1105bd8deadSopenharmony_ci    the PopGroupMarkerEXT command is ignored.
1115bd8deadSopenharmony_ci    
1125bd8deadSopenharmony_ci    Group markers are strictly hierarchical. Group marker sequences may be 
1135bd8deadSopenharmony_ci    nested within other group markers but can not overlap.
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
1165bd8deadSopenharmony_ciRequests)
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    None
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ciErrors
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    None
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ciNew State
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci    None
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ciNew Implementation Dependent State
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    None
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ciIssues
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    (1) Should the extension provide a method for querying markers?
1355bd8deadSopenharmony_ci    
1365bd8deadSopenharmony_ci    No.
1375bd8deadSopenharmony_ci    
1385bd8deadSopenharmony_ci    A great deal of the value of debug markers is the 'when' as well as the 
1395bd8deadSopenharmony_ci    'what' - seeing the debug markers within the stream of all OpenGL ES 
1405bd8deadSopenharmony_ci    commands.  This value is only available to a tool intercepting the command 
1415bd8deadSopenharmony_ci    stream - it is not available from querying the markers.  However, the 
1425bd8deadSopenharmony_ci    ability to query markers would make them available to developer tools 
1435bd8deadSopenharmony_ci    attaching to an already running application.
1445bd8deadSopenharmony_ci    
1455bd8deadSopenharmony_ci    Querying the markers could be useful for applications to be able to dump 
1465bd8deadSopenharmony_ci    their marker stack to their own logs.  However, this functionality does not 
1475bd8deadSopenharmony_ci    require an extension as applications can implement their own marker stacks 
1485bd8deadSopenharmony_ci    within their code independent of OpenGL ES.
1495bd8deadSopenharmony_ci    
1505bd8deadSopenharmony_ci    (2) Should a query exist for the current marker stack depth?
1515bd8deadSopenharmony_ci    
1525bd8deadSopenharmony_ci    No.
1535bd8deadSopenharmony_ci    
1545bd8deadSopenharmony_ci    This would be useful if markers are queryable but not otherwise.
1555bd8deadSopenharmony_ci        
1565bd8deadSopenharmony_ci    (3) Should PushGroupMarkerEXT & PopGroupMarkerEXT return the marker 
1575bd8deadSopenharmony_ci        stack depth?
1585bd8deadSopenharmony_ci    
1595bd8deadSopenharmony_ci    No.
1605bd8deadSopenharmony_ci     
1615bd8deadSopenharmony_ci    This would be useful if markers are queryable but not otherwise.
1625bd8deadSopenharmony_ci        
1635bd8deadSopenharmony_ci    (4) How should a null-string passed to PushGroupMarkerEXT be treated?
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    Resolved: Push an empty string.
1665bd8deadSopenharmony_ci    
1675bd8deadSopenharmony_ci    The two possibilities are to push an empty string onto the marker stack or 
1685bd8deadSopenharmony_ci    to ignore the call to PushGroupMarkerEXT.  Pushing an empty string 
1695bd8deadSopenharmony_ci    maintains the marker stack depth expected by the calling application.
1705bd8deadSopenharmony_ci    
1715bd8deadSopenharmony_ci    (5) Should the extension support printf-style formatting?
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ci    Resolved: No.
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci    Providing printf-style formatting would impose a much greater burden on the 
1765bd8deadSopenharmony_ci    extension in terms of error checking the format string and arguments.  
1775bd8deadSopenharmony_ci    Likely all languages capable of calling OpenGL ES have convenient 
1785bd8deadSopenharmony_ci    capabilities for formatting strings so it is acceptable to rely on those.
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ciRevision History
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    Date 01/17/2011
1835bd8deadSopenharmony_ci    Revision: 1
1845bd8deadSopenharmony_ci       - draft proposal
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    Date 07/22/2011
1875bd8deadSopenharmony_ci    Revision: 2
1885bd8deadSopenharmony_ci       - rename from APPLE to EXT
1895bd8deadSopenharmony_ci
1905bd8deadSopenharmony_ci    Date 10/07/2013
1915bd8deadSopenharmony_ci    Revision: 3
1925bd8deadSopenharmony_ci       - Add support for desktop OpenGL
193