From 3dff0c30cf8519e1813ac299e7a71e3a5cc67116 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 31 May 2021 13:24:04 -0700 Subject: [PATCH] freedreno/headergen2: Fix compile warnings with CP_DRAW_INDIRECT_MULTI Using stripes to deal with the different packet layout variants resulted in redefining "register" offsets with different values, so use "prefix" to add a suffix to disambiguate. drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h:1066: warning: "REG_A6XX_CP_DRAW_INDIRECT_MULTI_INDIRECT" redefined 1066 | #define REG_A6XX_CP_DRAW_INDIRECT_MULTI_INDIRECT 0x00000006 | drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h:1057: note: this is the location of the previous definition 1057 | #define REG_A6XX_CP_DRAW_INDIRECT_MULTI_INDIRECT 0x00000003 | (Admittedly it isn't really a "prefix" but that was the field in the schema available to use, and REG_INDEXED_CP_DRAW_INDIRECT_MULTI_STRIDE sounds somewhat more funny.) Signed-off-by: Rob Clark Part-of: --- src/freedreno/registers/adreno/adreno_pm4.xml | 6 +++--- src/freedreno/rnn/headergen2.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/freedreno/registers/adreno/adreno_pm4.xml b/src/freedreno/registers/adreno/adreno_pm4.xml index c25bff4854d..95700551b84 100644 --- a/src/freedreno/registers/adreno/adreno_pm4.xml +++ b/src/freedreno/registers/adreno/adreno_pm4.xml @@ -831,18 +831,18 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords) - + - + - + diff --git a/src/freedreno/rnn/headergen2.c b/src/freedreno/rnn/headergen2.c index 478dde3e6c2..f1deb3856ce 100644 --- a/src/freedreno/rnn/headergen2.c +++ b/src/freedreno/rnn/headergen2.c @@ -231,7 +231,7 @@ static void printbitfield (struct rnnbitfield *bf, int shift) { printtypeinfo (&bf->typeinfo, bf, bf->fullname, bf->file); } -static void printdelem (struct rnndelem *elem, uint64_t offset) { +static void printdelem (struct rnndelem *elem, uint64_t offset, const char *str) { int use_offset_fxn; char *offsetfn = NULL; @@ -251,7 +251,11 @@ static void printdelem (struct rnndelem *elem, uint64_t offset) { if (elem->name) { char *regname; - asprintf(®name, "REG_%s", elem->fullname); + if (str) { + asprintf(®name, "REG_%s_%s", elem->fullname, str); + } else { + asprintf(®name, "REG_%s", elem->fullname); + } if (elemsnum) { int len; FILE *dst = findfout(elem->file); @@ -333,7 +337,7 @@ static void printdelem (struct rnndelem *elem, uint64_t offset) { fprintf (findfout(elem->file), "\n"); int j; for (j = 0; j < elem->subelemsnum; j++) { - printdelem(elem->subelems[j], offset + elem->offset); + printdelem(elem->subelems[j], offset + elem->offset, elem->varinfo.prefixstr); } if (elem->length != 1) { elemsnum--; @@ -492,7 +496,7 @@ int main(int argc, char **argv) { printdef (db->domains[i]->fullname, "SIZE", 0, db->domains[i]->size, db->domains[i]->file); int j; for (j = 0; j < db->domains[i]->subelemsnum; j++) { - printdelem(db->domains[i]->subelems[j], 0); + printdelem(db->domains[i]->subelems[j], 0, NULL); } } for(i = 0; i < foutsnum; ++i) {