mirror of
https://github.com/wolfpld/tracy
synced 2025-04-29 04:23:51 +00:00
Allow setting custom FPS targets on frames overview.
This commit is contained in:
parent
9b5d0747eb
commit
49dc3431ab
@ -7,15 +7,11 @@
|
||||
namespace tracy
|
||||
{
|
||||
|
||||
enum { BestTime = 1000 * 1000 * 1000 / 143 };
|
||||
enum { GoodTime = 1000 * 1000 * 1000 / 59 };
|
||||
enum { BadTime = 1000 * 1000 * 1000 / 29 };
|
||||
|
||||
static ImU32 GetFrameColor( uint64_t frameTime )
|
||||
static uint32_t GetFrameColor( uint64_t time, uint64_t target )
|
||||
{
|
||||
return frameTime > BadTime ? 0xFF2222DD :
|
||||
frameTime > GoodTime ? 0xFF22DDDD :
|
||||
frameTime > BestTime ? 0xFF22DD22 : 0xFFDD9900;
|
||||
return time > target * 2 ? 0xFF2222DD :
|
||||
time > target ? 0xFF22DDDD :
|
||||
time > target / 2 ? 0xFF22DD22 : 0xFFDD9900;
|
||||
}
|
||||
|
||||
static int GetFrameWidth( int frameScale )
|
||||
@ -41,11 +37,13 @@ void View::DrawFrames()
|
||||
const auto scale = GetScale();
|
||||
const auto Height = 50 * scale;
|
||||
|
||||
enum { MaxFrameTime = 50 * 1000 * 1000 }; // 50ms
|
||||
constexpr uint64_t MaxFrameTime = 50 * 1000 * 1000; // 50ms
|
||||
|
||||
ImGuiWindow* window = ImGui::GetCurrentWindowRead();
|
||||
if( window->SkipItems ) return;
|
||||
|
||||
const uint64_t frameTarget = 1000 * 1000 * 1000 / m_vd.frameTarget;
|
||||
|
||||
auto& io = ImGui::GetIO();
|
||||
|
||||
const auto wpos = ImGui::GetCursorScreenPos();
|
||||
@ -416,11 +414,11 @@ void View::DrawFrames()
|
||||
const auto h = std::max( 1.f, float( std::min<uint64_t>( MaxFrameTime, f ) ) / MaxFrameTime * ( Height - 2 ) );
|
||||
if( fwidth != 1 )
|
||||
{
|
||||
draw->AddRectFilled( wpos + ImVec2( 1 + i*fwidth, Height-1-h ), wpos + ImVec2( fwidth + i*fwidth, Height-1 ), GetFrameColor( f ) );
|
||||
draw->AddRectFilled( wpos + ImVec2( 1 + i*fwidth, Height-1-h ), wpos + ImVec2( fwidth + i*fwidth, Height-1 ), GetFrameColor( f, frameTarget ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawLine( draw, dpos + ImVec2( 1+i, Height-2-h ), dpos + ImVec2( 1+i, Height-2 ), GetFrameColor( f ) );
|
||||
DrawLine( draw, dpos + ImVec2( 1+i, Height-2-h ), dpos + ImVec2( 1+i, Height-2 ), GetFrameColor( f, frameTarget ) );
|
||||
}
|
||||
|
||||
i++;
|
||||
@ -447,9 +445,9 @@ void View::DrawFrames()
|
||||
}
|
||||
}
|
||||
|
||||
DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * BadTime / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * BadTime / MaxFrameTime ) ), 0x4422DDDD );
|
||||
DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * GoodTime / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * GoodTime / MaxFrameTime ) ), 0x4422DD22 );
|
||||
DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * BestTime / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * BestTime / MaxFrameTime ) ), 0x44DD9900 );
|
||||
if( frameTarget * 2 <= MaxFrameTime ) DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * frameTarget * 2 / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * frameTarget * 2 / MaxFrameTime ) ), 0x442222DD );
|
||||
if( frameTarget <= MaxFrameTime ) DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * frameTarget / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * frameTarget / MaxFrameTime ) ), 0x4422DDDD );
|
||||
if( frameTarget / 2 <= MaxFrameTime ) DrawLine( draw, dpos + ImVec2( 0, round( Height - Height * frameTarget / 2 / MaxFrameTime ) ), dpos + ImVec2( w, round( Height - Height * frameTarget / 2 / MaxFrameTime ) ), 0x4422DD22 );
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user