vkd3d: Enable NV_device_generated_commands extension.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2021-11-23 13:32:51 +01:00
parent 93b62dad2c
commit f3ea074fe3
3 changed files with 20 additions and 0 deletions

View File

@ -114,6 +114,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] =
VK_EXTENSION(NVX_IMAGE_VIEW_HANDLE, NVX_image_view_handle), VK_EXTENSION(NVX_IMAGE_VIEW_HANDLE, NVX_image_view_handle),
VK_EXTENSION(NV_FRAGMENT_SHADER_BARYCENTRIC, NV_fragment_shader_barycentric), VK_EXTENSION(NV_FRAGMENT_SHADER_BARYCENTRIC, NV_fragment_shader_barycentric),
VK_EXTENSION(NV_COMPUTE_SHADER_DERIVATIVES, NV_compute_shader_derivatives), VK_EXTENSION(NV_COMPUTE_SHADER_DERIVATIVES, NV_compute_shader_derivatives),
VK_EXTENSION(NV_DEVICE_GENERATED_COMMANDS, NV_device_generated_commands),
/* VALVE extensions */ /* VALVE extensions */
VK_EXTENSION(VALVE_MUTABLE_DESCRIPTOR_TYPE, VALVE_mutable_descriptor_type), VK_EXTENSION(VALVE_MUTABLE_DESCRIPTOR_TYPE, VALVE_mutable_descriptor_type),
}; };
@ -1336,6 +1337,16 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
vk_prepend_struct(&info->features2, &info->compute_shader_derivatives_features_nv); vk_prepend_struct(&info->features2, &info->compute_shader_derivatives_features_nv);
} }
if (vulkan_info->NV_device_generated_commands)
{
info->device_generated_commands_features_nv.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
info->device_generated_commands_properties_nv.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
vk_prepend_struct(&info->features2, &info->device_generated_commands_features_nv);
vk_prepend_struct(&info->properties2, &info->device_generated_commands_properties_nv);
}
if (vulkan_info->KHR_shader_atomic_int64) if (vulkan_info->KHR_shader_atomic_int64)
{ {
info->shader_atomic_int64_features.sType = info->shader_atomic_int64_features.sType =

View File

@ -162,6 +162,7 @@ struct vkd3d_vulkan_info
bool NVX_image_view_handle; bool NVX_image_view_handle;
bool NV_fragment_shader_barycentric; bool NV_fragment_shader_barycentric;
bool NV_compute_shader_derivatives; bool NV_compute_shader_derivatives;
bool NV_device_generated_commands;
/* VALVE extensions */ /* VALVE extensions */
bool VALVE_mutable_descriptor_type; bool VALVE_mutable_descriptor_type;
@ -2776,6 +2777,7 @@ struct vkd3d_physical_device_info
VkPhysicalDeviceFragmentShadingRatePropertiesKHR fragment_shading_rate_properties; VkPhysicalDeviceFragmentShadingRatePropertiesKHR fragment_shading_rate_properties;
VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservative_rasterization_properties; VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservative_rasterization_properties;
VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR shader_integer_dot_product_properties; VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR shader_integer_dot_product_properties;
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV device_generated_commands_properties_nv;
VkPhysicalDeviceProperties2KHR properties2; VkPhysicalDeviceProperties2KHR properties2;
@ -2812,6 +2814,7 @@ struct vkd3d_physical_device_info
VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT shader_image_atomic_int64_features; VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT shader_image_atomic_int64_features;
VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalar_block_layout_features; VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalar_block_layout_features;
VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod_features; VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod_features;
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV device_generated_commands_features_nv;
VkPhysicalDeviceFeatures2 features2; VkPhysicalDeviceFeatures2 features2;

View File

@ -293,6 +293,12 @@ VK_DEVICE_EXT_PFN(vkCmdCuLaunchKernelNVX)
VK_DEVICE_EXT_PFN(vkGetImageViewHandleNVX) VK_DEVICE_EXT_PFN(vkGetImageViewHandleNVX)
VK_DEVICE_EXT_PFN(vkGetImageViewAddressNVX) VK_DEVICE_EXT_PFN(vkGetImageViewAddressNVX)
/* VK_NV_device_generated_commands */
VK_DEVICE_EXT_PFN(vkCreateIndirectCommandsLayoutNV)
VK_DEVICE_EXT_PFN(vkDestroyIndirectCommandsLayoutNV)
VK_DEVICE_EXT_PFN(vkGetGeneratedCommandsMemoryRequirementsNV)
VK_DEVICE_EXT_PFN(vkCmdExecuteGeneratedCommandsNV)
#undef VK_INSTANCE_PFN #undef VK_INSTANCE_PFN
#undef VK_INSTANCE_EXT_PFN #undef VK_INSTANCE_EXT_PFN
#undef VK_DEVICE_PFN #undef VK_DEVICE_PFN