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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user