mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-23 23:48:18 +02:00
jay: Implement sample position
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41688>
This commit is contained in:
parent
a590500802
commit
0f3a311591
1 changed files with 20 additions and 0 deletions
|
|
@ -65,6 +65,7 @@ typedef struct jay_fs_payload {
|
|||
} coord;
|
||||
|
||||
jay_def pixel_sample_mask;
|
||||
jay_def sample_pos;
|
||||
jay_def deltas[64];
|
||||
} jay_fs_payload;
|
||||
|
||||
|
|
@ -1206,6 +1207,8 @@ jay_emit_intrinsic(struct nir_to_jay_state *nj, nir_intrinsic_instr *intr)
|
|||
jay_builder *b = &nj->bld;
|
||||
jay_cs_payload *cs =
|
||||
mesa_shader_stage_is_compute(s->stage) ? &nj->payload.cs : NULL;
|
||||
jay_fs_payload *fs =
|
||||
s->stage == MESA_SHADER_FRAGMENT ? &nj->payload.fs : NULL;
|
||||
|
||||
const bool has_dest = nir_intrinsic_infos[intr->intrinsic].has_dest;
|
||||
jay_def dst = has_dest ? nj_def(&intr->def) : jay_null();
|
||||
|
|
@ -1441,6 +1444,19 @@ jay_emit_intrinsic(struct nir_to_jay_state *nj, nir_intrinsic_instr *intr)
|
|||
jay_MOV(b, dst, nj->payload.fs.coord.w);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_sample_pos:
|
||||
case nir_intrinsic_load_sample_pos_or_center:
|
||||
assert(fs);
|
||||
|
||||
jay_foreach_comp(dst, c) {
|
||||
jay_def gpr =
|
||||
jay_GPR_FROM_UGPRS_u32(b, fs->sample_pos, JAY_TYPE_U8, 2, c);
|
||||
jay_MUL(b, JAY_TYPE_F32, jay_extract(dst, c),
|
||||
jay_CVT_f32(b, gpr, JAY_TYPE_U32, JAY_ROUND, 0),
|
||||
jay_imm_f(1 / 16.0f));
|
||||
}
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_urb_output_handle_intel:
|
||||
jay_MOV(b, dst, nj->payload.urb_handle);
|
||||
break;
|
||||
|
|
@ -2586,6 +2602,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_pos_offset) {
|
||||
fs->sample_pos = read_vector_payload(p, UGPR, jay_ugpr_per_grf(nj->s));
|
||||
}
|
||||
|
||||
setup_payload_dispatch_start(nj, p);
|
||||
setup_payload_push(nj, p);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue