Mesa (master): intel/genxml: Allow referencing enums in type attributes

Kristian Høgsberg krh at kemper.freedesktop.org
Wed Nov 30 06:04:25 UTC 2016


Module: Mesa
Branch: master
Commit: 5814fc1bb7357881c3e89323756743e6de3dc91f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5814fc1bb7357881c3e89323756743e6de3dc91f

Author: Kristian H. Kristensen <hoegsberg at gmail.com>
Date:   Mon Nov 28 16:24:13 2016 -0800

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 <hoegsberg at gmail.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 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:




More information about the mesa-commit mailing list