<div dir="ltr">On Fri, Apr 12, 2013 at 2:20 PM, Alexander Monakov <<a href="mailto:amonakov@ispras.ru">amonakov@ispras.ru</a>> wrote:<br>><br>><br>> On Fri, 12 Apr 2013, José Fonseca wrote:<br>><br>>> Please provide sample output of apitrace dump with your patch so I can<br>
>> better image what you're arguing for.<br>><br>> See below (thanks Eugene).<br><br>Thanks. It helps.<br><br>This definitely should be a call detail, not a generic event. Because each stack trace is paired with call, and is not an independent or asynchronous event -- otherwise what guarantee do you have that another thread doesn't emit a glFakeBacktraceFunction between your glFakeBacktraceFunction and the next. How would you handle if a function internally calls another traced function? All sort of problems.<br>
<br>I doubt that dvmDumpThreadStack() output will be consistent in future releases. So I really think that it should be parsed in to an arrays of (symbol, filename, lineno) tripplets, so we can be future proof.<br><br>>> No. If we need generic events, fine, but these generic events should<br>
>> be distinct from call-enter/leave events in the trace file grammar.<br>><br>> Fair enough, but what is the way forward then? <br><br>In order for me to accept this I must require that the trace gramar is extended as I described before, and that the stack traces adheres to it.<br>
<br>> It appears that this patch and<br>> the patches for CPU+GPU timing are blocked now.<br><br>I haven't seen any recent CPU+GPU timing patches. The CPU timings should also be call details. The GPU timings, as you described, should be asynchronous events. If you want to propose a generic event type that can be used not only for GPU timing, but other asynchronous call-related info (e.g., CALL_ASYNC), that's fine.<br>
<br><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>CALL_ENTER 1234<br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div></font><font face="courier new, monospace"><div class="gmail_default" style="display:inline"></div></font><span style="font-family:'courier new',monospace"> <div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div>CPU_TIMESTAMP</span><br style="font-family:'courier new',monospace"><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div>
<div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>STACK_FRAME<div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div><br>
<div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>FRAME</font><div><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
SYMBOL </div>"<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">Foo</div>"</font></div><div><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
FILENAME </div>"foo.cpp" </font></div><div><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> LINE_NO 1234</div><br>
<div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>FRAME<br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div></font><div class="gmail_default" style="font-family:'courier new',monospace;display:inline">
SYMBOL </div><span style="font-family:'courier new',monospace">"<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">Boo</div>"<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div></span></div><div><span style="font-family:'courier new',monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div></span><font face="courier new, monospace"><div class="gmail_default" style="display:inline">
</div></font><div class="gmail_default" style="font-family:'courier new',monospace;display:inline"> // no filename line info available for this frame</div></div><div><span style="font-family:'courier new',monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div> </span><div class="gmail_default" style="font-family:'courier new',monospace;display:inline"> </div><span style="font-family:'courier new',monospace">ARG 0</span><div class="gmail_default" style="font-family:'courier new',monospace;display:inline">
...</div><br></div><div><font face="courier new, monospace"> <div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>ARG 1<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
...</div></font><div><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> END</div><br></font><font face="courier new, monospace"><br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div>CALL_LEAVE 1234<br> <div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div>CPU_TIMESTAMP<br> <div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div> RET<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
...</div><br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div></font><span style="font-family:'courier new',monospace"> END</span></div><div><font face="courier new, monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div><br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>CALL_A<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">S</div>
YNC <div style="font-family:'courier new',monospace;display:inline" class="gmail_default">1234</div><br> <div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div>GPU_START<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
...</div></font><div><span style="font-family:'courier new',monospace"><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"> </div> GPU_</span><div class="gmail_default" style="font-family:'courier new',monospace;display:inline">
LENGTH</div><div class="gmail_default" style="font-family:'courier new',monospace;display:inline"> ...</div><br></div><div><div style="font-family:'courier new',monospace" class="gmail_default"> END</div>
<div style="font-family:'courier new',monospace" class="gmail_default"></div></div><div><br></div><div><div style="font-family:'courier new',monospace" class="gmail_default">The structure here is</div><div style="font-family:'courier new',monospace" class="gmail_default">
<br></div><div style="font-family:'courier new',monospace" class="gmail_default"> EVENT</div><div style="font-family:'courier new',monospace" class="gmail_default"> DETAIL</div><div style="font-family:'courier new',monospace" class="gmail_default">
DETAIL</div><div style="font-family:'courier new',monospace" class="gmail_default"> END</div><div style="font-family:'courier new',monospace" class="gmail_default"></div></div>Each event implies holding a mutex for exclusive access for the<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div><div style="font-family:'courier new',monospace;display:inline" class="gmail_default"></div><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">
</div>file<div style="font-family:'courier new',monospace;display:inline" class="gmail_default">.</div><br><br><div style="font-family:'courier new',monospace;display:inline" class="gmail_default">T</div>
he trace parser / qapitrace will need to be updated to patch up the calls with their GPU info when they saw the event.<br><br>Jose</div></div></div>