Cameron Gutman
de0fb72424
av_buffer_create() copies the pointer not the data
2026-01-04 18:24:20 -06:00
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
46d58e55a3
Add macro for printing FourCC values
2026-01-02 01:46:20 -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
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
de844f2a0c
Deprioritize the Nvidia VAAPI driver if Vulkan or CUDA are available
2025-12-11 20:13:14 -06:00
Cameron Gutman
c92dc2495e
Don't use vaPutSurface() if there are no valid subpicture formats
2025-12-05 23:52:41 -06:00
Cameron Gutman
d3c23b55dc
Disable the VAAPI RFI latency workaround by default
...
I can no longer reproduce this issue on the same system running
Ubuntu 24.04 with the core22-based edge channel snap anymore.
2025-11-30 22:23:09 -06:00
Cameron Gutman
f5ef201905
Create a separate X11 Display object for libva
...
Sharing these directly is fraught with concurrency issues that
require extreme care on both sides to avoid spurious X11 errors,
hangs, and other nasty stuff. We can't necessarily depend on SDL,
libva, or the underlying VA drivers to do the right thing here.
Using a new Display (as FFmpeg does for VAAPI and VDPAU) avoids
all these problems.
2025-11-23 13:26:46 -06:00
Cameron Gutman
fd70865026
Avoid retrying renderer init if we know the error was not transient
2025-02-18 19:02:12 -06:00
Cameron Gutman
351aaa6759
Add an enum type for each renderer
2025-02-18 18:58:04 -06:00
Cameron Gutman
4af9623727
Replace C++ VLAs with std::vector
2024-10-15 22:41:21 -05:00
Cameron Gutman
6f39d120cb
Unify handling of DRM devices between DRM and VAAPI
...
SDL may not be able to give us a DRM FD for Vulkan windows.
2024-09-21 20:46:11 -05:00
Cameron Gutman
b266f61ba6
Disable direct rendering of YUV444 using vaPutSurface()
...
It doesn't work as of libva 2.21 + iHD 24.2.5 despite the fact that
the VAEntrypointVideoProc advertises VA_RT_FORMAT_YUV444.
2024-09-15 21:03:00 -05:00
Cameron Gutman
c707dab70a
Plumb YUV444 logic into additional renderers
2024-07-25 06:36:40 -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
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
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
e20d56041e
Fix rare race condition in overlay update code
2023-12-31 15:21:18 -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
6eb5e07007
Fix warnings in 32-bit builds
2023-10-12 19:05:52 -05:00
Cameron Gutman
a2f23b7053
Fix automatic VA DRM driver selection with libva 2.20
2023-10-05 18:12:12 -05:00
Cameron Gutman
c2778e040a
Build fix for old EGL headers
2023-09-26 23:16:22 -05:00
Cameron Gutman
1efdeeb9dc
Export composed VA surface layers for EGL import if supported
...
Importing composed formats is more efficient and performant because it allows
tiled and/or compressed surfaces to be directly sampled by shaders without
requiring a conversion to a linear planar format first.
2023-09-26 22:58:13 -05:00
Cameron Gutman
b01dfea343
Refactor EGLImage creation into a separate shared class
2023-09-26 21:03:19 -05:00
Cameron Gutman
f420dc740a
Set EGL_IMAGE_PRESERVED_KHR=EGL_TRUE on our EGLImages
...
They're mapped read-only and may be saved internally as reference frames,
so they must not be modified by the EGL implementation.
2023-09-26 02:38:46 -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
1a2f1ed620
Enable AV1 RFI on all decoders capable of HEVC RFI
2023-08-13 16:41:48 -05:00
Cameron Gutman
d147d36867
Fix leaking /dev/dri fds on each vaInitialize() failure
2023-08-01 22:53:22 -05:00
Cameron Gutman
42960b7bf1
Prefer nvidia-vaapi-driver over VDPAU for AV1
2023-07-16 16:54:13 -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
84fc5f3008
Use colorspace helper with VAAPI direct rendering
2022-10-14 19:23:51 -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
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
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
be2f4433db
Avoid hardcoding VIDEO_FORMAT_H265_MAIN10 for HDR/10-bit color
2022-06-26 16:22:05 -05:00
Cameron Gutman
e103f6c9b6
Avoid holding the overlay lock during vaPutSurface
2022-05-28 22:28:17 -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
95c4a24d99
Destroy subpictures before the associated image
2022-05-20 21:46:40 -05:00
Cameron Gutman
f5f23a7c22
Implement overlay support for the VAAPI direct renderer
2022-05-20 21:40:37 -05:00
Cameron Gutman
474591c6a5
Use a separate callback to indicate EOS instead of renderFrame()
2022-04-07 21:30:20 -05:00
Cameron Gutman
fee6f75223
Fix VAAPIRenderer build error with neither HAVE_EGL nor HAVE_DRM defined
2022-04-05 00:24:00 -05:00