52 Commits
Author SHA1 Message Date
itsmattkc c62bbac9b0 cmake: fix vendored ffmpeg nvdec support 2026-01-16 13:11:49 -08:00
itsmattkc eb808d64ce docker/cmake: should fix builds 2026-01-16 10:53:23 -08:00
itsmattkc 07e04a8791 cmake: fix hardware decoders, probably 2026-01-16 10:19:33 -08:00
itsmattkc cca4c50e8f cmake: simpler vendored ffmpeg configure args 2026-01-16 09:26:12 -08:00
itsmattkc 8d311381b0 cmake: link with vdpau if cuda is enabled 2026-01-15 12:29:30 -08:00
itsmattkc 26ff1d0a84 ui: if no CUDA path to display, don't use CUDA
Even if the user has an NVIDIA card, if Vanilla hasn't been compiled with CUDA support it has no way of getting the frame onto the screen
2026-01-15 08:59:38 -08:00
itsmattkc 1e184bd62f Squashed commit of the following:
commit f65e382f41f1b1976b92c64707d6f427ac39a7d6
Author: itsmattkc <[email protected]>
Date:   Thu Jan 15 08:21:28 2026 -0800

    finished nvdec support

commit de1767d4eadd139a2d0a76bef6d8c34e81f9e4fe
Author: itsmattkc <[email protected]>
Date:   Wed Jan 14 19:49:17 2026 -0800

    begin nvdec impl
2026-01-15 08:21:45 -08:00
itsmattkc 9aecca7943 ui: improve hardware decoder detection 2026-01-14 19:08:41 -08:00
itsmattkc 95b705a405 ui: more robust checks for EGL availability
SDL2 prefers GLX over EGL, however we require EGL to present VAAPI decoded frames to the screen, so we set a flag to force it over to EGL.

However some hardware (notably NVIDIA GPUs) do not provide EGL pathways. We must detect this and un-force EGL if so. However the un-forcing requires a little more work than expected. This code should work now.
2026-01-14 18:41:12 -08:00
itsmattkc fde6e0d3f2 ui: add another audio buffer
Will reduce audio crackling at the expense of some latency
2026-01-14 16:15:30 -08:00
itsmattkc edff4bb1c0 ui: use "Wii U" only for name of first synced console
Most users will only have a single Wii U, and it's kinda ugly for it to be called "Wii U 1". Default to "Wii U" for the first synced console, and subsequent consoles will be "Wii U 2", "Wii U 3", etc.
2026-01-14 16:15:14 -08:00
itsmattkc f50df6290d pipe/gui: set unmanaged at app-level rather than connection-level
Rather than setting NetworkManager to "unmanage" the Wi-Fi interface every sync/connection, do it once when the pipe starts. This way, there won't be any awkward shuffling as the pipe goes from syncing to connecting.
2025-12-30 10:36:31 -08:00
itsmattkc 590a163ef2 gui: default fullscreen on
Once again, while not necessarily ideal for desktop usage, all of our main touch-based targets will benefit from this
2025-12-30 02:29:25 -08:00
itsmattkc 09c6de3b7e gui: greatly improve and simplify audio output
Significantly reduces audio latency
2025-12-30 02:07:06 -08:00
itsmattkc a7d9c626f2 gui: in main menu, create console buttons first
Fixes #295
2025-12-30 02:07:06 -08:00
sheepy0125 acb350d564 gui: check for nullptr on controller name strcmp (#297) 2025-12-30 02:00:24 -08:00
itsmattkc 72380441c5 gui: use a combination of the Steam Virtual Gamepad and Steam Deck controllers on the Steam Deck
The Steam Deck provides a "virtual gamepad" that it expects games to use, however the "virtual gamepad" doesn't provide direct access to the Steam Deck's gyroscopes. We can bypass it, but then Steam Deck users lose usability features like remapping (and Vanilla will continue to receive inputs in the background, which are usually cut off on the virtual gamepad, which can cause accidental clicks). To try to get the best of both worlds, we use a hybrid approach where we use the virtual gamepad for everything EXCEPT the gyros, and then use the direct hardware access JUST sfor the gyros.
2025-12-29 16:03:17 -08:00
itsmattkc 2a0045b4f6 gui: return to settings after connection, but retain callback functionality 2025-12-29 14:12:13 -08:00
itsmattkc 53384ee384 Revert "gui: on connection select, return to settings"
This reverts commit b116d6cabc.
2025-12-29 14:08:48 -08:00
itsmattkc 1f57c5262d gui: null check polkit subject
Not sure why this would happen but probably worth doing either way
2025-12-29 12:32:13 -08:00
itsmattkc 7f793e8c52 gui: fix regression regarding disconnects 2025-12-29 10:57:23 -08:00
itsmattkc b11a9b2c16 gui: in settings, rename "Gamepad" to "Controls" 2025-12-29 10:56:34 -08:00
itsmattkc 573b240280 use borderless fullscreen
This will probably be a superior experience in most cases, though we should double check this looks right on the Raspberry Pi and Android builds
2025-12-29 08:56:24 -08:00
itsmattkc a27ba0e646 disable windowing option on platforms that don't need it (e.g. raspberry pi, android) 2025-12-28 20:07:31 -08:00
itsmattkc 2388c419be add fullscreen toggle
For desktop users, this should be a nicer user experience
2025-12-28 19:28:33 -08:00
itsmattkc a73632aca6 Squashed commit of the following:
commit cdfb6f8bd07e1e44850167dcfe4bbe393d6d40bf
Author: itsmattkc <[email protected]>
Date:   Sun Dec 28 10:36:34 2025 -0800

    add user setting for swapping AB/XY

commit b230c8e86baae91f733e67f97494ee18dbcb85d0
Author: itsmattkc <[email protected]>
Date:   Sun Dec 28 10:25:34 2025 -0800

    start impl
2025-12-28 10:44:10 -08:00
itsmattkc b116d6cabc gui: on connection select, return to settings 2025-12-28 10:38:12 -08:00
itsmattkc 70e0854908 implement fallback if EGL on X11 is not available 2025-12-27 23:04:16 -08:00
itsmattkc a1ab0e042f print SDL_GetError on failure to create renderer 2025-12-27 11:38:02 -08:00
itsmattkc 4fa0bd6b9e add logo only graphic 2025-12-27 11:38:02 -08:00
itsmattkc 48a31be82b implement frame limiter
While it is desirable to update more than 1/60 seconds, there is no need to update more than 1/180 (or 1/200 in this case)
2025-12-18 12:09:05 -08:00
itsmattkc 9556fcbb39 Update ui_sdl.c 2025-12-18 09:45:09 -08:00
itsmattkc 821a53bd58 Update ui_sdl.c 2025-12-13 00:55:05 -08:00
itsmattkc 5bcd89cf38 grr 2025-12-13 00:54:17 -08:00
itsmattkc b2d505d6e9 Update ui_sdl.c 2025-12-13 00:37:30 -08:00
Eduardo Melianditsmattkc b7c52fb03c MSAA scaling alignment fix for text in buttons (#261)
* alignment on all corners VUI_BUTTON_STYLE_CORNER

* fix for all shapes in VUI_BUTTON_STYLE_CORNER text

* msaa scaling for btn text

---------

Co-authored-by: itsmattkc <[email protected]>
2025-12-03 16:46:19 -08:00
Eduardo Melianditsmattkc 29ef683034 Fix for VUI_BUTTON_STYLE_CORNER text alignment for non-circular buttons (#206)
* alignment on all corners VUI_BUTTON_STYLE_CORNER

* fix for all shapes in VUI_BUTTON_STYLE_CORNER text

---------

Co-authored-by: itsmattkc <[email protected]>
2025-12-02 18:23:49 -08:00
MattKC b0bbc31002 Various optimizations and refactoring (#259)
* optimizations

* Update menu_game.h

* try new code

* use cached EGLImages

* try drm cache on pi

* nani?

* huh?

* require opengl egl

* find EGL

* find EGL separately

* logging

* add support for versions of ffmpeg less than 6.0

* disable drm cache for now

* Update ui_sdl.c

* use old code for now

* disable avcc hdr for now

* restore error message

* try disabling format modifiers?

* tell me what the layer is

* pi decoder actually produces frames in yuv420p

* print more debug info

* try this

* switch to faster decode path

* switch to old code

* Update ui_sdl.c

* add more timing profiling

* more printing

* enable some optimizations

* draw menus when not in game mode

* call render present

* Update ui_sdl.c

* Update ui_sdl.c

* remove unused code

* Update CMakeLists.txt

* incorporate direct DRM code

* Update CMakeLists.txt

* free drm context and test old decoding code

* move SDL event loop to separate thread so controls are not limited by display rate

* add a wait to reduce CPU thrashing

* fix double free

* separate video into recv and consume threads

* Update ui_sdl_drm.c

* Update ui_sdl_drm.c

* Update gamepad.c

* further optimizations

* anti-alias buttons more

* fix some compiler errors

* only include DRM on linux

* fix windows compile issues

* fix includes

* Update CMakeLists.txt

* add htobe32 define for macOS

* Update video.c

* Update gamepad.c
2025-11-30 20:56:52 -08:00
itsmattkc 6a82715263 gui: use strtoul for reading server_address from config 2025-11-05 23:07:30 -08:00
itsmattkc cbd8d15e67 gui: only use pkexec if polkit is available 2025-11-05 21:27:43 -08:00
itsmattkc 5535248781 cmake: fix polkit logic 2025-11-05 17:24:35 -08:00
itsmattkc beb504774f ensure correct build if polkit isn't available 2025-11-05 16:46:52 -08:00
itsmattkc 488bd08b8d cmake: add option for vaapi [skip ci] 2025-11-05 16:39:18 -08:00
itsmattkc da0033e0c6 ci: remove armhf build for now
Decided it probably makes more sense to provide a buildroot distro rather than an app release.
2025-11-05 16:09:35 -08:00
MattKC d90f09a895 ci: add armhf builds 2025-10-27 18:34:12 -07:00
MattKCandMattKC 61e2a91028 Implement Polkit agent for platforms that lack them (#244)
* attempt to set up polkit listener

* implement polkit agent functionality

* finalized polkit implementation

* add warning for installing polkit rule

* docker: install libpolkit-agent-1-dev

* add uninstall polkit option

---------

Co-authored-by: MattKC <[email protected]>
2025-10-03 16:25:00 -07:00
MattKC 6bf8d4898b ui: try using SDL_SetHintWithPriority to enforce steam deck gyros on 2025-09-13 15:46:11 -07:00
MattKC 9c2eaa995c use textures for loading graphic instead of utf-8 chars 2025-08-24 11:28:43 -07:00
MattKC 47dca2b4d5 Squashed commit of the following:
commit 0172f88e43d2d6569fb02482085e41c41da69de6
Author: MattKC <[email protected]>
Date:   Mon Aug 18 17:22:55 2025 -0700

    fix VAAPI on x11

commit 34f1552c42bf53e3e3a11541d603fa0f0a718494
Author: MattKC <[email protected]>
Date:   Mon Aug 18 17:08:46 2025 -0700

    print more debug info

commit 9dadb24c63f46d026c1757237b910c4e514c9dcd
Author: MattKC <[email protected]>
Date:   Mon Aug 18 16:58:08 2025 -0700

    prefer wayland if available for VAAPI

commit 4db3b14eebf09852129989cc34b2a61c2a376540
Author: MattKC <[email protected]>
Date:   Mon Aug 18 16:40:53 2025 -0700

    print eglGetError

commit ad78d993881a198f1532cd5f9ec29ad83500f1af
Author: MattKC <[email protected]>
Date:   Mon Aug 18 15:55:51 2025 -0700

    don't include EGL stuff if not using

commit f5a9b8966f49b75db849282352d67c842e353c9b
Author: MattKC <[email protected]>
Date:   Mon Aug 18 15:18:07 2025 -0700

    link X11

commit 3b498dfdf8cf3d83d8f9b943f0b637f5fb094080
Author: MattKC <[email protected]>
Date:   Mon Aug 18 15:04:31 2025 -0700

    more vaapi libs

commit 6fef38233ebbf7ecec5c1249f0792c3837fc1a02
Author: MattKC <[email protected]>
Date:   Mon Aug 18 14:50:22 2025 -0700

    link libva

commit 89a185efcafb0048e57a28baf207c0a810ea457f
Author: MattKC <[email protected]>
Date:   Mon Aug 18 14:32:51 2025 -0700

    conditionally compile with EGL

commit 409edbd810503b919aa03751584b1eadeeade8d5
Author: MattKC <[email protected]>
Date:   Mon Aug 18 14:22:47 2025 -0700

    only enable vaapi on linux builds

commit e0c3a001ac4c2c0b36cf2678c69cc7e034de9ed3
Author: MattKC <[email protected]>
Date:   Mon Aug 18 14:17:37 2025 -0700

    check for has_EGL_EXT_image_dma_buf_import EGL extension

commit a61f959de2e2946f46432959bb7c478412d55ffc
Author: MattKC <[email protected]>
Date:   Mon Aug 18 14:10:50 2025 -0700

    implement VAAPI and DRM

commit 4e51af70dbacd2e55e5b67f7154adf424360cea1
Author: MattKC <[email protected]>
Date:   Mon Aug 18 10:09:22 2025 -0700

    get VAAPI frames up to the display thread

commit 1270c0dfdaf16f9b80f514fc0c95141256cf8d8c
Author: itsmattkc <[email protected]>
Date:   Mon Aug 18 07:29:00 2025 -0700

    began impl
2025-08-18 17:53:20 -07:00
MattKCandMattKC e644a02ec9 Various Steam Deck Improvements (#229)
* initial commit

* seems to work

* try SDL_SetHintWithPriority

* set hint with SDL_HINT_OVERRIDE

* try setting hint before SDL_init

* fix issue with signal handling

* send sigterm to pipe

* ensure SDL creates signal handlers?

* fixed pipe issues not closing

* ensure pipe is stopped ASAP when receiving SIGINT and SIGTERM

The Steam Deck gives us extremely little time to clean up before getting SIGKILL'd, so make sure pipe is told to quit ASAP when receiving SIGINT or SIGTERM.

* fix logic issue

* removed things that aren't necessary for this PR

* clarified some comments [skip ci]

---------

Co-authored-by: MattKC <[email protected]>
2025-08-17 22:34:32 -07:00