From a215a8d0865025d2ac2dadd7c0517edd61ff1933 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 26 Jul 2024 19:39:58 +0100 Subject: [PATCH] DRMBackend: Change DeckHD check to be more specific --- src/Backends/DRMBackend.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp index e0ba2ffc6a..d5368c8556 100644 --- a/src/Backends/DRMBackend.cpp +++ b/src/Backends/DRMBackend.cpp @@ -2113,19 +2113,19 @@ namespace gamescope drm_log.infof("Connector %s -> %s - %s", m_Mutable.szName, m_Mutable.szMakePNP, m_Mutable.szModel ); + const bool bIsDeckHDUnofficial = ( m_Mutable.szMakePNP == "DHD"sv && m_Mutable.szModel == "DeckHD-1200p"sv ); + const bool bSteamDeckDisplay = ( m_Mutable.szMakePNP == "WLC"sv && m_Mutable.szModel == "ANX7530 U"sv ) || ( m_Mutable.szMakePNP == "ANX"sv && m_Mutable.szModel == "ANX7530 U"sv ) || ( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "ANX7530 U"sv ) || ( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Jupiter"sv ) || - ( m_Mutable.szMakePNP == "DHD"sv && m_Mutable.szModel == "DeckHD-1200p"sv ) || ( m_Mutable.szMakePNP == "VLV"sv && m_Mutable.szModel == "Galileo"sv ); if ( bSteamDeckDisplay ) { static constexpr uint32_t kPIDGalileoSDC = 0x3003; static constexpr uint32_t kPIDGalileoBOE = 0x3004; - static constexpr uint32_t kPIDJupiterDHD = 0x4001; if ( pProduct->product == kPIDGalileoSDC ) { @@ -2137,10 +2137,6 @@ namespace gamescope m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_OLED_BOE; m_Mutable.ValidDynamicRefreshRates = std::span( s_kSteamDeckOLEDRates ); } - else if (pProduct-> product == kPIDJupiterDHD ) { - m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_LCD_DHD; - m_Mutable.ValidDynamicRefreshRates = std::span( s_kSteamDeckLCDRates ); - } else { m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_LCD; @@ -2148,6 +2144,17 @@ namespace gamescope } } + if ( bIsDeckHDUnofficial ) + { + static constexpr uint32_t kPIDJupiterDHD = 0x4001; + + if ( pProduct->product == kPIDJupiterDHD ) + { + m_Mutable.eKnownDisplay = GAMESCOPE_KNOWN_DISPLAY_STEAM_DECK_LCD_DHD; + m_Mutable.ValidDynamicRefreshRates = std::span( s_kSteamDeckLCDRates ); + } + } + // Colorimetry const char *pszColorOverride = getenv( "GAMESCOPE_INTERNAL_COLORIMETRY_OVERRIDE" ); if ( pszColorOverride && *pszColorOverride && GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL )