mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Display context switch wait call stack.
This commit is contained in:
parent
ce8e42f00b
commit
1200409a44
@ -3287,7 +3287,7 @@ void View::DrawZones()
|
|||||||
auto ctxSwitch = m_worker.GetContextSwitchData( v->id );
|
auto ctxSwitch = m_worker.GetContextSwitchData( v->id );
|
||||||
if( ctxSwitch )
|
if( ctxSwitch )
|
||||||
{
|
{
|
||||||
DrawContextSwitches( ctxSwitch, hover, pxns, int64_t( nspx ), wpos, ctxOffset, offset, v->isFiber );
|
DrawContextSwitches( ctxSwitch, v->samples, hover, pxns, int64_t( nspx ), wpos, ctxOffset, offset, v->isFiber );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3875,7 +3875,7 @@ static const char* DecodeContextSwitchState( uint8_t state )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int endOffset, bool isFiber )
|
void View::DrawContextSwitches( const ContextSwitch* ctx, const Vector<SampleData>& sampleData, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int endOffset, bool isFiber )
|
||||||
{
|
{
|
||||||
auto& vec = ctx->v;
|
auto& vec = ctx->v;
|
||||||
auto it = std::lower_bound( vec.begin(), vec.end(), std::max<int64_t>( 0, m_vd.zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
|
auto it = std::lower_bound( vec.begin(), vec.end(), std::max<int64_t>( 0, m_vd.zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
|
||||||
@ -3917,6 +3917,7 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
|
|||||||
|
|
||||||
if( hover )
|
if( hover )
|
||||||
{
|
{
|
||||||
|
bool tooltip = false;
|
||||||
if( ImGui::IsMouseHoveringRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( pxw, offset + ty ) ) )
|
if( ImGui::IsMouseHoveringRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( pxw, offset + ty ) ) )
|
||||||
{
|
{
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
@ -3949,7 +3950,7 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
|
|||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
TextDisabledUnformatted( DecodeContextSwitchState( pit->State() ) );
|
TextDisabledUnformatted( DecodeContextSwitchState( pit->State() ) );
|
||||||
}
|
}
|
||||||
ImGui::EndTooltip();
|
tooltip = true;
|
||||||
|
|
||||||
if( IsMouseClicked( 2 ) )
|
if( IsMouseClicked( 2 ) )
|
||||||
{
|
{
|
||||||
@ -3967,6 +3968,20 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
|
|||||||
{
|
{
|
||||||
ZoomToRange( pit->End(), ev.WakeupVal() );
|
ZoomToRange( pit->End(), ev.WakeupVal() );
|
||||||
}
|
}
|
||||||
|
tooltip = true;
|
||||||
|
}
|
||||||
|
if( tooltip )
|
||||||
|
{
|
||||||
|
if( !sampleData.empty() )
|
||||||
|
{
|
||||||
|
auto sdit = std::lower_bound( sampleData.begin(), sampleData.end(), ev.Start(), [] ( const auto& l, const auto& r ) { return l.time.Val() < r; } );
|
||||||
|
if( sdit != sampleData.end() && sdit->time.Val() == ev.Start() )
|
||||||
|
{
|
||||||
|
ImGui::Separator();
|
||||||
|
TextDisabledUnformatted( "Wait stack:" );
|
||||||
|
CallstackTooltipContents( sdit->callstack.Val() );
|
||||||
|
}
|
||||||
|
}
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,7 @@ private:
|
|||||||
void DrawZoneFramesHeader();
|
void DrawZoneFramesHeader();
|
||||||
void DrawZoneFrames( const FrameData& frames );
|
void DrawZoneFrames( const FrameData& frames );
|
||||||
void DrawZones();
|
void DrawZones();
|
||||||
void DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int endOffset, bool isFiber );
|
void DrawContextSwitches( const ContextSwitch* ctx, const Vector<SampleData>& sampleData, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int endOffset, bool isFiber );
|
||||||
void DrawSamples( const Vector<SampleData>& vec, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset );
|
void DrawSamples( const Vector<SampleData>& vec, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset );
|
||||||
#ifndef TRACY_NO_STATISTICS
|
#ifndef TRACY_NO_STATISTICS
|
||||||
int DispatchGhostLevel( const Vector<GhostZone>& vec, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int depth, float yMin, float yMax, uint64_t tid );
|
int DispatchGhostLevel( const Vector<GhostZone>& vec, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset, int depth, float yMin, float yMax, uint64_t tid );
|
||||||
|
Loading…
Reference in New Issue
Block a user