diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 342ade42a54..71f97403343 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -2034,6 +2034,8 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf, !(rt_read & rt_written) && !alpha_to_coverage && !cmdbuf->state.gfx.cb.info.any_dest_read; + cfg.allow_forward_pixel_to_be_killed = !fs->info.writes_global; + bool writes_zs = writes_z || writes_s; bool zs_always_passes = ds_test_always_passes(cmdbuf); bool oq = cmdbuf->state.gfx.occlusion_query.mode != diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index c0f477fda64..9b8ccb0c431 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -323,6 +323,11 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf, pan_earlyzs_get(fs->fs.earlyzs_lut, writes_zs || oq, alpha_to_coverage, zs_always_passes, zs_read); + /* early ZS check for FPK is performed by HW on v7+ */ + cfg.properties.allow_forward_pixel_to_be_killed = + !fs->info.writes_global && + ((PAN_ARCH > 6) || earlyzs.kill != MALI_PIXEL_KILL_FORCE_LATE); + cfg.properties.pixel_kill_operation = earlyzs.kill; cfg.properties.zs_update_operation = earlyzs.update; cfg.multisample_misc.evaluate_per_sample =