bazzite/spec_files/gamescope/hardware.patch
2024-04-26 21:33:09 -07:00

57 lines
1.6 KiB
Diff

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