pvr: Amend definitions for ST and IDF

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-22 14:00:11 +00:00
committed by Marge Bot
parent 66500c28d2
commit 6122dd5488
5 changed files with 70 additions and 13 deletions

View File

@@ -53,6 +53,10 @@
#define ROGUE_BUILDER_DEFINE_BACKEND14(...)
#endif /* ROGUE_BUILDER_DEFINE_BACKEND14 */
#ifndef ROGUE_BUILDER_DEFINE_BACKEND06
#define ROGUE_BUILDER_DEFINE_BACKEND06(...)
#endif /* ROGUE_BUILDER_DEFINE_BACKEND06 */
#ifndef ROGUE_BUILDER_DEFINE_BACKEND16
#define ROGUE_BUILDER_DEFINE_BACKEND16(...)
#endif /* ROGUE_BUILDER_DEFINE_BACKEND16 */
@@ -62,21 +66,24 @@ ROGUE_BUILDER_DEFINE_BACKEND00(UVSW_ENDTASK)
ROGUE_BUILDER_DEFINE_BACKEND00(UVSW_EMITTHENENDTASK)
ROGUE_BUILDER_DEFINE_BACKEND02(EMITPIX)
ROGUE_BUILDER_DEFINE_BACKEND02(IDF)
ROGUE_BUILDER_DEFINE_BACKEND11(UVSW_WRITE)
ROGUE_BUILDER_DEFINE_BACKEND11(UVSW_WRITETHENEMITTHENENDTASK)
ROGUE_BUILDER_DEFINE_BACKEND11(IDF)
ROGUE_BUILDER_DEFINE_BACKEND13(LD)
ROGUE_BUILDER_DEFINE_BACKEND13(FITR_PIXEL)
ROGUE_BUILDER_DEFINE_BACKEND14(FITRP_PIXEL)
ROGUE_BUILDER_DEFINE_BACKEND06(ST)
ROGUE_BUILDER_DEFINE_BACKEND16(SMP1D)
ROGUE_BUILDER_DEFINE_BACKEND16(SMP2D)
ROGUE_BUILDER_DEFINE_BACKEND16(SMP3D)
#undef ROGUE_BUILDER_DEFINE_BACKEND16
#undef ROGUE_BUILDER_DEFINE_BACKEND06
#undef ROGUE_BUILDER_DEFINE_BACKEND14
#undef ROGUE_BUILDER_DEFINE_BACKEND13
#undef ROGUE_BUILDER_DEFINE_BACKEND11

View File

@@ -320,6 +320,20 @@ rogue_build_backend14(rogue_builder *b,
return rogue_build_backend(b, op, 1, dsts, 4, srcs);
}
static inline rogue_backend_instr *
rogue_build_backend06(rogue_builder *b,
enum rogue_backend_op op,
rogue_ref src0,
rogue_ref src1,
rogue_ref src2,
rogue_ref src3,
rogue_ref src4,
rogue_ref src5)
{
rogue_ref srcs[] = { src0, src1, src2, src3, src4, src5 };
return rogue_build_backend(b, op, 0, NULL, 6, srcs);
}
static inline rogue_backend_instr *
rogue_build_backend16(rogue_builder *b,
enum rogue_backend_op op,
@@ -405,6 +419,28 @@ rogue_build_backend16(rogue_builder *b,
src3); \
}
#define ROGUE_BUILDER_DEFINE_BACKEND06(op) \
PUBLIC \
rogue_backend_instr *rogue_##op(rogue_builder *b, \
rogue_ref src0, \
rogue_ref src1, \
rogue_ref src2, \
rogue_ref src3, \
rogue_ref src4, \
rogue_ref src5) \
{ \
assert(rogue_backend_op_infos[ROGUE_BACKEND_OP_##op].num_dsts == 0); \
assert(rogue_backend_op_infos[ROGUE_BACKEND_OP_##op].num_srcs == 6); \
return rogue_build_backend06(b, \
ROGUE_BACKEND_OP_##op, \
src0, \
src1, \
src2, \
src3, \
src4, \
src5); \
}
#define ROGUE_BUILDER_DEFINE_BACKEND16(op) \
PUBLIC \
rogue_backend_instr *rogue_##op(rogue_builder *b, \

View File

@@ -166,6 +166,15 @@ static inline rogue_block *rogue_push_block(rogue_builder *b)
rogue_ref src2, \
rogue_ref src3);
#define ROGUE_BUILDER_DEFINE_BACKEND06(op) \
rogue_backend_instr *rogue_##op(rogue_builder *b, \
rogue_ref src0, \
rogue_ref src1, \
rogue_ref src2, \
rogue_ref src3, \
rogue_ref src4, \
rogue_ref src5);
#define ROGUE_BUILDER_DEFINE_BACKEND16(op) \
rogue_backend_instr *rogue_##op(rogue_builder *b, \
rogue_ref dst0, \

View File

@@ -597,7 +597,7 @@ static void rogue_encode_backend_instr(const rogue_backend_instr *backend,
instr_encoding->backend.op = BACKENDOP_DMA;
instr_encoding->backend.dma.dmaop = DMAOP_ST;
instr_encoding->backend.dma.st.drc =
rogue_ref_get_drc_index(&backend->src[1].ref);
rogue_ref_get_drc_index(&backend->src[2].ref);
bool imm_burstlen = rogue_ref_is_val(&backend->src[3].ref);
@@ -752,9 +752,9 @@ static void rogue_encode_backend_instr(const rogue_backend_instr *backend,
instr_encoding->backend.op = BACKENDOP_DMA;
instr_encoding->backend.dma.dmaop = DMAOP_IDF;
instr_encoding->backend.dma.idf.drc =
rogue_ref_get_drc_index(&backend->dst[0].ref);
rogue_ref_get_drc_index(&backend->src[0].ref);
instr_encoding->backend.dma.idf.srcseladd =
rogue_ref_get_io_src_index(&backend->src[0].ref);
rogue_ref_get_io_src_index(&backend->src[1].ref);
break;
case ROGUE_BACKEND_OP_EMITPIX:

View File

@@ -294,10 +294,12 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
.supported_dst_types = { [0] = T(REG), },
.supported_src_types = { [0] = T(REG), },
},
[ROGUE_BACKEND_OP_IDF] = { .str = "idf", .num_dsts = 1, .num_srcs = 1,
.phase_io = { .src[0] = IO(S0), },
.supported_dst_types = { [0] = T(DRC), },
.supported_src_types = { [0] = T(REG), },
[ROGUE_BACKEND_OP_IDF] = { .str = "idf", .num_srcs = 2,
.phase_io = { .src[1] = IO(S0), },
.supported_src_types = { [0] = T(DRC), [1] = T(REGARRAY), },
.src_stride = {
[1] = 1,
},
},
[ROGUE_BACKEND_OP_EMITPIX] = { .str = "emitpix", .num_srcs = 2,
@@ -322,9 +324,9 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[2] = 1,
},
},
/* .src[0] and .src[3] can actually be S0-5. */
/* .src[0] and .src[4] can actually be S0-5. */
[ROGUE_BACKEND_OP_ST] = { .str = "st", .num_srcs = 6,
.phase_io = { .src[0] = IO(S3), .src[3] = IO(S0), },
.phase_io = { .src[0] = IO(S3), .src[4] = IO(S0), },
.supported_op_mods = OM(TILED) | OM(WRITETHROUGH) | OM(WRITEBACK) | OM(LAZYWRITEBACK) |
OM(SLCBYPASS) | OM(SLCWRITEBACK) | OM(SLCWRITETHROUGH) | OM(SLCNOALLOC),
.supported_src_types = {
@@ -384,7 +386,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = T(REGARRAY),
[2] = T(REG) | T(REGARRAY),
[3] = T(REGARRAY),
[4] = T(REG) | T(IO),
[4] = T(REGARRAY) | T(IO),
[5] = T(VAL),
},
/* TODO: This may depend on the other options set. */
@@ -392,6 +394,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = 3,
[2] = ~0U,
[3] = 3,
[4] = 1,
},
.dst_stride = {
[0] = ~0U,
@@ -411,7 +414,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = T(REGARRAY),
[2] = T(REG) | T(REGARRAY),
[3] = T(REGARRAY),
[4] = T(REG) | T(IO),
[4] = T(REGARRAY) | T(IO),
[5] = T(VAL),
},
/* TODO: This may depend on the other options set. */
@@ -419,6 +422,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = 3,
[2] = ~0U,
[3] = 3,
[4] = 1,
},
.dst_stride = {
[0] = ~0U,
@@ -438,7 +442,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = T(REGARRAY),
[2] = T(REG) | T(REGARRAY),
[3] = T(REGARRAY),
[4] = T(REG) | T(IO),
[4] = T(REGARRAY) | T(IO),
[5] = T(VAL),
},
/* TODO: This may depend on the other options set. */
@@ -446,6 +450,7 @@ const rogue_backend_op_info rogue_backend_op_infos[ROGUE_BACKEND_OP_COUNT] = {
[1] = 3,
[2] = ~0U,
[3] = 3,
[4] = 1,
},
.dst_stride = {
[0] = ~0U,