diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 13b5da341..33856fe59 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -456,6 +456,13 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 456 | }; | 456 | }; |
| 457 | SetNext(next, demote); | 457 | SetNext(next, demote); |
| 458 | 458 | ||
| 459 | VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters{ | ||
| 460 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES, | ||
| 461 | .pNext = nullptr, | ||
| 462 | .shaderDrawParameters = true, | ||
| 463 | }; | ||
| 464 | SetNext(next, draw_parameters); | ||
| 465 | |||
| 459 | VkPhysicalDeviceShaderFloat16Int8Features float16_int8; | 466 | VkPhysicalDeviceShaderFloat16Int8Features float16_int8; |
| 460 | if (is_int8_supported || is_float16_supported) { | 467 | if (is_int8_supported || is_float16_supported) { |
| 461 | float16_int8 = { | 468 | float16_int8 = { |
| @@ -989,9 +996,13 @@ void Device::CheckSuitability(bool requires_swapchain) const { | |||
| 989 | host_query_reset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; | 996 | host_query_reset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; |
| 990 | host_query_reset.pNext = &bit8_storage; | 997 | host_query_reset.pNext = &bit8_storage; |
| 991 | 998 | ||
| 999 | VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters{}; | ||
| 1000 | draw_parameters.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES; | ||
| 1001 | draw_parameters.pNext = &host_query_reset; | ||
| 1002 | |||
| 992 | VkPhysicalDeviceFeatures2 features2{}; | 1003 | VkPhysicalDeviceFeatures2 features2{}; |
| 993 | features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; | 1004 | features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; |
| 994 | features2.pNext = &host_query_reset; | 1005 | features2.pNext = &draw_parameters; |
| 995 | 1006 | ||
| 996 | physical.GetFeatures2(features2); | 1007 | physical.GetFeatures2(features2); |
| 997 | 1008 | ||
| @@ -1034,6 +1045,7 @@ void Device::CheckSuitability(bool requires_swapchain) const { | |||
| 1034 | std::make_pair(bit8_storage.uniformAndStorageBuffer8BitAccess, | 1045 | std::make_pair(bit8_storage.uniformAndStorageBuffer8BitAccess, |
| 1035 | "uniformAndStorageBuffer8BitAccess"), | 1046 | "uniformAndStorageBuffer8BitAccess"), |
| 1036 | std::make_pair(host_query_reset.hostQueryReset, "hostQueryReset"), | 1047 | std::make_pair(host_query_reset.hostQueryReset, "hostQueryReset"), |
| 1048 | std::make_pair(draw_parameters.shaderDrawParameters, "shaderDrawParameters"), | ||
| 1037 | }; | 1049 | }; |
| 1038 | 1050 | ||
| 1039 | bool has_all_required_features = true; | 1051 | bool has_all_required_features = true; |