vk_device_info: Check only affected Intel drivers
Renames is_intel_proprietary to has_broken_compute for accuracy. vk_device_info: Use vulkan::device to check compute
This commit is contained in:
		| @@ -508,7 +508,7 @@ void ConfigureGraphics::RetrieveVulkanDevices() { | |||||||
|         vulkan_devices.push_back(QString::fromStdString(record.name)); |         vulkan_devices.push_back(QString::fromStdString(record.name)); | ||||||
|         device_present_modes.push_back(record.vsync_support); |         device_present_modes.push_back(record.vsync_support); | ||||||
|  |  | ||||||
|         if (record.is_intel_proprietary) { |         if (record.has_broken_compute) { | ||||||
|             expose_compute_option(); |             expose_compute_option(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -5,10 +5,12 @@ | |||||||
| #include <vector> | #include <vector> | ||||||
| #include "common/dynamic_library.h" | #include "common/dynamic_library.h" | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
|  | #include "video_core/vulkan_common/vulkan_device.h" | ||||||
| #include "video_core/vulkan_common/vulkan_instance.h" | #include "video_core/vulkan_common/vulkan_instance.h" | ||||||
| #include "video_core/vulkan_common/vulkan_library.h" | #include "video_core/vulkan_common/vulkan_library.h" | ||||||
| #include "video_core/vulkan_common/vulkan_surface.h" | #include "video_core/vulkan_common/vulkan_surface.h" | ||||||
| #include "video_core/vulkan_common/vulkan_wrapper.h" | #include "video_core/vulkan_common/vulkan_wrapper.h" | ||||||
|  | #include "vulkan/vulkan_core.h" | ||||||
| #include "yuzu/qt_common.h" | #include "yuzu/qt_common.h" | ||||||
| #include "yuzu/vk_device_info.h" | #include "yuzu/vk_device_info.h" | ||||||
|  |  | ||||||
| @@ -16,8 +18,8 @@ class QWindow; | |||||||
|  |  | ||||||
| namespace VkDeviceInfo { | namespace VkDeviceInfo { | ||||||
| Record::Record(std::string_view name_, const std::vector<VkPresentModeKHR>& vsync_modes_, | Record::Record(std::string_view name_, const std::vector<VkPresentModeKHR>& vsync_modes_, | ||||||
|                bool is_intel_proprietary_) |                bool has_broken_compute_) | ||||||
|     : name{name_}, vsync_support{vsync_modes_}, is_intel_proprietary{is_intel_proprietary_} {} |     : name{name_}, vsync_support{vsync_modes_}, has_broken_compute{has_broken_compute_} {} | ||||||
|  |  | ||||||
| Record::~Record() = default; | Record::~Record() = default; | ||||||
|  |  | ||||||
| @@ -48,9 +50,10 @@ void PopulateRecords(std::vector<Record>& records, QWindow* window) try { | |||||||
|         properties.pNext = &driver_properties; |         properties.pNext = &driver_properties; | ||||||
|         dld.vkGetPhysicalDeviceProperties2(physical_device, &properties); |         dld.vkGetPhysicalDeviceProperties2(physical_device, &properties); | ||||||
|  |  | ||||||
|         records.push_back(VkDeviceInfo::Record(name, present_modes, |         bool has_broken_compute{Vulkan::Device::CheckBrokenCompute( | ||||||
|                                                driver_properties.driverID == |             driver_properties.driverID, properties.properties.driverVersion)}; | ||||||
|                                                    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS)); |  | ||||||
|  |         records.push_back(VkDeviceInfo::Record(name, present_modes, has_broken_compute)); | ||||||
|     } |     } | ||||||
| } catch (const Vulkan::vk::Exception& exception) { | } catch (const Vulkan::vk::Exception& exception) { | ||||||
|     LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what()); |     LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what()); | ||||||
|   | |||||||
| @@ -24,12 +24,12 @@ namespace VkDeviceInfo { | |||||||
| class Record { | class Record { | ||||||
| public: | public: | ||||||
|     explicit Record(std::string_view name, const std::vector<VkPresentModeKHR>& vsync_modes, |     explicit Record(std::string_view name, const std::vector<VkPresentModeKHR>& vsync_modes, | ||||||
|                     bool is_intel_proprietary); |                     bool has_broken_compute); | ||||||
|     ~Record(); |     ~Record(); | ||||||
|  |  | ||||||
|     const std::string name; |     const std::string name; | ||||||
|     const std::vector<VkPresentModeKHR> vsync_support; |     const std::vector<VkPresentModeKHR> vsync_support; | ||||||
|     const bool is_intel_proprietary; |     const bool has_broken_compute; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| void PopulateRecords(std::vector<Record>& records, QWindow* window); | void PopulateRecords(std::vector<Record>& records, QWindow* window); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user