summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Abbott <cwabbott0@gmail.com>2020-07-31 11:41:24 +0200
committerMarge Bot <eric+marge@anholt.net>2020-08-01 17:51:01 +0000
commit73241ca53e8e085b1e953ddb5afaa91c455eb038 (patch)
treee0c460d783f9afecb344e81700b2ae757f0ce7d5
parentb67695d59731c213941c609c0464bc0586e499ef (diff)
freedreno/rnn: Make rnn_decode_enum() respect variants
We'll need this for afuc, and we're currently also open-coding the same thing in rnnutils. It seems this function was added to decode pm4 packet names, but it currently has no users, so make it useful for what it was intended to do. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6140>
-rw-r--r--src/freedreno/rnn/rnndec.c7
-rw-r--r--src/freedreno/rnn/rnndec.h2
2 files changed, 3 insertions, 6 deletions
diff --git a/src/freedreno/rnn/rnndec.c b/src/freedreno/rnn/rnndec.c
index db92de332f6..553c422d054 100644
--- a/src/freedreno/rnn/rnndec.c
+++ b/src/freedreno/rnn/rnndec.c
@@ -137,14 +137,11 @@ static const char *rnndec_decode_enum_val(struct rnndeccontext *ctx,
return NULL;
}
-char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval)
+const char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval)
{
struct rnnenum *en = rnn_findenum (ctx->db, enumname);
if (en) {
- int i;
- for (i = 0; i < en->valsnum; i++)
- if (en->vals[i]->valvalid && en->vals[i]->value == enumval)
- return en->vals[i]->name;
+ return rnndec_decode_enum_val(ctx, en->vals, en->valsnum, enumval);
}
return NULL;
}
diff --git a/src/freedreno/rnn/rnndec.h b/src/freedreno/rnn/rnndec.h
index 1e21d02ba7f..6e90eb9e97d 100644
--- a/src/freedreno/rnn/rnndec.h
+++ b/src/freedreno/rnn/rnndec.h
@@ -50,7 +50,7 @@ struct rnndecaddrinfo {
struct rnndeccontext *rnndec_newcontext(struct rnndb *db);
int rnndec_varadd(struct rnndeccontext *ctx, char *varset, const char *variant);
int rnndec_varmatch(struct rnndeccontext *ctx, struct rnnvarinfo *vi);
-char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval);
+const char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval);
char *rnndec_decodeval(struct rnndeccontext *ctx, struct rnntypeinfo *ti, uint64_t value);
int rnndec_checkaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write);
struct rnndecaddrinfo *rnndec_decodeaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write);