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