Cameron Gutman
64789ea8bc
Destroy the VTRenderer before leaving fullscreen
...
Fixes #973
2023-09-11 21:07:54 -05:00
Cameron Gutman
2ac7176787
Fix a bunch of memory leaks in the VTRenderer
...
It appears the leaked AVSampleBufferDisplayLayer may be causing the hang in #973
2023-09-11 20:49:35 -05:00
Cameron Gutman
87eba9bb89
Fix build on Qt 5.13 and earlier
2023-09-09 14:22:47 -05:00
Cameron Gutman
da1fcd49fc
Increase audio buffer size to reduce the chance of underruns
2023-09-09 12:56:05 -05:00
Cameron Gutman
c98289a9e7
Use DMA_BUF_IOCTL_SYNC to synchronize swframe copies
2023-09-09 12:19:40 -05:00
Cameron Gutman
1d0b65f798
Log the active SDL audio driver
2023-09-09 11:46:06 -05:00
Cameron Gutman
3094185cd6
Also skip SDL_RENDERER_PRESENTVSYNC on Wayland
2023-09-09 10:41:33 -05:00
Cameron Gutman
aaff04167b
Only skip SDL_RENDERER_PRESENTVSYNC on Windows
...
macOS can still tear when using the Metal renderer backend.
2023-09-09 08:00:13 -05:00
Cameron Gutman
21bba02e6f
Allow render thread usage with Metal
2023-09-09 07:45:42 -05:00
Cameron Gutman
f60e724167
Default to indirect rendering on Apple Silicon
...
Hopefully the UMA makes the performance impact of reimporting frames negligible
until we can get a proper Metal renderer to replace AVSampleBufferDisplayLayer.
2023-09-09 07:44:11 -05:00
Cameron Gutman
7551e90899
Adjust AV1 surface alignment to match FFmpeg behavior
2023-09-08 23:13:29 -05:00
Cameron Gutman
47d1eff45d
Don't rasterize layers in fullscreen
...
The original artifacting bug didn't manifest in fullscreen anyway.
2023-09-08 19:53:01 -05:00
Cameron Gutman
78ea79b95a
Quiet new -Wswitch warnings
2023-09-05 22:51:08 -05:00
Cameron Gutman
acbe503c12
Fix NVIDIA VAAPI X11 deprioritization check to actually check for X11
2023-09-05 20:46:43 -05:00
Cameron Gutman
0261c41574
Revert "Prefer nvidia-vaapi-driver over VDPAU for AV1"
...
libvdpau 1.5 has supported this for a while and we'll fall
back to VAAPI if VDPAU doesn't work.
This reverts commit 42960b7bf1
.
2023-09-05 20:39:28 -05:00
Cameron Gutman
c8182dfab3
Use BT.709 for DrmRenderer
2023-09-05 19:28:22 -05:00
Cameron Gutman
9ed40b5d9f
Add chroma siting metadata to EGL exported frames
2023-09-05 18:30:01 -05:00
Cameron Gutman
ebc4c71c72
Fix handling of non-standard hwaccel decoders that also set AV_CODEC_CAP_HARDWARE
2023-09-04 23:40:59 -05:00
FrogTheFrog
85d4037a89
Allow to specify gamepad GUIDs to be ignored when streaming
2023-09-03 16:24:05 -05:00
Cameron Gutman
9166e70524
Replace fixed "unsupported FPS" options with fully custom FPS option
...
Fixes #1003
2023-09-02 15:53:30 -05:00
Cameron Gutman
626fba4a8f
Fix DXVA2 chroma subsampling assuming interlaced content
2023-08-19 18:09:07 -05:00
Cameron Gutman
1a2f1ed620
Enable AV1 RFI on all decoders capable of HEVC RFI
2023-08-13 16:41:48 -05:00
Cameron Gutman
50255dd896
Set Colorspace connector property when streaming HDR
2023-08-09 23:02:43 -05:00
Cameron Gutman
c8b9fda258
Fall back to HEVC if AV1 is forced and unavailable
...
Fixes #1053
2023-08-05 22:56:12 -05:00
Cameron Gutman
7404e5fce2
Prefer D3D11VA for FSE V-Sync off
2023-08-03 19:41:35 -05:00
Cameron Gutman
dc5414bd0d
Force immediate destruction of the D3D11 swapchain
...
Possible fix for #959
2023-08-03 19:18:07 -05:00
Cameron Gutman
d147d36867
Fix leaking /dev/dri fds on each vaInitialize() failure
2023-08-01 22:53:22 -05:00
Cameron Gutman
7763ec3c5c
Fix mapping frames on RPi with 64-bit kernel and 32-bit userland
2023-08-01 22:01:34 -05:00
Cameron Gutman
bfcd373eec
Add PC name to streaming window title
...
Fixes #1039
2023-07-23 01:16:24 -05:00
Cameron Gutman
202ef41894
Fix scaling of touch coordinates
2023-07-23 01:13:54 -05:00
Cameron Gutman
f112edc3c3
Disable touch feedback when sending touch natively
2023-07-23 00:17:58 -05:00
Cameron Gutman
05fd7b18b9
Update touch API
2023-07-22 17:23:09 -05:00
ns6089
9764174070
Add host processing latency to ffmpeg stats overlay
2023-07-20 22:30:26 -05:00
Cameron Gutman
42960b7bf1
Prefer nvidia-vaapi-driver over VDPAU for AV1
2023-07-16 16:54:13 -05:00
Cameron Gutman
e7e9df3261
Populate AV1 bitrate multiplier
2023-07-16 15:54:58 -05:00
Cameron Gutman
abc391f32a
Improve AV1 support
2023-07-16 15:38:58 -05:00
Cameron Gutman
ce60a146dc
Move RPi decoder hacks to correct location for new selection logic
2023-07-15 15:22:02 -05:00
Cameron Gutman
cd4a6f3e17
Rewrite FFmpeg decoder selection logic to dynamically discover compatible decoders
...
This avoids having to maintain a hardcoded list of all known H.264/HEVC/AV1 decoders
and ensures new/unknown decoders will just work automatically (assuming we have
a renderer that can process their output pixel format).
2023-07-15 15:12:58 -05:00
Cameron Gutman
10523a7e27
Correct guards around newer SDL functionality
2023-07-09 16:36:41 -05:00
Casey Korver
ea06ec0133
Correct spelling mistakes found with Codespell
2023-07-09 13:21:18 -05:00
jcj83429
e287ebcded
Add support for Applications (context menu) key
...
I'm adding corresponding support in Sunshine
2023-07-08 20:08:02 -05:00
Cameron Gutman
9055496a19
Add AV1 test frames
2023-07-05 19:47:45 -05:00
Cameron Gutman
a81c6a1c5e
Initial work on AV1 support
2023-07-03 00:45:36 -05:00
Cameron Gutman
53a572a4a4
Add controller motion deduplication and fix gyro units
2023-07-02 19:22:00 -05:00
Cameron Gutman
df283d80c6
Implement controller LED and battery protocol extensions
2023-07-02 16:44:41 -05:00
Cameron Gutman
e5aaa1fc53
Implement controller arrival events using Sunshine protocol extension
2023-06-18 23:34:28 -05:00
Cameron Gutman
7a719aa886
Allow up to 16 gamepads with Sunshine hosts
2023-06-18 16:39:24 -05:00
Cameron Gutman
9af58af5e4
Implement gyro/accel and touchpad input using Sunshine extension
2023-06-18 16:08:32 -05:00
Cameron Gutman
b945c8c2dc
Implement trigger rumble using Sunshine protocol extension
2023-06-18 16:04:49 -05:00
Cameron Gutman
2165f56aee
Implement full multi-touch support using Sunshine protocol extension
2023-06-18 16:02:21 -05:00
Cameron Gutman
e42de9d155
Add extended button support with Sunshine
2023-06-18 16:00:51 -05:00
Cameron Gutman
68daa90b7e
Refactor non-hwaccel decoders to use a single list of known codec names
2023-04-02 17:31:31 -05:00
Cameron Gutman
fb39ad896e
Add h264_omx and hevc_omx decoders used by the Vision Five 2
2023-04-02 17:17:25 -05:00
Cameron Gutman
a3d1e9a117
Allow negotation of 36 and 48 bit deep color modes
2023-03-27 01:02:50 -05:00
Cameron Gutman
755c7c9895
Set max BPC property when streaming in 10-bit color modes
2023-03-27 00:44:02 -05:00
Cameron Gutman
f16b5cd337
Expose glslow config option
2023-03-26 20:27:03 -05:00
Cameron Gutman
21cda8141d
Always request AV_PIX_FMT_DRM_PRIME to ensure we get it if available
2023-03-26 19:59:12 -05:00
Cameron Gutman
90f26dfa45
Support direct KMSDRM output for platforms with slow GL implementations
2023-03-26 19:46:22 -05:00
Cameron Gutman
ba507d8046
Move hw->sw frame mapping into a separate class
2023-03-26 14:41:02 -05:00
Cameron Gutman
4cd030582d
Allow matching primary planes for direct rendering
2023-03-26 13:28:26 -05:00
Cameron Gutman
db2b120b68
Remove unused variable
2023-03-18 14:29:45 -05:00
Cameron Gutman
bccffe09e2
Purge NVIDIA-specific strings
2023-03-18 14:20:51 -05:00
Cameron Gutman
a0365c8e1c
Evaluate D3D9 quirks before calling CreateDeviceEx()
2023-03-17 00:53:47 -05:00
Cameron Gutman
38156c9f7f
Default to D3D11VA on multi-GPU systems
2023-03-13 22:56:28 -05:00
Cameron Gutman
5baa8c680a
Add upstreamed NV15 format used by Rockchip devices
2023-03-11 11:44:36 -06:00
Cameron Gutman
e1c4a488ed
Remove mouse throttling code
...
This should be managed inside moonlight-common-c instead.
2023-03-11 11:40:37 -06:00
Cameron Gutman
332d4433c4
Add horizontal scrolling in mouse emulation mode
2023-03-04 12:28:53 -06:00
Cameron Gutman
35e226273c
Tell the host if we want gamepads to persist after disconnection
2023-02-20 16:52:28 -06:00
Cameron Gutman
80659160d3
Consolidate launch and resume and skip FPS hack for Sunshine
2023-02-03 00:36:30 -06:00
Cameron Gutman
5de29928cd
Plumb HDR metadata for VideoToolbox
2023-02-02 19:16:18 -06:00
Cameron Gutman
b3cfdbb835
Fix DRM renderer build
2023-01-17 21:45:02 -06:00
Cameron Gutman
9c15cceee7
Don't batch mouse motion for Sunshine
2023-01-16 22:01:34 -06:00
Cameron Gutman
8a0142bd0f
Plumb HDR metadata and horizontal scrolling with Sunshine
2023-01-16 21:51:18 -06:00
Cameron Gutman
68c6d6c932
Attempt to fix build with SDL 2.26 on systems with old GL headers
2022-11-21 20:32:10 -06:00
Cameron Gutman
b9709d0825
Fix build without SDL_VIDEO_DRIVER_WAYLAND
2022-11-14 21:11:26 -06:00
Cameron Gutman
cae666b834
Wake pacing queue waiters when Pacer is being destroyed
2022-11-12 15:55:36 -06:00
Cameron Gutman
5970ca49e9
Don't use swap interval on Wayland
2022-11-12 15:45:54 -06:00
Cameron Gutman
6ae6218043
Refactor Pacer to handle both blocking and non-blocking VsyncSources
2022-11-12 15:08:50 -06:00
Cameron Gutman
8e3e19a7f7
Removed unused NullThreadedVsyncSource
2022-11-12 14:30:38 -06:00
Cameron Gutman
e3d51fd7f7
Implement a Wayland Vsync source using frame callbacks
2022-11-12 13:03:42 -06:00
Cameron Gutman
411998d4e3
Implement detection of local IPv6 addresses
2022-11-02 20:35:41 -05:00
Cameron Gutman
3f51998065
Start the streaming window maximized if the GUI was maximized
...
Fixes #889
2022-10-30 11:56:15 -05:00
Cameron Gutman
5b7c144796
Add workaround for DWM dark mode bug on Win10
2022-10-27 19:26:51 -05:00
Cameron Gutman
e45b6b9b85
Avoid white flash when starting streaming on Windows
2022-10-27 18:18:47 -05:00
Cameron Gutman
245f242fb8
Add support for dark mode on Windows
...
Fixes #886
2022-10-27 18:12:26 -05:00
Cameron Gutman
a6fccf93d1
Use a separate texture for rendering to avoid blending in the alignment padding
...
Fixes #885
2022-10-26 21:48:55 -05:00
Cameron Gutman
30a5f405f5
Enable HEVC RFI for the FFmpeg software decoder
2022-10-25 23:19:19 -05:00
Cameron Gutman
59cae610d2
Clarify encoding resolution limit comment
2022-10-25 01:24:57 -05:00
Cameron Gutman
29ac7893d7
Don't enforce the NVENC H.264 resolution limit on Sunshine hosts
...
Closes #882
2022-10-25 01:18:10 -05:00
Cameron Gutman
c8aeca8ace
Add an environment variable opt-out for the gamepad quit combo
...
See #870
2022-10-25 00:27:40 -05:00
Cameron Gutman
17848c097c
Don't switch between GLX and EGL if EGL worked
2022-10-16 22:57:08 -05:00
Cameron Gutman
8465a27a97
Deprioritize VAAPI for Gallium and Nvidia drivers and work around RFI latency bug
2022-10-16 21:51:10 -05:00
Cameron Gutman
255cbd1e7e
Fix building with SDL 2.0.20 or earlier
2022-10-15 15:36:09 -05:00
Cameron Gutman
7717749b72
Reduce max queued frames to avoid exhausting the decoder buffer pool
2022-10-15 14:34:42 -05:00
Cameron Gutman
9e4337babf
Revert "Increase the number of decoder surfaces for DXVA2/D3D11VA"
...
This reverts commit 02c781b8f4
.
2022-10-15 14:32:12 -05:00
Cameron Gutman
6771877a84
Make scaleSourceToDestinationSurface() idempotent
...
Deviation between scaling done during window sizing and renderer
viewport configuration can lead to small errors that create visible
artifacts such as a single pixel pillarbox/letterbox on one side.
2022-10-15 13:12:18 -05:00
Cameron Gutman
a860bd8dd5
Enable HEVC RFI on Tegra
2022-10-14 23:41:09 -05:00
Cameron Gutman
704ce4ff0c
Add environment variable for overriding decoder capabilities
2022-10-14 23:39:49 -05:00
Cameron Gutman
21edcc8113
Add workaround for macOS fullscreen exit bug
2022-10-14 23:01:55 -05:00
Cameron Gutman
125738f13d
Cancel overlay update callbacks before destroying VTRenderer
2022-10-14 22:49:33 -05:00
Cameron Gutman
02c781b8f4
Increase the number of decoder surfaces for DXVA2/D3D11VA
...
We forgot to take into account frames buffered within Moonlight itself
2022-10-14 21:20:35 -05:00
Cameron Gutman
453fe6aea0
Ensure the target window size is always even
2022-10-14 21:09:32 -05:00
Cameron Gutman
e0fb7dfd14
Rework window creation, sizing, and fullscreen transition logic
...
- Fixes window position/size being lost when toggling full-screen
- Fixes initial window size not respecting stream aspect ratio
2022-10-14 20:24:12 -05:00
Cameron Gutman
84fc5f3008
Use colorspace helper with VAAPI direct rendering
2022-10-14 19:23:51 -05:00
Cameron Gutman
8a224fbae4
Revert "Fix macOS build"
...
This reverts commit 0928d1fab2
.
2022-10-13 01:19:56 -05:00
Cameron Gutman
e6c4332445
Revert "Use Rec 2020 colorspace for WCG support even if HDR is off on the host"
...
Rec 2020 conversion causes colors to be blown out in SDR
This reverts commit 472e8ee92e
.
2022-10-13 01:19:49 -05:00
Cameron Gutman
0928d1fab2
Fix macOS build
2022-10-13 01:11:04 -05:00
Cameron Gutman
40dd588bef
Use 10-bit format mask instead of hardcoding specific formats
2022-10-13 00:17:05 -05:00
Cameron Gutman
472e8ee92e
Use Rec 2020 colorspace for WCG support even if HDR is off on the host
2022-10-13 00:14:10 -05:00
Cameron Gutman
c55af7fff3
Add a decoder/renderer callback to specify the desired color range
2022-10-12 23:59:01 -05:00
Cameron Gutman
7a39daf179
Implement Rec 601 Full Range support in SDLRenderer
2022-10-12 23:52:29 -05:00
Cameron Gutman
5501d7bc6b
Include opt-out variable in VAAPI avoidance log output
2022-10-05 18:50:53 -05:00
Cameron Gutman
413ef42a34
Enable HEVC RFI for CUDA, VAAPI, and VDPAU decoders
2022-10-05 18:47:43 -05:00
Cameron Gutman
a1694ab951
Use nvidia-vaapi-driver on Wayland systems if available
2022-10-05 18:44:11 -05:00
Cameron Gutman
fbbbd5e0b8
Use new LiRequestIdrFrame() API
2022-10-05 00:53:31 -05:00
Cameron Gutman
f8c7e2ee41
Enable HEVC RFI for VideoToolbox
2022-10-05 00:25:59 -05:00
Cameron Gutman
2a4af0bc2c
Use colorspace helpers for DRM EGL export
2022-10-05 00:20:33 -05:00
Cameron Gutman
bc68aad67b
Print the frame number if decoding fails
2022-10-04 23:38:54 -05:00
Cameron Gutman
9e8a4cab7b
Enable HEVC RFI for DXVA2 and D3D11VA
2022-10-04 22:56:21 -05:00
Cameron Gutman
071c76c06a
Add error text for ML_ERROR_FRAME_CONVERSION
2022-10-04 22:05:18 -05:00
Cameron Gutman
26ee1aee25
Fix protected content error on GFE 3.22+
2022-10-04 22:02:44 -05:00
Cameron Gutman
483a601867
Display SDR/HDR status in performance overlay
2022-09-28 17:44:22 -05:00
Cameron Gutman
439e8fe33f
Constify frame colorspace helper functions
2022-09-24 18:37:51 -05:00
Cameron Gutman
99885f5b4b
Centralize colorspace and color range handling
2022-09-24 12:28:23 -05:00
Cameron Gutman
81cfacaa3d
Add fallback logic when the host doesn't send valid colorspace data
2022-09-11 23:13:10 -05:00
Cameron Gutman
ad3ed97472
Fix handling of 3 byte Annex B start sequences
2022-09-05 17:56:42 -05:00
Cameron Gutman
9ab4479fcf
Fix excessive flickering when switching between full-screen and windowed on Windows
2022-08-28 20:10:26 -05:00
Cameron Gutman
aca82f400a
Never use fewer than 480 samples to avoid causing issues on PulseAudio systems
...
Fixes #830
Fixes #858
2022-08-25 21:27:05 -05:00
Cameron Gutman
0ff8a44ec3
Allow 10-bit in DXVA2 as a fallback
2022-08-22 00:23:07 -05:00
Cameron Gutman
c6d8f6e618
Allow D3D11VA to be disabled via environment variable
2022-08-22 00:19:46 -05:00
Cameron Gutman
d39a29759c
Don't draw with test-only renderers
2022-08-21 18:38:09 -05:00
Cameron Gutman
bf4332b9e7
Prefer D3D11VA in non-FSE modes for improved performance
2022-08-21 17:50:56 -05:00
Cameron Gutman
b0804ce048
Fix native resolution detection on high DPI wayland systems
2022-08-16 00:25:57 -05:00
Cameron Gutman
aa7d5fa924
Don't use swap interval 1 by default on Wayland systems
2022-08-14 13:09:31 -05:00
Cameron Gutman
36218b54f8
Don't hardcode /dev/dri/card0 and /dev/dri/renderD128
2022-06-30 19:25:33 -05:00
Cameron Gutman
be2f4433db
Avoid hardcoding VIDEO_FORMAT_H265_MAIN10 for HDR/10-bit color
2022-06-26 16:22:05 -05:00
Cameron Gutman
1b96b18bc0
Fix handling of colorspace changes when using CUDA+SDL
2022-05-28 22:55:55 -05:00
Cameron Gutman
e9edad6f8c
Fix surface leak if SDLVideo_CreateOverlay() fails
2022-05-28 22:48:49 -05:00
Cameron Gutman
f8a6012c3a
Improve overlay format handling
2022-05-28 22:48:23 -05:00
Cameron Gutman
e103f6c9b6
Avoid holding the overlay lock during vaPutSurface
2022-05-28 22:28:17 -05:00
Cameron Gutman
9daf7b5a36
Fix modesetting for non-EGL HEVC streams
2022-05-28 21:42:27 -05:00
Cameron Gutman
b9c73df488
Draw the black background even for the KMSDRM backend to fix modesetting
2022-05-24 19:41:37 -05:00
Cameron Gutman
f99f1f6441
Disable EGL renderer on RPi due to very poor performance
2022-05-23 23:05:07 -05:00
Cameron Gutman
1ec1f5d3be
Switch to D3D11VA by default on Windows ARM64
...
It performs much better at 4K on Surface Pro X
2022-05-22 22:29:18 -05:00
Cameron Gutman
c2d7b835fb
Try moving session.h prior to vaapi.h
2022-05-21 16:58:28 -05:00
Cameron Gutman
f72888ce6f
Attempt to fix build error with older Qt headers
2022-05-21 16:52:04 -05:00
Cameron Gutman
216f274a92
Fix UAF in SLVideo overlay update
2022-05-21 00:30:07 -05:00
Cameron Gutman
5ea79efe4b
Work around broken overlay state restoration in Qt GUI
2022-05-21 00:20:36 -05:00
Cameron Gutman
197c1ba21b
Add support for the status overlay on Steam Link
2022-05-21 00:10:49 -05:00
Cameron Gutman
95c4a24d99
Destroy subpictures before the associated image
2022-05-20 21:46:40 -05:00