v3dv: expose VK_EXT_depth_clip_enable

We already had the logic implemented, but it was never really tested
(there was a comment about that)

So the advantage of this is that we now test that code (in fact, there
were a small typo on that code).

There aren't too much CTS tests for this feature, but we gets tests
like this working:
dEQP-VK.clipping.clip_volume.depth_clip.*

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10527

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27386>
This commit is contained in:
Alejandro Piñeiro
2024-01-31 11:31:02 +01:00
committed by Marge Bot
parent 03371887d5
commit 16f6f50ce4
3 changed files with 6 additions and 6 deletions

View File

@@ -565,7 +565,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, pvr, radv, tu, v3dv)
VK_EXT_depth_bias_control DONE (anv, nvk, radv)
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_depth_range_unrestricted DONE (anv/gen20+, radv, lvp)
VK_EXT_descriptor_buffer DONE (lvp, radv, tu)
VK_EXT_device_fault DONE (radv)

View File

@@ -188,6 +188,7 @@ get_device_extensions(const struct v3dv_physical_device *device,
.EXT_color_write_enable = true,
.EXT_custom_border_color = true,
.EXT_depth_clip_control = true,
.EXT_depth_clip_enable = device->devinfo.ver >= 71,
.EXT_load_store_op_none = true,
.EXT_inline_uniform_block = true,
.EXT_external_memory_dma_buf = true,
@@ -429,6 +430,9 @@ get_features(const struct v3dv_physical_device *physical_device,
/* VK_EXT_depth_clip_control */
.depthClipControl = true,
/* VK_EXT_depth_clip_enable */
.depthClipEnable = physical_device->devinfo.ver >= 71,
/* VK_EXT_attachment_feedback_loop_layout */
.attachmentFeedbackLoopLayout = true,

View File

@@ -238,15 +238,11 @@ pack_cfg_bits(struct v3dv_pipeline *pipeline,
* the z planes of the frustrum as described in Primitive Clipping.
* Otherwise depth clipping is controlled by the state set in
* VkPipelineRasterizationDepthClipStateCreateInfoEXT."
*
* Note: neither depth clamping nor VK_EXT_depth_clip_enable are actually
* supported in the driver yet, so in practice we are always enabling Z
* clipping for now.
*/
bool z_clamp_enable = rs_info && rs_info->depthClampEnable;
bool z_clip_enable = false;
const VkPipelineRasterizationDepthClipStateCreateInfoEXT *clip_info =
ds_info ? vk_find_struct_const(ds_info->pNext,
rs_info ? vk_find_struct_const(rs_info->pNext,
PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT) :
NULL;
if (clip_info)