Mesa (master): freedreno/rnn: allow name to be optional in arrays
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 29 14:50:08 UTC 2020
Module: Mesa
Branch: master
Commit: 14a7ca577f4f8c655ca06cd7668a6fe33b4a7efc
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=14a7ca577f4f8c655ca06cd7668a6fe33b4a7efc
Author: Rob Clark <robdclark at chromium.org>
Date: Tue Jul 28 11:01:02 2020 -0700
freedreno/rnn: allow name to be optional in arrays
We are using unnamed arrays to describe repeating portions of a pm4
packet. So allow the name to be optional. Instead of just using
the empty-string hack, drop the attribute.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6107>
---
src/freedreno/registers/adreno/adreno_pm4.xml | 4 ++--
src/freedreno/registers/gen_header.py | 5 ++++-
src/freedreno/registers/rules-ng.xsd | 2 +-
src/freedreno/rnn/rnn.c | 2 ++
4 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/freedreno/registers/adreno/adreno_pm4.xml b/src/freedreno/registers/adreno/adreno_pm4.xml
index b3ccff223ca..24c95ee9d32 100644
--- a/src/freedreno/registers/adreno/adreno_pm4.xml
+++ b/src/freedreno/registers/adreno/adreno_pm4.xml
@@ -833,7 +833,7 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords)
</domain>
<domain name="CP_SET_DRAW_STATE" width="32" varset="chip" variants="A4XX-">
- <array offset="0" name="" stride="3" length="100">
+ <array offset="0" stride="3" length="100">
<reg32 offset="0" name="0">
<bitfield name="COUNT" low="0" high="15" type="uint"/>
<bitfield name="DIRTY" pos="16" type="boolean"/>
@@ -1497,7 +1497,7 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords)
<value value="3" name="NON_PRIV_SAVE_ADDR"/>
<value value="4" name="COUNTER"/>
</enum>
- <array offset="0" name="" stride="3" length="100">
+ <array offset="0" stride="3" length="100">
<reg32 offset="0" name="0">
<bitfield name="PSEUDO_REG" low="0" high="2" type="pseudo_reg"/>
</reg32>
diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
index 291f7e9d299..c0fc47fd8b4 100644
--- a/src/freedreno/registers/gen_header.py
+++ b/src/freedreno/registers/gen_header.py
@@ -227,7 +227,10 @@ class Bitset(object):
class Array(object):
def __init__(self, attrs, domain):
- self.name = attrs["name"]
+ if "name" in attrs:
+ self.name = attrs["name"]
+ else:
+ self.name = ""
self.domain = domain
self.offset = int(attrs["offset"], 0)
self.stride = int(attrs["stride"], 0)
diff --git a/src/freedreno/registers/rules-ng.xsd b/src/freedreno/registers/rules-ng.xsd
index 4e3651d6f32..3a8094f91b1 100644
--- a/src/freedreno/registers/rules-ng.xsd
+++ b/src/freedreno/registers/rules-ng.xsd
@@ -148,7 +148,7 @@
<group ref="rng:topGroup" />
<group ref="rng:regarrayGroup" />
</choice>
- <attribute name="name" type="NMTOKEN" use="required" />
+ <attribute name="name" type="NMTOKEN" use="optional" />
<attribute name="offset" type="rng:HexOrNumber" use="required" />
<attribute name="stride" type="rng:HexOrNumber" use="required" />
<attribute name="length" type="rng:HexOrNumber" use="required" />
diff --git a/src/freedreno/rnn/rnn.c b/src/freedreno/rnn/rnn.c
index 17abf79715c..1a1103706d9 100644
--- a/src/freedreno/rnn/rnn.c
+++ b/src/freedreno/rnn/rnn.c
@@ -481,6 +481,8 @@ static struct rnndelem *trydelem(struct rnndb *db, char *file, xmlNode *node) {
return res;
} else if (!strcmp(node->name, "stripe") || !strcmp(node->name, "array")) {
struct rnndelem *res = calloc(sizeof *res, 1);
+ if (!strcmp(node->name, "array"))
+ res->name = "";
res->type = (strcmp(node->name, "stripe")?RNN_ETYPE_ARRAY:RNN_ETYPE_STRIPE);
res->length = 1;
res->file = file;
More information about the mesa-commit
mailing list