mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-26 16:04:34 +00:00
debugging timestamps...
This commit is contained in:
parent
47180dbf7f
commit
4b695cc3dd
@ -117,6 +117,8 @@ public:
|
|||||||
MTLTimestamp gpuTimestamp = 0;
|
MTLTimestamp gpuTimestamp = 0;
|
||||||
float period = 1.0f;
|
float period = 1.0f;
|
||||||
[m_device sampleTimestamps:&cpuTimestamp gpuTimestamp:&gpuTimestamp];
|
[m_device sampleTimestamps:&cpuTimestamp gpuTimestamp:&gpuTimestamp];
|
||||||
|
fprintf(stdout, "TracyMetal: Calibration: CPU timestamp: %llu\n", cpuTimestamp);
|
||||||
|
fprintf(stdout, "TracyMetal: Calibration: GPU timestamp: %llu\n", gpuTimestamp);
|
||||||
|
|
||||||
m_contextId = GetGpuCtxCounter().fetch_add(1);
|
m_contextId = GetGpuCtxCounter().fetch_add(1);
|
||||||
|
|
||||||
@ -205,31 +207,38 @@ public:
|
|||||||
|
|
||||||
if (count >= MaxQueries)
|
if (count >= MaxQueries)
|
||||||
{
|
{
|
||||||
TracyMetalPanic("too many pending timestamp queries.", return false;);
|
TracyMetalPanic("Collect: too many pending timestamp queries.", return false;);
|
||||||
}
|
}
|
||||||
|
|
||||||
NSRange range = { begin, latestCheckpoint };
|
NSRange range = NSMakeRange(begin, count);
|
||||||
NSData* data = [m_counterSampleBuffer resolveCounterRange:range];
|
NSData* data = [m_counterSampleBuffer resolveCounterRange:range];
|
||||||
NSUInteger numResolvedTimestamps = data.length / sizeof(MTLCounterResultTimestamp);
|
NSUInteger numResolvedTimestamps = data.length / sizeof(MTLCounterResultTimestamp);
|
||||||
MTLCounterResultTimestamp* timestamps = (MTLCounterResultTimestamp *)(data.bytes);
|
MTLCounterResultTimestamp* timestamps = (MTLCounterResultTimestamp *)(data.bytes);
|
||||||
if (timestamps == nil)
|
if (timestamps == nil)
|
||||||
{
|
{
|
||||||
TracyMetalPanic("unable to resolve timestamps.", return false;);
|
TracyMetalPanic("Collect: unable to resolve timestamps.", return false;);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto i = 0; i < numResolvedTimestamps; ++i)
|
for (auto i = 0; i < numResolvedTimestamps; ++i)
|
||||||
{
|
{
|
||||||
uint32_t k = RingIndex(i);
|
MTLTimestamp& timestamp = timestamps[i].timestamp;
|
||||||
MTLTimestamp& timestamp = timestamps[k].timestamp;
|
|
||||||
// TODO: check the value of timestamp: MTLCounterErrorValue, zero, or valid
|
// TODO: check the value of timestamp: MTLCounterErrorValue, zero, or valid
|
||||||
if (timestamp == MTLCounterErrorValue)
|
if (timestamp == MTLCounterErrorValue)
|
||||||
{
|
{
|
||||||
|
TracyMetalPanic("Collect: invalid timestamp: MTLCounterErrorValue (0xFF..FF).");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (timestamp == 0)
|
||||||
|
{
|
||||||
|
TracyMetalPanic("Collect: invalid timestamp: zero.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_previousCheckpoint += 1;
|
m_previousCheckpoint += 1;
|
||||||
|
uint32_t k = RingIndex(begin + i);
|
||||||
|
fprintf(stdout, "TracyMetal: timestamp[%d]: %llu\n", k, timestamp);
|
||||||
auto* item = Profiler::QueueSerial();
|
auto* item = Profiler::QueueSerial();
|
||||||
MemWrite(&item->hdr.type, QueueType::GpuTime);
|
MemWrite(&item->hdr.type, QueueType::GpuTime);
|
||||||
MemWrite(&item->gpuTime.gpuTime, timestamp);
|
MemWrite(&item->gpuTime.gpuTime, static_cast<int64_t>(timestamp));
|
||||||
MemWrite(&item->gpuTime.queryId, static_cast<uint16_t>(k));
|
MemWrite(&item->gpuTime.queryId, static_cast<uint16_t>(k));
|
||||||
MemWrite(&item->gpuTime.context, m_contextId);
|
MemWrite(&item->gpuTime.context, m_contextId);
|
||||||
Profiler::QueueSerialFinish();
|
Profiler::QueueSerialFinish();
|
||||||
@ -260,7 +269,7 @@ private:
|
|||||||
auto id = m_queryCounter.fetch_add(n);
|
auto id = m_queryCounter.fetch_add(n);
|
||||||
if (RingCount(m_previousCheckpoint, id) >= MaxQueries)
|
if (RingCount(m_previousCheckpoint, id) >= MaxQueries)
|
||||||
{
|
{
|
||||||
TracyMetalPanic("too many pending timestamp queries.");
|
TracyMetalPanic("NextQueryId: too many pending timestamp queries.");
|
||||||
// #TODO: return some sentinel value; ideally a "hidden" query index
|
// #TODO: return some sentinel value; ideally a "hidden" query index
|
||||||
}
|
}
|
||||||
return RingIndex(id);
|
return RingIndex(id);
|
||||||
|
Loading…
Reference in New Issue
Block a user