vulkan_common: add feature test for shaderDrawParameters

This commit is contained in:
Liam 2022-12-03 15:47:29 -05:00
parent 18831e0933
commit 157981cac5

View File

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