mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-12 03:21:08 +00:00
133 lines
8.0 KiB
Markdown
133 lines
8.0 KiB
Markdown
# SteamDeck 0.1.5
|
||
|
||
**A new front end, settings that open where they are, the client's frames back on a flagship, a
|
||
new icon and three themes in its colours, and the first pull requests from a second pair of
|
||
hands.** Install it over 0.1.4; same key, same runtime, nothing to re-download.
|
||
|
||
---
|
||
|
||
## The front end
|
||
|
||
The main screen is a rail and a pane. The rail lists what can be launched - **Steam** and its
|
||
installed games, **Desktop** and its emulators and *their* games - and **Setup** under them, every
|
||
category folded when the app opens so the rail is three headers and their counts. The pane shows
|
||
the chosen thing with its launch button, its art, and a shelf of the rest. A session left in the
|
||
background is the first thing on the rail, with a pulse, and tapping it goes back in.
|
||
|
||
It moves: the selection is one pill that glides between rows, lists unfold with their children
|
||
staggering in, a page change cascades the new page in row by row over a blurred wash of its own
|
||
art, tiles lift and shine under the pad, the launch button sweeps a sheen and squashes on press,
|
||
and the session rises over the front end and sinks back. Every duration follows the system's
|
||
animator scale, so "no animations" in developer options snaps all of it. Seen on a Pocket FIT
|
||
and a Fold.
|
||
|
||
**Emulators launch from the rail, under gamescope, with their games.** The ROMs folder is scanned
|
||
per system (one level of subfolders, PS3 game folders, RPCS3's own installed games by their
|
||
PARAM.SFO with their icons), and each game launches straight in. God of War II HD booted in RPCS3
|
||
from the rail, ~40 fps on the FIT - the first emulator game from the app. The desktop's own Steam
|
||
launchers hand a game to the app's Steam session ( the hand-off itself is not yet proven).
|
||
|
||
## Settings without a pop-up
|
||
|
||
The cog's window and the Performance dialog are pages in the pane: one row per setting, its value
|
||
in a chip, and a small faded menu that opens right under the chip. One menu at a time; the page
|
||
dims while it is open; the back key, the rail and the page's own Back all leave it. **Steam** and
|
||
**Desktop** each have a Settings entry in the rail that lights while its page shows. Frame
|
||
generation, Session logs, Start offline and Theme open their menu right on their rail row.
|
||
|
||
The **session drawer** is the same rows and menus, sliding in from the right: Now (HUD, frame
|
||
generation, touch, the virtual pad, keyboard, the client's menu) and Next session (display shape,
|
||
FEX preset, compatibility tools), with Send to background and Stop at the end.
|
||
|
||
## The icon, and themes in its colours
|
||
|
||
A new launcher icon (Kurt's), and the same mark in the rail and on the loading screen. Three
|
||
themes under Setup › Theme, in the icon's black, white and blue: **Paper on black** (the default -
|
||
white is the primary, the blue is the small signal for rules, rings and dots), **Icon blue**, and
|
||
**Electric navy**. A change applies at once.
|
||
|
||
## Run as a game, and the client's frames back
|
||
|
||
- The app is declared a **game** to Android, with a game-mode config that welcomes Performance
|
||
mode and refuses the OS-side frame-rate cap and resolution downscaling - the interventions that
|
||
make a regular flagship's Big Picture crawl while a gaming phone's does not. The session window
|
||
asks for **sustained performance mode**, the panel's **fastest display mode** at its size, tells
|
||
GameManager it is in gameplay, and opens an **ADPF hint session** over the compositor thread fed
|
||
with each presented frame's interval. One `perf:` line in the session log says what took.
|
||
- **The client's GPU process stops dying on its way up.** libpci picks its procfs backend because
|
||
the app can read `/proc/bus/pci`, then dies on the devices file inside it, which Android denies;
|
||
Chromium loads libpci in its GPU process, so after a few tries CEF drew the whole interface on
|
||
the CPU. An empty file bound over that path at session start answers the scan truthfully.
|
||
(WinNative, maxjivi05: 44 → 85 fps in the Big Picture library on a OnePlus 15.) Big Picture at
|
||
117–118 fps on both panels of a 120 Hz Fold, Adreno 830.
|
||
- **Client interface** switches on the Performance page: threaded GL, lazy descriptors and no GL
|
||
error checks, all on by default; **Steam Deck mode** (`-steamdeck -steamos3`) off by default,
|
||
since the client then expects Deck hardware. What is in effect is in the device report.
|
||
- **720p by default** for the client and the desktop; a cap you chose still wins.
|
||
- **FEXCore presets** for the x86 games the client launches, Bannerlator's table carried over:
|
||
Stability, Compatibility, Intermediate, Performance, Performance + TSO, Extreme, Extreme + TSO,
|
||
Extreme-gn, Denuvo. The default is FEX's own defaults, which is what every session ran on before.
|
||
- The guest gets the device's **time zone** (the client's clock and logs were UTC).
|
||
- A device without an Adreno GPU is told **before** the runtime download that a session would be
|
||
sound over a black screen.
|
||
- The app's own libraries are **16 KB-aligned** (Android 15 devices). Six prebuilt PulseAudio
|
||
libraries are still 4 KB-only and need a rebuild.
|
||
|
||
## On-screen controls: sticks, and the bars
|
||
|
||
A **left and a right stick** beside the d-pad, a base and a knob that follows the finger, writing
|
||
the pad's thumb axes the way a physical stick does. The controls **take the bars** beside or under
|
||
the picture when the panel letterboxes it - a Fold's side bars, a square panel's bottom band -
|
||
and only overlay the picture when there are none wide enough. Not yet tried in a game.
|
||
|
||
## From Kurt (xXJSONDeruloXx)
|
||
|
||
- The **hardware Back button** reaches the app and opens the drawer instead of going into Steam
|
||
as Select. Verified on an AYN Thor.
|
||
- The **launcher icon**.
|
||
- **Local build and deploy helpers**: a Docker build for the preload libraries, a local release
|
||
build with signing, an ADB install helper.
|
||
|
||
Every pull request against main now builds by itself and gets one comment kept current: mergeable
|
||
or the conflicting hunks, and a failed build's compiler errors. The README lists the contributors
|
||
and a ledger of their pull requests that a workflow keeps.
|
||
|
||
## Smaller
|
||
|
||
The file manager and the picker stay in landscape · a session's log folder goes with it when it
|
||
ends and the next session gets its own · a replaced session's exit no longer ends the one that
|
||
replaced it · the desktop page says "Linux desktop environment" · the Kotlin compiler's session
|
||
files are ignored.
|
||
|
||
---
|
||
|
||
## Carried over - still open
|
||
|
||
The desktop → Steam hand-off and the sticks are untested on a device. A stick click is not yet
|
||
offered. VAC-protected games report insecure. Games that ship only a Linux build won't start.
|
||
|
||
## Credits
|
||
|
||
- **maxjivi05 (Max)** - the gamescope runtime this is built on, the sandbox shims, the controller
|
||
work, the NetworkManager stand-in and the libpci fix, from WinNative.
|
||
- **Kurt Himebauch (xXJSONDeruloXx)** - the launcher icon, the hardware Back fix, the local build
|
||
helpers.
|
||
- **The412Banner** - the app, the Wayland compositor, the runtime plumbing, the Steam session, the
|
||
front end and the File Manager (from Bannerlator).
|
||
- **Winlator (brunodev85)** - the audio stack, the gamepad model and the shape of a session.
|
||
- **Vauzi (Vauzi-17/710)** - the Adreno 710/720/722 device entries the experimental driver carries.
|
||
|
||
Frame generation: **Win-FG** is built in; **LSFG** uses the shader chain from *your own copy* of
|
||
Lossless Scaling, read on device and never redistributed, on groundwork from **lsfg-vk (PancakeTAS)**.
|
||
|
||
GPL-3.0. gamescope, Mesa, Turnip, Xwayland, labwc, LXQt, PulseAudio, proot and Arch Linux ARM are
|
||
their own authors'. **Not affiliated with Valve** - Steam, Proton and Steam Deck are Valve's, and no
|
||
Valve software is redistributed here: the client is fetched from Valve's own manifest on your device.
|
||
|
||
---
|
||
|
||
**APK** `SteamDeck-0.1.5.apk` - 21093959 bytes
|
||
`sha256 85b4295431ddea6f35025959864f3fbb47ad238693e146405ac0fe6ae87504f1`
|
||
versionCode 6, built from `d2f4a84` by [run 35813465422](https://github.com/The412Banner/SteamDeck/actions/runs/35813465422).
|
||
Signed with the AOSP test key (v1 + v2 + v3), so it installs over 0.1.4 in place.
|