xref: /aosp_15_r20/external/mesa3d/src/gfxstream/codegen/scripts/cereal/vkextensionstructuretype.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1# Copyright 2018 Google LLC
2# SPDX-License-Identifier: MIT
3
4from .wrapperdefs import VulkanWrapperGenerator
5
6
7class VulkanExtensionStructureType(VulkanWrapperGenerator):
8    def __init__(self, extensionName: str, module, typeInfo):
9        super().__init__(module, typeInfo)
10        self._extensionName = extensionName
11
12    def onGenGroup(self, groupinfo, groupName, alias=None):
13        super().onGenGroup(groupinfo, groupName, alias)
14        elem = groupinfo.elem
15        if (not elem.get('type') == 'enum'):
16            return
17        if (not elem.get('name') == 'VkStructureType'):
18            return
19        extensionEnumFactoryMacro = f'{self._extensionName.upper()}_ENUM'
20        for enum in elem.findall(f"enum[@extname='{self._extensionName}']"):
21            name = enum.get('name')
22            offset = enum.get('offset')
23            self.module.appendHeader(
24                f"#define {name} {extensionEnumFactoryMacro}(VkStructureType, {offset})\n")
25
26
27class VulkanGfxstreamStructureType(VulkanExtensionStructureType):
28    def __init__(self, module, typeInfo):
29        super().__init__('VK_GOOGLE_gfxstream', module, typeInfo)
30
31
32class VulkanAndroidNativeBufferStructureType(VulkanExtensionStructureType):
33    def __init__(self, module, typeInfo):
34        super().__init__('VK_ANDROID_native_buffer', module, typeInfo)
35