* Device details on the GPU card, and the Adreno model when the kernel leaves it out The Components page called an AYANEO Pocket FIT (Adreno 750) "Adreno" and warned it was "Below tested hardware (Adreno 725 and newer)": its kernel names the GPU "Adreno33v2", GpuInfo wanted three digits, and the SoC model is blank. When KGSL's name has no model, take it from the phone's Vulkan driver (once this process has asked it) or from the platform code name (pineapple -> 750, kalama -> 740, sun -> 830, ...). The GPU card now opens with a tap or A onto the device's details, gathered once off the main thread (DeviceInfo): SoC (maker, model, platform, soc0 id), GPU (model and where it came from, the kernel's name, clock, load, temperature, support), CPU clusters, memory, system, the phone's own Vulkan driver - device, API, driver version and build, conformance, limits, the extensions DXVK and VKD3D lean on, Android's certified version and level - and the drivers DroidDeck uses. A button copies it all for a bug report; each section takes pad focus so the d-pad walks the list. Vulkan is asked through a new small native library (deviceinfo, vkinfo.c) that opens the system loader with dlopen and keeps nothing open. * Device details: the chip's model and name, CPU clusters, GPU clock range Ideas from ClusterTune (GPL-2.0, its approach, not its code), which tunes clocks on AYN, Retroid and other handhelds: - The SoC model is read where vendors put it - ro.soc.model, ro.vendor.qti.soc_model, Android's SOC_MODEL, ro.fota.platform (unless it is a branch name like "MSM_13.0") - since handhelds often leave Android's blank (Pocket FIT: SG8350P). - SocNames names it: model codes we are sure of (QCS8550 -> Snapdragon 8 Gen 2, SM8750 -> Snapdragon 8 Elite, ...), else the platform as a family (pineapple -> "Snapdragon 8 Gen 3 family"). The GPU card's subtitle shows it: "Snapdragon 8 Gen 3 family (SG8350P)". - CPU clusters come from the cpufreq policies (the cores each covers, min-max speed) rather than grouping cores by top speed. - GPU clock range from KGSL's step list, or a devfreq GPU node on non-Adreno chips (Mali), not only the top clock. * Device details: drop Qualcomm's own "Driver Build:" label from the driver build line --------- Co-authored-by: The412Banner <the412banner@users.noreply.github.com>
DroidDeck brings the SteamOS experience to Android: Valve's Steam client in Big Picture on your Adreno handheld, with Windows games through Valve's ARM64 Proton.
Note: DroidDeck does not have a stand-alone website. Do not click on any download links from websites claiming to be the DroidDeck team.
Requirements and install
Use Android 9 or newer on a supported Adreno device (730 or newer, or 8xx). Mali, Xclipse, PowerVR, and Adreno 710 are unsupported. No root is required. Allow about 3 GB for the runtime and 1.1 GB more for the desktop and emulators. Install the APK from Releases, install the Linux runtime, then press Play and sign in. Steam downloads on first launch. Install Desktop & apps to use the desktop and emulators. The Store installs Linux apps and games from Flathub (ARM64 builds) with Flatpak; with additional options to install Appimages and set up scripts.
Before Steam launches, you must turn off Restrict child processes in Developer options. If this option is not available in developer settings (Android 12 and 13 devices), first launch of Steam will present a "Fix it for me" button, which will help automate the setup process.
Community
Join the DroidDeck Discord for help, Preview builds, and device reports. Bug reports go in its #bug-reports forum; attach the session folder from Download/DroidDeck/ so the logs come with it.
Build
Run tools/build_local.sh with Docker, Java 17, the Android SDK/NDK, and zstd installed. It builds the ARM64 audio sinks from PulseAudio 13.0 and packages them into the APK at app/build/outputs/apk/release/app-release.apk. Set DROIDDECK_PA13_SOURCE_DIR to an existing PulseAudio 13.0 source directory to skip downloading it. To install the APK on an attached device, run tools/deploy_local.sh.
Limits
Compatibility and performance vary by device; hardware validation is limited. Desktop compositing uses software rendering. Firefox sandboxing is reduced under proot. See the session logs in Download/DroidDeck/ when diagnosing problems.
Credits and licence
GPL-3.0. Runtime, shim, input, and controller work build on WinNative and Bannerlator (maxjivi05). LSFG frame generation is from the work of Camille LaVey and the Eden emulator project, following lsfg-vk, ported to WinNative and DroidDeck by @maxjivi05; it needs your own copy of Lossless Scaling and ships none of its shaders. x86 AppImages, and any whose own runtime cannot unpack them, are unpacked with uruntime by VHSgunzo (MIT), shipped unmodified with its licence. See LICENSE. Steam and Proton belong to Valve Corporation; this project is not affiliated with Valve.
