瀏覽代碼

Extract all system depending types in system module

Sky Thirteenth 8 年之前
父節點
當前提交
0be188cadf
共有 3 個文件被更改,包括 299 次插入221 次删除
  1. 83 0
      source/derelict/vulkan/base.d
  2. 213 9
      source/derelict/vulkan/system.d
  3. 3 212
      source/derelict/vulkan/types.d

+ 83 - 0
source/derelict/vulkan/base.d

@@ -0,0 +1,83 @@
+/*
+** Copyright (c) 2015-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+module derelict.vulkan.base;
+extern(System):
+
+//#include "vk_platform.h"
+
+auto VK_MAKE_VERSION(int major, int minor, int patch) {
+  return (major << 22) | (minor << 12) | patch;
+}
+
+auto VK_VERSION_MAJOR(uint ver) {
+  return ver >> 22;
+}
+
+auto VK_VERSION_MINOR(uint ver) {
+  return (ver >> 12) & 0x3ff;
+}
+
+auto VK_VERSION_PATCH(uint ver) {
+  return ver & 0xfff;
+}
+
+package auto VK_DEFINE_HANDLE(string name) {
+  return "struct " ~ name ~ "_T; \n alias " ~ name ~ " = " ~ name ~ "_T*;";
+}
+
+package auto VK_DEFINE_NON_DISPATCHABLE_HANDLE(string name) {
+  // #if defined(__LP64__)    || defined(_WIN64) 
+  //  || defined(__x86_64__)  || defined(_M_X64) 
+  //  || defined(__ia64)      || defined (_M_IA64) 
+  //  || defined(__aarch64__) || defined(__powerpc64__)
+  return VK_DEFINE_HANDLE(name);
+}
+
+alias VkFlags      = uint;
+alias VkBool32     = uint;
+alias VkDeviceSize = ulong;
+alias VkSampleMask = uint;
+
+enum VK_VERSION_1_0 = 1;
+enum VK_API_VERSION = VK_MAKE_VERSION(1, 0, 3); // Vulkan API version supported by this file
+enum VK_NULL_HANDLE = null;
+
+enum VK_TRUE  = 1;
+enum VK_FALSE = 0;
+
+enum VK_UUID_SIZE  = 16;
+enum VK_WHOLE_SIZE = (~0UL);
+
+enum VK_LOD_CLAMP_NONE    = 1000.0f;
+enum VK_ATTACHMENT_UNUSED = (~0U);
+enum VK_SUBPASS_EXTERNAL  = (~0U);
+
+enum VK_QUEUE_FAMILY_IGNORED   = (~0U);
+enum VK_REMAINING_MIP_LEVELS   = (~0U);
+enum VK_REMAINING_ARRAY_LAYERS = (~0U);
+
+enum VK_MAX_MEMORY_TYPES        = 32;
+enum VK_MAX_MEMORY_HEAPS        = 16;
+enum VK_MAX_EXTENSION_NAME_SIZE = 256;
+enum VK_MAX_DESCRIPTION_SIZE    = 256;
+enum VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;

+ 213 - 9
source/derelict/vulkan/system.d

@@ -29,6 +29,7 @@ DEALINGS IN THE SOFTWARE.
 module derelict.vulkan.system;
 module derelict.vulkan.system;
 
 
 import derelict.util.system;
 import derelict.util.system;
+import derelict.vulkan.base;
 
 
 enum VKSystem {
 enum VKSystem {
   Other   = 0,
   Other   = 0,
@@ -57,6 +58,7 @@ auto derelictVulkanSystem() {
 }
 }
 
 
 mixin template SystemFunctionality() {
 mixin template SystemFunctionality() {
+  extern(System):
   enum currentSystem = derelictVulkanSystem();
   enum currentSystem = derelictVulkanSystem();
   pragma(msg, "DerelictVulkanSystem: ", to!string(currentSystem));
   pragma(msg, "DerelictVulkanSystem: ", to!string(currentSystem));
   
   
@@ -69,22 +71,224 @@ mixin template SystemFunctionality() {
   }
   }
 }
 }
 
 
-mixin template WindowsSys() {}
+mixin template WindowsSys() {
+  import core.sys.windows.windows;
+  enum VK_KHR_win32_surface = 1;
+  enum VK_KHR_WIN32_SURFACE_SPEC_VERSION   = 5;
+  enum VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface";
 
 
-mixin template AndroidSys() {}
+  alias VkWin32SurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkWin32SurfaceCreateInfoKHR {
+    VkStructureType              sType    ;
+    const(void)*                 pNext    ;
+    VkWin32SurfaceCreateFlagsKHR flags    ;
+    HINSTANCE                    hinstance;
+    HWND                         hwnd     ;
+  }
+
+  alias PFN_vkCreateWin32SurfaceKHR = nothrow 
+      VkResult function( VkInstance                          instance
+                       , const(VkWin32SurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*       pAllocator
+                       , VkSurfaceKHR*                       pSurface );
+  alias PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = nothrow 
+      VkBool32 function( VkPhysicalDevice physicalDevice, uint queueFamilyIndex );
+
+  version (none) {
+    VkResult vkCreateWin32SurfaceKHR( VkInstance                          instance
+                                    , const(VkWin32SurfaceCreateInfoKHR)* pCreateInfo
+                                    , const(VkAllocationCallbacks)*       pAllocator
+                                    , VkSurfaceKHR*                       pSurface );
+    VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint queueFamilyIndex );
+  }
+}
+
+mixin template AndroidSys() { 
+  // #include <android/native_window.h>
+  enum VK_KHR_android_surface = 1;
+  enum VK_KHR_ANDROID_SURFACE_SPEC_VERSION   = 6;
+  enum VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface";
+
+  alias VkAndroidSurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkAndroidSurfaceCreateInfoKHR {
+    VkStructureType                sType ;
+    const(void)*                   pNext ;
+    VkAndroidSurfaceCreateFlagsKHR flags ;
+    ANativeWindow*                 window;
+  }
+
+  alias PFN_vkCreateAndroidSurfaceKHR = nothrow 
+      VkResult function( VkInstance                            instance
+                       , const(VkAndroidSurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*         pAllocator
+                       , VkSurfaceKHR*                         pSurface );
+
+  version (none) {
+    VkResult vkCreateAndroidSurfaceKHR( VkInstance instance
+                                      , const(VkAndroidSurfaceCreateInfoKHR)* pCreateInfo
+                                      , const(VkAllocationCallbacks)* pAllocator
+                                      , VkSurfaceKHR* pSurface);
+  }
+}
 
 
 mixin template PosixSys() {
 mixin template PosixSys() {
-  version (VK_USE_PLATFORM_XCB_KHR)     mixin XCBProtocol;
-  version (VK_USE_PLATFORM_XLIB_KHR)    mixin XLibProtocol;
-  version (VK_USE_PLATFORM_MIR_KHR)     mixin MirProtocol;
+  version (VK_USE_PLATFORM_XCB_KHR)     mixin XCBProtocol    ;
+  version (VK_USE_PLATFORM_XLIB_KHR)    mixin XLibProtocol   ;
+  version (VK_USE_PLATFORM_MIR_KHR)     mixin MirProtocol    ;
   version (VK_USE_PLATFORM_WAYLAND_KHR) mixin WaylandProtocol;
   version (VK_USE_PLATFORM_WAYLAND_KHR) mixin WaylandProtocol;
   else pragma(msg, "Non protocol been selected for Posix system.");
   else pragma(msg, "Non protocol been selected for Posix system.");
 }
 }
 
 
-mixin template XCBProtocol() {}
+mixin template XCBProtocol() {
+  // #include <xcb/xcb.h>
+  enum VK_KHR_xcb_surface = 1;
+  enum VK_KHR_XCB_SURFACE_SPEC_VERSION   = 6;
+  enum VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface";
+
+  alias VkXcbSurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkXcbSurfaceCreateInfoKHR {
+    VkStructureType            sType     ;
+    const(void)*               pNext     ;
+    VkXcbSurfaceCreateFlagsKHR flags     ;
+    xcb_connection_t*          connection;
+    xcb_window_t               window    ;
+  }
+
+  alias PFN_vkCreateXcbSurfaceKHR = nothrow 
+      VkResult function( VkInstance                        instance
+                       , const(VkXcbSurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*     pAllocator
+                       , VkSurfaceKHR*                     pSurface );
+  alias PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = nothrow 
+      VkBool32 function( VkPhysicalDevice  physicalDevice
+                       , uint              queueFamilyIndex
+                       , xcb_connection_t* connection
+                       , xcb_visualid_t    visual_id );
+
+  version (none) {
+    VkResult vkCreateXcbSurfaceKHR( VkInstance                        instance
+                                  , const(VkXcbSurfaceCreateInfoKHR)* pCreateInfo
+                                  , const(VkAllocationCallbacks)*     pAllocator
+                                  , VkSurfaceKHR*                     pSurface );
+    VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice  physicalDevice
+                                                         , uint              queueFamilyIndex
+                                                         , xcb_connection_t* connection
+                                                         , xcb_visualid_t    visual_id);
+  }
+}
+
+mixin template XLibProtocol() {
+  // #include <X11/Xlib.h>
+  enum VK_KHR_xlib_surface = 1;
+  enum VK_KHR_XLIB_SURFACE_SPEC_VERSION   = 6;
+  enum VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface";
+
+  alias VkXlibSurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkXlibSurfaceCreateInfoKHR {
+    VkStructureType             sType ;
+    const(void)*                pNext ;
+    VkXlibSurfaceCreateFlagsKHR flags ;
+    Display*                    dpy   ;
+    Window                      window;
+  }
+
+  alias PFN_vkCreateXlibSurfaceKHR = nothrow 
+      VkResult function( VkInstance                         instance
+                       , const(VkXlibSurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*      pAllocator
+                       , VkSurfaceKHR*                      pSurface );
+  alias PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = nothrow 
+      VkBool32 function( VkPhysicalDevice physicalDevice
+                       , uint             queueFamilyIndex
+                       , Display*         dpy
+                       , VisualID         visualID);
 
 
-mixin template XLibProtocol() {}
+  version (none) {
+    VkResult vkCreateXlibSurfaceKHR( VkInstance                         instance
+                                   , const(VkXlibSurfaceCreateInfoKHR)* pCreateInfo
+                                   , const(VkAllocationCallbacks)*      pAllocator
+                                   , VkSurfaceKHR*                      pSurface );
+    VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice
+                                                          , uint queueFamilyIndex
+                                                          , Display* dpy
+                                                          , VisualID visualID );
+  }
+}
+
+mixin template MirProtocol() {
+  // #include <mir_toolkit/client_types.h>
+  enum VK_KHR_mir_surface = 1;
+  enum VK_KHR_MIR_SURFACE_SPEC_VERSION   = 4;
+  enum VK_KHR_MIR_SURFACE_EXTENSION_NAME = "VK_KHR_mir_surface";
+
+  alias VkMirSurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkMirSurfaceCreateInfoKHR {
+    VkStructureType            sType     ;
+    const(void)*               pNext     ;
+    VkMirSurfaceCreateFlagsKHR flags     ;
+    MirConnection*             connection;
+    MirSurface*                mirSurface;
+  }
 
 
-mixin template MirProtocol() {}
+  alias PFN_vkCreateMirSurfaceKHR = nothrow 
+      VkResult function( VkInstance                        instance
+                       , const(VkMirSurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*     pAllocator
+                       , VkSurfaceKHR*                     pSurface );
+  alias PFN_vkGetPhysicalDeviceMirPresentationSupportKHR = nothrow 
+      VkBool32 function( VkPhysicalDevice physicalDevice
+                       , uint queueFamilyIndex
+                       , MirConnection* connection);
 
 
-mixin template WaylandProtocol() {}
+  version (none) {
+    VkResult vkCreateMirSurfaceKHR( VkInstance                        instance
+                                  , const(VkMirSurfaceCreateInfoKHR)* pCreateInfo
+                                  , const(VkAllocationCallbacks)*     pAllocator
+                                  , VkSurfaceKHR*                     pSurface );
+    VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR( VkPhysicalDevice physicalDevice
+                                                         , uint             queueFamilyIndex
+                                                         , MirConnection*   connection );
+  }
+}
+
+mixin template WaylandProtocol() {
+  // #include <wayland-client.h>
+  enum VK_KHR_wayland_surface = 1;
+  enum VK_KHR_WAYLAND_SURFACE_SPEC_VERSION   = 5;
+  enum VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface";
+
+  alias VkWaylandSurfaceCreateFlagsKHR = VkFlags;
+
+  struct VkWaylandSurfaceCreateInfoKHR {
+    VkStructureType                sType  ;
+    const(void)*                   pNext  ;
+    VkWaylandSurfaceCreateFlagsKHR flags  ;
+    wl_display*                    display;
+    wl_surface*                    surface;
+  }
+
+  alias PFN_vkCreateWaylandSurfaceKHR = nothrow 
+      VkResult function( VkInstance                            instance
+                       , const(VkWaylandSurfaceCreateInfoKHR)* pCreateInfo
+                       , const(VkAllocationCallbacks)*         pAllocator
+                       , VkSurfaceKHR*                         pSurface );
+  alias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = nothrow 
+      VkBool32 function( VkPhysicalDevice physicalDevice
+                       , uint             queueFamilyIndex
+                       , wl_display*      display );
+
+  version (none) {
+    VkResult vkCreateWaylandSurfaceKHR( VkInstance                            instance
+                                      , const(VkWaylandSurfaceCreateInfoKHR)* pCreateInfo
+                                      , const(VkAllocationCallbacks)*         pAllocator
+                                      , VkSurfaceKHR*                         pSurface );
+    VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice
+                                                             , uint             queueFamilyIndex
+                                                             , wl_display*      display );
+  }
+}

+ 3 - 212
source/derelict/vulkan/types.d

@@ -21,45 +21,10 @@
 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 */
 */
 module derelict.vulkan.types;
 module derelict.vulkan.types;
-extern(System):
-
-enum VK_VERSION_1_0 = 1;
-//#include "vk_platform.h"
-
-auto VK_MAKE_VERSION(int major, int minor, int patch) {
-	return (major << 22) | (minor << 12) | patch;
-}
-
-// Vulkan API version supported by this file
-enum VK_API_VERSION = VK_MAKE_VERSION(1, 0, 3);
-
-auto VK_VERSION_MAJOR(uint ver) {
-	return ver >> 22;
-}
-
-auto VK_VERSION_MINOR(uint ver) {
-	return (ver >> 12) & 0x3ff;
-}
+import derelict.vulkan.base;
+import derelict.vulkan.system;
 
 
-auto VK_VERSION_PATCH(uint ver) {
-	return ver & 0xfff;
-}
-
-enum VK_NULL_HANDLE = null;
-
-private auto VK_DEFINE_HANDLE(string name) {
-	return "struct " ~ name ~ "_T; \n alias " ~ name ~ " = " ~ name ~ "_T*;";
-}
-
-private auto VK_DEFINE_NON_DISPATCHABLE_HANDLE(string name) {
-	// #if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-	return "struct " ~ name ~ "_T; \n alias " ~ name ~ " = " ~ name ~ "_T*;";
-}
-
-alias VkFlags = uint;
-alias VkBool32 = uint;
-alias VkDeviceSize = ulong;
-alias VkSampleMask = uint;
+extern(System):
 
 
 mixin(VK_DEFINE_HANDLE("VkInstance"));
 mixin(VK_DEFINE_HANDLE("VkInstance"));
 mixin(VK_DEFINE_HANDLE("VkPhysicalDevice"));
 mixin(VK_DEFINE_HANDLE("VkPhysicalDevice"));
@@ -87,22 +52,6 @@ mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDescriptorSet"));
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkFramebuffer"));
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkFramebuffer"));
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkCommandPool"));
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkCommandPool"));
 
 
-enum VK_LOD_CLAMP_NONE = 1000.0f;
-enum VK_REMAINING_MIP_LEVELS = (~0U);
-enum VK_REMAINING_ARRAY_LAYERS = (~0U);
-enum VK_WHOLE_SIZE = (~0UL);
-enum VK_ATTACHMENT_UNUSED = (~0U);
-enum VK_TRUE = 1;
-enum VK_FALSE = 0;
-enum VK_QUEUE_FAMILY_IGNORED = (~0U);
-enum VK_SUBPASS_EXTERNAL = (~0U);
-enum VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;
-enum VK_UUID_SIZE = 16;
-enum VK_MAX_MEMORY_TYPES = 32;
-enum VK_MAX_MEMORY_HEAPS = 16;
-enum VK_MAX_EXTENSION_NAME_SIZE = 256;
-enum VK_MAX_DESCRIPTION_SIZE = 256;
-
 enum VkPipelineCacheHeaderVersion {
 enum VkPipelineCacheHeaderVersion {
 	VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
 	VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
 	VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
 	VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
@@ -2897,164 +2846,6 @@ version (none) {
 	VkResult vkCreateSharedSwapchainsKHR(VkDevice device, uint swapchainCount, const(VkSwapchainCreateInfoKHR)* pCreateInfos, const(VkAllocationCallbacks)* pAllocator, VkSwapchainKHR* pSwapchains);
 	VkResult vkCreateSharedSwapchainsKHR(VkDevice device, uint swapchainCount, const(VkSwapchainCreateInfoKHR)* pCreateInfos, const(VkAllocationCallbacks)* pAllocator, VkSwapchainKHR* pSwapchains);
 }
 }
 
 
-version (VK_USE_PLATFORM_XLIB_KHR) {
-	enum VK_KHR_xlib_surface = 1;
-	//#include <X11/Xlib.h>
-
-	enum VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6;
-	enum VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface";
-
-	alias VkXlibSurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkXlibSurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkXlibSurfaceCreateFlagsKHR flags;
-		Display* dpy;
-		Window window;
-	}
-
-	alias PFN_vkCreateXlibSurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkXlibSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	alias PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, Display* dpy, VisualID visualID);
-
-	version (none) {
-		VkResult vkCreateXlibSurfaceKHR(VkInstance instance, const(VkXlibSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-		VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, Display* dpy, VisualID visualID);
-	}
-}
-
-version (VK_USE_PLATFORM_XCB_KHR) {
-	enum VK_KHR_xcb_surface = 1;
-	//#include <xcb/xcb.h>
-
-	enum VK_KHR_XCB_SURFACE_SPEC_VERSION = 6;
-	enum VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface";
-
-	alias VkXcbSurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkXcbSurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkXcbSurfaceCreateFlagsKHR flags;
-		xcb_connection_t* connection;
-		xcb_window_t window;
-	}
-
-	alias PFN_vkCreateXcbSurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkXcbSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	alias PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-
-	version (none) {
-		VkResult vkCreateXcbSurfaceKHR(VkInstance instance, const(VkXcbSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-		VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-	}
-}
-
-version (VK_USE_PLATFORM_WAYLAND_KHR) {
-	enum VK_KHR_wayland_surface = 1;
-	//#include <wayland-client.h>
-
-	enum VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 5;
-	enum VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface";
-
-	alias VkWaylandSurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkWaylandSurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkWaylandSurfaceCreateFlagsKHR flags;
-		wl_display* display;
-		wl_surface* surface;
-	}
-
-	alias PFN_vkCreateWaylandSurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkWaylandSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	alias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, wl_display* display);
-
-	version (none) {
-		VkResult vkCreateWaylandSurfaceKHR(VkInstance instance, const(VkWaylandSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-		VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, wl_display* display);
-	}
-}
-
-version (VK_USE_PLATFORM_MIR_KHR) {
-	enum VK_KHR_mir_surface = 1;
-	//#include <mir_toolkit/client_types.h>
-
-	enum VK_KHR_MIR_SURFACE_SPEC_VERSION = 4;
-	enum VK_KHR_MIR_SURFACE_EXTENSION_NAME = "VK_KHR_mir_surface";
-
-	alias VkMirSurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkMirSurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkMirSurfaceCreateFlagsKHR flags;
-		MirConnection* connection;
-		MirSurface* mirSurface;
-	}
-
-	alias PFN_vkCreateMirSurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkMirSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	alias PFN_vkGetPhysicalDeviceMirPresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, MirConnection* connection);
-
-	version (none) {
-		VkResult vkCreateMirSurfaceKHR(VkInstance instance, const(VkMirSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-		VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, MirConnection* connection);
-	}
-}
-
-version (VK_USE_PLATFORM_ANDROID_KHR) {
-	enum VK_KHR_android_surface = 1;
-	//#include <android/native_window.h>
-
-	enum VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6;
-	enum VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface";
-
-	alias VkAndroidSurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkAndroidSurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkAndroidSurfaceCreateFlagsKHR flags;
-		ANativeWindow* window;
-	}
-
-	alias PFN_vkCreateAndroidSurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkAndroidSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-	version (none) {
-		VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, const(VkAndroidSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	}
-}
-
-version (Windows) {
-    import core.sys.windows.windows;
-	enum VK_KHR_win32_surface = 1;
-
-	enum VK_KHR_WIN32_SURFACE_SPEC_VERSION = 5;
-	enum VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface";
-
-	alias VkWin32SurfaceCreateFlagsKHR = VkFlags;
-
-	struct VkWin32SurfaceCreateInfoKHR {
-		VkStructureType sType;
-		const(void)* pNext;
-		VkWin32SurfaceCreateFlagsKHR flags;
-		HINSTANCE hinstance;
-		HWND hwnd;
-	}
-
-	alias PFN_vkCreateWin32SurfaceKHR = nothrow VkResult function(VkInstance instance, const(VkWin32SurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-	alias PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex);
-
-	version (none) {
-		VkResult vkCreateWin32SurfaceKHR(VkInstance instance, const(VkWin32SurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface);
-
-		VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice, uint queueFamilyIndex);
-	}
-}
-
 enum VK_EXT_debug_report = 1;
 enum VK_EXT_debug_report = 1;
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDebugReportCallbackEXT"));
 mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDebugReportCallbackEXT"));