vkd3d: Enable 16-bit storage features.

Don't need extension, since VK_KHR_16bit_storage is core in Vulkan 1.1.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2021-03-22 15:16:19 +01:00
parent 4afd4d355b
commit 5197edb03b
2 changed files with 9 additions and 1 deletions

View File

@ -944,6 +944,10 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
vk_prepend_struct(&info->features2, &info->float16_int8_features);
}
/* Core in Vulkan 1.1. */
info->storage_16bit_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
vk_prepend_struct(&info->features2, &info->storage_16bit_features);
if (vulkan_info->KHR_shader_subgroup_extended_types)
{
info->subgroup_extended_types_features.sType =
@ -4750,9 +4754,12 @@ static void d3d12_device_caps_init_shader_model(struct d3d12_device *device)
* FP16, Denorm modes (float controls extension)
*/
if (device->device_info.float16_int8_features.shaderFloat16 &&
device->device_info.subgroup_extended_types_features.shaderSubgroupExtendedTypes)
device->device_info.storage_16bit_features.storageBuffer16BitAccess &&
device->device_info.subgroup_extended_types_features.shaderSubgroupExtendedTypes)
{
/* These features are required by FidelityFX SSSR demo. */
/* Technically we need storageInputOutput16 as well, but
* we can probably work around it on devices which don't support it. */
device->d3d12_caps.max_shader_model = D3D_SHADER_MODEL_6_2;
TRACE("Enabling support for SM 6.2.\n");
}

View File

@ -2428,6 +2428,7 @@ struct vkd3d_physical_device_info
VkPhysicalDevice4444FormatsFeaturesEXT ext_4444_formats_features;
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR timeline_semaphore_features;
VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8_features;
VkPhysicalDevice16BitStorageFeatures storage_16bit_features;
VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR subgroup_extended_types_features;
VkPhysicalDeviceRobustness2FeaturesEXT robustness2_features;
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state_features;