vulkan/util: use the platform defines in vk.xml instead of hard-coding them
authorEric Engestrom <eric.engestrom@intel.com>
Tue, 5 Mar 2019 15:57:34 +0000 (15:57 +0000)
committerEric Engestrom <eric.engestrom@intel.com>
Thu, 7 Mar 2019 11:49:44 +0000 (11:49 +0000)
See also: 3d4238d26c5de4a0f7a5 "anv: use the platform defines in vk.xml
                                instead of hard-coding them"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/vulkan/util/gen_enum_to_str.py

index cf031670ff7a663e28b4017d943400add460bd90..e6d5f86fa81372d72b435a4cb6e11d6746a6dab9 100644 (file)
@@ -221,15 +221,10 @@ class NamedFactory(object):
 class VkExtension(object):
     """Simple struct-like class representing extensions"""
 
-    def __init__(self, name, number=None, platform=None):
+    def __init__(self, name, number=None, define=None):
         self.name = name
         self.number = number
-        self.define = None
-        if platform is not None:
-            ext = '_KHR'
-            if platform.upper() == 'XLIB_XRANDR':
-                ext = '_EXT'
-            self.define = 'VK_USE_PLATFORM_' + platform.upper() + ext
+        self.define = define
 
 
 class VkEnum(object):
@@ -311,13 +306,19 @@ def parse_xml(cmd_factory, enum_factory, ext_factory, filename):
             cmd_factory(name.text,
                         device_entrypoint=(first_arg.text in ('VkDevice', 'VkCommandBuffer', 'VkQueue')))
 
+    platform_define = {}
+    for platform in xml.findall('./platforms/platform'):
+        name = platform.attrib['name']
+        define = platform.attrib['protect']
+        platform_define[name] = define
+
     for ext_elem in xml.findall('./extensions/extension[@supported="vulkan"]'):
         platform = None
         if "platform" in ext_elem.attrib:
-            platform = ext_elem.attrib['platform']
+            define = platform_define[ext_elem.attrib['platform']]
         extension = ext_factory(ext_elem.attrib['name'],
                                 number=int(ext_elem.attrib['number']),
-                                platform=platform)
+                                define=define)
 
         for value in ext_elem.findall('./require/enum[@extends]'):
             enum = enum_factory.get(value.attrib['extends'])