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 a6fccf93d149a8b67eeac0b0fe109a142f0937d8.
2024-06-22 12:35:00 -05:00
Cameron Gutman
b6bb96223d
Revert "Remove manual hwframe ctx setup for D3D11VA"
...
We need this back to avoid the copy that's tanking performance on Intel iGPUs.
This reverts commit 2cef09471b80d46ea3b59a936494a44a68ad5d67.
2024-06-22 12:34:10 -05:00
Cameron Gutman
d3219ae24a
Don't use VAAPI fallback driver names on libva 2.20+
...
libva 2.20 is good enough at detecting driver names (even under XWayland)
that we don't need to use the fallback name list anymore. This saves time
probing drivers, avoids excessive log output from failed probes, and avoids
tickling bugs in VAAPI drivers that are installed but unused.
2024-06-18 00:31:59 -05:00
Cameron Gutman
bd60b873ec
Add missing check for no Vulkan devices
2024-06-18 00:12:08 -05:00
Cameron Gutman
17af71fe7a
Allow the Vulkan renderer to accept HDR input even without HDR output capability
...
In addition to resolving issues with mixing HDR and SDR displays and moving
between them while streaming, it also allows streaming HDR content to an SDR
display with tone mapping handled transparently by libplacebo.
2024-06-09 15:00:56 -05:00
Cameron Gutman
ec7137e693
Flush window events in MMAL and DRM renderers
2024-06-09 14:26:26 -05:00
Cameron Gutman
e67d83e097
Move declaration under ifdef to eliminate unused variable warning
2024-05-25 17:01:46 -05:00
Cameron Gutman
4474f815af
Only use fallback VDPAU/VAAPI driver paths on AppImages
...
Native packages and Flatpak/Snap packages both have properly set
driver path values embedded in libva.so/libvdpau.so. Let's not go
splunking for drivers in random folders on those systems.
2024-05-25 14:39:09 -05:00
Cameron Gutman
e130a15037
Remove dependency on AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES for VDPAU wrapper identification
...
These quirks may be deprecated and no longer populated in an upcoming FFmpeg version.
2024-05-25 14:24:31 -05:00
Cameron Gutman
845ef147c9
Add new libva driver path values for Fedora 40
2024-05-25 14:22:43 -05:00
Dylan Frankcom
58e27875ae
Fix Raised Black Levels on Steam Deck OLED ( #1265 )
...
Add getDecoderColorRange to plvk
2024-04-30 20:31:00 -05:00
Cameron Gutman
4aa2b8570c
Autorelease the system default Metal device
2024-04-19 00:29:51 -05:00
Cameron Gutman
fe6562e31c
Allow forcing Metal renderer on or off via VT_FORCE_METAL=1 and VT_FORCE_METAL=0 respectively
2024-04-19 00:27:45 -05:00
Cameron Gutman
654e386263
Only pace presentation if display sync is enabled
2024-04-19 00:17:13 -05:00
Cameron Gutman
76d0eb6b63
Avoid trying VDPAU when Vulkan is preferred
...
The VDPAU renderer causes interoperability issues with Vulkan.
2024-04-18 00:41:24 -05:00
Cameron Gutman
5e46c4ec2b
Update Windows and Mac prebuilt libraries
...
SDL2 -> 1fa6142
FFmpeg -> 7.0
opus -> 1.5.1
dav1d -> 1.4.1
2024-04-06 19:56:38 -05:00
Cameron Gutman
fd2ff61a40
Support Vulkan AV1 decoding with FFmpeg 7.0
2024-04-06 12:31:14 -05:00
Cameron Gutman
f2535f1e6e
Avoid D3D9 fallback on lack of codec support unless a D3D11 FL11.0 GPU wasn't found
...
We'd rather not waste time (and risk crashes) loading the D3D9 driver if the GPU doesn't have the physical decoding hardware at all.
2024-03-26 23:59:18 -05:00
Cameron Gutman
cefa567f95
Demote DXVA2 renderer to second pass of hwaccels
2024-03-26 23:04:54 -05:00
Cameron Gutman
97bd515b11
Remove leftover preferred Metal device logic
2024-03-26 01:16:57 -05:00
Cameron Gutman
a093a0ae59
Restore AVSampleDisplayLayer renderer for dGPU/eGPU systems
...
These sometimes have issues importing decoded frames for Metal rendering.
2024-03-24 17:47:29 -05:00
Cameron Gutman
ceca83346b
Use FIFO present mode for VSync
2024-03-02 11:19:52 -06:00
Cameron Gutman
896456a8ac
Wait for command buffer completion before returning from renderFrame()
2024-02-11 00:15:32 -06:00
Cameron Gutman
8959ddbeb6
Rewrite overlay support in Metal renderer to avoid additional subviews
...
Subviews cause our Metal layer to fall out of the direct composition path on Intel hardware
2024-02-11 00:15:07 -06:00
Cameron Gutman
767215fce5
Rewrite old frame pacing logic for Metal renderer
2024-02-10 22:49:13 -06:00
Cameron Gutman
3ef05f3a35
Completely switch to D3D11VA over DXVA2 for supported GPUs in all scenarios
...
Fixes #1179
2024-02-09 01:24:03 -06:00
Cameron Gutman
12624bc5c4
Avoid the composited display path for our Metal layer
2024-02-08 18:19:01 -06:00
Cameron Gutman
80242f2e90
Fix Metal debug layer validation errors
2024-02-08 18:06:46 -06:00
Cameron Gutman
cf3e328f9d
Add seamless resize support for Metal renderer
2024-02-08 18:05:47 -06:00
Cameron Gutman
b972a22459
Use SDL helpers to create Metal view
2024-02-07 03:26:09 -06:00
Cameron Gutman
db06239018
Rewrite the macOS renderer using CAMetalLayer
...
This allows v-sync to be disabled on macOS and lets us remove a whole bunch of old hacks.
Further optimizations of the new renderer are still needed.
2024-02-07 02:40:35 -06:00
boogie
bdc7d53515
Only give "pixel_format=nv12" option to v4l2m2m or v4l2requests decoders
...
pixel_format is a global option which changes avctx->pix_fmt to the
given format, and overrides the AV_PIX_FMT_DRM_PRIME requirement of a
decoder. So v4l2 out of tree patches has done some exception which is
not perfectly nice, therefore limit this option only if the given
decoder is v4l2 decoder. Otherwise rockchip mpp based ffmpeg decoders
can not work properly
2024-02-06 00:09:34 -06:00
Cameron Gutman
c3e886fbcc
Use drmIoctl() instead of bare ioctl() to handle EINTR/EAGAIN
2024-01-05 18:33:17 -06:00
Cameron Gutman
e20d56041e
Fix rare race condition in overlay update code
2023-12-31 15:21:18 -06:00
Cameron Gutman
114074bfd8
Don't set HDR metadata on the DXGI swapchain
...
This is no longer recommended by Microsoft due inconsistencies with display support for HDR metadata.
2023-12-31 15:15:06 -06:00
Cameron Gutman
61f71a318e
Expose PLVK_DEBUG_EXTRA for enabling extra debug layers
2023-12-27 15:40:01 -06:00
Cameron Gutman
646ce2bf66
Handle occlusion of the Vulkan window without recreating the renderer over and over
2023-12-27 15:36:59 -06:00
Cameron Gutman
2bbae90e2c
Revert "Unconditionally override host-reported minimum luminance value"
...
This reverts commit 770872238d29576ad3c31353fb5b549d5cf2a6a6.
2023-12-26 15:46:25 -06:00
Cameron Gutman
bb8e229814
Swap buffers in waitToRender() instead of renderFrame()
2023-12-26 15:45:31 -06:00
Cameron Gutman
2cef09471b
Remove manual hwframe ctx setup for D3D11VA
...
It was apparently never necessary, since FFmpeg's default behavior of
avcodec_get_hw_frames_parameters() + av_hwframe_ctx_init() makes a
context that exactly matches the one we constructed manually.
2023-12-22 02:45:11 -06:00
Cameron Gutman
2d15382e31
Fix libplacebo renderer build on Windows
2023-12-21 18:12:19 -06:00
Cameron Gutman
770872238d
Unconditionally override host-reported minimum luminance value
2023-12-18 16:43:17 -06:00
Cameron Gutman
2a05b890d8
Enable transparent resizing and display changes for supported renderers
2023-12-17 21:15:40 -06:00
Cameron Gutman
481f23b6e9
Remove some dependencies on fixed window and frame sizes
2023-12-17 20:39:26 -06:00
Cameron Gutman
4e7107a09e
Use the crop rect from the pl_frame instead of the raw AVFrame dimensions
2023-12-17 19:06:56 -06:00
Cameron Gutman
058739321c
Move vkAcquireNextImageKHR() into waitToRender() so it can overlap with new frame arrival
2023-12-17 16:47:38 -06:00
Cameron Gutman
708bec2937
Rewrite Vulkan device selection logic to handle multi-GPU systems better
2023-12-17 15:46:10 -06:00
Cameron Gutman
c939537c5c
Synchronize swapchain and pl_frame colorspace values
2023-12-16 17:36:02 -06:00