vkd3d: Require VK_KHR_separate_depth_stencil_layouts.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
419790ac77
commit
398724cd6e
|
@ -25,6 +25,7 @@ There are some hard requirements on drivers to be able to implement D3D12 in a r
|
|||
- `VK_KHR_create_renderpass2`
|
||||
- `VK_KHR_sampler_mirror_clamp_to_edge`
|
||||
- `VK_EXT_robustness2`
|
||||
- `VK_KHR_separate_depth_stencil_layouts`
|
||||
|
||||
Some notable extensions that **should** be supported for optimal or correct behavior.
|
||||
These extensions will likely become mandatory later.
|
||||
|
|
|
@ -73,6 +73,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] =
|
|||
VK_EXTENSION(KHR_FRAGMENT_SHADING_RATE, KHR_fragment_shading_rate),
|
||||
VK_EXTENSION(KHR_CREATE_RENDERPASS_2, KHR_create_renderpass2),
|
||||
VK_EXTENSION(KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE, KHR_sampler_mirror_clamp_to_edge),
|
||||
VK_EXTENSION(KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS, KHR_separate_depth_stencil_layouts),
|
||||
/* EXT extensions */
|
||||
VK_EXTENSION(EXT_CALIBRATED_TIMESTAMPS, EXT_calibrated_timestamps),
|
||||
VK_EXTENSION(EXT_CONDITIONAL_RENDERING, EXT_conditional_rendering),
|
||||
|
@ -1159,6 +1160,13 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
|
|||
vk_prepend_struct(&info->features2, &info->fragment_shading_rate_features);
|
||||
}
|
||||
|
||||
if (vulkan_info->KHR_separate_depth_stencil_layouts)
|
||||
{
|
||||
info->separate_depth_stencil_layout_features.sType =
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
|
||||
vk_prepend_struct(&info->features2, &info->separate_depth_stencil_layout_features);
|
||||
}
|
||||
|
||||
/* Core in Vulkan 1.1. */
|
||||
info->shader_draw_parameters_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
|
||||
vk_prepend_struct(&info->features2, &info->shader_draw_parameters_features);
|
||||
|
@ -1704,6 +1712,12 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device,
|
|||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
if (!physical_device_info->separate_depth_stencil_layout_features.separateDepthStencilLayouts)
|
||||
{
|
||||
ERR("separateDepthStencilLayouts is not supported by this implementation. This is required for correct operation.\n");
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
if (!vulkan_info->KHR_sampler_mirror_clamp_to_edge)
|
||||
{
|
||||
ERR("KHR_sampler_mirror_clamp_to_edge is not supported by this implementation. This is required for correct operation.\n");
|
||||
|
|
|
@ -119,6 +119,7 @@ struct vkd3d_vulkan_info
|
|||
bool KHR_fragment_shading_rate;
|
||||
bool KHR_create_renderpass2;
|
||||
bool KHR_sampler_mirror_clamp_to_edge;
|
||||
bool KHR_separate_depth_stencil_layouts;
|
||||
/* EXT device extensions */
|
||||
bool EXT_calibrated_timestamps;
|
||||
bool EXT_conditional_rendering;
|
||||
|
@ -2516,6 +2517,7 @@ struct vkd3d_physical_device_info
|
|||
VkPhysicalDeviceFragmentShadingRateFeaturesKHR fragment_shading_rate_features;
|
||||
VkPhysicalDeviceShaderDrawParametersFeatures shader_draw_parameters_features;
|
||||
VkPhysicalDeviceSubgroupSizeControlFeaturesEXT subgroup_size_control_features;
|
||||
VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR separate_depth_stencil_layout_features;
|
||||
|
||||
VkPhysicalDeviceFeatures2 features2;
|
||||
|
||||
|
|
Loading…
Reference in New Issue