aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-11-24 15:50:44 -0700
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:18:24 -0700
commite74f422323ce850008e17d01080d2fa4f4256def (patch)
treecbbe59436e9d7ef1b80d4571a7d1ead1c6fbdd58
parentbc4be42116e1624af3747f4a40b6484a95fe0079 (diff)
downloadusermoji-e74f422323ce850008e17d01080d2fa4f4256def.tar.xz
layers: Add WSI extensions to autogen code
Conflicts: icd/common/icd.h vulkan.py
-rw-r--r--icd/common/icd.h7
-rw-r--r--layers/object_track.h16
-rwxr-xr-xvk-layer-generate.py29
-rwxr-xr-xvulkan.py25
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(),
diff --git a/vulkan.py b/vulkan.py
index 55640916..fc22dfd3 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -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",