From 79b467eb9cfa3e1d9ed7f64ec6607f74211a5ec1 Mon Sep 17 00:00:00 2001 From: "Mun, Gwan-gyeong" Date: Mon, 22 Feb 2016 09:43:09 +0900 Subject: layers: GH PR17, Add Wayland, Xlib, Android & Mir extensions to codegen scripts Conflicts: vulkan.py --- vk-layer-generate.py | 88 ++++++++++++++++++++++++++++++++++++++++++--------- vulkan.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 157 insertions(+), 20 deletions(-) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index d03029d3..c16c6bcf 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -33,6 +33,7 @@ # Author: Mike Stroyan # Author: Tony Barbour # Author: Chia-I Wu +# Author: Gwan-gyeong Mun import sys import os @@ -177,6 +178,7 @@ class Subcommand(object): self.no_addr = False self.layer_name = "" self.lineinfo = sourcelineinfo() + self.wsi = sys.argv[1] def run(self): print(self.generate()) @@ -1397,7 +1399,7 @@ class ObjectTrackerSubcommand(Subcommand): ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', 'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])] - if sys.platform.startswith('win32'): + if self.wsi == 'Win32': instance_extensions=[('msg_callback_get_proc_addr', []), ('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', @@ -1406,7 +1408,14 @@ class ObjectTrackerSubcommand(Subcommand): 'vkGetPhysicalDeviceSurfacePresentModesKHR', 'vkCreateWin32SurfaceKHR', 'vkGetPhysicalDeviceWin32PresentationSupportKHR'])] - elif sys.platform.startswith('linux'): + elif self.wsi == 'Android': + instance_extensions=[('msg_callback_get_proc_addr', []), + ('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + elif self.wsi == 'Xcb': instance_extensions=[('msg_callback_get_proc_addr', []), ('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', @@ -1416,14 +1425,33 @@ class ObjectTrackerSubcommand(Subcommand): 'vkCreateXcbSurfaceKHR', 'vkCreateAndroidSurfaceKHR', 'vkGetPhysicalDeviceXcbPresentationSupportKHR'])] - # TODO: Add cases for Mir, Wayland and Xlib - else: # android + elif self.wsi == 'Xlib': instance_extensions=[('msg_callback_get_proc_addr', []), ('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', 'vkGetPhysicalDeviceSurfaceFormatsKHR', - 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateXlibSurfaceKHR', + 'vkGetPhysicalDeviceXlibPresentationSupportKHR'])] + elif self.wsi == 'Wayland': + instance_extensions=[('msg_callback_get_proc_addr', []), + ('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateWaylandSurfaceKHR', + 'vkGetPhysicalDeviceWaylandPresentationSupportKHR'])] + else: #Mir + instance_extensions=[('msg_callback_get_proc_addr', []), + ('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateMirSurfaceKHR', + 'vkGetPhysicalDeviceMirPresentationSupportKHR'])] body = [self.generate_maps(), self.generate_procs(), self.generate_destroy_instance(), @@ -1684,7 +1712,7 @@ class UniqueObjectsSubcommand(Subcommand): ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', 'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])] - if sys.platform.startswith('win32'): + if self.wsi == 'Win32': instance_extensions=[('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', @@ -1692,7 +1720,13 @@ class UniqueObjectsSubcommand(Subcommand): 'vkGetPhysicalDeviceSurfacePresentModesKHR', 'vkCreateWin32SurfaceKHR' ])] - elif sys.platform.startswith('linux'): + elif self.wsi == 'Android': + instance_extensions=[('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + elif self.wsi == 'Xcb': instance_extensions=[('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', @@ -1701,13 +1735,30 @@ class UniqueObjectsSubcommand(Subcommand): 'vkCreateXcbSurfaceKHR', 'vkCreateAndroidSurfaceKHR' ])] - # TODO: Add cases for Mir, Wayland and Xlib - else: # android + elif self.wsi == 'Xlib': instance_extensions=[('wsi_enabled', ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', 'vkGetPhysicalDeviceSurfaceFormatsKHR', - 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateXlibSurfaceKHR' + ])] + elif self.wsi == 'Wayland': + instance_extensions=[('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateWaylandSurfaceKHR' + ])] + else: #Mir + instance_extensions=[('wsi_enabled', + ['vkGetPhysicalDeviceSurfaceSupportKHR', + 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', + 'vkGetPhysicalDeviceSurfaceFormatsKHR', + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateMirSurfaceKHR' + ])] body = [self._generate_dispatch_entrypoints("VK_LAYER_EXPORT"), self._generate_layer_gpa_function(extensions, instance_extensions)] @@ -2002,19 +2053,28 @@ class ThreadingSubcommand(Subcommand): return "\n\n".join(body) def main(): + wsi = { + "Win32", + "Android", + "Xcb", + "Xlib", + "Wayland", + "Mir", + } + subcommands = { "object_tracker" : ObjectTrackerSubcommand, "threading" : ThreadingSubcommand, "unique_objects" : UniqueObjectsSubcommand, } - if len(sys.argv) < 3 or sys.argv[1] not in subcommands or not os.path.exists(sys.argv[2]): - print("Usage: %s [options]" % sys.argv[0]) + if len(sys.argv) < 4 or sys.argv[1] not in wsi or sys.argv[2] not in subcommands or not os.path.exists(sys.argv[3]): + print("Usage: %s [options]" % sys.argv[0]) print print("Available subcommands are: %s" % " ".join(subcommands)) exit(1) - hfp = vk_helper.HeaderFileParser(sys.argv[2]) + hfp = vk_helper.HeaderFileParser(sys.argv[3]) hfp.parse() vk_helper.enum_val_dict = hfp.get_enum_val_dict() vk_helper.enum_type_dict = hfp.get_enum_type_dict() @@ -2023,7 +2083,7 @@ def main(): vk_helper.typedef_rev_dict = hfp.get_typedef_rev_dict() vk_helper.types_dict = hfp.get_types_dict() - subcmd = subcommands[sys.argv[1]](sys.argv[2:]) + subcmd = subcommands[sys.argv[2]](sys.argv[3:]) subcmd.run() if __name__ == "__main__": diff --git a/vulkan.py b/vulkan.py index 189be419..e773d63f 100755 --- a/vulkan.py +++ b/vulkan.py @@ -29,6 +29,7 @@ # Author: Courtney Goeltzenleuchter # Author: Tobin Ehlis # Author: Tony Barbour +# Author: Gwan-gyeong Mun class Param(object): """A function parameter.""" @@ -1114,6 +1115,58 @@ ext_khr_xcb_surface = Extension( Param("xcb_visualid_t", "visual_id")]), ], ) +ext_khr_xlib_surface = Extension( + name="VK_KHR_xlib_surface", + headers=["vulkan/vulkan.h"], + objects=[], + protos=[ + Proto("VkResult", "CreateXlibSurfaceKHR", + [Param("VkInstance", "instance"), + Param("const VkXlibSurfaceCreateInfoKHR*", "pCreateInfo"), + Param("const VkAllocationCallbacks*", "pAllocator"), + Param("VkSurfaceKHR*", "pSurface")]), + + Proto("VkBool32", "GetPhysicalDeviceXlibPresentationSupportKHR", + [Param("VkPhysicalDevice", "physicalDevice"), + Param("uint32_t", "queueFamilyIndex"), + Param("Display*", "dpy"), + Param("VisualID", "visualID")]), + ], +) +ext_khr_wayland_surface = Extension( + name="VK_KHR_wayland_surface", + headers=["vulkan/vulkan.h"], + objects=[], + protos=[ + Proto("VkResult", "CreateWaylandSurfaceKHR", + [Param("VkInstance", "instance"), + Param("const VkWaylandSurfaceCreateInfoKHR*", "pCreateInfo"), + Param("const VkAllocationCallbacks*", "pAllocator"), + Param("VkSurfaceKHR*", "pSurface")]), + + Proto("VkBool32", "GetPhysicalDeviceWaylandPresentationSupportKHR", + [Param("VkPhysicalDevice", "physicalDevice"), + Param("uint32_t", "queueFamilyIndex"), + Param("struct wl_display*", "display")]), + ], +) +ext_khr_mir_surface = Extension( + name="VK_KHR_mir_surface", + headers=["vulkan/vulkan.h"], + objects=[], + protos=[ + Proto("VkResult", "CreateMirSurfaceKHR", + [Param("VkInstance", "instance"), + Param("const VkMirSurfaceCreateInfoKHR*", "pCreateInfo"), + Param("const VkAllocationCallbacks*", "pAllocator"), + Param("VkSurfaceKHR*", "pSurface")]), + + Proto("VkBool32", "GetPhysicalDeviceMirPresentationSupportKHR", + [Param("VkPhysicalDevice", "physicalDevice"), + Param("uint32_t", "queueFamilyIndex"), + Param("MirConnection*", "connection")]), + ], +) ext_khr_android_surface = Extension( name="VK_KHR_android_surface", headers=["vulkan/vulkan.h"], @@ -1200,12 +1253,36 @@ lunarg_debug_marker = Extension( ) import sys -if sys.platform.startswith('win32'): - extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface] - extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, lunarg_debug_report, lunarg_debug_marker] -else: # linux & android - extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_android_surface] - extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_android_surface, lunarg_debug_report, lunarg_debug_marker] + +if len(sys.argv) < 2: + if sys.platform.startswith('win32'): + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, lunarg_debug_report, lunarg_debug_marker] + elif sys.platform.startswith('linux'): + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, lunarg_debug_report, lunarg_debug_marker] + else: # android + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, lunarg_debug_report, lunarg_debug_marker] +else : + if sys.argv[1] == 'Win32': + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, lunarg_debug_report, lunarg_debug_marker] + elif sys.argv[1] == 'Android': + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, lunarg_debug_report, lunarg_debug_marker] + elif sys.argv[1] == 'Xcb': + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, lunarg_debug_report, lunarg_debug_marker] + elif sys.argv[1] == 'Xlib': + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xlib_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xlib_surface, lunarg_debug_report, lunarg_debug_marker] + elif sys.argv[1] == 'Wayland': + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_wayland_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_wayland_surface, lunarg_debug_report, lunarg_debug_marker] + else: #Mir + extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_mir_surface] + extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_mir_surface, lunarg_debug_report, lunarg_debug_marker] object_dispatch_list = [ "VkInstance", -- cgit v1.2.3