Manual initialization of GpuEvents.

This commit is contained in:
Bartosz Taudul 2017-11-15 22:21:02 +01:00
parent 54c5cfce66
commit a3ba188af5
2 changed files with 9 additions and 2 deletions

View File

@ -108,6 +108,8 @@ static_assert( std::numeric_limits<decltype(LockEvent::lockCount)>::max() >= Max
struct GpuEvent
{
void Init() { memset( &child, 0, 12 ); }
int64_t cpuStart;
int64_t cpuEnd;
int64_t gpuStart;
@ -118,6 +120,7 @@ struct GpuEvent
};
enum { GpuEventSize = sizeof( GpuEvent ) };
static_assert( sizeof( GpuEvent::child ) == 13, "Adjust vector clear size!" );
#pragma pack()

View File

@ -855,7 +855,9 @@ void View::ProcessGpuZoneBegin( const QueueGpuZoneBegin& ev )
CheckSourceLocation( ev.srcloc );
auto zone = m_slab.AllocInit<GpuEvent>();
auto zone = m_slab.Alloc<GpuEvent>();
zone->Init();
zone->cpuStart = ev.cpuTime * m_timerMul;
zone->cpuEnd = -1;
zone->gpuStart = std::numeric_limits<int64_t>::max();
@ -3871,7 +3873,9 @@ void View::ReadTimeline( FileRead& f, Vector<GpuEvent*>& vec )
for( uint64_t i=0; i<sz; i++ )
{
auto zone = m_slab.AllocInit<GpuEvent>();
auto zone = m_slab.Alloc<GpuEvent>();
zone->Init();
vec.push_back( zone );
f.Read( &zone->cpuStart, sizeof( zone->cpuStart ) );