1
0
mirror of https://github.com/wolfpld/tracy synced 2025-05-05 14:43:53 +00:00

Extract and pass a value, which will be changing.

This commit is contained in:
Bartosz Taudul 2020-01-30 01:57:49 +01:00
parent c04824890d
commit 9a5104dacf
2 changed files with 18 additions and 18 deletions

View File

@ -5615,22 +5615,22 @@ void DrawZoneTrace( T zone, const std::vector<T>& trace, const Worker& worker, B
ImGui::TreePop(); ImGui::TreePop();
} }
void View::CalcZoneTimeData( unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ) void View::CalcZoneTimeData( unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone )
{ {
assert( zone.HasChildren() ); assert( zone.HasChildren() );
const auto& children = m_worker.GetZoneChildren( zone.Child() ); const auto& children = m_worker.GetZoneChildren( zone.Child() );
if( children.is_magic() ) if( children.is_magic() )
{ {
CalcZoneTimeDataImpl<VectorAdapterDirect<ZoneEvent>>( *(Vector<ZoneEvent>*)( &children ), data, zit, zone ); CalcZoneTimeDataImpl<VectorAdapterDirect<ZoneEvent>>( *(Vector<ZoneEvent>*)( &children ), data, ztime, zone );
} }
else else
{ {
CalcZoneTimeDataImpl<VectorAdapterPointer<ZoneEvent>>( children, data, zit, zone ); CalcZoneTimeDataImpl<VectorAdapterPointer<ZoneEvent>>( children, data, ztime, zone );
} }
} }
template<typename Adapter, typename V> template<typename Adapter, typename V>
void View::CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ) void View::CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone )
{ {
Adapter a; Adapter a;
if( m_timeDist.exclusiveTime ) if( m_timeDist.exclusiveTime )
@ -5638,7 +5638,7 @@ void View::CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t,
for( auto& child : children ) for( auto& child : children )
{ {
const auto t = m_worker.GetZoneEnd( a(child) ) - a(child).Start(); const auto t = m_worker.GetZoneEnd( a(child) ) - a(child).Start();
zit->second.time -= t; ztime -= t;
} }
} }
for( auto& child : children ) for( auto& child : children )
@ -5655,26 +5655,26 @@ void View::CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t,
it->second.time += t; it->second.time += t;
it->second.count++; it->second.count++;
} }
if( a(child).Child() >= 0 ) CalcZoneTimeData( data, it, a(child) ); if( a(child).Child() >= 0 ) CalcZoneTimeData( data, it->second.time, a(child) );
} }
} }
void View::CalcZoneTimeData( const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ) void View::CalcZoneTimeData( const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone )
{ {
assert( zone.HasChildren() ); assert( zone.HasChildren() );
const auto& children = m_worker.GetZoneChildren( zone.Child() ); const auto& children = m_worker.GetZoneChildren( zone.Child() );
if( children.is_magic() ) if( children.is_magic() )
{ {
CalcZoneTimeDataImpl<VectorAdapterDirect<ZoneEvent>>( *(Vector<ZoneEvent>*)( &children ), ctx, data, zit, zone ); CalcZoneTimeDataImpl<VectorAdapterDirect<ZoneEvent>>( *(Vector<ZoneEvent>*)( &children ), ctx, data, ztime, zone );
} }
else else
{ {
CalcZoneTimeDataImpl<VectorAdapterPointer<ZoneEvent>>( children, ctx, data, zit, zone ); CalcZoneTimeDataImpl<VectorAdapterPointer<ZoneEvent>>( children, ctx, data, ztime, zone );
} }
} }
template<typename Adapter, typename V> template<typename Adapter, typename V>
void View::CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ) void View::CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone )
{ {
Adapter a; Adapter a;
if( m_timeDist.exclusiveTime ) if( m_timeDist.exclusiveTime )
@ -5685,7 +5685,7 @@ void View::CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, un
uint64_t cnt; uint64_t cnt;
const auto res = GetZoneRunningTime( ctx, a(child), t, cnt ); const auto res = GetZoneRunningTime( ctx, a(child), t, cnt );
assert( res ); assert( res );
zit->second.time -= t; ztime -= t;
} }
} }
for( auto& child : children ) for( auto& child : children )
@ -5705,7 +5705,7 @@ void View::CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, un
it->second.time += t; it->second.time += t;
it->second.count++; it->second.count++;
} }
if( a(child).Child() >= 0 ) CalcZoneTimeData( ctx, data, it, a(child) ); if( a(child).Child() >= 0 ) CalcZoneTimeData( ctx, data, it->second.time, a(child) );
} }
} }
@ -6383,14 +6383,14 @@ void View::DrawZoneInfoWindow()
else else
{ {
auto it = m_timeDist.data.emplace( ev.SrcLoc(), ZoneTimeData{ time, 1 } ).first; auto it = m_timeDist.data.emplace( ev.SrcLoc(), ZoneTimeData{ time, 1 } ).first;
CalcZoneTimeData( ctx, m_timeDist.data, it, ev ); CalcZoneTimeData( ctx, m_timeDist.data, it->second.time, ev );
} }
m_timeDist.fztime = 100.f / time; m_timeDist.fztime = 100.f / time;
} }
else else
{ {
auto it = m_timeDist.data.emplace( ev.SrcLoc(), ZoneTimeData{ ztime, 1 } ).first; auto it = m_timeDist.data.emplace( ev.SrcLoc(), ZoneTimeData{ ztime, 1 } ).first;
CalcZoneTimeData( m_timeDist.data, it, ev ); CalcZoneTimeData( m_timeDist.data, it->second.time, ev );
m_timeDist.fztime = 100.f / ztime; m_timeDist.fztime = 100.f / ztime;
} }
} }

View File

@ -231,12 +231,12 @@ private:
int64_t GetZoneSelfTime( const GpuEvent& zone ); int64_t GetZoneSelfTime( const GpuEvent& zone );
bool GetZoneRunningTime( const ContextSwitch* ctx, const ZoneEvent& ev, int64_t& time, uint64_t& cnt ); bool GetZoneRunningTime( const ContextSwitch* ctx, const ZoneEvent& ev, int64_t& time, uint64_t& cnt );
tracy_force_inline void CalcZoneTimeData( unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ); tracy_force_inline void CalcZoneTimeData( unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone );
tracy_force_inline void CalcZoneTimeData( const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ); tracy_force_inline void CalcZoneTimeData( const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone );
template<typename Adapter, typename V> template<typename Adapter, typename V>
void CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ); void CalcZoneTimeDataImpl( const V& children, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone );
template<typename Adapter, typename V> template<typename Adapter, typename V>
void CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, unordered_flat_map<int16_t, ZoneTimeData>::iterator zit, const ZoneEvent& zone ); void CalcZoneTimeDataImpl( const V& children, const ContextSwitch* ctx, unordered_flat_map<int16_t, ZoneTimeData>& data, int64_t& ztime, const ZoneEvent& zone );
void SetPlaybackFrame( uint32_t idx ); void SetPlaybackFrame( uint32_t idx );