diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 86ca4be54..c7f0d26ce 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -243,6 +243,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 243 | SetupFamilies(surface); | 243 | SetupFamilies(surface); |
| 244 | SetupFeatures(); | 244 | SetupFeatures(); |
| 245 | SetupProperties(); | 245 | SetupProperties(); |
| 246 | CollectTelemetryParameters(); | ||
| 246 | 247 | ||
| 247 | const auto queue_cis = GetDeviceQueueCreateInfos(); | 248 | const auto queue_cis = GetDeviceQueueCreateInfos(); |
| 248 | const std::vector extensions = LoadExtensions(surface != nullptr); | 249 | const std::vector extensions = LoadExtensions(surface != nullptr); |
| @@ -368,6 +369,18 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 368 | }; | 369 | }; |
| 369 | SetNext(next, demote); | 370 | SetNext(next, demote); |
| 370 | 371 | ||
| 372 | if (driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE) { | ||
| 373 | const u32 version = properties.driverVersion; | ||
| 374 | // Broken in this driver | ||
| 375 | if (version > VK_MAKE_API_VERSION(0, 2, 0, 193)) { | ||
| 376 | LOG_WARNING(Render_Vulkan, "AMD proprietary driver versions newer than 21.9.1 " | ||
| 377 | "(windows) / 0.2.0.194 (amdvlk) have " | ||
| 378 | "broken VkPhysicalDeviceFloat16Int8FeaturesKHR"); | ||
| 379 | is_int8_supported = false; | ||
| 380 | is_float16_supported = false; | ||
| 381 | } | ||
| 382 | } | ||
| 383 | |||
| 371 | if (is_int8_supported || is_float16_supported) { | 384 | if (is_int8_supported || is_float16_supported) { |
| 372 | VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8{ | 385 | VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8{ |
| 373 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, | 386 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, |
| @@ -560,7 +573,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 560 | logical = vk::Device::Create(physical, queue_cis, extensions, first_next, dld); | 573 | logical = vk::Device::Create(physical, queue_cis, extensions, first_next, dld); |
| 561 | 574 | ||
| 562 | CollectPhysicalMemoryInfo(); | 575 | CollectPhysicalMemoryInfo(); |
| 563 | CollectTelemetryParameters(); | ||
| 564 | CollectToolingInfo(); | 576 | CollectToolingInfo(); |
| 565 | 577 | ||
| 566 | if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) { | 578 | if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) { |