freedreno/registers: Add implicit reg32 for empty arrays

Registers declared as a "naked" array, ie:

  <array offset="0x1234" name="SOME_REG" stride="1" .../>

were not getting register packers generated for them.  Insert an
implicit <reg32> child for them, so the above would be equivalent
to:

  <array offset="0x1234" name="SOME_REG" stride="1" .../>
    <reg32 offset="0" name="REG"/>
  </array>

Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37009>
This commit is contained in:
Rob Clark
2025-08-27 08:23:07 -07:00
committed by Marge Bot
parent 622c6a1315
commit fd93414496
+9
View File
@@ -296,6 +296,7 @@ class Array(object):
self.domain = domain
self.variant = variant
self.parent = parent
self.children = []
if self.parent:
self.name = self.parent.name + "_" + self.local_name
else:
@@ -386,6 +387,7 @@ class Reg(object):
self.bit_size = bit_size
if array:
self.name = array.name + "_" + self.name
array.children.append(self)
self.full_name = self.domain + "_" + self.name
if "stride" in attrs:
self.stride = int(attrs["stride"], 0)
@@ -729,6 +731,13 @@ class Parser(object):
elif name == "reg32":
self.current_reg = None
elif name == "array":
# if the array has no Reg children, push an implicit reg32:
if len(self.current_array.children) == 0:
attrs = {
"name": "REG",
"offset": "0",
}
self.parse_reg(attrs, 32)
self.current_array = self.current_array.parent
elif name == "enum":
self.current_enum = None