Summary
On NVIDIA GeForce RTX 5080 (Blackwell) with driver 610.43.02, vkCreateDevice returns VK_ERROR_INITIALIZATION_FAILED when VkPhysicalDeviceCooperativeMatrixFeaturesKHR::
cooperativeMatrix is set to VK_TRUE in the pNext chain; even though vkGetPhysicalDeviceFeatures2 reports cooperativeMatrix = true for this device.
This is a violation of the Vulkan specification, which requires that vkCreateDevice
MUST NOT return VK_ERROR_INITIALIZATION_FAILED when the application requests only
features and extensions reported as available by the driver.
Reproduction
-
Call vkGetPhysicalDeviceFeatures2 on the RTX 5080 with driver 610.43.02.
Observe: cooperativeMatrix = VK_TRUE is reported. -
Enable VkPhysicalDeviceCooperativeMatrixFeaturesKHR::cooperativeMatrix = VK_TRUE
in the VkDeviceCreateInfo pNext chain and call vkCreateDevice.
Result: VK_ERROR_INITIALIZATION_FAILED
Expected: VK_SUCCESS (per Vulkan spec §vkCreateDevice)
Evidence of self-contradictory capability advertisement
vulkaninfo on this system reports the following for the RTX 5080:
VkPhysicalDeviceCooperativeMatrixFeaturesKHR:
cooperativeMatrix = true ← feature advertised as supported
cooperativeMatrixRobustBufferAccess = false
VkPhysicalDeviceCooperativeMatrixPropertiesKHR:
cooperativeMatrixSupportedStages: COMPUTE_BIT only (1 stage)
Extensions also advertised: VK_NV_cooperative_matrix2, VK_NV_cooperative_vector
This advertisement is internally inconsistent. Blackwell (SM 10.0) is capable of
cooperative matrix operations across multiple shader stages. The driver simultaneously
advertises only a single supported stage and the advanced Blackwell-exclusive
cooperative matrix extensions VK_NV_cooperative_matrix2 and VK_NV_cooperative_vector,
which presuppose a complete cooperative matrix implementation.
For comparison, the AMD RADV driver on the same system (an APU in the same machine)
reports a coherent cooperative matrix capability set:
cooperativeMatrix = true
cooperativeMatrixRobustBufferAccess = true
cooperativeMatrixSupportedStages: 9 stages (full coverage)
Spec reference
Vulkan 1.3 specification, vkCreateDevice:
“VK_ERROR_INITIALIZATION_FAILED: Initialization of an object could not be completed
for implementation-specific reasons.”
The spec implicitly does not permit this error to be returned when the application has requested
only features that were reported as available. The driver is advertising a feature it
cannot honour when enabled.
Impact
This blocks all Vulkan applications that follow the spec-compliant pattern of
enumerating physical device features and enabling all advertised features, including
games running via Proton/Wine using the VKD3D-Proton D3D12-over-Vulkan translation
layer. Affected titles include 007 First Light (Steam AppID 3768760) and potentially
any D3D12 title that triggers VKD3D-Proton’s device creation path.
The failure cannot be worked around at the application level because the spec
guarantees that enabling an advertised feature must succeed. No VKD3D configuration
flag exists to suppress requesting a driver-advertised feature.
System information
GPU: NVIDIA GeForce RTX 5080 (Blackwell)
Driver: 610.43.02
Kernel: Linux 7.0.10-201.fc44.x86_64 (Fedora 44)
Vulkan API: 1.4.341
Vulkan error log extract
The following is produced by VKD3D-Proton when it attempts vkCreateDevice:
warn: vkd3d_supports_minimum_coopmat_caps: Missing sufficient features to expose WMMA.
warn: vkd3d_create_vk_device: Disabled extensions that can cause Vulkan device
creation to fail, retrying.
err: vkd3d_create_vk_device: Failed to create Vulkan device, vr -3.
Note that VKD3D-Proton’s retry mechanism only strips extensions (VK_NVX_binary_import,
VK_NVX_image_view_handle); it does not alter the feature pNext chain, so the retry
also fails identically.
steam-3768760-protonGE10-34.log (501.1 KB)
vulkaninfo.txt (4.9 KB)