1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Track sub progress.

This commit is contained in:
Bartosz Taudul 2018-07-28 19:05:01 +02:00
parent a14238c199
commit 4741dab833
2 changed files with 12 additions and 2 deletions

View File

@ -349,8 +349,10 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
f.Read( sz ); f.Read( sz );
if( eventMask & EventType::Locks ) if( eventMask & EventType::Locks )
{ {
s_loadProgress.subTotal.store( sz, std::memory_order_relaxed );
for( uint64_t i=0; i<sz; i++ ) for( uint64_t i=0; i<sz; i++ )
{ {
s_loadProgress.subProgress.store( i, std::memory_order_relaxed );
LockMap lockmap; LockMap lockmap;
uint32_t id; uint32_t id;
uint64_t tsz; uint64_t tsz;
@ -444,6 +446,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
} }
} }
s_loadProgress.subTotal.store( 0, std::memory_order_relaxed );
s_loadProgress.progress.store( 2, std::memory_order_relaxed ); s_loadProgress.progress.store( 2, std::memory_order_relaxed );
flat_hash_map<uint64_t, MessageData*, nohash<uint64_t>> msgMap; flat_hash_map<uint64_t, MessageData*, nohash<uint64_t>> msgMap;
f.Read( sz ); f.Read( sz );
@ -477,8 +480,10 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
s_loadProgress.progress.store( 3, std::memory_order_relaxed ); s_loadProgress.progress.store( 3, std::memory_order_relaxed );
f.Read( sz ); f.Read( sz );
m_data.threads.reserve( sz ); m_data.threads.reserve( sz );
s_loadProgress.subTotal.store( sz, std::memory_order_relaxed );
for( uint64_t i=0; i<sz; i++ ) for( uint64_t i=0; i<sz; i++ )
{ {
s_loadProgress.subProgress.store( i, std::memory_order_relaxed );
auto td = m_slab.AllocInit<ThreadData>(); auto td = m_slab.AllocInit<ThreadData>();
uint64_t tid; uint64_t tid;
f.Read( tid ); f.Read( tid );
@ -537,8 +542,10 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
s_loadProgress.progress.store( 4, std::memory_order_relaxed ); s_loadProgress.progress.store( 4, std::memory_order_relaxed );
f.Read( sz ); f.Read( sz );
m_data.gpuData.reserve( sz ); m_data.gpuData.reserve( sz );
s_loadProgress.subTotal.store( sz, std::memory_order_relaxed );
for( uint64_t i=0; i<sz; i++ ) for( uint64_t i=0; i<sz; i++ )
{ {
s_loadProgress.subProgress.store( i, std::memory_order_relaxed );
auto ctx = m_slab.AllocInit<GpuCtxData>(); auto ctx = m_slab.AllocInit<GpuCtxData>();
f.Read( ctx->thread ); f.Read( ctx->thread );
f.Read( ctx->accuracyBits ); f.Read( ctx->accuracyBits );
@ -603,6 +610,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
return; return;
} }
s_loadProgress.subTotal.store( 0, std::memory_order_relaxed );
s_loadProgress.progress.store( 6, std::memory_order_relaxed ); s_loadProgress.progress.store( 6, std::memory_order_relaxed );
f.Read( sz ); f.Read( sz );
bool reconstructMemAllocPlot = false; bool reconstructMemAllocPlot = false;
@ -610,8 +618,10 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
{ {
m_data.memory.data.reserve_and_use( sz ); m_data.memory.data.reserve_and_use( sz );
auto mem = m_data.memory.data.data(); auto mem = m_data.memory.data.data();
s_loadProgress.subTotal.store( sz, std::memory_order_relaxed );
for( uint64_t i=0; i<sz; i++ ) for( uint64_t i=0; i<sz; i++ )
{ {
s_loadProgress.subProgress.store( i, std::memory_order_relaxed );
if( fileVer <= FileVersion( 0, 3, 1 ) ) if( fileVer <= FileVersion( 0, 3, 1 ) )
{ {
f.Read( mem, sizeof( MemEvent::ptr ) + sizeof( MemEvent::size ) + sizeof( MemEvent::timeAlloc ) + sizeof( MemEvent::timeFree ) ); f.Read( mem, sizeof( MemEvent::ptr ) + sizeof( MemEvent::size ) + sizeof( MemEvent::timeAlloc ) + sizeof( MemEvent::timeFree ) );
@ -684,6 +694,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
if( fileVer <= FileVersion( 0, 3, 1 ) ) goto finishLoading; if( fileVer <= FileVersion( 0, 3, 1 ) ) goto finishLoading;
s_loadProgress.subTotal.store( 0, std::memory_order_relaxed );
s_loadProgress.progress.store( 7, std::memory_order_relaxed ); s_loadProgress.progress.store( 7, std::memory_order_relaxed );
f.Read( sz ); f.Read( sz );
m_data.callstackPayload.reserve( sz ); m_data.callstackPayload.reserve( sz );

View File

@ -193,16 +193,15 @@ int main( int argc, char** argv )
ImGui::Text( "Total progress: %" PRIu64 "/%" PRIu64, currProgress, totalProgress ); ImGui::Text( "Total progress: %" PRIu64 "/%" PRIu64, currProgress, totalProgress );
ImGui::ProgressBar( float( currProgress ) / totalProgress, ImVec2( 200 * dpiScale, 0 ) ); ImGui::ProgressBar( float( currProgress ) / totalProgress, ImVec2( 200 * dpiScale, 0 ) );
ImGui::Text( "Sub progress..." );
auto subTotal = progress.subTotal.load( std::memory_order_relaxed ); auto subTotal = progress.subTotal.load( std::memory_order_relaxed );
auto subProgress = progress.subProgress.load( std::memory_order_relaxed ); auto subProgress = progress.subProgress.load( std::memory_order_relaxed );
if( subTotal == 0 ) if( subTotal == 0 )
{ {
ImGui::Text( "Sub progress..." );
ImGui::ProgressBar( 1.f, ImVec2( 200 * dpiScale, 0 ) ); ImGui::ProgressBar( 1.f, ImVec2( 200 * dpiScale, 0 ) );
} }
else else
{ {
ImGui::Text( "Sub progress: %" PRIu64 "/%" PRIu64, subProgress, subTotal );
ImGui::ProgressBar( float( subProgress ) / subTotal, ImVec2( 200 * dpiScale, 0 ) ); ImGui::ProgressBar( float( subProgress ) / subTotal, ImVec2( 200 * dpiScale, 0 ) );
} }
ImGui::EndPopup(); ImGui::EndPopup();