vulkan: Enable depth bounds and use it conditionally

Intel devices pre-Xe don't support this.
This commit is contained in:
ReinUsesLisp 2021-05-30 20:43:47 -03:00 committed by ameerj
parent c44b16124f
commit 77372443c3
4 changed files with 17 additions and 2 deletions

View file

@ -226,7 +226,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
.depthClamp = true,
.depthBiasClamp = true,
.fillModeNonSolid = true,
.depthBounds = false,
.depthBounds = is_depth_bounds_supported,
.wideLines = false,
.largePoints = true,
.alphaToOne = false,
@ -908,6 +908,7 @@ void Device::SetupFamilies(VkSurfaceKHR surface) {
void Device::SetupFeatures() {
const VkPhysicalDeviceFeatures features{physical.GetFeatures()};
is_depth_bounds_supported = features.depthBounds;
is_formatless_image_load_supported = features.shaderStorageImageReadWithoutFormat;
is_shader_float64_supported = features.shaderFloat64;
is_shader_int64_supported = features.shaderInt64;

View file

@ -159,6 +159,11 @@ public:
return is_formatless_image_load_supported;
}
// Returns true if depth bounds is supported.
bool IsDepthBoundsSupported() const {
return is_depth_bounds_supported;
}
/// Returns true when blitting from and to depth stencil images is supported.
bool IsBlitDepthStencilSupported() const {
return is_blit_depth_stencil_supported;
@ -314,6 +319,7 @@ private:
bool is_float16_supported{}; ///< Support for float16 arithmetics.
bool is_warp_potentially_bigger{}; ///< Host warp size can be bigger than guest.
bool is_formatless_image_load_supported{}; ///< Support for shader image read without format.
bool is_depth_bounds_supported{}; ///< Support for depth bounds.
bool is_shader_float64_supported{}; ///< Support for float64.
bool is_shader_int64_supported{}; ///< Support for int64.
bool is_shader_storage_image_multisample{}; ///< Support for image operations on MSAA images.