summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index d82782f1c..5c5bfa18d 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -756,6 +756,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
756 CollectToolingInfo(); 756 CollectToolingInfo();
757 757
758 if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) { 758 if (driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR) {
759 const u32 nv_major_version = (properties.driverVersion >> 22) & 0x3ff;
760
759 const auto arch = GetNvidiaArchitecture(physical, supported_extensions); 761 const auto arch = GetNvidiaArchitecture(physical, supported_extensions);
760 switch (arch) { 762 switch (arch) {
761 case NvidiaArchitecture::AmpereOrNewer: 763 case NvidiaArchitecture::AmpereOrNewer:
@@ -765,11 +767,13 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
765 case NvidiaArchitecture::Turing: 767 case NvidiaArchitecture::Turing:
766 break; 768 break;
767 case NvidiaArchitecture::VoltaOrOlder: 769 case NvidiaArchitecture::VoltaOrOlder:
768 LOG_WARNING(Render_Vulkan, "Blacklisting Volta and older from VK_KHR_push_descriptor"); 770 if (nv_major_version < 527) {
769 khr_push_descriptor = false; 771 LOG_WARNING(Render_Vulkan,
772 "Blacklisting Volta and older from VK_KHR_push_descriptor");
773 khr_push_descriptor = false;
774 }
770 break; 775 break;
771 } 776 }
772 const u32 nv_major_version = (properties.driverVersion >> 22) & 0x3ff;
773 if (nv_major_version >= 510) { 777 if (nv_major_version >= 510) {
774 LOG_WARNING(Render_Vulkan, "NVIDIA Drivers >= 510 do not support MSAA image blits"); 778 LOG_WARNING(Render_Vulkan, "NVIDIA Drivers >= 510 do not support MSAA image blits");
775 cant_blit_msaa = true; 779 cant_blit_msaa = true;
@@ -834,8 +838,11 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
834 const bool is_intel_windows = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS; 838 const bool is_intel_windows = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS;
835 const bool is_intel_anv = driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA; 839 const bool is_intel_anv = driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA;
836 if (ext_vertex_input_dynamic_state && is_intel_windows) { 840 if (ext_vertex_input_dynamic_state && is_intel_windows) {
837 LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state"); 841 const u32 version = (properties.driverVersion << 3) >> 3;
838 ext_vertex_input_dynamic_state = false; 842 if (version < VK_MAKE_API_VERSION(27, 20, 100, 0)) {
843 LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state");
844 ext_vertex_input_dynamic_state = false;
845 }
839 } 846 }
840 if (is_float16_supported && is_intel_windows) { 847 if (is_float16_supported && is_intel_windows) {
841 // Intel's compiler crashes when using fp16 on Astral Chain, disable it for the time being. 848 // Intel's compiler crashes when using fp16 on Astral Chain, disable it for the time being.