summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristian H. Kristensen <[email protected]>2016-11-28 16:24:13 -0800
committerKristian H. Kristensen <[email protected]>2016-11-29 22:02:49 -0800
commit5814fc1bb7357881c3e89323756743e6de3dc91f (patch)
tree092a002fc2468bd47040a64ad4dec8acf40218ab
parent3b6b6f6463019f4c765d8e8a5b37a530f489bf5a (diff)
intel/genxml: Allow referencing enums in type attributes
This lets us reference enums in the type attribute of a field. Signed-off-by: Kristian H. Kristensen <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/intel/genxml/gen_pack_header.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/intel/genxml/gen_pack_header.py b/src/intel/genxml/gen_pack_header.py
index 83e3fde2daa..f09667d3d8e 100644
--- a/src/intel/genxml/gen_pack_header.py
+++ b/src/intel/genxml/gen_pack_header.py
@@ -267,6 +267,8 @@ class Field(object):
type = 'uint32_t'
elif self.type in self.parser.structs:
type = 'struct ' + self.parser.gen_prefix(safe_name(self.type))
+ elif self.type in self.parser.enums:
+ type = 'uint32_t'
elif self.type == 'mbo':
return
else:
@@ -426,6 +428,9 @@ class Group(object):
elif field.type == "uint":
s = "__gen_uint(values->%s, %d, %d)" % \
(name, field.start - dword_start, field.end - dword_start)
+ elif field.type in self.parser.enums:
+ s = "__gen_uint(values->%s, %d, %d)" % \
+ (name, field.start - dword_start, field.end - dword_start)
elif field.type == "int":
s = "__gen_sint(values->%s, %d, %d)" % \
(name, field.start - dword_start, field.end - dword_start)
@@ -484,6 +489,7 @@ class Parser(object):
self.instruction = None
self.structs = {}
+ self.enums = {}
self.registers = {}
def gen_prefix(self, name):
@@ -530,6 +536,7 @@ class Parser(object):
elif name == "enum":
self.values = []
self.enum = safe_name(attrs["name"])
+ self.enums[attrs["name"]] = 1
if "prefix" in attrs:
self.prefix = safe_name(attrs["prefix"])
else: