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 770872238d
.
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
Cameron Gutman
9497657c83
Fix handling of zero minimum HDR luminance
2023-12-16 17:28:35 -06:00
Cameron Gutman
d4050f3a4f
Add HDR metadata to each AVFrame
2023-12-16 17:02:53 -06:00
Cameron Gutman
c74c4ef041
Fix native Vulkan video decoding (non-imported frames)
2023-12-16 16:21:54 -06:00
Cameron Gutman
d75663052d
Fix a few minor Vulkan renderer bugs
2023-12-16 16:18:19 -06:00
Cameron Gutman
6a58dbb05e
Disable 10-bit SDR swapchains on Vulkan due to inconsistent dithering behavior
2023-12-14 17:46:06 -06:00
Cameron Gutman
8aeb976128
Require a test frame for Vulkan video decoding
2023-12-14 17:44:58 -06:00
Cameron Gutman
7d51a4b67d
Fix incorrect overlay colors in Vulkan renderer
2023-12-14 17:43:54 -06:00
Cameron Gutman
ee95efc0f1
Improve Vulkan renderer debuggability
2023-12-13 01:08:32 -06:00
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