diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2015-11-24 15:50:44 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-12-01 10:18:24 -0700 |
| commit | e74f422323ce850008e17d01080d2fa4f4256def (patch) | |
| tree | cbbe59436e9d7ef1b80d4571a7d1ead1c6fbdd58 | |
| parent | bc4be42116e1624af3747f4a40b6484a95fe0079 (diff) | |
| download | usermoji-e74f422323ce850008e17d01080d2fa4f4256def.tar.xz | |
layers: Add WSI extensions to autogen code
Conflicts:
icd/common/icd.h
vulkan.py
| -rw-r--r-- | icd/common/icd.h | 7 | ||||
| -rw-r--r-- | layers/object_track.h | 16 | ||||
| -rwxr-xr-x | vk-layer-generate.py | 29 | ||||
| -rwxr-xr-x | vulkan.py | 25 |
4 files changed, 64 insertions, 13 deletions
diff --git a/icd/common/icd.h b/icd/common/icd.h index 35360e29..ec568e70 100644 --- a/icd/common/icd.h +++ b/icd/common/icd.h @@ -31,6 +31,13 @@ #define ICD_H +// TODO: Generalize for other extension +#ifdef _WIN32 +#define VK_USE_PLATFORM_WIN32_KHR +#else // _WIN32 +#define VK_USE_PLATFORM_XCB_KHR +#endif // _WIN32 + #include <vulkan/vulkan.h> #include <vulkan/vk_platform.h> #include <vulkan/vk_lunarg_debug_report.h> diff --git a/layers/object_track.h b/layers/object_track.h index cc1c5ce3..9a435831 100644 --- a/layers/object_track.h +++ b/layers/object_track.h @@ -29,6 +29,13 @@ #include "vk_layer_extension_utils.h" #include "vk_enum_string_helper.h" +// TODO: Generalize for other extension +#ifdef _WIN32 +#define VK_USE_PLATFORM_WIN32_KHR +#else // _WIN32 +#define VK_USE_PLATFORM_XCB_KHR +#endif // _WIN32 + // Object Tracker ERROR codes typedef enum _OBJECT_TRACK_ERROR { @@ -214,6 +221,15 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate pDisp->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); + +#if VK_USE_PLATFORM_WIN32_KHR + pDisp->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) gpa(instance, "vkCreateWin32SurfaceKHR"); + pDisp->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); +#else // VK_USE_PLATFORM_XCB_KHR + pDisp->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) gpa(instance, "vkCreateXcbSurfaceKHR"); + pDisp->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); +#endif + instanceExtMap[pDisp].wsi_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index 5b5cbcda..963d358e 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -39,7 +39,7 @@ from source_line_info import sourcelineinfo from collections import defaultdict def proto_is_global(proto): - if proto.params[0].ty == "VkInstance" or proto.params[0].ty == "VkPhysicalDevice" or proto.name == "CreateInstance" or proto.name == "EnumerateInstanceLayerProperties" or proto.name == "EnumerateInstanceExtensionProperties" or proto.name == "EnumerateDeviceLayerProperties" or proto.name == "EnumerateDeviceExtensionProperties": + if proto.params[0].ty == "VkInstance" or proto.params[0].ty == "VkPhysicalDevice" or proto.name == "CreateInstance" or proto.name == "EnumerateInstanceLayerProperties" or proto.name == "EnumerateInstanceExtensionProperties" or proto.name == "EnumerateDeviceLayerProperties" or proto.name == "EnumerateDeviceExtensionProperties" or proto.name == "CreateXcbSurfaceKHR" or proto.name == "vkGetPhysicalDeviceXcbPresentationSupportKHR": return True else: return False @@ -66,6 +66,7 @@ class Subcommand(object): def generate(self): copyright = self.generate_copyright() + platform_definition = self.platform_definition() header = self.generate_header() body = self.generate_body() footer = self.generate_footer() @@ -73,6 +74,8 @@ class Subcommand(object): contents = [] if copyright: contents.append(copyright) + if platform_definition: + contents.append(platform_definition) if header: contents.append(header) if body: @@ -117,6 +120,14 @@ class Subcommand(object): def generate_header(self): return "\n".join(["#include <" + h + ">" for h in self.headers]) + def platform_definition(self): + pd_body = [] + if sys.platform == 'win32': + pd_body.append('#define VK_USE_PLATFORM_WIN32_KHR') + else: + pd_body.append('#define VK_USE_PLATFORM_XCB_KHR') + return "\n".join(pd_body) + def generate_body(self): pass @@ -1174,7 +1185,9 @@ class APIDumpSubcommand(Subcommand): ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', 'vkGetPhysicalDeviceSurfaceFormatsKHR', - 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateXcbSurfaceKHR', + 'vkGetPhysicalDeviceXcbPresentationSupportKHR'])] extensions=[('wsi_enabled', ['vkCreateSwapchainKHR', 'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR', @@ -1193,6 +1206,12 @@ class ObjectTrackerSubcommand(Subcommand): header_txt.append('#include <string.h>') header_txt.append('#include <inttypes.h>') header_txt.append('') + # TODO: Add support for different linux flavors, android + if sys.platform == 'win32': + header_txt.append('#define VK_USE_PLATFORM_WIN32_KHR') + else: + header_txt.append('#define VK_USE_PLATFORM_XCB_KHR') + header_txt.append('') header_txt.append('#include "vulkan/vulkan.h"') header_txt.append('#include "vk_loader_platform.h"') header_txt.append('') @@ -1599,7 +1618,7 @@ class ObjectTrackerSubcommand(Subcommand): '}' % (qual, decl, proto.c_call())) return "".join(funcs) # Temporarily prevent DestroySurface call from being generated until WSI layer support is fleshed out - elif 'DestroyInstance' in proto.name or 'DestroyDevice' in proto.name or 'DestroySurface' in proto.name: + elif 'DestroyInstance' in proto.name or 'DestroyDevice' in proto.name or 'SurfaceKHR' in proto.name: return "" else: if 'Create' in proto.name or 'Alloc' in proto.name: @@ -1716,7 +1735,9 @@ class ObjectTrackerSubcommand(Subcommand): ['vkGetPhysicalDeviceSurfaceSupportKHR', 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR', 'vkGetPhysicalDeviceSurfaceFormatsKHR', - 'vkGetPhysicalDeviceSurfacePresentModesKHR'])] + 'vkGetPhysicalDeviceSurfacePresentModesKHR', + 'vkCreateXcbSurfaceKHR', + 'vkGetPhysicalDeviceXcbPresentationSupportKHR'])] body = [self.generate_maps(), self.generate_procs(), self.generate_destroy_instance(), @@ -1,4 +1,4 @@ -"""VK API description""" +" ""VK API description""" # Copyright (C) 2015 Valve Corporation # @@ -1094,10 +1094,10 @@ ext_khr_xcb_surface = Extension( Param("VkSurfaceKHR*", "pSurface")]), Proto("VkBool32", "GetPhysicalDeviceXcbPresentationSupportKHR", - [Param(" VkPhysicalDevice", "physicalDevice"), - Param(" uint32_t", "queueFamilyIndex"), - Param(" xcb_connection_t*", "connection"), - Param(" xcb_visualid_t", "visual_id")]), + [Param("VkPhysicalDevice", "physicalDevice"), + Param("uint32_t", "queueFamilyIndex"), + Param("xcb_connection_t*", "connection"), + Param("xcb_visualid_t", "visual_id")]), ], ) ext_khr_win32_surface = Extension( @@ -1113,8 +1113,8 @@ ext_khr_win32_surface = Extension( Param("VkSurfaceKHR*", "pSurface")]), Proto("VkBool32", "GetPhysicalDeviceWin32PresentationSupportKHR", - [Param(" VkPhysicalDevice", "physicalDevice"), - Param(" uint32_t", "queueFamilyIndex")]), + [Param("VkPhysicalDevice", "physicalDevice"), + Param("uint32_t", "queueFamilyIndex")]), ], ) lunarg_debug_report = Extension( @@ -1163,8 +1163,15 @@ lunarg_debug_marker = Extension( Param("const char*", "pName")]), ], ) -extensions = [core, ext_khr_surface, ext_khr_device_swapchain] -extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, lunarg_debug_report, lunarg_debug_marker] + +import sys +if sys.platform == '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: + 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] + object_dispatch_list = [ "VkInstance", "VkPhysicalDevice", |
