From 389469c604d13b915fb2a25ee82e8780a0a20abf Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 8 Mar 2019 22:53:32 +0100 Subject: [PATCH] - pick the first device that supports our required features --- src/rendering/vulkan/system/vk_device.cpp | 12 +++++++++++- src/rendering/vulkan/system/vk_device.h | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/rendering/vulkan/system/vk_device.cpp b/src/rendering/vulkan/system/vk_device.cpp index 7e55b0ba6..0253c023a 100644 --- a/src/rendering/vulkan/system/vk_device.cpp +++ b/src/rendering/vulkan/system/vk_device.cpp @@ -272,6 +272,16 @@ void VulkanDevice::createSurface() } } +bool VulkanDevice::checkFeatures(const VkPhysicalDeviceFeatures &f) +{ + return + f.samplerAnisotropy == VK_TRUE && + f.shaderClipDistance == VK_TRUE && + f.fragmentStoresAndAtomics == VK_TRUE && + f.depthClamp == VK_TRUE && + f.shaderClipDistance == VK_TRUE; +} + void VulkanDevice::selectPhysicalDevice() { VkResult result; @@ -293,7 +303,7 @@ void VulkanDevice::selectPhysicalDevice() vkGetPhysicalDeviceProperties(device, &deviceProperties); vkGetPhysicalDeviceFeatures(device, &deviceFeatures); - bool isUsableDevice = deviceProperties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU && deviceFeatures.geometryShader && deviceFeatures.samplerAnisotropy; + bool isUsableDevice = /*deviceProperties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU &&*/ checkFeatures(deviceFeatures); if (!isUsableDevice) continue; diff --git a/src/rendering/vulkan/system/vk_device.h b/src/rendering/vulkan/system/vk_device.h index 7d37b728b..db3ed7567 100644 --- a/src/rendering/vulkan/system/vk_device.h +++ b/src/rendering/vulkan/system/vk_device.h @@ -61,6 +61,8 @@ private: void createSemaphores(); void releaseResources(); + static bool checkFeatures(const VkPhysicalDeviceFeatures &f); + VkDebugUtilsMessengerEXT debugMessenger = VK_NULL_HANDLE; static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData);