<div dir="ltr">Rob,<div><br></div><div>Change looks good in principled, but it required a bit more tweaking.</div><div><br></div><div>See <a href="https://github.com/apitrace/apitrace/commits/call-no-markers">https://github.com/apitrace/apitrace/commits/call-no-markers</a>  . Give it a go and let me know if it still works for you.</div><div><br></div><div>Note in particular:</div><div>- you need to pass --marker command line option to glretrace</div><div>- Mesa refused markers between glBegin/End.  Could you check if this is a bug in Mesa or the right behavior?</div><div><br></div><div><br></div><div>Jose</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 20, 2016 at 9:52 PM, Rob Clark <span dir="ltr"><<a href="mailto:robdclark@gmail.com" target="_blank">robdclark@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If the extension is present, use it to log call numbers for draw<br>
commands, using GL_DEBUG_TYPE_MARKER.  If supported by the driver,<br>
this embeds the draw call no's in the commandstream.<br>
<br>
Signed-off-by: Rob Clark <<a href="mailto:robdclark@gmail.com">robdclark@gmail.com</a>><br>
---<br>
 retrace/glretrace.hpp      |  2 ++<br>
 retrace/glretrace_main.cpp | 18 ++++++++++++++++++<br>
 retrace/retrace.hpp        |  2 ++<br>
 retrace/retrace_main.cpp   |  4 ++++<br>
 4 files changed, 26 insertions(+)<br>
<br>
diff --git a/retrace/glretrace.hpp b/retrace/glretrace.hpp<br>
index fc36c52..82ed920 100644<br>
--- a/retrace/glretrace.hpp<br>
+++ b/retrace/glretrace.hpp<br>
@@ -57,6 +57,8 @@ struct Context {<br>
<br>
     bool used;<br>
<br>
+    bool KHR_debug;<br>
+<br>
     inline glprofile::Profile<br>
     profile(void) const {<br>
         return wsContext->profile;<br>
diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp<br>
index c3783cc..0135662 100755<br>
--- a/retrace/glretrace_main.cpp<br>
+++ b/retrace/glretrace_main.cpp<br>
@@ -399,6 +399,7 @@ initContext() {<br>
     supportsElapsed     = currentContext->hasExtension("GL_EXT_timer_query") || supportsTimestamp;<br>
     supportsOcclusion   = currentProfile.versionGreaterOrEqual(glprofile::API_GL, 1, 5);<br>
     supportsARBShaderObjects = currentContext->hasExtension("GL_ARB_shader_objects");<br>
+    currentContext->KHR_debug = currentContext->hasExtension("GL_KHR_debug");<br>
<br>
 #ifdef __APPLE__<br>
     // GL_TIMESTAMP doesn't work on Apple.  GL_TIME_ELAPSED still does however.<br>
@@ -766,6 +767,23 @@ public:<br>
     dumpState(StateWriter &writer) {<br>
         glstate::dumpCurrentContext(writer);<br>
     }<br>
+<br>
+    void<br>
+    log(trace::Call &call) {<br>
+        glretrace::Context *currentContext = glretrace::getCurrentContext();<br>
+        if (currentContext && currentContext->KHR_debug) {<br>
+            char *str;<br>
+            int len = asprintf(&str, "%d:%s", <a href="http://call.no" rel="noreferrer" target="_blank">call.no</a>, <a href="http://call.name" rel="noreferrer" target="_blank">call.name</a>());<br>
+            if (len > 0) {<br>
+                glDebugMessageInsert(GL_DEBUG_SOURCE_THIRD_PARTY,<br>
+                                     GL_DEBUG_TYPE_MARKER, 0,<br>
+                                     GL_DEBUG_SEVERITY_NOTIFICATION,<br>
+                                     len, str);<br>
+                free(str);<br>
+            }<br>
+        }<br>
+    }<br>
+<br>
 };<br>
<br>
 static GLDumper glDumper;<br>
diff --git a/retrace/retrace.hpp b/retrace/retrace.hpp<br>
index 082879f..66024c5 100644<br>
--- a/retrace/retrace.hpp<br>
+++ b/retrace/retrace.hpp<br>
@@ -226,6 +226,8 @@ public:<br>
<br>
     virtual void<br>
     dumpState(StateWriter &) = 0;<br>
+<br>
+    virtual void log(trace::Call &call) {}<br>
 };<br>
<br>
<br>
diff --git a/retrace/retrace_main.cpp b/retrace/retrace_main.cpp<br>
index bc00ffe..6344880 100644<br>
--- a/retrace/retrace_main.cpp<br>
+++ b/retrace/retrace_main.cpp<br>
@@ -238,6 +238,10 @@ retraceCall(trace::Call *call) {<br>
         }<br>
     }<br>
<br>
+    if (call->flags & trace::CALL_FLAG_RENDER) {<br>
+       dumper->log(*call);<br>
+    }<br>
+<br>
     retracer.retrace(*call);<br>
<br>
     if (doSnapshot) {<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.5.0<br>
<br>
</font></span></blockquote></div><br></div>