diff --git a/src/drm.cpp b/src/drm.cpp index 42c67b9..6373e22 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -549,6 +549,19 @@ static constexpr uint32_t s_kSteamDeckOLEDRates[] = 90, }; +static constexpr uint32_t s_kLegionGoRates[] = +{ + 60, + 144, +} + +static constexpr uint32_t s_kLokiRates[] = +{ + 40, + 50, + 60, +} + static void update_connector_display_info_wl(struct drm_t *drm) { wlserver_lock(); @@ -2127,6 +2140,18 @@ namespace gamescope } } + if ( m_Mutable.szMakePNP == "LEN"sv && m_Mutable.szModel == "Go Display"sv ) + { + m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_LEGION_GO; + m_Mutable.ValidDynamicRefreshRates = std::span( s_kLegionGoRates ); + } + + if ( m_Mutable.szMakePNP == "AYN"sv && m_Mutable.szModel == "LK-GOLDSPV58"sv ) + { + m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_LOKI; + m_Mutable.ValidDynamicRefreshRates = std::span( s_kLokiRates ); + } + // Colorimetry const char *pszColorOverride = getenv( "GAMESCOPE_INTERNAL_COLORIMETRY_OVERRIDE" ); if ( pszColorOverride && *pszColorOverride && GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL ) diff --git a/src/gamescope_shared.h b/src/gamescope_shared.h index f34174e..08e7b17 100644 --- a/src/gamescope_shared.h +++ b/src/gamescope_shared.h @@ -10,6 +10,8 @@ namespace gamescope GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_LCD, // Jupiter GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_OLED_SDC, // Galileo SDC GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_OLED_BOE, // Galileo BOE + GAMESCOPE_KNOWN_DISPLAY_LEGION_GO, // Lenovo Legion Go + GAMESCOPE_KNOWN_DISPLAY_LOKI, // Ayn Loki }; enum GamescopeModeGeneration