GS window title info: improve, shorten

The goal here is to reduce clutter and to make it more useful by putting the
important values at the begining, and the less used values at the end. The GSdx
string is unmodified, and maybe we could simplify it too in the future.

Previously, the tile displayed the following items in this order:
<GSdx string>  - (e.g. GSdx OGL HW | 514x224 | None)
<output mode>  - Progressive/Interlaced (Frame/Field)
<limiter mode> - Limiter: None/Turbo/Slomo/Normal
<speed info>   - Speed: <100-based-percentage> (<vfps>)
<CPU usage>    - EE: <%> | GS: <%> | VU <%> | UI: <%>
<save state>   - State: <slot-number>

This patch changes the following to this order and format:
- Move the save state value to the front since it's actually useful.
- The speed value, which now includes the limiter value if not "Normal".
- Then the CPU usage parts, but the UI value only shows on debug/devel builds.
- The output mode, shortened to Frame/Field-i/p
- the GSdx string same as before only at the end

So all the info is still there as before (except UI), but more readable format.

E.g. before (normal limiter and turbo limiter):
GSdx D3D11 HW | 640x512 | None | Interlaced (frame) | Limiter: Normal | Speed: 100% (50.01) | EE:  43% | GS:   4% | UI:   0% | State 0
GSdx D3D11 HW | 640x512 | None | Interlaced (frame) | Limiter: Turbo | Speed: 443% (221.31) | EE:  99% | GS:  16% | UI:   0% | State 0

E.g. after (normal limiter and turbo limiter) for the same values as above:
State 0 | Speed: 100% (50.01) | EE:  43% | GS:   4% | frame-i | GSdx D3D11 HW | 640x512 | None
State 0 | Speed (Turbo): 443% (221.31) | EE:  99% | GS:  16% | frame-i | GSdx D3D11 HW | 640x512 | None
This commit is contained in:
Avi Halachmi (:avih) 2015-10-07 03:32:01 +03:00
parent 75b2406997
commit 31813c29af
1 changed files with 18 additions and 20 deletions

View File

@ -564,43 +564,41 @@ void GSFrame::OnUpdateTitle( wxTimerEvent& evt )
gsDest[0] = 0; // No need to set whole array to NULL. gsDest[0] = 0; // No need to set whole array to NULL.
GSgetTitleInfo2( gsDest, sizeof(gsDest) ); GSgetTitleInfo2( gsDest, sizeof(gsDest) );
const wxChar* limiterStr = L"None"; const wxChar* limiterStr = L" (Unlimited)";
if( g_Conf->EmuOptions.GS.FrameLimitEnable ) if( g_Conf->EmuOptions.GS.FrameLimitEnable )
{ {
switch( g_LimiterMode ) switch( g_LimiterMode )
{ {
case Limit_Nominal: limiterStr = L"Normal"; break; case Limit_Nominal: limiterStr = L""; break;
case Limit_Turbo: limiterStr = L"Turbo"; break; case Limit_Turbo: limiterStr = L" (Turbo)"; break;
case Limit_Slomo: limiterStr = L"Slomo"; break; case Limit_Slomo: limiterStr = L" (Slomo)"; break;
} }
} }
FastFormatUnicode cpuUsage; FastFormatUnicode cpuUsage;
if (m_CpuUsage.IsImplemented()) { if (m_CpuUsage.IsImplemented()) {
m_CpuUsage.UpdateStats(); m_CpuUsage.UpdateStats();
if (THREAD_VU1) { // Display VU thread's usage
cpuUsage.Write(L" | EE: %3d%% | GS: %3d%% | VU: %3d%% | UI: %3d%%", cpuUsage.Write(L" | EE: %3d%%", m_CpuUsage.GetEEcorePct());
m_CpuUsage.GetEEcorePct(), m_CpuUsage.GetGsPct(), cpuUsage.Write(L" | GS: %3d%%", m_CpuUsage.GetGsPct());
m_CpuUsage.GetVUPct(), m_CpuUsage.GetGuiPct());
} if (THREAD_VU1)
else { cpuUsage.Write(L" | VU: %3d%%", m_CpuUsage.GetVUPct());
cpuUsage.Write(L" | EE: %3d%% | GS: %3d%% | UI: %3d%%",
m_CpuUsage.GetEEcorePct(), m_CpuUsage.GetGsPct(), pxNonReleaseCode(cpuUsage.Write(L" | UI: %3d%%", m_CpuUsage.GetEEcorePct());)
m_CpuUsage.GetGuiPct());
}
} }
const u64& smode2 = *(u64*)PS2GS_BASE(GS_SMODE2); const u64& smode2 = *(u64*)PS2GS_BASE(GS_SMODE2);
SetTitle( pxsFmt( L"%s | %ls (%ls) | Limiter: %ls | Speed: %3d%% (%.02f)%ls | State %d", SetTitle( pxsFmt( L"State %d | Speed%ls: %3d%% (%.02f)%ls | %ls-%ls | %s",
WX_STR(fromUTF8(gsDest)), States_GetCurrentSlot(),
(smode2 & 1) ? L"Interlaced" : L"Progressive", limiterStr, lround(per), fps,
cpuUsage.c_str(),
(smode2 & 2) ? L"frame" : L"field", (smode2 & 2) ? L"frame" : L"field",
limiterStr, lround(per), fps, cpuUsage.c_str(), States_GetCurrentSlot() ) (smode2 & 1) ? L"i" : L"p",
WX_STR(fromUTF8(gsDest)))
); );
//States_GetCurrentSlot()
} }
void GSFrame::OnActivate( wxActivateEvent& evt ) void GSFrame::OnActivate( wxActivateEvent& evt )