<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>