summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp14
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
};
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;