From b7f8c5c068cdc9379662b12bc3457f35085a94c2 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Sun, 29 Oct 2023 01:57:13 +0100 Subject: [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. --- src/dxgi/dxgi_monitor.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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( -- cgit v1.2.3