Commit Graph

2701 Commits

Author SHA1 Message Date
Cameron Gutman 46c76534bc Use AVBufferRefs to keep EGLImages and DRM FDs around for the lifetime of the frame 2026-01-04 18:06:24 -06:00
Cameron Gutman 67cba9e397 Add branding colors to appstream metadata 2026-01-04 00:38:54 -06:00
Cameron Gutman 2ab72375c6 Fix additional appstream metadata linter warnings 2026-01-04 00:16:20 -06:00
Sabri Ünal d3118bd677 metadata: Tidy up
- Drop categories that are already provided by the desktop file
- Group important information together
- Add vcs-browser URL to point to the source code repository
2026-01-03 23:56:03 -06:00
Cameron Gutman b8c3658c42 Skip modifier check if the frame doesn't have any modifiers 2026-01-03 02:53:44 -06:00
Cameron Gutman d3fb52c5a0 Check modifiers support in IN_FORMATS property
As it turns out, there *are* in fact hardware vendors dumb enough
to ship V4L2 decoders that output buffers which are unsupported by
any plane on their display hardware. By checking modifiers, we can
still fall back to GLES on GL_IS_SLOW=1 builds in this case.
2026-01-03 02:43:15 -06:00
Cameron Gutman 7924a5b6a7 Reduce mDNS log spam from hosts with many addresses 2026-01-03 01:14:50 -06:00
Cameron Gutman 2972022ced Remove async and non-blocking page flip support
It doesn't work well in practice for a few major reasons:
- It can result in the decoder writing on DMA-BUFs being used by the display
- It can generate page flip events that collide with Qt/SDL
- It can stall the decoder if the DMA-BUF has a fence on it from the display driver
2026-01-03 00:41:14 -06:00
Cameron Gutman c0846155c3 Fix page flipping bugs 2026-01-02 20:01:54 -06:00
Cameron Gutman ac6dadffc6 Use page flip events to correctly synchronize with async flips 2026-01-02 19:47:43 -06:00
Cameron Gutman 745ac34b15 Improve page flipping and modifier handling in DrmRenderer 2026-01-02 18:44:18 -06:00
Cameron Gutman 5f89636ed7 Improve robustness of DRM property value handling 2026-01-02 02:06:11 -06:00
Cameron Gutman 46d58e55a3 Add macro for printing FourCC values 2026-01-02 01:46:20 -06:00
Cameron Gutman be460970a8 Remove use of DMA_BUF_IOCTL_SYNC
It's only necessary on "real" DMA-BUFs, not dumb buffers.
2026-01-02 01:30:03 -06:00
Cameron Gutman d50ba06321 Implement DRM atomic renderer with overlay support
Fixes #1733
2026-01-02 01:24:35 -06:00
Cameron Gutman b108684edc Handle missing bitstream restrictions element in H.264 SPS fixup
NVENC on the 591.59 driver seems to not include the bitstream
restrictions element, which renders our attempt to set the
max_dec_frame_buffering value ineffective. Handle this by
providing inserting default bitstream restrictions if one
is not present.
2025-12-30 17:12:37 -06:00
Cameron Gutman b6d10a34c8 Update blocking swap buffer opt-out comment 2025-12-30 15:43:31 -06:00
Cameron Gutman 232ff0b3c6 Revert "Remove opt-out of blocking swap buffers logic for KMSDRM"
This significantly hurts performance on slower GPUs by preventing
the pipelining required when frametimes exceed the video frame
interval.

This reverts commit c26e437f40.
2025-12-30 15:39:47 -06:00
Cameron Gutman c5960c3e15 Always use display scaling with the KMSDRM video driver 2025-12-30 15:39:32 -06:00
Cameron Gutman b48cbd76f5 Fix implicit fallthrough warning 2025-12-30 15:32:15 -06:00
Cameron Gutman ceef792f04 Use display scaling to improve performance on slow GPUs
This dramatically improves performance for lower resolution
streams on slow GPUs when using the GL and Vulkan renderers.
2025-12-30 15:00:47 -06:00
Cameron Gutman f3f1d56e8d Fix EGLFS detection when a compositor is running on wayland-0 in another VT 2025-12-30 00:04:55 -06:00
Cameron Gutman c26e437f40 Remove opt-out of blocking swap buffers logic for KMSDRM
We don't set SDL_HINT_VIDEO_DOUBLE_BUFFER since b1c77ff.
2025-12-29 16:51:03 -06:00
Cameron Gutman e89f63b8fb Skip unnecessary glClear() on X11 2025-12-29 16:50:15 -06:00
bkpiaskun cf8251b9e6 Translated using Weblate (Polish)
Currently translated at 100.0% (251 of 251 strings)

Translation: Moonlight Game Streaming/moonlight-qt
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-qt/pl/
2025-12-29 19:00:21 +01:00
Oğuz Ersen d6c9beffc1 Translated using Weblate (Turkish)
Currently translated at 100.0% (251 of 251 strings)

Translation: Moonlight Game Streaming/moonlight-qt
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-qt/tr/
2025-12-29 19:00:20 +01:00
Cameron Gutman 93dc6d6b60 Convert Metal shaders to FP16 2025-12-29 01:45:49 -06:00
Cameron Gutman 8ee82421b3 Remove non-compliant float suffix in NV12 fragment shader
The 'f' suffix isn't supported until ESSL 3.0.
2025-12-28 22:58:21 -06:00
Cameron Gutman 31c65e0863 Optimize EGLRenderer overlay texture swizzle 2025-12-28 22:57:59 -06:00
Cameron Gutman 3e5aa9b127 Simplify EGLImageFactory and remove caching logic for now
The platforms that would most benefit (embedded V4L2 decoders)
either don't use frame pooling or don't synchronize with
modified DMA-BUFs unless eglCreateImage() is called each time.
2025-12-28 17:54:31 -06:00
Cameron Gutman 085480e9f4 Add EGLImage caching to improve performance 2025-12-28 17:08:45 -06:00
Cameron Gutman c3ce0918b3 Optimize blending in DXVA2 and D3D11VA renderers 2025-12-28 13:53:13 -06:00
Cameron Gutman c5b7a9c679 Optimize EGLRenderer with overlay VAOs and reduced GL_BLEND usage 2025-12-28 13:14:16 -06:00
Cameron Gutman f1451a0db3 Fix UB due to missing shader attribute location binding
Mesa drivers seem to generally bind attributes in order, but the
proprietary PowerVR driver (pvr) doesn't and renders incorrectly
as a result.
2025-12-27 23:56:17 -06:00
Cameron Gutman 8a5f34fb01 Remove logic to force the OpenGL ES library to load
This isn't necessary now that we turn on EGL everywhere,
and it breaks OpenGL ES 2.0 support too.
2025-12-27 23:11:53 -06:00
Cameron Gutman d1f43ca258 Use ESSL 1.0 for EGLRenderer shaders
We still ostensibly support GLES 2.0 GPUs.
2025-12-27 22:56:20 -06:00
Cameron Gutman 249c29b74c Allow GL_IS_SLOW and VULKAN_IS_SLOW to be overridden at runtime 2025-12-27 21:40:32 -06:00
Cameron Gutman 1cf207de07 Allow overriding FFmpeg AVOptions via environment variable 2025-12-27 21:07:04 -06:00
Cameron Gutman 4f08d52754 Enable DRM_PRIME frames for the TH1520 2025-12-27 15:40:59 -06:00
Cameron Gutman 41ad3c0938 Add environment variable override helper function
This allows FORCE_QT_GLES and SEPARATE_TEST_DECODER to override both true and false.
2025-12-27 15:33:39 -06:00
Cameron Gutman 21fb2832e1 Fix CLI exit after unexpected stream termination
Fixes #939
2025-12-27 13:33:46 -06:00
dependabot[bot] f0bb1031d8 Bump app/SDL_GameControllerDB from e40b891 to 16ac3e5
Bumps [app/SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) from `e40b891` to `16ac3e5`.
- [Commits](https://github.com/gabomdq/SDL_GameControllerDB/compare/e40b8910f859cd988124def50dcdb63b2f2ff48b...16ac3e553e23068e26819971f2cc6cd088a7f2f6)

---
updated-dependencies:
- dependency-name: app/SDL_GameControllerDB
  dependency-version: 16ac3e553e23068e26819971f2cc6cd088a7f2f6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 11:38:47 -06:00
Cameron Gutman b80d2a00c0 Fix SIGTERM unexpectedly quitting the host app 2025-12-23 01:09:21 -06:00
Cameron Gutman 85ea28287e Add workaround for AV1 reinit bug and quiet some debug output 2025-12-23 00:59:19 -06:00
Cameron Gutman a6f8901a18 Reuse the test decoder to improve startup performance 2025-12-23 00:32:36 -06:00
Cameron Gutman d501a627f0 Test all renderers before use
Every renderer except SDL had opted-in for testing due to various
quirks discovered over the years, so just do away with this option
and test all renderers.
2025-12-22 23:58:26 -06:00
Cameron Gutman 526d815930 Don't fall back to the generic hwaccel for DRM_PRIME formats 2025-12-22 15:06:20 -06:00
Cameron Gutman 741e360024 Fix GLES compatibility check on VF2 pvr driver 2025-12-21 22:15:29 -06:00
Cameron Gutman 7edbede95d Force Qt to use GLES if desktop GL is not available
Some platforms like the VisionFive 2 don't have working desktop GL,
so they must use GLES to be able to render at all. Qt doesn't try
to fall back if it fails to find a compatible EGL config, so we must
do so ourselves.
2025-12-21 21:13:22 -06:00
Cameron Gutman 7f54662160 Autoselect AV1 over H.264 on RK3588 2025-12-21 14:59:08 -06:00