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