vkd3d: Implement DXGI_FORMAT_B4G4R4A4_UNORM

Uses VK_EXT_4444_formats.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
Joshua Ashton 2021-02-04 09:23:46 +00:00 committed by Hans-Kristian Arntzen
parent 00872471eb
commit 51bf939743
3 changed files with 12 additions and 0 deletions

View File

@ -107,6 +107,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] =
VK_EXTENSION(EXT_VERTEX_ATTRIBUTE_DIVISOR, EXT_vertex_attribute_divisor),
VK_EXTENSION(EXT_EXTENDED_DYNAMIC_STATE, EXT_extended_dynamic_state),
VK_EXTENSION(EXT_EXTERNAL_MEMORY_HOST, EXT_external_memory_host),
VK_EXTENSION(EXT_4444_FORMATS, EXT_4444_formats),
/* AMD extensions */
VK_EXTENSION(AMD_BUFFER_MARKER, AMD_buffer_marker),
VK_EXTENSION(AMD_SHADER_CORE_PROPERTIES, AMD_shader_core_properties),
@ -811,6 +812,7 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE *mutable_features;
VkPhysicalDeviceShaderFloat16Int8FeaturesKHR *float16_int8_features;
VkPhysicalDeviceShaderCoreProperties2AMD *shader_core_properties2;
VkPhysicalDevice4444FormatsFeaturesEXT *ext_4444_formats_features;
VkPhysicalDeviceDepthClipEnableFeaturesEXT *depth_clip_features;
VkPhysicalDeviceRobustness2PropertiesEXT *robustness2_properties;
VkPhysicalDeviceShaderCorePropertiesAMD *shader_core_properties;
@ -861,6 +863,7 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
ray_tracing_pipeline_properties = &info->ray_tracing_pipeline_properties;
ray_tracing_pipeline_features = &info->ray_tracing_pipeline_features;
float_control_properties = &info->float_control_properties;
ext_4444_formats_features = &info->ext_4444_formats_features;
info->features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
info->properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
@ -1005,6 +1008,12 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
vk_prepend_struct(&info->properties2, external_memory_host_properties);
}
if (vulkan_info->EXT_4444_formats)
{
ext_4444_formats_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
vk_prepend_struct(&info->features2, ext_4444_formats_features);
}
if (vulkan_info->AMD_shader_core_properties)
{
shader_core_properties->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;

View File

@ -118,6 +118,7 @@ static const struct vkd3d_format vkd3d_formats[] =
{DXGI_FORMAT_BC7_TYPELESS, VK_FORMAT_BC7_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC7_UNORM, VK_FORMAT_BC7_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC7_UNORM_SRGB, VK_FORMAT_BC7_SRGB_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_B4G4R4A4_UNORM, VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT,2, 1, 1, 1, COLOR, 1},
};
/* Each depth/stencil format is only compatible with itself in Vulkan. */

View File

@ -136,6 +136,7 @@ struct vkd3d_vulkan_info
bool EXT_vertex_attribute_divisor;
bool EXT_extended_dynamic_state;
bool EXT_external_memory_host;
bool EXT_4444_formats;
/* AMD device extensions */
bool AMD_buffer_marker;
bool AMD_shader_core_properties;
@ -2073,6 +2074,7 @@ struct vkd3d_physical_device_info
VkPhysicalDeviceTransformFeedbackFeaturesEXT xfb_features;
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT vertex_divisor_features;
VkPhysicalDeviceCustomBorderColorFeaturesEXT custom_border_color_features;
VkPhysicalDevice4444FormatsFeaturesEXT ext_4444_formats_features;
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR timeline_semaphore_features;
VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8_features;
VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR subgroup_extended_types_features;