pvr: Add support for fitr.pixel

Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21474>
This commit is contained in:
Simon Perretta 2023-02-11 22:44:56 +00:00 committed by Marge Bot
parent 0ce53b002f
commit 1c11f1afbd
5 changed files with 28 additions and 1 deletions

View file

@ -566,6 +566,7 @@ static void rogue_calc_backend_instrs_size(rogue_instr_group *group,
enum rogue_instr_phase phase)
{
switch (backend->op) {
case ROGUE_BACKEND_OP_FITR_PIXEL:
case ROGUE_BACKEND_OP_FITRP_PIXEL:
group->size.instrs[phase] = 2;
break;

View file

@ -1336,7 +1336,7 @@ enum rogue_backend_op {
ROGUE_BACKEND_OP_LD,
/* ROGUE_BACKEND_OP_FITR, */
ROGUE_BACKEND_OP_FITR_PIXEL,
/* ROGUE_BACKEND_OP_SAMPLE, */
/* ROGUE_BACKEND_OP_CENTROID, */
ROGUE_BACKEND_OP_FITRP_PIXEL,

View file

@ -57,6 +57,7 @@ ROGUE_BUILDER_DEFINE_BACKEND11(UVSW_WRITE)
ROGUE_BUILDER_DEFINE_BACKEND11(UVSW_WRITETHENEMITTHENENDTASK)
ROGUE_BUILDER_DEFINE_BACKEND13(LD)
ROGUE_BUILDER_DEFINE_BACKEND13(FITR_PIXEL)
ROGUE_BUILDER_DEFINE_BACKEND14(FITRP_PIXEL)

View file

@ -295,6 +295,18 @@ static void rogue_encode_backend_instr(const rogue_backend_instr *backend,
rogue_instr_encoding *instr_encoding)
{
switch (backend->op) {
case ROGUE_BACKEND_OP_FITR_PIXEL:
instr_encoding->backend.op = BACKENDOP_FITR;
instr_encoding->backend.fitr.p = 0;
instr_encoding->backend.fitr.drc =
rogue_ref_get_drc_index(&backend->src[0].ref);
instr_encoding->backend.fitr.mode = FITR_MODE_PIXEL;
instr_encoding->backend.fitr.sat =
rogue_backend_op_mod_is_set(backend, OM(SAT));
instr_encoding->backend.fitr.count =
rogue_ref_get_val(&backend->src[2].ref);
break;
case ROGUE_BACKEND_OP_FITRP_PIXEL:
instr_encoding->backend.op = BACKENDOP_FITR;
instr_encoding->backend.fitr.p = 1;

View file

@ -272,6 +272,19 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
.src_stride = {
[2] = 1,
},
},
[ROGUE_BACKEND_OP_FITR_PIXEL] = { .str = "fitr.pixel", .num_dsts = 1, .num_srcs = 3,
.phase_io = { .dst[0] = IO(S3), .src[1] = IO(S0), },
.supported_op_mods = OM(SAT),
.supported_dst_types = { [0] = T(REG) | T(REGARRAY), },
.supported_src_types = {
[0] = T(DRC),
[1] = T(REGARRAY),
[2] = T(VAL),
},
.src_stride = {
[1] = 3,
},
},
[ROGUE_BACKEND_OP_FITRP_PIXEL] = { .str = "fitrp.pixel", .num_dsts = 1, .num_srcs = 4,
.phase_io = { .dst[0] = IO(S3), .src[1] = IO(S0), .src[2] = IO(S2), },