freedreno/decode: Add missing varset check
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13688 Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36818>
This commit is contained in:
@@ -157,11 +157,13 @@ rnn_enumval(struct rnn *rnn, const char *enumname, const char *enumval)
|
||||
}
|
||||
|
||||
static struct rnndelem *
|
||||
regelem(struct rnndomain *domain, const char *name)
|
||||
regelem(struct rnndeccontext *ctx, struct rnndomain *domain, const char *name)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < domain->subelemsnum; i++) {
|
||||
struct rnndelem *elem = domain->subelems[i];
|
||||
if (!rnndec_varmatch(ctx, &elem->varinfo))
|
||||
continue;
|
||||
if (!strcmp(elem->name, name))
|
||||
return elem;
|
||||
}
|
||||
@@ -172,18 +174,20 @@ regelem(struct rnndomain *domain, const char *name)
|
||||
struct rnndelem *
|
||||
rnn_regelem(struct rnn *rnn, const char *name)
|
||||
{
|
||||
struct rnndelem *elem = regelem(rnn->dom[0], name);
|
||||
struct rnndelem *elem = regelem(rnn->vc, rnn->dom[0], name);
|
||||
if (elem)
|
||||
return elem;
|
||||
return regelem(rnn->dom[1], name);
|
||||
return regelem(rnn->vc, rnn->dom[1], name);
|
||||
}
|
||||
|
||||
static struct rnndelem *
|
||||
regoff(struct rnndomain *domain, uint32_t offset)
|
||||
regoff(struct rnndeccontext *ctx, struct rnndomain *domain, uint32_t offset)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < domain->subelemsnum; i++) {
|
||||
struct rnndelem *elem = domain->subelems[i];
|
||||
if (!rnndec_varmatch(ctx, &elem->varinfo))
|
||||
continue;
|
||||
if (elem->offset == offset)
|
||||
return elem;
|
||||
}
|
||||
@@ -194,10 +198,10 @@ regoff(struct rnndomain *domain, uint32_t offset)
|
||||
struct rnndelem *
|
||||
rnn_regoff(struct rnn *rnn, uint32_t offset)
|
||||
{
|
||||
struct rnndelem *elem = regoff(rnn->dom[0], offset);
|
||||
struct rnndelem *elem = regoff(rnn->vc, rnn->dom[0], offset);
|
||||
if (elem)
|
||||
return elem;
|
||||
return regoff(rnn->dom[1], offset);
|
||||
return regoff(rnn->vc, rnn->dom[1], offset);
|
||||
}
|
||||
|
||||
enum rnnttype
|
||||
|
||||
Reference in New Issue
Block a user