Browse Source

vulkan_common: add feature test for shaderDrawParameters

Liam 3 years ago
parent
commit
157981cac5
1 changed files with 13 additions and 1 deletions
  1. 13 1
      src/video_core/vulkan_common/vulkan_device.cpp

+ 13 - 1
src/video_core/vulkan_common/vulkan_device.cpp

@@ -456,6 +456,13 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
     };
     SetNext(next, demote);
 
+    VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters{
+        .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES,
+        .pNext = nullptr,
+        .shaderDrawParameters = true,
+    };
+    SetNext(next, draw_parameters);
+
     VkPhysicalDeviceShaderFloat16Int8Features float16_int8;
     if (is_int8_supported || is_float16_supported) {
         float16_int8 = {
@@ -989,9 +996,13 @@ void Device::CheckSuitability(bool requires_swapchain) const {
     host_query_reset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
     host_query_reset.pNext = &bit8_storage;
 
+    VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters{};
+    draw_parameters.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES;
+    draw_parameters.pNext = &host_query_reset;
+
     VkPhysicalDeviceFeatures2 features2{};
     features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
-    features2.pNext = &host_query_reset;
+    features2.pNext = &draw_parameters;
 
     physical.GetFeatures2(features2);
 
@@ -1034,6 +1045,7 @@ void Device::CheckSuitability(bool requires_swapchain) const {
         std::make_pair(bit8_storage.uniformAndStorageBuffer8BitAccess,
                        "uniformAndStorageBuffer8BitAccess"),
         std::make_pair(host_query_reset.hostQueryReset, "hostQueryReset"),
+        std::make_pair(draw_parameters.shaderDrawParameters, "shaderDrawParameters"),
     };
 
     bool has_all_required_features = true;