feat: remove the Performance mode switch; Steam's Frame Limit decides

The session always runs the way Performance mode did: replaced buffers go
back to the game at once (except while mirroring to glasses), gamescope's
WSI layer and winex11 reuse their per-present window checks, and games get
eight swapchain images while uncapped. Steam's Frame Limit in the Quick
Access menu caps games; the WSI layer drops back to its default image
count while it does.
This commit is contained in:
The412Banner committed 2026-10-26 20:58:44 +00:00
1 parent c4ade69eb3
commit fd755be0b2
42 files changed
+24 -120

No files matched your search

@@ -268,7 +268,7 @@ static struct wl_event_source *g_fallback_timer;
static int g_fallback_armed;
volatile int g_fps_limit;
/* fps limit -1 (Performance mode without a limit): replaced buffers go back to the client at once instead of once per refresh. */
/* fps limit -1 (phone output, not mirrored): replaced buffers go back to the client at once instead of once per refresh. */
volatile int g_release_unpaced;
volatile int g_hide_shell;
@@ -401,7 +401,6 @@ class FrontEndActivity : ComponentActivity() {
private var theme by mutableStateOf("graphite")
private var appScale by mutableStateOf(com.droiddeck.launcher.core.AppUiPrefs.DEFAULT_SCALE)
private var hdrOn by mutableStateOf(false)
private var performanceMode by mutableStateOf(false)
private var upscaler by mutableStateOf(0)
private var upscaleSharpness by mutableStateOf(75)
private var hdrReason by mutableStateOf<String?>(null)
@@ -1810,7 +1809,7 @@ class FrontEndActivity : ComponentActivity() {
ModeSettings(
mode = mode, resolution = resolution,
panelSize = com.droiddeck.launcher.session.SessionDisplay.panelSize(this),
hdr = hdrOn, hdrReason = hdrReason, performanceMode = performanceMode,
hdr = hdrOn, hdrReason = hdrReason,
upscaler = upscaler, upscaleSharpness = upscaleSharpness,
gpuDrivers = drivers.summary(),
touchMode = touchMode,
@@ -1875,7 +1874,6 @@ class FrontEndActivity : ComponentActivity() {
onResolution = { value -> SessionPrefs.setResolutionChoice(this, mode, value); resolution = value },
onHdr = { on -> SessionPrefs.setHdr(this, mode, on); hdrOn = on },
onGpuDrivers = { openComponents(focusContent = true, tab = com.droiddeck.launcher.ui.GPU_TAB) },
onPerformanceMode = { on -> SessionPrefs.setPerformanceMode(this, mode, on); performanceMode = on },
onUpscaler = { m -> SessionPrefs.setUpscaler(this, m); upscaler = m },
onUpscaleSharpness = { pct -> SessionPrefs.setUpscaleSharpness(this, pct); upscaleSharpness = pct },
onTouch = { t -> SessionPrefs.setTouchMode(this, t); touchMode = t },
@@ -2126,7 +2124,6 @@ class FrontEndActivity : ComponentActivity() {
runSteamAtStartup = SessionPrefs.runSteamAtStartup(this)
loadBootMovie()
hdrOn = SessionPrefs.hdr(this, mode)
performanceMode = SessionPrefs.performanceMode(this, mode)
upscaler = SessionPrefs.upscaler(this)
upscaleSharpness = SessionPrefs.upscaleSharpness(this)
hdrReason = com.droiddeck.launcher.wayland.HdrSupport.probe(this).reason
@@ -498,10 +498,6 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback {
}
com.droiddeck.launcher.gpu.SteamVrHealth.begin(this, SessionState.sessionId)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
if (!SessionState.running) {
val prefMode = SessionPrefs.prefMode(intent.getStringExtra(SessionService.EXTRA_MODE) ?: SessionService.MODE_STEAM)
SessionState.performanceMode = SessionPrefs.performanceMode(this, prefMode)
}
applyOutputPacing()
if (!SessionState.running) SessionState.followScreen = followChoice()
applyFollowOrientation(resources.configuration)
@@ -1998,9 +1994,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback {
private fun mirrorRefreshLimit(): Int =
GlassesRendering.mirrorRefreshLimit(glassesSettings, glasses, glassesScreen != null)
private fun outputFpsLimit(): Int = SessionPrefs.compositorFpsLimit(
mirrorRefreshLimit(), SessionState.performanceMode,
)
private fun outputFpsLimit(): Int = SessionPrefs.compositorFpsLimit(mirrorRefreshLimit())
private fun applyOutputPacing() {
Log.i(TAG, "perf: " + PerfMode.apply(this, outputFpsLimit(), mirrorRefreshLimit()))
@@ -938,22 +938,15 @@ object SessionPrefs {
prefs(context).edit().putBoolean("hdr.$mode", on).apply()
}
/**
* Performance mode: buffers go back to the game as soon as they are replaced
* instead of once per refresh, and gamescope's WSI layer and winex11 reuse their per-present window checks.
*/
fun performanceMode(context: Context, mode: String): Boolean = prefs(context).getBoolean("performanceMode.$mode", false)
fun setPerformanceMode(context: Context, mode: String, on: Boolean) {
prefs(context).edit().putBoolean("performanceMode.$mode", on).apply()
}
/** Compositor frame limit that releases buffers to the game unpaced. */
const val FPS_UNPACED = -1
/** Mirroring still follows the glasses' refresh rate when Performance mode is on. */
fun compositorFpsLimit(mirrorRefreshLimit: Int, performanceMode: Boolean): Int =
if (performanceMode && mirrorRefreshLimit <= 0) FPS_UNPACED else mirrorRefreshLimit
/**
* Buffers go back to the game as soon as they are replaced instead of once per refresh;
* Steam's Frame Limit in the Quick Access menu caps games. Mirroring still follows the glasses' refresh rate.
*/
fun compositorFpsLimit(mirrorRefreshLimit: Int): Int =
if (mirrorRefreshLimit <= 0) FPS_UNPACED else mirrorRefreshLimit
val upscalerChoices = listOf(
0 to "Linear", 2 to "Nearest", 4 to "AMD FSR 1", 3 to "Snapdragon GSR",
@@ -507,16 +507,13 @@ class SessionService : Service() {
guest.add("DXVK_HDR=1")
Log.i(TAG, "hdr: gamescope --hdr-enabled, DXVK_HDR=1")
}
// gamescope's WSI layer and winex11 reuse their per-present window checks for this long; 0 checks on every present.
val windowCheckMs = if (SessionState.performanceMode) 100 else 0
guest.add("DROIDDECK_WSI_BYPASS_CHECK_MS=$windowCheckMs")
guest.add("WINE_OFFSCREEN_CHECK_MS=$windowCheckMs")
if (SessionState.performanceMode) {
// gamescope turns buffers around slower than an unpaced game draws; more images keep it drawing.
guest.add("GAMESCOPE_WSI_MIN_IMAGE_COUNT=8")
guest.add("GAMESCOPE_WSI_ENSURE_MIN_IMAGE_COUNT=1")
}
Log.i(TAG, "performance mode " + (if (SessionState.performanceMode) "on" else "off"))
// gamescope's WSI layer and winex11 reuse their per-present window checks for this long.
guest.add("DROIDDECK_WSI_BYPASS_CHECK_MS=100")
guest.add("WINE_OFFSCREEN_CHECK_MS=100")
// gamescope turns buffers around slower than an uncapped game draws; more images keep it drawing.
// The WSI layer goes back to its default count while Steam's Frame Limit holds the game.
guest.add("GAMESCOPE_WSI_MIN_IMAGE_COUNT=8")
guest.add("GAMESCOPE_WSI_ENSURE_MIN_IMAGE_COUNT=1")
guest.add("BL_REFRESH=" + Math.round(SessionState.refreshHz))
guest.add("BL_LOG=" + sessionLog.path)
guest.add("BL_DEBUG_DIR=" + sessionDir.path)
@@ -103,9 +103,6 @@ object SessionState {
@Volatile
var upscaleRatio: Float = 0f
@Volatile
var performanceMode = false
@Volatile
var firstFrameSeen = false
@@ -60,7 +60,6 @@ class ModeSettings(
val hdr: Boolean,
val hdrReason: String?,
val gpuDrivers: String? = null,
val performanceMode: Boolean = false,
val upscaler: Int = 0,
val upscaleSharpness: Int = 75,
val touchMode: String,
@@ -116,7 +115,6 @@ class ModeSettingsActions(
val onResolution: (String) -> Unit,
val onHdr: (Boolean) -> Unit,
val onGpuDrivers: () -> Unit = {},
val onPerformanceMode: (Boolean) -> Unit = {},
val onUpscaler: (Int) -> Unit = {},
val onUpscaleSharpness: (Int) -> Unit = {},
val onTouch: (String) -> Unit,
@@ -248,10 +246,6 @@ fun ModeSheetRows(s: ModeSettings, a: ModeSettingsActions, tab: String, extras:
format = { "$it%" }, onChange = a.onUpscaleSharpness,
)
}
SettingsGroup(stringResource(R.string.display_frame_rate)) {
ToggleRow(host, "performance", stringResource(R.string.mode_performance), stringResource(R.string.mode_performance_hint),
s.performanceMode, onChange = a.onPerformanceMode)
}
SettingsGroup(stringResource(R.string.mode_hdr)) {
ToggleRow(
host, "hdr", stringResource(R.string.mode_hdr10),
-1
View File
@@ -2025,7 +2025,6 @@
<string name="display_filter_live">يُطبَّق فوريًا. مشترك بين Steam وسطح المكتب.</string>
<string name="display_filter_note">تُطبَّق FSR و GSR و NIS عند تكبير صورة الجلسة. ويعمل خيار «زيادة الحدة فقط» أيضًا دون تكبير.</string>
<string name="display_sharpness">حدّة المرشِّح</string>
<string name="display_frame_rate">معدّل الإطارات</string>
<string name="display_look_filter">%1$s يضبط أسلوب التكبير على %2$s.</string>
<string name="display_match_screen">مطابقة الشاشة (%1$d×%2$d)</string>
<string name="display_follow_screen">اتباع الشاشة (يُغيَّر الحجم عند الطي أو الفتح)</string>
@@ -1994,7 +1994,6 @@
<string name="display_filter_live">Se aplica al instante. Compartido por Steam y Escritorio.</string>
<string name="display_filter_note">FSR, GSR y NIS se aplican al ampliar la imagen de la sesión. Solo nitidez también funciona sin ampliar.</string>
<string name="display_sharpness">Nitidez del filtro</string>
<string name="display_frame_rate">Velocidad de fotogramas</string>
<string name="display_look_filter">%1$s Cambia el escalado a %2$s.</string>
<string name="display_match_screen">Igual a la pantalla (%1$d×%2$d)</string>
<string name="display_follow_screen">Seguir la pantalla (cambia de tamaño al plegar o desplegar)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Прилага се веднага. Общ за Steam и Desktop.</string>
<string name="display_filter_note">FSR, GSR и NIS се прилагат при уголемяване на изображението на сесията. „Само изостряне“ работи и без уголемяване.</string>
<string name="display_sharpness">Острота на филтъра</string>
<string name="display_frame_rate">Честота на кадрите</string>
<string name="display_look_filter">%1$s Задава мащабиране на %2$s.</string>
<string name="display_match_screen">Напасване на екрана (%1$d×%2$d)</string>
<string name="display_follow_screen">Следване на екрана (преоразмерява при сгъване или разгъване)</string>
-1
View File
@@ -1983,7 +1983,6 @@
<string name="display_filter_live">Použije se okamžitě. Sdíleno Steamem a Plochou.</string>
<string name="display_filter_note">FSR, GSR a NIS se použijí při zvětšování obrazu relace. Jen zaostření funguje i bez zvětšení.</string>
<string name="display_sharpness">Ostrost filtru</string>
<string name="display_frame_rate">Snímková frekvence</string>
<string name="display_look_filter">%1$s Nastaví škálování na %2$s.</string>
<string name="display_match_screen">Podle obrazovky (%1$d×%2$d)</string>
<string name="display_follow_screen">Sledovat obrazovku (změní velikost při složení nebo rozložení)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Træder i kraft øjeblikkeligt. Deles af Steam og Desktop.</string>
<string name="display_filter_note">FSR, GSR og NIS anvendes ved forstørrelse af sessionsbilledet. Kun skærpning virker også uden forstørrelse.</string>
<string name="display_sharpness">Filterskarphed</string>
<string name="display_frame_rate">Billedfrekvens</string>
<string name="display_look_filter">%1$s Indstiller skalering til %2$s.</string>
<string name="display_match_screen">Match skærm (%1$d×%2$d)</string>
<string name="display_follow_screen">Følg skærm (ændrer størrelse ved fold/udfold)</string>
-1
View File
@@ -1933,7 +1933,6 @@
<string name="display_filter_live">Wirkt sofort. Gemeinsam für Steam und Desktop.</string>
<string name="display_filter_note">FSR, GSR und NIS wirken beim Vergrößern des Sitzungsbilds. „Nur schärfen“ funktioniert auch ohne Vergrößerung.</string>
<string name="display_sharpness">Filterschärfe</string>
<string name="display_frame_rate">Bildrate</string>
<string name="display_look_filter">%1$s Stellt die Skalierung auf %2$s.</string>
<string name="display_match_screen">An Bildschirm anpassen (%1$d×%2$d)</string>
<string name="display_follow_screen">Bildschirm folgen (passt sich beim Auf- und Zuklappen an)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Εφαρμόζεται σε πραγματικό χρόνο. Κοινό για το Steam και την Επιφάνεια εργασίας.</string>
<string name="display_filter_note">Τα FSR, GSR και NIS εφαρμόζονται κατά τη μεγέθυνση της εικόνας συνεδρίας. Το Μόνο όξυνση λειτουργεί και χωρίς μεγέθυνση.</string>
<string name="display_sharpness">Οξύτητα φίλτρου</string>
<string name="display_frame_rate">Καρέ ανά δευτερόλεπτο</string>
<string name="display_look_filter">%1$s Ορίζει την κλιμάκωση σε %2$s.</string>
<string name="display_match_screen">Αντιστοίχιση οθόνης (%1$d×%2$d)</string>
<string name="display_follow_screen">Ακολούθηση οθόνης (αλλάζει μέγεθος όταν διπλώνει ή ξεδιπλώνει)</string>
-1
View File
@@ -1964,7 +1964,6 @@
<string name="display_filter_live">Se aplica al instante. Compartido por Steam y Escritorio.</string>
<string name="display_filter_note">FSR, GSR y NIS se aplican al ampliar la imagen de la sesión. Solo nitidez también funciona sin ampliar.</string>
<string name="display_sharpness">Nitidez del filtro</string>
<string name="display_frame_rate">Velocidad de fotogramas</string>
<string name="display_look_filter">%1$s Cambia el escalado a %2$s.</string>
<string name="display_match_screen">Igual a la pantalla (%1$d×%2$d)</string>
<string name="display_follow_screen">Seguir la pantalla (cambia de tamaño al plegar o desplegar)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Vaikuttaa välittömästi. Yhteinen Steamille ja Työpöydälle.</string>
<string name="display_filter_note">FSR, GSR ja NIS vaikuttavat, kun istunnon kuvaa suurennetaan. Vain terävöinti toimii myös suurentamatta.</string>
<string name="display_sharpness">Suodattimen terävyys</string>
<string name="display_frame_rate">Kuvanopeus</string>
<string name="display_look_filter">%1$s Asettaa skaalauksen tilaan %2$s.</string>
<string name="display_match_screen">Sovita näyttöön (%1$d×%2$d)</string>
<string name="display_follow_screen">Seuraa näyttöä (koko muuttuu taitettuna tai avattuna)</string>
-1
View File
@@ -1964,7 +1964,6 @@
<string name="display_filter_live">S\'applique en direct. Partagé entre Steam et le bureau.</string>
<string name="display_filter_note">FSR, GSR et NIS s\'appliquent lors de l\'agrandissement de l\'image de la session. « Netteté seule » fonctionne aussi sans agrandissement.</string>
<string name="display_sharpness">Netteté du filtre</string>
<string name="display_frame_rate">Fréquence d\'images</string>
<string name="display_look_filter">%1$s Règle la mise à l\'échelle sur %2$s.</string>
<string name="display_match_screen">Adapter à l\'écran (%1$d×%2$d)</string>
<string name="display_follow_screen">Suivre l\'écran (s\'adapte au pliage et au dépliage)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">लाइव लागू होता है। Steam और डेस्कटॉप में साझा।</string>
<string name="display_filter_note">FSR, GSR और NIS सेशन इमेज को बड़ा करने पर लागू होते हैं। सिर्फ़ शार्पन बिना बड़ा किए भी काम करता है।</string>
<string name="display_sharpness">फ़िल्टर शार्पनेस</string>
<string name="display_frame_rate">फ़्रेम रेट</string>
<string name="display_look_filter">%1$s स्केलिंग को %2$s पर सेट करता है।</string>
<string name="display_match_screen">स्क्रीन से मिलाएँ (%1$d×%2$d)</string>
<string name="display_follow_screen">Follow screen (खुलने या बंद होने पर आकार बदलता है)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Élőben érvénybe lép. A Steam és az Asztal közösen használja.</string>
<string name="display_filter_note">Az FSR, a GSR és a NIS a munkamenet képének felnagyításakor lép érvénybe. A Csak élesítés nagyítás nélkül is működik.</string>
<string name="display_sharpness">Szűrőélesség</string>
<string name="display_frame_rate">Képkockasebesség</string>
<string name="display_look_filter">%1$s A méretezést erre állítja: %2$s.</string>
<string name="display_match_screen">Képernyőhöz illesztés (%1$d×%2$d)</string>
<string name="display_follow_screen">Képernyő követése (átméreteződik össze- vagy kinyitáskor)</string>
-1
View File
@@ -1920,7 +1920,6 @@
<string name="display_filter_live">Berlaku langsung. Digunakan bersama oleh Steam dan Desktop.</string>
<string name="display_filter_note">FSR, GSR, dan NIS berlaku saat memperbesar gambar sesi. Hanya penajaman juga berfungsi tanpa pembesaran.</string>
<string name="display_sharpness">Ketajaman filter</string>
<string name="display_frame_rate">Frame rate</string>
<string name="display_look_filter">%1$s Mengatur skala ke %2$s.</string>
<string name="display_match_screen">Sesuaikan layar (%1$d×%2$d)</string>
<string name="display_follow_screen">Ikuti layar (ukuran berubah saat dilipat atau dibuka)</string>
-1
View File
@@ -1954,7 +1954,6 @@
<string name="display_filter_live">Si applica subito. Condiviso da Steam e Desktop.</string>
<string name="display_filter_note">FSR, GSR e NIS si applicano quando l\'immagine della sessione viene ingrandita. Solo nitidezza funziona anche senza ingrandimento.</string>
<string name="display_sharpness">Nitidezza del filtro</string>
<string name="display_frame_rate">Frequenza fotogrammi</string>
<string name="display_look_filter">%1$s Imposta il ridimensionamento su %2$s.</string>
<string name="display_match_screen">Adatta allo schermo (%1$d×%2$d)</string>
<string name="display_follow_screen">Segui lo schermo (si ridimensiona quando lo pieghi o lo apri)</string>
-1
View File
@@ -1922,7 +1922,6 @@
<string name="display_filter_live">すぐに反映されます。Steamとデスクトップで共有されます。</string>
<string name="display_filter_note">FSR、GSR、NISはセッションの映像を拡大するときに機能します。「シャープのみ」は拡大しなくても機能します。</string>
<string name="display_sharpness">フィルターのシャープネス</string>
<string name="display_frame_rate">フレームレート</string>
<string name="display_look_filter">%1$s スケーリングを%2$sに設定します。</string>
<string name="display_match_screen">画面に合わせる(%1$d×%2$d)</string>
<string name="display_follow_screen">画面に追従(開閉時にサイズを変更)</string>
-1
View File
@@ -1922,7 +1922,6 @@
<string name="display_filter_live">즉시 적용됩니다. Steam과 데스크톱에서 공유됩니다.</string>
<string name="display_filter_note">FSR, GSR, NIS는 세션 이미지를 확대할 때 적용됩니다. 샤프닝 전용은 확대하지 않아도 작동합니다.</string>
<string name="display_sharpness">필터 선명도</string>
<string name="display_frame_rate">프레임 속도</string>
<string name="display_look_filter">%1$s 스케일링을 %2$s(으)로 설정합니다.</string>
<string name="display_match_screen">화면에 맞춤(%1$d×%2$d)</string>
<string name="display_follow_screen">화면 따라가기(접거나 펼치면 크기 변경)</string>
-1
View File
@@ -1920,7 +1920,6 @@
<string name="display_filter_live">Berkuat kuasa secara langsung. Dikongsi oleh Steam dan Desktop.</string>
<string name="display_filter_note">FSR, GSR dan NIS berkuat kuasa semasa membesarkan imej sesi. Ketajaman sahaja juga berfungsi tanpa pembesaran.</string>
<string name="display_sharpness">Ketajaman penapis</string>
<string name="display_frame_rate">Kadar bingkai</string>
<string name="display_look_filter">%1$s Menetapkan penskalaan ke %2$s.</string>
<string name="display_match_screen">Sepadan skrin (%1$d×%2$d)</string>
<string name="display_follow_screen">Ikut skrin (mengubah saiz apabila dilipat atau dibuka)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Gjelder live. Delt av Steam og Skrivebord.</string>
<string name="display_filter_note">FSR, GSR og NIS gjelder ved forstørring av sesjonsbildet. Bare skarphet fungerer også uten forstørring.</string>
<string name="display_sharpness">Filterskarphet</string>
<string name="display_frame_rate">Bildefrekvens</string>
<string name="display_look_filter">%1$s Setter skalering til %2$s.</string>
<string name="display_match_screen">Tilpass skjerm (%1$d×%2$d)</string>
<string name="display_follow_screen">Følg skjermen (endrer størrelse ved sammenslåing eller utbretting)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Wordt direct toegepast. Gedeeld door Steam en Desktop.</string>
<string name="display_filter_note">FSR, GSR en NIS worden toegepast bij het vergroten van het sessiebeeld. Alleen verscherpen werkt ook zonder vergroting.</string>
<string name="display_sharpness">Filterscherpte</string>
<string name="display_frame_rate">Framerate</string>
<string name="display_look_filter">%1$s Zet schaling op %2$s.</string>
<string name="display_match_screen">Schermformaat (%1$d×%2$d)</string>
<string name="display_follow_screen">Scherm volgen (past formaat aan bij vouwen of uitvouwen)</string>
-1
View File
@@ -1983,7 +1983,6 @@
<string name="display_filter_live">Działa od razu. Wspólny dla Steam i Pulpitu.</string>
<string name="display_filter_note">FSR, GSR i NIS działają przy powiększaniu obrazu sesji. „Tylko wyostrzanie” działa też bez powiększania.</string>
<string name="display_sharpness">Ostrość filtra</string>
<string name="display_frame_rate">Liczba klatek</string>
<string name="display_look_filter">%1$s Ustawia skalowanie na %2$s.</string>
<string name="display_match_screen">Dopasuj do ekranu (%1$d×%2$d)</string>
<string name="display_follow_screen">Dopasuj do ekranu (zmienia rozmiar po złożeniu lub rozłożeniu)</string>
@@ -1954,7 +1954,6 @@
<string name="display_filter_live">Aplica-se em tempo real. Partilhado pelo Steam e pelo Ambiente de trabalho.</string>
<string name="display_filter_note">FSR, GSR e NIS aplicam-se ao ampliar a imagem da sessão. «Só nitidez» também funciona sem ampliação.</string>
<string name="display_sharpness">Nitidez do filtro</string>
<string name="display_frame_rate">Taxa de fotogramas</string>
<string name="display_look_filter">%1$s Define a escala como %2$s.</string>
<string name="display_match_screen">Igual ao ecrã (%1$d×%2$d)</string>
<string name="display_follow_screen">Seguir o ecrã (redimensiona ao dobrar ou desdobrar)</string>
-1
View File
@@ -1954,7 +1954,6 @@
<string name="display_filter_live">Aplicado na hora. Compartilhado entre Steam e Área de trabalho.</string>
<string name="display_filter_note">FSR, GSR e NIS são aplicados ao ampliar a imagem da sessão. Só nitidez também funciona sem ampliação.</string>
<string name="display_sharpness">Nitidez do filtro</string>
<string name="display_frame_rate">Taxa de quadros</string>
<string name="display_look_filter">%1$s Define a escala como %2$s.</string>
<string name="display_match_screen">Igual à tela (%1$d×%2$d)</string>
<string name="display_follow_screen">Seguir a tela (redimensiona ao dobrar ou desdobrar)</string>
-1
View File
@@ -1962,7 +1962,6 @@
<string name="display_filter_live">Se aplică live. Partajat de Steam și Desktop.</string>
<string name="display_filter_note">FSR, GSR și NIS se aplică la mărirea imaginii sesiunii. Doar claritate funcționează și fără mărire.</string>
<string name="display_sharpness">Claritatea filtrului</string>
<string name="display_frame_rate">Rata de cadre</string>
<string name="display_look_filter">%1$s Setează scalarea la %2$s.</string>
<string name="display_match_screen">Potrivire ecran (%1$d×%2$d)</string>
<string name="display_follow_screen">Urmărește ecranul (se redimensionează la împăturire sau desfacere)</string>
-1
View File
@@ -1985,7 +1985,6 @@
<string name="display_filter_live">Применяется сразу. Общий для Steam и рабочего стола.</string>
<string name="display_filter_note">FSR, GSR и NIS работают при увеличении изображения сессии. «Sharpen only» работает и без увеличения.</string>
<string name="display_sharpness">Резкость фильтра</string>
<string name="display_frame_rate">Частота кадров</string>
<string name="display_look_filter">%1$s Устанавливает масштабирование: %2$s.</string>
<string name="display_match_screen">По размеру экрана (%1$d×%2$d)</string>
<string name="display_follow_screen">По экрану (меняется при складывании и раскладывании)</string>
-1
View File
@@ -1941,7 +1941,6 @@
<string name="display_filter_live">Tillämpas direkt. Delas av Steam och skrivbordet.</string>
<string name="display_filter_note">FSR, GSR och NIS tillämpas när sessionens bild förstoras. Endast skärpa fungerar även utan förstoring.</string>
<string name="display_sharpness">Filterskärpa</string>
<string name="display_frame_rate">Bildfrekvens</string>
<string name="display_look_filter">%1$s Ställer in skalning till %2$s.</string>
<string name="display_match_screen">Matcha skärmen (%1$d×%2$d)</string>
<string name="display_follow_screen">Följ skärmen (ändrar storlek vid vikning)</string>
-1
View File
@@ -1920,7 +1920,6 @@
<string name="display_filter_live">มีผลทันที ใช้ร่วมกันระหว่าง Steam และเดสก์ท็อป</string>
<string name="display_filter_note">FSR, GSR และ NIS จะมีผลเมื่อขยายภาพของเซสชัน เพิ่มความคมชัดเท่านั้นทำงานได้โดยไม่ต้องขยายภาพด้วย</string>
<string name="display_sharpness">ความคมชัดของตัวกรอง</string>
<string name="display_frame_rate">อัตราเฟรม</string>
<string name="display_look_filter">%1$s ตั้งการปรับขนาดเป็น %2$s</string>
<string name="display_match_screen">พอดีหน้าจอ (%1$d×%2$d)</string>
<string name="display_follow_screen">ตามหน้าจอ (ปรับขนาดเมื่อพับหรือกาง)</string>
-1
View File
@@ -1935,7 +1935,6 @@
<string name="display_filter_live">Anında uygulanır. Steam ve Masaüstü tarafından paylaşılır.</string>
<string name="display_filter_note">FSR, GSR ve NIS, oturum görüntüsü büyütülürken uygulanır. Yalnızca keskinleştirme büyütme olmadan da çalışır.</string>
<string name="display_sharpness">Filtre keskinliği</string>
<string name="display_frame_rate">Kare hızı</string>
<string name="display_look_filter">%1$s Ölçeklemeyi %2$s olarak ayarlar.</string>
<string name="display_match_screen">Ekrana Uydur (%1$d×%2$d)</string>
<string name="display_follow_screen">Ekranı takip et (katlanıp açıldığında yeniden boyutlanır)</string>
-1
View File
@@ -1983,7 +1983,6 @@
<string name="display_filter_live">Застосовується відразу. Спільний для Steam і Робочого столу.</string>
<string name="display_filter_note">FSR, GSR і NIS застосовуються під час збільшення зображення сеансу. «Лише різкість» працює і без збільшення.</string>
<string name="display_sharpness">Різкість фільтра</string>
<string name="display_frame_rate">Частота кадрів</string>
<string name="display_look_filter">%1$s Встановлює масштабування на %2$s.</string>
<string name="display_match_screen">Під екран (%1$d×%2$d)</string>
<string name="display_follow_screen">Слідувати за екраном (змінює розмір при згортанні чи розгортанні)</string>
-1
View File
@@ -1920,7 +1920,6 @@
<string name="display_filter_live">Áp dụng ngay. Dùng chung cho Steam và Desktop.</string>
<string name="display_filter_note">FSR, GSR và NIS áp dụng khi phóng to hình ảnh phiên. Chỉ làm nét cũng hoạt động mà không cần phóng to.</string>
<string name="display_sharpness">Độ sắc nét bộ lọc</string>
<string name="display_frame_rate">Tốc độ khung hình</string>
<string name="display_look_filter">%1$s Đặt chia tỷ lệ thành %2$s.</string>
<string name="display_match_screen">Khớp màn hình (%1$d×%2$d)</string>
<string name="display_follow_screen">Theo màn hình (đổi kích thước khi gập hoặc mở)</string>
@@ -2000,7 +2000,6 @@
<string name="display_filter_live">即时生效。由 Steam 和桌面共享。</string>
<string name="display_filter_note">FSR、GSR 和 NIS 在放大会话画面时生效。“仅锐化”在不放大时也可用。</string>
<string name="display_sharpness">滤镜锐度</string>
<string name="display_frame_rate">帧率</string>
<string name="display_look_filter">%1$s 将缩放设为 %2$s。</string>
<string name="display_match_screen">匹配屏幕(%1$d×%2$d)</string>
<string name="display_follow_screen">跟随屏幕(折叠或展开时调整大小)</string>
@@ -1923,7 +1923,6 @@
<string name="display_filter_live">即時生效。Steam 和桌面共用。</string>
<string name="display_filter_note">FSR、GSR 和 NIS 會在放大會話畫面時套用。「只銳化」不放大也能使用。</string>
<string name="display_sharpness">濾鏡銳利度</string>
<string name="display_frame_rate">幀率</string>
<string name="display_look_filter">%1$s 將縮放設為 %2$s。</string>
<string name="display_match_screen">配合螢幕(%1$d×%2$d)</string>
<string name="display_follow_screen">跟隨螢幕(摺疊或展開時調整大小)</string>
@@ -1923,7 +1923,6 @@
<string name="display_filter_live">立即生效。Steam 和桌面共用。</string>
<string name="display_filter_note">FSR、GSR 和 NIS 會在放大工作階段畫面時套用。「僅銳化」不放大也能使用。</string>
<string name="display_sharpness">濾鏡銳利度</string>
<string name="display_frame_rate">影格率</string>
<string name="display_look_filter">%1$s 將縮放設為 %2$s。</string>
<string name="display_match_screen">符合螢幕(%1$d×%2$d)</string>
<string name="display_follow_screen">跟隨螢幕(摺疊或展開時調整大小)</string>
-3
View File
@@ -258,8 +258,6 @@
<string name="mode_ratio">Screen ratio</string>
<string name="mode_ratio_custom">Set by the custom resolution.</string>
<string name="mode_ratio_auto">Auto uses at least 16:9.</string>
<string name="mode_performance">Performance mode</string>
<string name="mode_performance_hint">Lets games run without waiting for the screen and reduces repeated window checks in gamescope and Wine. Can use more power and run warmer. Use Steam\'s Quick Access menu to limit Steam games. Applies next session.</string>
<string name="mode_hdr">HDR</string>
<string name="mode_hdr10">HDR10 output</string>
<string name="mode_hdr_unavailable">Not available: %1$s.</string>
@@ -2054,7 +2052,6 @@
<string name="display_filter_live">Applies live. Shared by Steam and Desktop.</string>
<string name="display_filter_note">FSR, GSR and NIS apply when enlarging the session image. Sharpen only also works without enlargement.</string>
<string name="display_sharpness">Filter sharpness</string>
<string name="display_frame_rate">Frame rate</string>
<string name="display_look_filter">%1$s Sets scaling to %2$s.</string>
<string name="display_match_screen">Match screen (%1$d×%2$d)</string>
<string name="display_follow_screen">Follow screen (resizes when folded or unfolded)</string>
@@ -6,7 +6,6 @@ import android.view.Display
import androidx.compose.runtime.MutableState
import com.droiddeck.launcher.SessionActivity
import com.droiddeck.launcher.session.SessionPrefs
import com.droiddeck.launcher.session.SessionState
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before
@@ -38,12 +37,10 @@ class GlassesMirrorPacingTest {
val panel = Shadow.extract<ModeDisplay>(activity.display)
panel.supported = arrayOf(mode(1, 60f), mode(2, 90f), mode(3, 120f))
panel.current = panel.supported.last()
SessionState.performanceMode = false
activity.getSharedPreferences("session", Context.MODE_PRIVATE).edit().clear().commit()
}
@After fun cleanup() {
SessionState.performanceMode = false
activity.getSharedPreferences("session", Context.MODE_PRIVATE).edit().clear().commit()
}
@@ -53,7 +50,7 @@ class GlassesMirrorPacingTest {
apply(connected, settings.copy(refreshHz = 90))
expect(2, 90f, 90)
apply(GlassesState(), settings)
expect(3, 120f, 0)
expect(3, 120f, SessionPrefs.FPS_UNPACED)
}
@Test fun retiredSavedLimitsDoNotCapThePhoneOrMirroredOutput() {
@@ -64,21 +61,13 @@ class GlassesMirrorPacingTest {
apply(connected.copy(hz = 120f), settings)
expect(1, 60f, 60)
apply(GlassesState(), settings)
expect(3, 120f, 0)
}
@Test fun performanceModeResumesUnpacedOutputAfterMirrorDisconnects() {
SessionState.performanceMode = true
apply(connected, settings)
expect(1, 60f, 60)
apply(GlassesState(), settings)
expect(3, 120f, SessionPrefs.FPS_UNPACED)
}
@Test fun pacingFollowsThePanelWhenTheSystemKeepsALowerRateThanRequested() {
Shadow.extract<ModeDisplay>(activity.display).current = mode(2, 90f)
apply(GlassesState(), settings)
expect(3, 90f, 0)
expect(3, 90f, SessionPrefs.FPS_UNPACED)
}
private fun apply(state: GlassesState, config: GlassesSettings) {
@@ -1,36 +1,14 @@
package com.droiddeck.launcher.session
import android.content.Context
import org.junit.Assert.*
import org.junit.Before
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [33])
class PerformanceModeTest {
private val app get() = RuntimeEnvironment.getApplication()
private val session get() = app.getSharedPreferences("session", Context.MODE_PRIVATE)
@Before fun clear() { session.edit().clear().commit() }
@Test fun offByDefaultAndPerMode() {
assertFalse(SessionPrefs.performanceMode(app, SessionService.MODE_STEAM))
SessionPrefs.setPerformanceMode(app, SessionService.MODE_STEAM, true)
assertTrue(SessionPrefs.performanceMode(app, SessionService.MODE_STEAM))
assertFalse(SessionPrefs.performanceMode(app, SessionService.MODE_DESKTOP))
class OutputPacingTest {
@Test fun phoneOutputIsUnpaced() {
assertEquals(SessionPrefs.FPS_UNPACED, SessionPrefs.compositorFpsLimit(0))
}
@Test fun offKeepsDisplayAndMirrorPacing() {
assertEquals(0, SessionPrefs.compositorFpsLimit(0, false))
assertEquals(60, SessionPrefs.compositorFpsLimit(60, false))
}
@Test fun onIsUnpacedUnlessMirroring() {
assertEquals(SessionPrefs.FPS_UNPACED, SessionPrefs.compositorFpsLimit(0, true))
assertEquals(60, SessionPrefs.compositorFpsLimit(60, true))
@Test fun mirroringKeepsTheGlassesRate() {
assertEquals(60, SessionPrefs.compositorFpsLimit(60))
}
}