aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMun, Gwan-gyeong <kk.moon@samsung.com>2016-02-22 09:43:09 +0900
committerMark Lobodzinski <mark@lunarg.com>2016-02-29 08:27:10 -0700
commit79b467eb9cfa3e1d9ed7f64ec6607f74211a5ec1 (patch)
treeff9711adeb36de0ae3ac439e14ae3cc2ccaac705
parent09a0f414a3198d5c35a9affc6068ffa05809e1ce (diff)
downloadusermoji-79b467eb9cfa3e1d9ed7f64ec6607f74211a5ec1.tar.xz
layers: GH PR17, Add Wayland, Xlib, Android & Mir extensions to codegen scripts
Conflicts: vulkan.py
-rwxr-xr-xvk-layer-generate.py88
-rwxr-xr-xvulkan.py89
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 <stroyan@google.com>
# Author: Tony Barbour <tony@LunarG.com>
# Author: Chia-I Wu <olv@google.com>
+# Author: Gwan-gyeong Mun <kk.moon@samsung.com>
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 <subcommand> <input_header> [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 <wsi> <subcommand> <input_header> [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 <courtney@LunarG.com>
# Author: Tobin Ehlis <tobin@lunarg.com>
# Author: Tony Barbour <tony@LunarG.com>
+# Author: Gwan-gyeong Mun <kk.moon@samsung.com>
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",