From fd2d3992ce51db9d6c0e827f6bf0576687bdc11b Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Wed, 6 May 2026 13:44:08 +0200 Subject: [PATCH] panvk: Apply sample mask in single-sample mode Per Vulkan spec, the pipeline sample mask applies to all rasterization sample counts, including single-sample. Drop the msaa-conditional clamp that forced the sample mask to UINT16_MAX when rasterizationSamples == 1 and just use vk_dynamic_graphics_state's value directly. The default when no static pSampleMask is provided is already all-ones, so existing behaviour is preserved for pipelines that don't set the mask. Signed-off-by: Christian Gmeiner Reviewed-by: Lars-Ivar Hesselberg Simonsen Part-of: --- src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c | 2 +- src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 653e9c456dd..794da0f16d7 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -2033,7 +2033,7 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf, if (dcd1_dirty) { struct mali_dcd_flags_1_packed dcd1; pan_pack(&dcd1, DCD_FLAGS_1, cfg) { - cfg.sample_mask = msaa ? dyns->ms.sample_mask : UINT16_MAX; + cfg.sample_mask = dyns->ms.sample_mask; cfg.render_target_mask = rt_written; } diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index 22abb454d4e..0b532d1ea58 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -331,8 +331,7 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf, } cfg.multisample_misc.multisample_enable = msaa; - cfg.multisample_misc.sample_mask = - msaa ? dyns->ms.sample_mask : UINT16_MAX; + cfg.multisample_misc.sample_mask = dyns->ms.sample_mask; cfg.multisample_misc.depth_function = test_z ? translate_compare_func(ds->depth.compare_op)