mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Add multi-monitor support to KMS/DRM.
This commit is contained in:
parent
99bc686266
commit
36575fe407
@ -273,7 +273,10 @@ static void free_drm_resources(void)
|
|||||||
static bool gfx_ctx_init(void *data)
|
static bool gfx_ctx_init(void *data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
unsigned monitor_index;
|
||||||
int gpu_index = 0;
|
int gpu_index = 0;
|
||||||
|
unsigned monitor = max(g_settings.video.monitor_index, 1);
|
||||||
|
|
||||||
const char *gpu;
|
const char *gpu;
|
||||||
if (g_inited)
|
if (g_inited)
|
||||||
return false;
|
return false;
|
||||||
@ -305,6 +308,27 @@ nextgpu:
|
|||||||
goto nextgpu;
|
goto nextgpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enumerate all connectors.
|
||||||
|
monitor_index = 0;
|
||||||
|
RARCH_LOG("[KMS/EGL]: Found %d connectors.\n", g_resources->count_connectors);
|
||||||
|
for (i = 0; i < g_resources->count_connectors; i++)
|
||||||
|
{
|
||||||
|
drmModeConnectorPtr conn = drmModeGetConnector(g_drm_fd, g_resources->connectors[i]);
|
||||||
|
if (conn)
|
||||||
|
{
|
||||||
|
bool connected = conn->connection == DRM_MODE_CONNECTED;
|
||||||
|
RARCH_LOG("[KMS/EGL]: Connector %d connected: %s\n", i, connected ? "yes" : "no");
|
||||||
|
RARCH_LOG("[KMS/EGL]: Connector %d has %d modes.\n", i, conn->count_modes);
|
||||||
|
if (connected && conn->count_modes > 0)
|
||||||
|
{
|
||||||
|
monitor_index++;
|
||||||
|
RARCH_LOG("[KMS/EGL]: Connector %d assigned to monitor index: #%u.\n", i, monitor_index);
|
||||||
|
}
|
||||||
|
drmModeFreeConnector(conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor_index = 0;
|
||||||
for (i = 0; i < g_resources->count_connectors; i++)
|
for (i = 0; i < g_resources->count_connectors; i++)
|
||||||
{
|
{
|
||||||
g_connector = drmModeGetConnector(g_drm_fd, g_resources->connectors[i]);
|
g_connector = drmModeGetConnector(g_drm_fd, g_resources->connectors[i]);
|
||||||
@ -312,7 +336,11 @@ nextgpu:
|
|||||||
if (!g_connector)
|
if (!g_connector)
|
||||||
continue;
|
continue;
|
||||||
if (g_connector->connection == DRM_MODE_CONNECTED && g_connector->count_modes > 0)
|
if (g_connector->connection == DRM_MODE_CONNECTED && g_connector->count_modes > 0)
|
||||||
break;
|
{
|
||||||
|
monitor_index++;
|
||||||
|
if (monitor_index == monitor)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
drmModeFreeConnector(g_connector);
|
drmModeFreeConnector(g_connector);
|
||||||
g_connector = NULL;
|
g_connector = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user