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.
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.
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.
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.
* 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]>
* alignment on all corners VUI_BUTTON_STYLE_CORNER
* fix for all shapes in VUI_BUTTON_STYLE_CORNER text
---------
Co-authored-by: itsmattkc <[email protected]>
* 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
* 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]>