kk: Support VK_EXT_post_depth_coverage

Requires slightly different declaration of sample mask input.
This commit is contained in:
squidbus 2026-04-29 18:52:40 -07:00 committed by squidbus
parent c339d8df27
commit 2ca51bf625
3 changed files with 14 additions and 3 deletions

View file

@ -671,7 +671,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn)
VK_EXT_physical_device_drm DONE (anv, hasvk, hk, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_EXT_pipeline_library_group_handles DONE (anv, lvp, radv, vn)
VK_EXT_post_depth_coverage DONE (anv/gfx11+, lvp, nvk, radv/gfx10+, tu, vn)
VK_EXT_post_depth_coverage DONE (anv/gfx11+, kk, lvp, nvk, radv/gfx10+, tu, vn)
VK_EXT_present_timing DONE (anv, hk, nvk, radv, tu, panvk)
VK_EXT_primitive_restart_index DONE (lvp, radv)
VK_EXT_primitive_topology_list_restart DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn, nvk)

View file

@ -62,14 +62,24 @@ static const char *sysval_table[SYSTEM_VALUE_MAX] = {
"uint mtl_AmplificationID [[amplification_id]]",
[SYSTEM_VALUE_FIRST_VERTEX] = "uint gl_FirstVertex [[base_vertex]]",
};
static const char *sysval_sample_mask_in_post_depth_coverage =
"uint gl_SampleMask [[sample_mask, post_depth_coverage]]";
static void
emit_sysvals(struct nir_to_msl_ctx *ctx, nir_shader *shader)
{
unsigned i;
BITSET_FOREACH_SET(i, shader->info.system_values_read, SYSTEM_VALUE_MAX) {
assert(sysval_table[i]);
P_IND(ctx, "%s,\n", sysval_table[i]);
const char *sysval;
if (i == SYSTEM_VALUE_SAMPLE_MASK_IN &&
ctx->shader->info.stage == MESA_SHADER_FRAGMENT &&
ctx->shader->info.fs.post_depth_coverage)
sysval = sysval_sample_mask_in_post_depth_coverage;
else
sysval = sysval_table[i];
assert(sysval);
P_IND(ctx, "%s,\n", sysval);
}
}

View file

@ -143,6 +143,7 @@ kk_get_device_extensions(const struct kk_instance *instance,
.EXT_image_2d_view_of_3d = true,
.EXT_load_store_op_none = true,
.EXT_mutable_descriptor_type = true,
.EXT_post_depth_coverage = true,
.EXT_shader_atomic_float = true,
.EXT_shader_replicated_composites = true,