Skip to content

Commit e976ca6

Browse files
committed
Round refresh rates more sensibly
1 parent a6a9a8b commit e976ca6

4 files changed

Lines changed: 21 additions & 21 deletions

File tree

src/control_panel.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2885,7 +2885,7 @@ DisplayModeMenu (bool windowed)
28852885

28862886
UINT integer_refresh =
28872887
sk::narrow_cast <UINT> (
2888-
std::ceil (
2888+
std::round (
28892889
sk::narrow_cast <long double> (dxgi_mode.RefreshRate.Numerator) /
28902890
sk::narrow_cast <long double> (dxgi_mode.RefreshRate.Denominator)
28912891
)
@@ -2917,7 +2917,7 @@ DisplayModeMenu (bool windowed)
29172917

29182918
// No Exact Match, but we can probably find something close...
29192919
if ( -1 == current_item &&
2920-
-1 != sk::narrow_cast <INT> (ceilf (config.render.framerate.refresh_rate)) )
2920+
-1 != sk::narrow_cast <INT> (roundf (config.render.framerate.refresh_rate)) )
29212921
{
29222922
int lvl2_idx = 1;
29232923

@@ -5500,11 +5500,11 @@ static constexpr uint32_t UPLAY_OVERLAY_PS_CRC32C { 0x35ae281c };
55005500
if ( display.vrr.max_refresh > 1 &&
55015501
display.vrr.min_refresh != display.vrr.max_refresh )
55025502
{
5503-
if (display.vrr.max_refresh > sk::narrow_cast <uint16_t> (ceilf (fFixedRefreshHz)))
5503+
if (display.vrr.max_refresh > sk::narrow_cast <uint16_t> (roundf (fFixedRefreshHz)))
55045504
{
55055505
ImGui::Text ( "Active %hs Range: %d-%d Hz, Max: %d Hz",
55065506
display.vrr.type, display.vrr.min_refresh,
5507-
sk::narrow_cast <uint16_t> (ceilf (fFixedRefreshHz)),
5507+
sk::narrow_cast <uint16_t> (roundf (fFixedRefreshHz)),
55085508
display.vrr.max_refresh );
55095509
}
55105510

@@ -5604,11 +5604,11 @@ static constexpr uint32_t UPLAY_OVERLAY_PS_CRC32C { 0x35ae281c };
56045604
if ( display.vrr.min_refresh > 1 &&
56055605
display.vrr.min_refresh != display.vrr.max_refresh )
56065606
{
5607-
if (display.vrr.max_refresh > sk::narrow_cast <uint16_t> (ceilf (fFixedRefreshHz)))
5607+
if (display.vrr.max_refresh > sk::narrow_cast <uint16_t> (roundf (fFixedRefreshHz)))
56085608
{
56095609
ImGui::Text ( "Active %hs Range: %d-%d Hz, Max: %d Hz",
56105610
display.vrr.type, display.vrr.min_refresh,
5611-
sk::narrow_cast <uint16_t> (ceilf (fFixedRefreshHz)),
5611+
sk::narrow_cast <uint16_t> (roundf (fFixedRefreshHz)),
56125612
display.vrr.max_refresh );
56135613
}
56145614

src/render/dxgi/dxgi.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4408,10 +4408,10 @@ SK_DXGI_FindClosestMode ( IDXGISwapChain *pSwapChain,
44084408

44094409
else if (config.render.framerate.refresh_rate != -1.0f &&
44104410
mode_to_match.RefreshRate.Numerator !=
4411-
sk::narrow_cast <UINT> (ceilf (config.render.framerate.refresh_rate)))
4411+
sk::narrow_cast <UINT> (roundf (config.render.framerate.refresh_rate)))
44124412
{
44134413
mode_to_match.RefreshRate.Numerator =
4414-
sk::narrow_cast <UINT> (ceilf (config.render.framerate.refresh_rate));
4414+
sk::narrow_cast <UINT> (roundf (config.render.framerate.refresh_rate));
44154415
mode_to_match.RefreshRate.Denominator = 1;
44164416
}
44174417

@@ -4497,7 +4497,7 @@ SK_DXGI_ResizeTarget ( IDXGISwapChain *This,
44974497
||
44984498
( config.render.framerate.refresh_rate != -1.0f &&
44994499
pNewTargetParameters->RefreshRate.Numerator !=
4500-
sk::narrow_cast <UINT> ( ceilf (config.render.framerate.refresh_rate ) )
4500+
sk::narrow_cast <UINT> ( roundf (config.render.framerate.refresh_rate ) )
45014501
)
45024502
)
45034503
{
@@ -4519,7 +4519,7 @@ SK_DXGI_ResizeTarget ( IDXGISwapChain *This,
45194519
if ( config.render.framerate.rescan_.Denom != 1 ||
45204520
(config.render.framerate.refresh_rate != -1.0f &&
45214521
new_new_params.RefreshRate.Numerator != sk::narrow_cast <UINT>
4522-
(ceilf (config.render.framerate.refresh_rate) ) )
4522+
(roundf (config.render.framerate.refresh_rate) ) )
45234523
)
45244524
{
45254525
DXGI_MODE_DESC modeDesc = { };
@@ -4542,7 +4542,7 @@ SK_DXGI_ResizeTarget ( IDXGISwapChain *This,
45424542
else
45434543
{
45444544
modeDesc.RefreshRate.Numerator =
4545-
sk::narrow_cast <UINT> (ceilf (config.render.framerate.refresh_rate));
4545+
sk::narrow_cast <UINT> (roundf (config.render.framerate.refresh_rate));
45464546
modeDesc.RefreshRate.Denominator = 1;
45474547
}
45484548

@@ -4690,7 +4690,7 @@ DXGIOutput_FindClosestMatchingMode_Override (
46904690
if ( config.render.framerate.rescan_.Denom != 1 ||
46914691
(config.render.framerate.refresh_rate > 0.0f &&
46924692
mode_to_match.RefreshRate.Numerator != sk::narrow_cast <UINT>
4693-
(ceilf (config.render.framerate.refresh_rate))) )
4693+
(roundf (config.render.framerate.refresh_rate))) )
46944694
{
46954695
if ( ( config.render.framerate.rescan_.Denom > 0 &&
46964696
config.render.framerate.rescan_.Numerator > 0 ) &&
@@ -4717,7 +4717,7 @@ DXGIOutput_FindClosestMatchingMode_Override (
47174717
else
47184718
{
47194719
mode_to_match.RefreshRate.Numerator = sk::narrow_cast <UINT> (
4720-
ceilf (config.render.framerate.refresh_rate) );
4720+
roundf (config.render.framerate.refresh_rate) );
47214721
mode_to_match.RefreshRate.Denominator = 1;
47224722
}
47234723
}
@@ -5764,7 +5764,7 @@ SK_DXGI_CreateSwapChain_PreInit (
57645764
if ( config.render.framerate.rescan_.Denom != 1 ||
57655765
(config.render.framerate.refresh_rate > 0.0f &&
57665766
pDesc->BufferDesc.RefreshRate.Numerator != sk::narrow_cast <UINT> (
5767-
ceilf (config.render.framerate.refresh_rate) )
5767+
roundf (config.render.framerate.refresh_rate) )
57685768
)
57695769
)
57705770
{
@@ -5792,7 +5792,7 @@ SK_DXGI_CreateSwapChain_PreInit (
57925792
{
57935793
pDesc->BufferDesc.RefreshRate.Numerator =
57945794
sk::narrow_cast <UINT> (
5795-
std::ceilf (config.render.framerate.refresh_rate)
5795+
std::roundf (config.render.framerate.refresh_rate)
57965796
);
57975797
pDesc->BufferDesc.RefreshRate.Denominator = 1;
57985798
}

src/render/dxgi/dxgi_swapchain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2962,7 +2962,7 @@ SK_DXGI_SwapChain_ResizeTarget_Impl (
29622962
else
29632963
{
29642964
new_new_params.RefreshRate.Numerator =
2965-
sk::narrow_cast <UINT> (ceilf (config.render.framerate.refresh_rate));
2965+
sk::narrow_cast <UINT> (roundf (config.render.framerate.refresh_rate));
29662966
new_new_params.RefreshRate.Denominator = 1;
29672967
}
29682968
}

src/render/render_backend.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4403,6 +4403,7 @@ SK_RBkEnd_UpdateMonitorName ( SK_RenderBackend_V2::output_s& display,
44034403
if ( fEDID != nullptr)
44044404
{
44054405
fwrite (EDID_Data.get (), sizeofEDID, 1, fEDID);
4406+
fclose (fEDID);
44064407
}
44074408
}
44084409
}
@@ -5350,8 +5351,8 @@ SK_RenderBackend_V2::updateOutputTopology (void)
53505351
display.native.refresh = max_exact_rate;
53515352
display.vrr.max_refresh =
53525353
static_cast <uint16_t> (
5353-
ceil (static_cast <double> (max_exact_rate.Numerator)/
5354-
static_cast <double> (max_exact_rate.Denominator))
5354+
round (static_cast <double> (max_exact_rate.Numerator)/
5355+
static_cast <double> (max_exact_rate.Denominator))
53555356
);
53565357
}
53575358
}
@@ -5789,8 +5790,7 @@ SK_RenderBackend_V2::updateOutputTopology (void)
57895790
L" +------------------+---------------------------------------------------------------------\n",
57905791
display.full_name,
57915792
display.gdi_name, display.monitor,
5792-
display.vrr.min_refresh, (int)ceil ((double)display.native.refresh.Numerator/
5793-
(double)display.native.refresh.Denominator),// display.vrr.max_refresh,
5793+
display.vrr.min_refresh, display.vrr.max_refresh,
57945794
display.vrr.type,
57955795
display.attached ? L"Yes" : L"No",
57965796
display.primary ? L" (Primary Display)" : L"",
@@ -6376,7 +6376,7 @@ SK_Display_ApplyDesktopResolution (MONITORINFOEX& mi)
63766376
{
63776377
devmode.dmFields |= DM_DISPLAYFREQUENCY;
63786378
devmode.dmDisplayFrequency =
6379-
static_cast <DWORD> (std::ceilf (config.display.refresh_rate));
6379+
static_cast <DWORD> (std::roundf (config.display.refresh_rate));
63806380
}
63816381

63826382
if ( DISP_CHANGE_SUCCESSFUL ==

0 commit comments

Comments
 (0)