|
|
|
@ -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;
|
|
|
|
|