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);