Save/load GPU events.

This commit is contained in:
Bartosz Taudul 2017-11-12 01:12:28 +01:00
parent 7db21f23b5
commit dcc2b3fb09
2 changed files with 59 additions and 0 deletions

View File

@ -351,6 +351,16 @@ View::View( FileRead& f )
m_threads.push_back( td ); m_threads.push_back( td );
} }
f.Read( &sz, sizeof( sz ) );
m_gpuData.reserve( sz );
for( uint64_t i=0; i<sz; i++ )
{
auto ctx = m_slab.AllocInit<GpuCtxData>();
ReadTimeline( f, ctx->timeline );
ctx->showFull = true;
m_gpuData.push_back( ctx );
}
f.Read( &sz, sizeof( sz ) ); f.Read( &sz, sizeof( sz ) );
m_plots.reserve( sz ); m_plots.reserve( sz );
for( uint64_t i=0; i<sz; i++ ) for( uint64_t i=0; i<sz; i++ )
@ -3658,6 +3668,13 @@ void View::Write( FileWrite& f )
} }
} }
sz = m_gpuData.size();
f.Write( &sz, sizeof( sz ) );
for( auto& ctx : m_gpuData )
{
WriteTimeline( f, ctx->timeline );
}
sz = m_plots.size(); sz = m_plots.size();
f.Write( &sz, sizeof( sz ) ); f.Write( &sz, sizeof( sz ) );
for( auto& plot : m_plots ) for( auto& plot : m_plots )
@ -3691,6 +3708,24 @@ void View::WriteTimeline( FileWrite& f, const Vector<ZoneEvent*>& vec )
} }
} }
void View::WriteTimeline( FileWrite& f, const Vector<GpuEvent*>& vec )
{
uint64_t sz = vec.size();
f.Write( &sz, sizeof( sz ) );
for( auto& v : vec )
{
f.Write( &v->cpuStart, sizeof( v->cpuStart ) );
f.Write( &v->cpuEnd, sizeof( v->cpuEnd ) );
f.Write( &v->gpuStart, sizeof( v->gpuStart ) );
f.Write( &v->gpuEnd, sizeof( v->gpuEnd ) );
f.Write( &v->srcloc, sizeof( v->srcloc ) );
f.Write( &v->name, sizeof( v->name ) );
f.Write( &v->thread, sizeof( v->thread ) );
WriteTimeline( f, v->child );
}
}
void View::ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec ) void View::ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec )
{ {
uint64_t sz; uint64_t sz;
@ -3713,4 +3748,26 @@ void View::ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec )
} }
} }
void View::ReadTimeline( FileRead& f, Vector<GpuEvent*>& vec )
{
uint64_t sz;
f.Read( &sz, sizeof( sz ) );
vec.reserve( sz );
for( uint64_t i=0; i<sz; i++ )
{
auto zone = m_slab.AllocInit<GpuEvent>();
vec.push_back( zone );
f.Read( &zone->cpuStart, sizeof( zone->cpuStart ) );
f.Read( &zone->cpuEnd, sizeof( zone->cpuEnd ) );
f.Read( &zone->gpuStart, sizeof( zone->gpuStart ) );
f.Read( &zone->gpuEnd, sizeof( zone->gpuEnd ) );
f.Read( &zone->srcloc, sizeof( zone->srcloc ) );
f.Read( &zone->name, sizeof( zone->name ) );
f.Read( &zone->thread, sizeof( zone->thread ) );
ReadTimeline( f, zone->child );
}
}
} }

View File

@ -150,7 +150,9 @@ private:
void Write( FileWrite& f ); void Write( FileWrite& f );
void WriteTimeline( FileWrite& f, const Vector<ZoneEvent*>& vec ); void WriteTimeline( FileWrite& f, const Vector<ZoneEvent*>& vec );
void WriteTimeline( FileWrite& f, const Vector<GpuEvent*>& vec );
void ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec ); void ReadTimeline( FileRead& f, Vector<ZoneEvent*>& vec );
void ReadTimeline( FileRead& f, Vector<GpuEvent*>& vec );
std::string m_addr; std::string m_addr;