diff options
author | Joshua Ashton <joshua@froggi.es> | 2023-10-29 03:57:13 +0300 |
---|---|---|
committer | Philip Rebohle <25567304+doitsujin@users.noreply.github.com> | 2023-10-29 12:09:34 +0300 |
commit | 22c2abb9b7dff7d062fd1ce3fba4468acce4df0b (patch) | |
tree | c5b2e7c336a65dd8b0faf7a63d2284bf79cb8a3b | |
parent | f45911a28f6e6184f82487e983b4a6af6923e61c (diff) |
[dxgi] Treat R16G16B16A16_FLOAT as 32bpp for display
HDR in Control (a patch released by a developer post-launch, not
actually in the game sadly) tries to set a video mode with
DXGI_FORMAT_R16G16B16A16_FLOAT.
This seemingly works on Windows, and based on FindClosestMode etc
documentaton, this seems required to work for any format that scanout
it supported for.
It's really not like the bpp is meaningful on Windows with the
distinction of 8bit and 10bit not working in GDI modes at all.
Nor does it end up actually setting anything on Linux/Deck where
modesets are emulated.
So, treat DXGI_FORMAT_R16G16B16A16_FLOAT as 32bpp so the
FindClosestMatchingMode and EnterFullscreenMode calls succeed.
-rw-r--r-- | src/dxgi/dxgi_monitor.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dxgi/dxgi_monitor.cpp b/src/dxgi/dxgi_monitor.cpp index b0622b3b..842fb3fc 100644 --- a/src/dxgi/dxgi_monitor.cpp +++ b/src/dxgi/dxgi_monitor.cpp @@ -107,7 +107,11 @@ namespace dxvk { return 32; case DXGI_FORMAT_R16G16B16A16_FLOAT: - return 64; + // Floating point output doesn't really make sense. + // This seemingly works on Windows, and based on FindClosestMode etc documentaton, + // this seems required to work for any format that scanout it supported for. + // Treat as 10-bit -> 32. + return 32; default: Logger::warn(str::format( |