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