Cameron Gutman
3ddc8ad68a
Fix crash if pl_vulkan_create() fails
2023-12-13 01:04:54 -06:00
Cameron Gutman
333d97160e
Add opt-in for Vulkan rendering for SDR content with PREFER_VULKAN=1
2023-12-13 01:03:27 -06:00
Cameron Gutman
aac5ad3fd0
Add a libplacebo-based Vulkan renderer for HDR and Vulkan video decoding support
...
Vulkan H.264/HEVC video decoding isn't supported with Fedora's Mesa binaries due to
patent issues, so only the VAAPI/DRM-PRIME import path was tested locally with ANV.
HDR video is getting tonemapped to my SDR monitor reasonably, so HDR output probably
works with GameScope but I haven't confirmed yet.
See #1117
2023-12-12 23:54:23 -06:00
Cameron Gutman
eef270de26
Fix HDR with external displays on macOS Sonoma
...
Fixes #1079
2023-10-15 15:30:41 -05:00
Cameron Gutman
9cba449092
Add config option to allow EGL usage when built with MMAL
2023-10-15 13:03:47 -05:00
Cameron Gutman
6eb5e07007
Fix warnings in 32-bit builds
2023-10-12 19:05:52 -05:00
Cameron Gutman
9120fd01a8
Adjust MMAL and RPi workarounds for Pi 5 and Bookworm support
2023-10-12 18:46:11 -05:00
Cameron Gutman
c14cc70a6a
Also check for V3D compatible IDs
2023-10-08 16:52:54 -05:00
Cameron Gutman
7e4fddbe62
Only block EGL rendering on Pi 4 and earlier
...
Hopefully Pi 5 is powerful enough to at least render 1080p 60 FPS.
2023-10-08 16:16:33 -05:00
Cameron Gutman
2127e1d90b
Allow h264_v4l2m2m to be used in RPi builds if manually specified
2023-10-05 18:37:14 -05:00
Cameron Gutman
9d73aa6b4a
Fix DrmRenderer not falling back to swframes if DRM PRIME is available
2023-10-05 18:13: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
5974980aff
Use BT.709 in DrmRenderer only on Starfive devices
2023-10-05 18:10:36 -05:00
Cameron Gutman
18130fd8de
Use BT.601 for planes that lack COLOR_ENCODING properties
2023-09-29 18:30:39 -05:00
Cameron Gutman
b6d4f97e96
Check that the chosen plane supports the decoded frame pixel format
2023-09-29 17:22:49 -05:00
Cameron Gutman
0dd0112518
Don't export EGLImages for software frames
2023-09-29 17:20:50 -05:00
Cameron Gutman
5711e6064e
Allow reuse of an active plane for devices with only one usable plane per CRTC
2023-09-29 17:19:44 -05:00
Cameron Gutman
517b684f85
Handle EGL driver returning no supported formats or modifiers for DMA-BUF import
2023-09-27 01:31:01 -05:00
Cameron Gutman
738813cbac
Add fallback definition for EGLuint64KHR
2023-09-26 23:22:25 -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
dc556d3c9b
Try to fix Windows build
2023-09-23 13:33:21 -04:00
Cameron Gutman
f7bb4611e9
Replace uses of strcpy() and sprintf()
2023-09-23 11:15:21 -04:00
Cameron Gutman
654be492a0
Avoid using LFS64 interfaces with Musl
2023-09-18 20:07:56 -05:00
Cameron Gutman
1df0da4d4a
Also use test frame decoding parameters when creating a test renderer
2023-09-14 18:21:53 -05:00
Cameron Gutman
1dd6cdb567
Use the correct width and height of the test frame when performing the test decode
...
Using the stream resolution instead of the test frame resolution was causing all non-720p streams to fail on the VisionFive 2 board with the wave5 driver.
It also likely fixes a similar interoperability issue with the qcom-venus driver that was reported in #1042
2023-09-14 18:16:45 -05:00
Cameron Gutman
f4b0f4d78f
Functionally revert f60e7241
...
Switching to indirect rendering has a high risk of performance and functionality regressions,
so let's just continue using AVSampleBufferDisplayLayer until we have a Metal renderer
since #973 is fixed.
This isn't an actual revert because we want to still keep the indirect override around.
2023-09-12 18:36:53 -05:00
Cameron Gutman
fd41226cdd
Support fully-planar output in DrmRenderer
2023-09-12 18:08:48 -05:00
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
c98289a9e7
Use DMA_BUF_IOCTL_SYNC to synchronize swframe copies
2023-09-09 12:19:40 -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
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
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