[Mesa-dev] [PATCH 05/18] intel/genxml: Allow referencing enums in type attributes

Kristian H. Kristensen hoegsberg at gmail.com
Tue Nov 29 20:48:05 UTC 2016


This lets us reference enums in the type attribute of a field.

Signed-off-by: Kristian H. Kristensen <hoegsberg at gmail.com>
---
 src/intel/genxml/gen_pack_header.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/intel/genxml/gen_pack_header.py b/src/intel/genxml/gen_pack_header.py
index 83e3fde..f09667d 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:
-- 
2.9.3



More information about the mesa-dev mailing list