mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-23 03:10:14 +00:00
Select best KMS mode depending on refresh rate.
Try to match as closely as possible.
This commit is contained in:
parent
3b6616f2cb
commit
0ae933ea8b
@ -274,7 +274,7 @@ static bool gfx_ctx_init(void *data)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned monitor_index;
|
unsigned monitor_index;
|
||||||
int gpu_index = 0;
|
unsigned gpu_index = 0;
|
||||||
unsigned monitor = max(g_settings.video.monitor_index, 1);
|
unsigned monitor = max(g_settings.video.monitor_index, 1);
|
||||||
|
|
||||||
const char *gpu;
|
const char *gpu;
|
||||||
@ -371,8 +371,6 @@ nextgpu:
|
|||||||
goto nextgpu;
|
goto nextgpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_drm_mode = &g_connector->modes[0];
|
|
||||||
|
|
||||||
for (i = 0; i < g_connector->count_modes; i++)
|
for (i = 0; i < g_connector->count_modes; i++)
|
||||||
{
|
{
|
||||||
RARCH_LOG("[KMS/EGL]: Mode %d: (%s) %d x %d, %u Hz\n", i,
|
RARCH_LOG("[KMS/EGL]: Mode %d: (%s) %d x %d, %u Hz\n", i,
|
||||||
@ -530,13 +528,29 @@ static bool gfx_ctx_set_video_mode(void *data,
|
|||||||
g_drm_mode = &g_connector->modes[0];
|
g_drm_mode = &g_connector->modes[0];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Find first match.
|
// Try to match g_settings.video.refresh_rate as closely as possible.
|
||||||
|
// Lower resolutions tend to have multiple supported refresh rates as well.
|
||||||
|
float minimum_fps_diff = 0.0f;
|
||||||
|
|
||||||
|
// Find best match.
|
||||||
for (i = 0; i < g_connector->count_modes; i++)
|
for (i = 0; i < g_connector->count_modes; i++)
|
||||||
{
|
{
|
||||||
if (width == g_connector->modes[i].hdisplay && height == g_connector->modes[i].vdisplay)
|
if (width != g_connector->modes[i].hdisplay || height != g_connector->modes[i].vdisplay)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!g_drm_mode)
|
||||||
{
|
{
|
||||||
g_drm_mode = &g_connector->modes[i];
|
g_drm_mode = &g_connector->modes[i];
|
||||||
break;
|
minimum_fps_diff = g_drm_mode->vrefresh - g_settings.video.refresh_rate;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float diff = g_connector->modes[i].vrefresh - g_settings.video.refresh_rate;
|
||||||
|
if (diff < minimum_fps_diff)
|
||||||
|
{
|
||||||
|
g_drm_mode = &g_connector->modes[i];
|
||||||
|
minimum_fps_diff = diff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user