Module: Mesa
Branch: main
Commit: 1c11f1afbd4759aac8142dbfb1fb30fdd83e5a33
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c11f1afbd4759aac8142dbfb1fb30fdd83e5a33

Author: Simon Perretta <[email protected]>
Date:   Sat Feb 11 22:44:56 2023 +0000

pvr: Add support for fitr.pixel

Signed-off-by: Simon Perretta <[email protected]>
Acked-by: Frank Binns <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21474>

---

 src/imagination/rogue/passes/rogue_schedule_instr_groups.c |  1 +
 src/imagination/rogue/rogue.h                              |  2 +-
 src/imagination/rogue/rogue_backend_instrs.def             |  1 +
 src/imagination/rogue/rogue_encode.c                       | 12 ++++++++++++
 src/imagination/rogue/rogue_info.c                         | 13 +++++++++++++
 5 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c 
b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c
index 26cccebe892..1a03e5a8ada 100644
--- a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c
+++ b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c
@@ -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;
diff --git a/src/imagination/rogue/rogue.h b/src/imagination/rogue/rogue.h
index e0262ab80f7..07d2c979feb 100644
--- a/src/imagination/rogue/rogue.h
+++ b/src/imagination/rogue/rogue.h
@@ -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,
diff --git a/src/imagination/rogue/rogue_backend_instrs.def 
b/src/imagination/rogue/rogue_backend_instrs.def
index 0806d487847..ea9c19715c0 100644
--- a/src/imagination/rogue/rogue_backend_instrs.def
+++ b/src/imagination/rogue/rogue_backend_instrs.def
@@ -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)
 
diff --git a/src/imagination/rogue/rogue_encode.c 
b/src/imagination/rogue/rogue_encode.c
index eeb9791ebfc..aa44a31adeb 100644
--- a/src/imagination/rogue/rogue_encode.c
+++ b/src/imagination/rogue/rogue_encode.c
@@ -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;
diff --git a/src/imagination/rogue/rogue_info.c 
b/src/imagination/rogue/rogue_info.c
index ad4157dce11..afe8180d1ae 100644
--- a/src/imagination/rogue/rogue_info.c
+++ b/src/imagination/rogue/rogue_info.c
@@ -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), },

Reply via email to