Cameron Gutman
69a3406d4a
Fix broken PDBs for libplacebo.dll
2024-08-30 00:08:02 -05:00
Cameron Gutman
7e17d82ee5
Add a NSLocalNetworkUsageDescription for Sequoia
2024-08-29 23:31:55 -05:00
Cameron Gutman
153db55519
Replace OpenSSL static libs with dylibs to enable Qt OpenSSL TLS plugin
...
SecureTransport is deprecated, stuck on TLS 1.2, and seems prone to
random breakage in OS updates (see #1355 ).
2024-08-29 23:28:08 -05:00
Cameron Gutman
4290a54ffa
Log the chosen Metal device
2024-08-29 23:20:52 -05:00
Cameron Gutman
a6e549471c
Ignore failures when registering firewall exceptions
...
There appear to be bugs in the WiX firewall extension that causes errors on
install/upgrade in some scenarios (seemingly where existing fw exceptions for
Moonlight exist as in #1309 ).
Since a firewall exception really only provides minimal benefits for us in the
default configuration of Windows Firewall (outgoing: allow, incoming: deny) due
to WFP's stateful treatment of solicited unicast/multicast UDP traffic, let's
allow it to silently fail and not abort the whole installation.
2024-08-29 02:14:04 -05:00
Cameron Gutman
04edfdc4ca
Update to WiX 5.0.1
2024-08-29 01:50:53 -05:00
Cameron Gutman
db30faf602
Enable Turkish language now that it's nearly completely translated
2024-08-29 01:40:13 -05:00
Cameron Gutman
cdb610f121
Rerun lupdate and lrelease
2024-08-29 01:39:09 -05:00
Cameron Gutman
e404722e7c
Add Estonian translation
2024-08-29 01:37:09 -05:00
Cameron Gutman
1840c47751
Merge remote-tracking branch 'origin/weblate'
2024-08-29 01:24:36 -05:00
Cameron Gutman
ef12850867
Remove unnecessary Windows dependencies
2024-08-29 01:22:41 -05:00
Cameron Gutman
caf322d934
Provide valid default preferred formats for YUV444
2024-08-29 01:03:39 -05:00
Cameron Gutman
9043e8f663
Remove hard limits for bitrate and FPS command-line options
2024-08-25 16:18:55 -05:00
Cameron Gutman
76fd502262
Reintroduce support for FFmpeg 4
...
Some SBCs still depend on patched FFmpeg 4.x builds for hardware acceleration.
2024-08-24 16:50:27 -05:00
Cameron Gutman
9186feca80
Slightly simplify Metal shader
2024-08-22 01:18:39 -05:00
Cameron Gutman
df814fef4a
Implement support for HDR with software decoding on macOS
2024-08-22 00:05:26 -05:00
Cameron Gutman
d2b3bc962f
Probe for a HDR-compatible software renderer
2024-08-20 23:03:41 -05:00
Cameron Gutman
876375f7e9
Add additional codec negotiation improvements
...
- Fix picking incompatible YUV444 codec if software decoding was forced
- Prefer AV1 over HEVC when using HDR with software decoding
- Display software decoding warning when using an HDR codec without hardware decoding
2024-08-20 23:03:09 -05:00
Cameron Gutman
e662e93a53
Prioritize AV1 over HEVC for HDR with software decoding
...
dav1d is much faster than FFmpeg's HEVC decoder
2024-08-20 01:30:33 -05:00
Cameron Gutman
7c6954b5f6
Add HDR support with software decoding using libplacebo
...
Not supported on macOS yet.
2024-08-20 01:28:00 -05:00
Cameron Gutman
416003248b
Enable Vulkan renderer on Windows ARM64 builds
2024-08-20 00:43:03 -05:00
Cameron Gutman
6d6cd6fc35
Improve codec autoselection logic
...
- Deprioritize codecs that don't have hardware decoding rather than rejecting them outright
- Allow AV1 to be negotiated with autoselection if no other codec is available
- Take into account YUV444 preference when picking an optimal codec
- Arrange codec preference in ascending order of computational complexity when hardware decoding is unavailable
2024-08-19 23:41:42 -05:00
Cameron Gutman
17448c02b0
Move host settings to the other column to balance column length
2024-08-19 21:44:52 -05:00
Cameron Gutman
f3a75e8e76
Add experimental option to unlock bitrate to 500 Mbps
...
Fixes #1375
Fixes #1343
Closes #1377
2024-08-19 21:43:00 -05:00
Cameron Gutman
7da085480c
Switch to a vanilla 7.0 branch with the Nvidia video decoding fix cherry-picked
...
moonlight_7_0_2 has out-of-tree V4L2 patches that fail to build with the old libdrm headers in Focal.
2024-08-19 21:03:23 -05:00
Cameron Gutman
bed3a6ecd8
Print the friendly name of the unsupported AVPixelFormat in SDLRenderer
2024-08-19 20:58:45 -05:00
Cameron Gutman
e01c42153c
Allow software decoding if YUV444 is selected rather than falling back to YUV420
2024-08-19 20:58:16 -05:00
Cameron Gutman
9df65cb814
Allow selection of AV1 or HEVC for software decoding when HDR or YUV444 are enabled
...
These advanced features often/always are only supported with AV1 or HEVC.
2024-08-19 20:57:11 -05:00
Cameron Gutman
fddb4881fb
Use our FFmpeg fork for the AppImage to fix Nvidia Vulkan decoding crash
...
Hopefully the required patch will be picked to release/7.0 soon
2024-08-19 19:42:21 -05:00
Cameron Gutman
5765c254cd
Add software fallback for YUV444 using libswscale
2024-08-19 19:20:17 -05:00
Cameron Gutman
ea724a05a6
Fix compilation with older FFmpeg versions
2024-08-19 01:03:03 -05:00
Cameron Gutman
369f614b59
Rewrite format handling in DRM renderer
2024-08-19 00:57:07 -05:00
Cameron Gutman
8606b2c95e
Add support for VUYX and XV30LE for YUV 4:4:4
2024-08-18 23:45:26 -05:00
Cameron Gutman
fafddddfe0
Fix size and pitch calculation for dumb buffer uploads
2024-08-18 23:08:20 -05:00
Cameron Gutman
1bb16be183
Allow DrmRenderer to act as a non-DRM hwaccel backend
...
This case basically works like a degenerate case of a DRM hwaccel
without DRM master where we just provide EGL export functionality
except that we don't even need a DRM FD in this case.
There are patches floating around the FFmpeg list for this:
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=12604
2024-08-17 17:04:30 -05:00
Cameron Gutman
8e2aa87c4f
Avoid using D3D11VA on very old Intel GPUs
...
Fixes #1348
Fixes #1381
2024-08-16 00:32:46 -05:00
Cameron Gutman
28b4272123
Update Windows FFmpeg to 7.0.2 with patches
...
- Vulkan video decoding crash fix for Nvidia GPUs
- D3D11VA support for HEVC 4:4:4 on Intel GPUs
2024-08-15 22:55:37 -05:00
Cameron Gutman
19660174b7
Check that the new keypair is usable before persisting it
2024-08-15 22:50:49 -05:00
Cameron Gutman
665352ec95
Remove support for Intel's vendor-specific HEVC RExt profiles
...
These aren't supported upstream (and probably never will be) and recent
Intel drivers for Tiger Lake and later support the Microsoft standard
HEVC RExt profiles now.
2024-08-13 00:50:32 -05:00
Cameron Gutman
ab791cf4c8
Add support for the official DXVA HEVC Rext GUIDs defined in the Win11 24H2 SDK
2024-08-02 21:22:43 -05:00
Cameron Gutman
ef7dff32aa
Don't use Vulkan Video on Intel GPUs on Windows
...
Intel's Windows drivers are either totally broken or just don't play nicely with FFmpeg currently.
2024-08-02 21:16:52 -05:00
Cameron Gutman
9227ebfec9
Fix compiler warnings introduced by ComPtr refactoring
2024-08-02 21:15:18 -05:00
Cameron Gutman
f138827cdf
Add handling for AV1 High profile in D3D11VA/DXVA2
...
This doesn't seem to be supported by FFmpeg or any actual hardware yet
2024-07-30 23:21:49 -05:00
Cameron Gutman
e25919e0f9
Use for each loop to destroy objects in arrays
...
Also fixes incorrect release of m_VideoPixelShaders objects
2024-07-30 22:58:59 -05:00
Cameron Gutman
99749d4730
Use ComPtr for lifetime management in DXVA2
2024-07-30 22:41:29 -05:00
Cameron Gutman
9e811f54f1
Use ComPtr for lifetime management in D3D11VA
2024-07-30 22:29:38 -05:00
Cameron Gutman
0bb0d27d64
Implement YUV 4:4:4 decoding with D3D11VA on Intel GPUs
2024-07-30 21:12:11 -05:00
Cameron Gutman
6c6f808365
Tweak the YUV444 tooltip text
2024-07-26 01:24:27 -05:00
Cameron Gutman
dd9569913b
Remove hardcoded block for YUV444 on non-Vulkan renderers
2024-07-26 01:20:48 -05:00
Cameron Gutman
778eb07c5f
Reject YUV444 rendering using D3D11VA until it properly supported
2024-07-26 01:19:26 -05:00
Cameron Gutman
e2ffeae3f6
Add YUV444 support to VT Metal renderer
2024-07-26 00:39:13 -05:00
Cameron Gutman
eb6d16fdcf
Remove guards for older macOS and SDK versions
2024-07-26 00:38:54 -05:00
Cameron Gutman
e548697a36
Move VT decoding support detection into a single base class
2024-07-26 00:35:32 -05:00
Cameron Gutman
c707dab70a
Plumb YUV444 logic into additional renderers
2024-07-25 06:36:40 -05:00
Cameron Gutman
ff332d45f8
Fix false compiler warnings about missing return from non-void function
2024-07-24 20:45:52 -05:00
Cameron Gutman
9e92c07cb7
Use VK_NULL_HANDLE instead of nullptr to initialize VkSurfaceKHR field
...
Fixes #1367
2024-07-24 20:38:36 -05:00
Cameron Gutman
7f009a4b8e
Switch to 32-bit floating point audio
...
Excluding Steam Link due to CPU and API limitations
2024-07-17 20:37:50 -05:00
Cameron Gutman
8ac378f467
Enable libplacebo Vulkan renderer on x64 Windows builds
2024-07-16 19:12:37 -05:00
Cameron Gutman
82ec773119
Add Vulkan headers v1.3.290 for Windows
2024-07-16 19:06:43 -05:00
Cameron Gutman
3580286807
Update prebuilt libraries
...
SDL2 -> 3b7eafe
dav1d -> 1.4.3
openssl -> 3.3.1
libplacebo -> 7.349.0
libva -> 2.22.0
2024-07-13 17:27:03 -05:00
Cameron Gutman
e226091c19
Require macOS 11 or later
2024-07-13 17:26:27 -05:00
Cameron Gutman
074b4520e5
List both Qt 5 and Qt 6 packages for Linux builds
2024-07-13 16:19:00 -05:00
Cameron Gutman
de30eeaa66
Fix CI build errors
2024-07-13 13:53:43 -05:00
Cameron Gutman
fe9282e7d9
Update Windows to Qt 6.7 and remove 32-bit support
2024-07-13 13:23:14 -05:00
Cameron Gutman
45ccd1a811
Add plane selection workaround for Spacemit driver bug
...
Expose plane bug workaround logic through new envvars:
- DRM_MIN_PLANE_ZPOS
- DRM_ALLOW_PRIMARY_PLANE
2024-07-12 19:37:56 -05:00
Cameron Gutman
52583f5c71
Consolidate decoder checks to reduce code duplication
2024-07-12 19:02:20 -05:00
Cameron Gutman
952ebcd0d2
Prefer zero-copy formats for non-hwaccel hardware decoders
...
SpacemiT K1's BSP has a version of FFmpeg that contains both
v4l2m2m and their own *_stcodec decoders. Not only is their
V4L2 driver for their mvx decoder seemingly totally broken
(output buffers are all zeros), but it doesn't have any of
the DRM_PRIME support work that is maintained out of tree.
The result is we use a broken copyback decoder instead of
a (mostly) working zero-copy decoder because we didn't
include any logic to rank non-hwaccel decoders by pixfmt
like we have with device type for hwaccel decoders.
2024-07-12 18:45:46 -05:00
Cameron Gutman
d5a198b764
YUV420P10 is also compatible with PlVkRenderer
2024-07-06 17:24:46 -05:00
Cameron Gutman
b5b2731d5f
Add support for rendering software decoded frames with Vulkan
2024-07-06 16:49:35 -05:00
Cameron Gutman
d085722911
Don't attempt to use mismatched 8-bit formats with 10-bit codecs
...
In addition to silently truncating the samples, this also tickles
some nasty bugs in the VF2's out-of-tree OMX decoder.
2024-07-06 02:27:46 -05:00
Cameron Gutman
2e29ef8d74
Simplify codec selection and prioritization logic
2024-07-06 00:50:32 -05:00
Cameron Gutman
34fa7167b1
Force AV_CODEC_CAP_HARDWARE set for OMX decoders
...
There are at least 2 out-of-tree OMX decoder implementations
that both lack AV_CODEC_CAP_HARDWARE, so they trick us into
thinking that neither of them is hardware accelerated.
Fixes false decoder warnings when linked against the patched
FFmpeg builds shipping on VisionFive 2 and LicheePi 4A SBCs.
2024-07-05 23:04:10 -05:00
Cameron Gutman
27b173b76b
Add a GenericHwAccelRenderer for unknown hwaccels
...
This will get us limited hardware acceleration even for hwaccels
that we don't know about yet.
2024-07-05 22:49:52 -05:00
Cameron Gutman
d73df12367
Don't precompile QML files with disable-prebuilts
...
This binds us against the exact compile-time version of Qt with no
forwards or backwards compatibility, so it must not be used when we
could load Qt libraries from a location outside of our app bundle.
2024-07-04 15:45:48 -05:00
Cameron Gutman
17a2548480
Fix changelog typo
2024-06-29 19:56:31 -05:00
Cameron Gutman
753deb915f
Prepare for v6.0.1
2024-06-29 19:55:10 -05:00
Cameron Gutman
7d6f4135d5
Show Hungarian in the language list
...
The translation is nearly complete now (89%)
2024-06-29 17:19:35 -05:00
Cameron Gutman
622ec843ff
Add Lithuanian and rerun lupdate/lrelease
2024-06-29 17:17:45 -05:00
Cameron Gutman
5c18bf1608
Merge remote-tracking branch 'origin/weblate'
2024-06-29 17:07:02 -05:00
Cameron Gutman
d184730a82
Switch over to the new code signing certificate
2024-06-29 17:02:33 -05:00
Cameron Gutman
335ed0e8e6
Only sample directly from the video decoder output texture on Intel GPUs
...
This technique seems to actually make performance worse on some AMD GPUs (RX 480)
and causes rendering errors on others (HD 5570). These might be AMD-specific bugs
but let's not risk a behavior change for AMD/NVIDIA where nobody was having perf
issues with the old copy method anyway.
2024-06-29 14:44:08 -05:00
Cameron Gutman
0abb9fd7c2
Revert "Avoid using D3D11VA on older AMD TeraScale GPUs"
...
This reverts commit 93408386ae .
2024-06-29 14:12:03 -05:00
Cameron Gutman
1a1ce05959
Revert "Use a Texture2DArray in HLSL to match the SRVs"
...
This reverts commit d389f9a6e9 .
2024-06-29 14:07:41 -05:00
Cameron Gutman
93408386ae
Avoid using D3D11VA on older AMD TeraScale GPUs
2024-06-28 20:24:47 -05:00
Cameron Gutman
415b512c75
Require FL 11.0 for the D3D11VA renderer
...
We would probably be okay with 10.0 (SM4), but let's not risk
encountering GPU driver bugs like we do on old AMD cards.
2024-06-28 19:56:00 -05:00
Cameron Gutman
d389f9a6e9
Use a Texture2DArray in HLSL to match the SRVs
2024-06-27 19:46:27 -05:00
Cameron Gutman
dff02eab7d
Fix DrmRenderer build
2024-06-25 23:29:37 -05:00
Cameron Gutman
ecfcedad58
Fix window resizing on Windows with software decoding
2024-06-25 23:21:08 -05:00
Cameron Gutman
e76780e105
Add a new prepareToRender() callback for renders to perform their initial window clears
...
This consolidates all the clearing that was strewn across the codebase.
2024-06-25 23:12:18 -05:00
Cameron Gutman
1d1fa0577b
Don't flush window events after the KMSDRM modeset operation
...
We will flush the initial window shown event that we require to start decoding.
2024-06-25 22:28:23 -05:00
Cameron Gutman
a9d7c8e495
Move forced KMSDRM modesetting operation into Session init code
...
Performing this each time DrmRenderer is initialized leads to long
delays when choosing a decoder on embedded platforms, particularly
those like TH1520/JH7110 which lack accelerated GL drivers.
2024-06-25 21:57:02 -05:00
Cameron Gutman
ffdf683597
Output log messages to an attached debugger
2024-06-24 19:24:06 -05:00
Cameron Gutman
ac0e1098b9
Take COLOR_ENCODING values into account when choosing a colorspace
...
Replace the generic starfive hack with proper logic to examine the
supported enum values to select a colorspace. This fixes incorrect
colors with vs-drm on the TH1520.
2024-06-23 19:33:37 -05:00
Cameron Gutman
35695642d5
Use the first available plane that meets the zpos requirement
...
Planes seem to be listed in descending order of capabilities
with later planes sometimes lacking scaling capabilities, which
is the case with vs-drm on the TH1520.
2024-06-23 19:03:35 -05:00
Cameron Gutman
e458682a23
Refactor plane property loop to avoid leak
2024-06-23 18:13:20 -05:00
Cameron Gutman
fbe5e6f01f
Build Windows ARM64 with Qt 6.7 in CI
2024-06-23 17:58:22 -05:00
Cameron Gutman
52756e7f45
Update AppImage dependencies
...
dav1d -> 1.4.3
SDL2 -> ab5740bd
2024-06-23 17:57:42 -05:00
Cameron Gutman
0f57abf6f8
Don't select an overlay plane with a lower zpos than the primary plane
2024-06-23 17:55:27 -05:00
Cameron Gutman
94943d2865
Clamp chroma texcoords to avoid sampling alignment padding
...
This resolves #885 without the massive perf hit on lower end Intel GPUs.
2024-06-22 16:19:26 -05:00
Cameron Gutman
c3bd7edc4e
Revert "Use a separate texture for rendering to avoid blending in the alignment padding"
...
This kills performance on some Intel iGPUs (particularly Atom chips like N100),
so let's remove the copy and solve this issue a different way instead.
This reverts commit a6fccf93d1 .
2024-06-22 12:35:00 -05:00