jay: Implement coverage mask

This is the actual MSAA coverage mask.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41688>
This commit is contained in:
Kenneth Graunke 2026-05-14 00:13:21 -07:00 committed by Marge Bot
parent 35622f165f
commit 3d91cb9d1e
2 changed files with 11 additions and 6 deletions

View file

@ -64,7 +64,7 @@ typedef struct jay_fs_payload {
jay_def xy, z, w;
} coord;
jay_def pixel_sample_mask;
jay_def coverage_mask;
jay_def sample_pos;
jay_def deltas[64];
} jay_fs_payload;
@ -1327,6 +1327,10 @@ jay_emit_intrinsic(struct nir_to_jay_state *nj, nir_intrinsic_instr *intr)
JAY_TYPE_U32;
break;
case nir_intrinsic_load_coverage_mask_intel:
jay_MOV(b, dst, fs->coverage_mask);
break;
case nir_intrinsic_load_dispatch_mask_intel: {
jay_def mask = jay_extract(nj->payload.u0, 15);
@ -2602,6 +2606,10 @@ setup_fragment_payload(struct nir_to_jay_state *nj, struct payload_builder *p)
fs->coord.w = read_payload(p, GPR);
}
if (nj->s->prog_data->fs.uses_sample_mask) {
fs->coverage_mask = read_payload(p, GPR);
}
if (nj->s->prog_data->fs.uses_pos_offset) {
fs->sample_pos = read_vector_payload(p, UGPR, jay_ugpr_per_grf(nj->s));
}

View file

@ -88,11 +88,8 @@ gather_fs_info(nir_builder *b, nir_intrinsic_instr *intr, void *data)
prog_data->uses_src_w = true;
break;
case nir_intrinsic_load_sample_mask_in:
/* TODO: Sample masks are broken and discards are broken and simd32
* layouts are broken too. XXX.
*/
// prog_data->uses_sample_mask = true;
case nir_intrinsic_load_coverage_mask_intel:
prog_data->uses_sample_mask = true;
break;
case nir_intrinsic_load_pixel_coord_intel: