diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 267b182fb..2be9e2e52 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -973,9 +973,25 @@ void Device::CheckSuitability(bool requires_swapchain) const { | |||
| 973 | robustness2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; | 973 | robustness2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT; |
| 974 | robustness2.pNext = &variable_pointers; | 974 | robustness2.pNext = &variable_pointers; |
| 975 | 975 | ||
| 976 | VkPhysicalDeviceTimelineSemaphoreFeatures timeline_semaphore{}; | ||
| 977 | timeline_semaphore.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES; | ||
| 978 | timeline_semaphore.pNext = &robustness2; | ||
| 979 | |||
| 980 | VkPhysicalDevice16BitStorageFeatures bit16_storage{}; | ||
| 981 | bit16_storage.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; | ||
| 982 | bit16_storage.pNext = &timeline_semaphore; | ||
| 983 | |||
| 984 | VkPhysicalDevice8BitStorageFeatures bit8_storage{}; | ||
| 985 | bit8_storage.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; | ||
| 986 | bit8_storage.pNext = &bit16_storage; | ||
| 987 | |||
| 988 | VkPhysicalDeviceHostQueryResetFeatures host_query_reset{}; | ||
| 989 | host_query_reset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; | ||
| 990 | host_query_reset.pNext = &bit8_storage; | ||
| 991 | |||
| 976 | VkPhysicalDeviceFeatures2KHR features2{}; | 992 | VkPhysicalDeviceFeatures2KHR features2{}; |
| 977 | features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; | 993 | features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; |
| 978 | features2.pNext = &robustness2; | 994 | features2.pNext = &host_query_reset; |
| 979 | 995 | ||
| 980 | physical.GetFeatures2KHR(features2); | 996 | physical.GetFeatures2KHR(features2); |
| 981 | 997 | ||
| @@ -1011,6 +1027,13 @@ void Device::CheckSuitability(bool requires_swapchain) const { | |||
| 1011 | std::make_pair(robustness2.robustImageAccess2, "robustImageAccess2"), | 1027 | std::make_pair(robustness2.robustImageAccess2, "robustImageAccess2"), |
| 1012 | std::make_pair(robustness2.nullDescriptor, "nullDescriptor"), | 1028 | std::make_pair(robustness2.nullDescriptor, "nullDescriptor"), |
| 1013 | std::make_pair(demote.shaderDemoteToHelperInvocation, "shaderDemoteToHelperInvocation"), | 1029 | std::make_pair(demote.shaderDemoteToHelperInvocation, "shaderDemoteToHelperInvocation"), |
| 1030 | std::make_pair(timeline_semaphore.timelineSemaphore, "timelineSemaphore"), | ||
| 1031 | std::make_pair(bit16_storage.storageBuffer16BitAccess, "storageBuffer16BitAccess"), | ||
| 1032 | std::make_pair(bit16_storage.uniformAndStorageBuffer16BitAccess, | ||
| 1033 | "uniformAndStorageBuffer16BitAccess"), | ||
| 1034 | std::make_pair(bit8_storage.uniformAndStorageBuffer8BitAccess, | ||
| 1035 | "uniformAndStorageBuffer8BitAccess"), | ||
| 1036 | std::make_pair(host_query_reset.hostQueryReset, "hostQueryReset"), | ||
| 1014 | }; | 1037 | }; |
| 1015 | 1038 | ||
| 1016 | bool has_all_required_features = true; | 1039 | bool has_all_required_features = true; |