1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
|
amdvlk + kleinerm on Linux HDR color formats:
Surface number of supported surface colorspace + pixelformat combinations: 8
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[2] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [2] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[3] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [3] Swapchain format VK_FORMAT_A2B10G10R10_UNORM_PACK32
[4] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [4] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[5] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [5] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[6] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [6] Swapchain format VK_FORMAT_A2B10G10R10_UNORM_PACK32
[7] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [7] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
-> SRGB formats also on SDR displays.
-> amdvlk limits output precision to RandR 'max bpc' 10.
Standard amdvlk:
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[2] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [2] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[3] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [3] Swapchain format VK_FORMAT_A2B10G10R10_UNORM_PACK32
[5] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [5] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[6] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [6] Swapchain format VK_FORMAT_A2B10G10R10_UNORM_PACK32
-> No 10 bit formats on SDR display.
AMD Vulkan on Windows-10 HDR color formats:
Surface number of supported surface colorspace + pixelformat combinations: 19
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[2] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [2] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[3] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [3] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[4] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [4] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[5] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [5] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[6] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [6] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[7] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [7] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[8] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [8] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[9] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [9] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[10] For colorspace VK_COLOR_SPACE_BT2020_LINEAR_EXT - [10] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[11] For colorspace VK_COLOR_SPACE_BT2020_LINEAR_EXT - [11] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[12] For colorspace VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT - [12] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[13] For colorspace VK_COLOR_SPACE_PASS_THROUGH_EXT - [13] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[14] For colorspace VK_COLOR_SPACE_PASS_THROUGH_EXT - [14] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[15] For colorspace VK_COLOR_SPACE_PASS_THROUGH_EXT - [15] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[16] For colorspace VK_COLOR_SPACE_PASS_THROUGH_EXT - [16] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[17] For colorspace VK_COLOR_SPACE_DISPLAY_NATIVE_AMD - [17] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[18] For colorspace VK_COLOR_SPACE_DISPLAY_NATIVE_AMD - [18] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
On SDR display:
Surface number of supported surface colorspace + pixelformat combinations: 8
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[2] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [2] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[3] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [3] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[4] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [4] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[5] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [5] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[6] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [6] Swapchain format VK_FORMAT_A2R10G10B10_UNORM_PACK32
[7] For colorspace VK_COLOR_SPACE_BT709_NONLINEAR_EXT - [7] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
NVIDIA Vulkan on Windows-10 HDR display:
Surface number of supported surface colorspace + pixelformat combinations: 4
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
[2] For colorspace VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT - [2] Swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
[3] For colorspace VK_COLOR_SPACE_HDR10_ST2084_EXT - [3] Swapchain format VK_FORMAT_A2B10G10R10_UNORM_PACK32
NVIDIA Vulkan on Windows-10 SDR display:
Surface number of supported surface colorspace + pixelformat combinations: 2
[0] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [0] Swapchain format VK_FORMAT_B8G8R8A8_UNORM
[1] For colorspace VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - [1] Swapchain format VK_FORMAT_B8G8R8A8_SRGB
Some notes about driver bugs encountered:
AMD amdvlk on Linux, as tested with Ubuntu 19.10 and 20.04-LTS:
NO relevant bugs since/as of the release of the 2020-Q2.6 driver in July 2020.
Now supports HDR-10 with 10 bpc output precision properly in direct display mode.
New bugs:
* HDR color gamut parsing is broken AGAIN! Now all chroma coords are too low
by a factor 5. Workaround implemented in PsychVulkanCore to multiply by 5x.
* If one switches multiple displays/RandR outputs into direct-display-mode then
that works, but when one tries to close them again / release the displays:
- If each RandR output / VKDisplay is on its own X-Screen all is fine.
- If the outputs/VKDisplays are on the same X-Screen (multi-display, single X-Screen)
then the driver fails to release all but the last/most recently acquired display!
All others get stuck at their last image, until one acquires/releases that one
display again. Peculiar: Even quitting Octave doesn't release the display!!
* Oh yeah, and while radv does do switching of a direct-display-mode display
into the requested mode, amdvlk ignores this and always switches to the
highest capability mode! Bad if the highest mode is also flaky due to
low link signal quality -- Displays blank out, DP link training fails etc.
--> ALL shoddy but work(around)able as of 2020-Q2.6
Before that release there were various serious bugs for which i
provided bug fixes, and one bug report fixed by AMD themselves:
- Failure of RandR output --> VKDisplayKHR mapping in error handling and on repeat calls.
- Failure of RandR output leasing --> Bugs in the build process, and other bugs.
- Failure in DirectDisplayMode to provide any displayable pixel formats!
- Failure in DirectDisplayMode to provide > 8 bpc formats.
- Errors in HDR display colorimetry property queries.
- Failure to allow setting HDR metadata for the display in RandR output leased mode.
Mesa RADV:
Can only handle one direct mode display (driver limitation).
However if one tries to open a 2nd display on another driver like amdvlk,
then radv doesn't fail gracefully. While 2nd display on amdvlk works, the
1st display handled by radv gets stuck and the swapchain reports failure
to present with some error code.
Tested AMD gpu's for HDR et al:
Discrete Advanced Micro Devices, Inc. [AMD/ATI] - Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] GPU found.
AMD Radeon RX graphics (Polaris11). DCE 11.2 Polaris family.
Integrated: AMD Raven Ridge DCN1.
Windows-10:
AMD: As of Radeon software release 2020.4.2 (June 2020)
- Failure in HDR display colorimetry property queries. Misreports maxLuminance and
maxFALL: maxFALL not reported at all (ie. zero), maxLuminance misreported as what
should be maxFALL. Reported to AMD months ago, not fixed.
- In fullscreen exclusive mode, surface properties report maxLayers == 0, which is
an impossible value, and leads to validation layers falsely reporting application
bugs. Ie. VkSurfaceCapabilities2KHR.surfaceCapabilities.maxImageArrayLayers == 0.
- Switching to fullscreen exclusive mode works with Matlab (compiled with MSVC2019),
but not with Octave 5.1/5.2 (MinGW64) for unknown reasons. VK_ERROR_INITIALIZATION_FAILED.
- Trying to display a VKSurface on any display not attached to the AMD gpu, but to
a different gpu (in my case, NVidia GeForce GTX-1650) leads to a amd driver crash,
not only in fullscreen exclusive mode, but even in regular windowed mode, when
displaying into a Window on the regular Windows-10 desktop, just located on a
different gpu's monitor!
Stack Trace (from fault):
[ 0] 0x00007ffb8f65dc58 C:\WINDOWS\System32\DriverStore\FileRepository\u0355311.inf_amd64_183b8d63847c90cf\B355199\amdvlk64.dll+00121944 vk_icdNegotiateLoaderICDInterfaceVersion+00030360
[ 1] 0x00007ffbe551c4c0 C:\WINDOWS\SYSTEM32\vulkan-1.dll+00115904 vkDestroyDescriptorPool+00062320
[ 2] 0x00007ffbe561c381 C:\Users\Mario Kleiner\Documents\GitHub\Psychtoolbox-3\Psychtoolbox\PsychBasic\MatlabWindowsFilesR2007a\PsychVulkanCore.mexw64+00050049 mexFunction+00023009
- Control of local backlight dimming on a FreeSync-2 HDR certified monitor via
VkDisplayNativeHdrSurfaceCapabilitiesAMD does not work, despite the extension
reporting that the monitor supports control. Don't know if this is an AMD
driver bug, or monitor firmware bug.
- Calling vkCreateInstance() after an OpenGL context was created, instead of before, somehow
damages the OpenGL context in a way that causes any OpenGL glXXX() to crash the AMD OpenGL
driver. Even trying to unbind an OpenGL context will crash the driver!
Graphics card 1 : Advanced Micro Devices, Inc. ( 0x1002 ) AMD Radeon(TM) RX Vega 11 Graphics Version 26.20.15029.27017 (2020-5-15)
Graphics card 2 : NVIDIA ( 0x10de ) NVIDIA GeForce GTX 1650 Version 26.21.14.4587 (2020-4-3)
Java Version : Java 1.8.0_181-b13 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
MATLAB Architecture : win64
MATLAB Entitlement ID : 6173418
MATLAB Root : C:\Program Files\MATLAB\R2019a
MATLAB Version : 9.6.0.1150989 (R2019a) Update 4
OpenGL : hardware
Operating System : Microsoft Windows 10 Home
Process ID : 8920
Processor ID : x86 Family 143 Model 17 Stepping 0, AuthenticAMD
Session Key : 15abeac6-e21d-4516-b749-94940f76e3bd
Window System : Version 10.0 (Build 18363)
Fault Count: 1
Abnormal termination:
Access violation
Register State (from fault):
RAX = 000000000035b000 RBX = 00000000043fb100
RCX = 000000000000004d RDX = 0000000000000000
RSP = 00000000043faeb0 RBP = 0000000000000001
RSI = 0000000000000001 RDI = 00007ffba3b97010
R8 = 0000000000000013 R9 = 0000000000000000
R10 = 0000000000000002 R11 = 00000000043fae90
R12 = 0000000000000000 R13 = 000000017c98d890
R14 = 00000000043fb100 R15 = 00007ffba3ce0e40
RIP = 00007ffb91ecb014 EFL = 00010202
CS = 0033 FS = 0053 GS = 002b
Stack Trace (from fault):
[ 0] 0x00007ffb91ecb014 C:\WINDOWS\System32\DriverStore\FileRepository\u0355311.inf_amd64_183b8d63847c90cf\B355199\atio6axx.dll+17412116 DrvPresentBuffers+06413060
[ 1] 0x00007ffba3b4f30c C:\Users\Mario Kleiner\Documents\GitHub\Psychtoolbox-3\Psychtoolbox\PsychBasic\MatlabWindowsFilesR2007a\moglcore.mexw64+00258828
NVidia: As of driver version 450, GeForce GTX 1650.
Querying HDR display colorimetry/HDR metadata from within Vulkan via
vkGetPhysicalDeviceSurfaceCapabilities2KHR() with .pNext chained VK_STRUCTURE_TYPE_HDR_METADATA_EXT
struct fails. Works on AMD on both Windows and Linux.
Needed to implement a fallback using MS-Windows 10 DXGI v1.6.
Displaying in HDR-10 windowed mode sometimes gets the display stuck in HDR-10
permanently, even across system reboots. One needs to manually disable in Windows-10
display settings.
|