From 117283cdf899906049e7c1f9101db355e02d8d08 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Thu, 24 Oct 2024 14:19:01 +0200 Subject: [PATCH] panvk/jm: respect depth-clip state Reviewed-by: Boris Brezillon Reviewed-by: Lars-Ivar Hesselberg Simonsen Part-of: --- src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index e29a9c32fbf..53c3738edcb 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -319,6 +319,7 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf, bool dirty = is_dirty(cmdbuf, RS_RASTERIZER_DISCARD_ENABLE) || is_dirty(cmdbuf, RS_DEPTH_CLAMP_ENABLE) || + is_dirty(cmdbuf, RS_DEPTH_CLIP_ENABLE) || is_dirty(cmdbuf, RS_DEPTH_BIAS_ENABLE) || is_dirty(cmdbuf, RS_DEPTH_BIAS_FACTORS) || is_dirty(cmdbuf, CB_LOGIC_OP_ENABLE) || is_dirty(cmdbuf, CB_LOGIC_OP) || @@ -435,8 +436,10 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf, cfg.multisample_misc.depth_write_mask = writes_z; cfg.multisample_misc.fixed_function_near_discard = + cfg.multisample_misc.fixed_function_far_discard = + vk_rasterization_state_depth_clip_enable(rs); + cfg.multisample_misc.fixed_function_depth_range_fixed = !rs->depth_clamp_enable; - cfg.multisample_misc.fixed_function_far_discard = !rs->depth_clamp_enable; cfg.multisample_misc.shader_depth_range_fixed = true; cfg.stencil_mask_misc.stencil_enable = test_s; @@ -919,8 +922,10 @@ panvk_emit_tiler_primitive(struct panvk_cmd_buffer *cmdbuf, const struct panvk_draw_info *draw, void *prim) { const struct panvk_shader *vs = cmdbuf->state.gfx.vs.shader; - const struct vk_input_assembly_state *ia = - &cmdbuf->vk.dynamic_graphics_state.ia; + const struct vk_dynamic_graphics_state *dyns = + &cmdbuf->vk.dynamic_graphics_state; + const struct vk_input_assembly_state *ia = &dyns->ia; + const struct vk_rasterization_state *rs = &dyns->rs; bool writes_point_size = vs->info.vs.writes_point_size && ia->primitive_topology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST; @@ -959,6 +964,9 @@ panvk_emit_tiler_primitive(struct panvk_cmd_buffer *cmdbuf, cfg.index_type = MALI_INDEX_TYPE_NONE; } + cfg.low_depth_cull = cfg.high_depth_cull = + vk_rasterization_state_depth_clip_enable(rs); + cfg.secondary_shader = secondary_shader; } }