Browse Source

continued to port the api. not it at least compiles

Felix Hufnagel 9 năm trước cách đây
mục cha
commit
2c8495a4ac
3 tập tin đã thay đổi với 87 bổ sung119 xóa
  1. 16 56
      source/derelict/vulkan/functions.d
  2. 53 58
      source/derelict/vulkan/vk.d
  3. 18 5
      source/derelict/vulkan/vulkan.d

+ 16 - 56
source/derelict/vulkan/functions.d

@@ -29,7 +29,7 @@ module derelict.vulkan.functions;
 
 private
 {
-    import derelict.vulkan.types;
+    import derelict.vulkan.vk;
 }
 
 __gshared
@@ -85,61 +85,7 @@ __gshared
 	PFN_vkCreateEvent vkCreateEvent;
 	PFN_vkDestroyEvent vkDestroyEvent;
 	PFN_vkGetEventStatus vkGetEventStatus;
-	PFN_vkSetEvent vkSetEvent;
-	PFN_vkAllocationFunction vkAllocationFunction;
-	PFN_vkReallocationFunction vkReallocationFunction;
-	PFN_vkFreeFunction vkFreeFunction;
-	PFN_vkInternalAllocationNotification vkInternalAllocationNotification;
-	PFN_vkInternalFreeNotification vkInternalFreeNotification;
-	PFN_vkVoidFunction vkVoidFunction;
-	PFN_vkCreateInstance vkCreateInstance;
-	PFN_vkDestroyInstance vkDestroyInstance;
-	PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
-	PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
-	PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
-	PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
-	PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
-	PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
-	PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
-	PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
-	PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
-	PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
-	PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
-	PFN_vkCreateDevice vkCreateDevice;
-	PFN_vkDestroyDevice vkDestroyDevice;
-	PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
-	PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
-	PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
-	PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
-	PFN_vkGetDeviceQueue vkGetDeviceQueue;
-	PFN_vkQueueSubmit vkQueueSubmit;
-	PFN_vkQueueWaitIdle vkQueueWaitIdle;
-	PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
-	PFN_vkAllocateMemory vkAllocateMemory;
-	PFN_vkFreeMemory vkFreeMemory;
-	PFN_vkMapMemory vkMapMemory;
-	PFN_vkUnmapMemory vkUnmapMemory;
-	PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
-	PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
-	PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
-	PFN_vkBindBufferMemory vkBindBufferMemory;
-	PFN_vkBindImageMemory vkBindImageMemory;
-	PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
-	PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
-	PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
-	PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
-	PFN_vkQueueBindSparse vkQueueBindSparse;
-	PFN_vkCreateFence vkCreateFence;
-	PFN_vkDestroyFence vkDestroyFence;
-	PFN_vkResetFences vkResetFences;
-	PFN_vkGetFenceStatus vkGetFenceStatus;
-	PFN_vkWaitForFences vkWaitForFences;
-	PFN_vkCreateSemaphore vkCreateSemaphore;
-	PFN_vkDestroySemaphore vkDestroySemaphore;
-	PFN_vkCreateEvent vkCreateEvent;
-	PFN_vkDestroyEvent vkDestroyEvent;
-	PFN_vkGetEventStatus vkGetEventStatus;
-	PFN_vkSetEvent vkSetEvent;
+	PFN_vkSetEvent vkSetEvent;	
 	PFN_vkResetEvent vkResetEvent;
 	PFN_vkCreateQueryPool vkCreateQueryPool;
 	PFN_vkDestroyQueryPool vkDestroyQueryPool;
@@ -231,6 +177,8 @@ __gshared
 	PFN_vkCmdNextSubpass vkCmdNextSubpass;
 	PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
 	PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
+	
+	
 	PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
 	PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
 	PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
@@ -249,17 +197,29 @@ __gshared
 	PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
 	PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
 	PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
+	version(VK_USE_PLATFORM_XLIB_KHR) {
 	PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
 	PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
+	}
+	version(VK_USE_PLATFORM_XCB_KHR) {
 	PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
 	PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
+	}
+	version(VK_USE_PLATFORM_WAYLAND_KHR) {
 	PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
 	PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
+	}
+	version(VK_USE_PLATFORM_MIR_KHR) {
 	PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR;
 	PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR;
+	}
+	version(VK_USE_PLATFORM_ANDROID_KHR) {
 	PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
+	}
+	version(VK_USE_PLATFORM_WIN32_KHR) {
 	PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
 	PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
+	}
 	PFN_vkDebugReportCallbackEXT vkDebugReportCallbackEXT;
 	PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
 	PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;

+ 53 - 58
source/derelict/vulkan/vk.d

@@ -1,29 +1,24 @@
 /*
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
+** 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.vk;
 
@@ -39,7 +34,7 @@ auto VK_MAKE_VERSION(int major, int minor, int 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 er >> 22; }
+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; }
 
@@ -89,7 +84,7 @@ 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                     = (~0ULL);
+enum VK_WHOLE_SIZE                     = (~0UL);
 enum VK_ATTACHMENT_UNUSED              = (~0U);
 enum VK_TRUE                           = 1;
 enum VK_FALSE                          = 0;
@@ -1153,7 +1148,7 @@ alias PFN_vkFreeFunction = nothrow void function(
     void*                                       pUserData,
     void*                                       pMemory);
 
-alias PFN_vkInternalAllocationNotification = nothrow void function
+alias PFN_vkInternalAllocationNotification = nothrow void function(
     void*                                       pUserData,
     size_t                                      size,
     VkInternalAllocationType                    allocationType,
@@ -1165,7 +1160,7 @@ alias PFN_vkInternalFreeNotification = nothrow void function(
     VkInternalAllocationType                    allocationType,
     VkSystemAllocationScope                     allocationScope);
 
-alias PFN_vkVoidFunction = nothrow void function(void);
+alias PFN_vkVoidFunction = nothrow void function();
 
 struct VkApplicationInfo {
     VkStructureType    sType;
@@ -1183,9 +1178,9 @@ struct VkInstanceCreateInfo {
     VkInstanceCreateFlags       flags;
     const VkApplicationInfo*    pApplicationInfo;
     uint                    enabledLayerCount;
-    const char* const*          ppEnabledLayerNames;
+    const char**          ppEnabledLayerNames;
     uint                    enabledExtensionCount;
-    const char* const*          ppEnabledExtensionNames;
+    const char**          ppEnabledExtensionNames;
 }
 
 struct VkAllocationCallbacks {
@@ -1444,9 +1439,9 @@ struct VkDeviceCreateInfo {
     uint                           queueCreateInfoCount;
     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
     uint                           enabledLayerCount;
-    const char* const*                 ppEnabledLayerNames;
+    const char**                 ppEnabledLayerNames;
     uint                           enabledExtensionCount;
-    const char* const*                 ppEnabledExtensionNames;
+    const char**                 ppEnabledExtensionNames;
     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
 }
 
@@ -1705,7 +1700,7 @@ struct VkPipelineShaderStageCreateInfo {
     const void*                         pNext;
     VkPipelineShaderStageCreateFlags    flags;
     VkShaderStageFlagBits               stage;
-    VkShaderModule                      module;
+    VkShaderModule                      module_;
     const char*                         pName;
     const VkSpecializationInfo*         pSpecializationInfo;
 }
@@ -2253,7 +2248,7 @@ alias PFN_vkGetPhysicalDeviceQueueFamilyProperties = nothrow void function(VkPhy
 alias PFN_vkGetPhysicalDeviceMemoryProperties = nothrow void function(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
 alias PFN_vkGetInstanceProcAddr = nothrow PFN_vkVoidFunction function(VkInstance instance, const char* pName);
 alias PFN_vkGetDeviceProcAddr = nothrow PFN_vkVoidFunction function(VkDevice device, const char* pName);
-alias PFN_vkCreateDevice = nothrow VkResult (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
+alias PFN_vkCreateDevice = nothrow VkResult function(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
 alias PFN_vkDestroyDevice = nothrow void function(VkDevice device, const VkAllocationCallbacks* pAllocator);
 alias PFN_vkEnumerateInstanceExtensionProperties = nothrow VkResult function(const char* pLayerName, uint* pPropertyCount, VkExtensionProperties* pProperties);
 alias PFN_vkEnumerateDeviceExtensionProperties = nothrow VkResult function(VkPhysicalDevice physicalDevice, const char* pLayerName, uint* pPropertyCount, VkExtensionProperties* pProperties);
@@ -2263,7 +2258,7 @@ alias PFN_vkGetDeviceQueue = nothrow void function(VkDevice device, uint queueFa
 alias PFN_vkQueueSubmit = nothrow VkResult function(VkQueue queue, uint submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
 alias PFN_vkQueueWaitIdle = nothrow VkResult function(VkQueue queue);
 alias PFN_vkDeviceWaitIdle = nothrow VkResult function(VkDevice device);
-alias PFN_vkAllocateMemory = nothrow VkResult functionVkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
+alias PFN_vkAllocateMemory = nothrow VkResult function(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
 alias PFN_vkFreeMemory = nothrow void function(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
 alias PFN_vkMapMemory = nothrow VkResult function(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
 alias PFN_vkUnmapMemory = nothrow void function(VkDevice device, VkDeviceMemory memory);
@@ -2340,7 +2335,7 @@ alias PFN_vkCmdSetViewport = nothrow void function(VkCommandBuffer commandBuffer
 alias PFN_vkCmdSetScissor = nothrow void function(VkCommandBuffer commandBuffer, uint firstScissor, uint scissorCount, const VkRect2D* pScissors);
 alias PFN_vkCmdSetLineWidth = nothrow void function(VkCommandBuffer commandBuffer, float lineWidth);
 alias PFN_vkCmdSetDepthBias = nothrow void function(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-alias PFN_vkCmdSetBlendConstants = nothrow void function(VkCommandBuffer commandBuffer, const float blendConstants[4]);
+alias PFN_vkCmdSetBlendConstants = nothrow void function(VkCommandBuffer commandBuffer, const float[4] blendConstants);
 alias PFN_vkCmdSetDepthBounds = nothrow void function(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
 alias PFN_vkCmdSetStencilCompareMask = nothrow void function(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint compareMask);
 alias PFN_vkCmdSetStencilWriteMask = nothrow void function(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint writeMask);
@@ -2380,7 +2375,7 @@ alias PFN_vkCmdNextSubpass = nothrow void function(VkCommandBuffer commandBuffer
 alias PFN_vkCmdEndRenderPass = nothrow void function(VkCommandBuffer commandBuffer);
 alias PFN_vkCmdExecuteCommands = nothrow void function(VkCommandBuffer commandBuffer, uint commandBufferCount, const VkCommandBuffer* pCommandBuffers);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateInstance(
     const VkInstanceCreateInfo*                 pCreateInfo,
     const VkAllocationCallbacks*                pAllocator,
@@ -2912,7 +2907,7 @@ extern(C) void vkCmdSetDepthBias(
 
 extern(C) void vkCmdSetBlendConstants(
     VkCommandBuffer                             commandBuffer,
-    const float                                 blendConstants[4]);
+    const float[4]                                 blendConstants);
 
 extern(C) void vkCmdSetDepthBounds(
     VkCommandBuffer                             commandBuffer,
@@ -3254,7 +3249,7 @@ alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = nothrow VkResult function(
 alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = nothrow VkResult function(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
 alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = nothrow VkResult function(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint* pPresentModeCount, VkPresentModeKHR* pPresentModes);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) void vkDestroySurfaceKHR(
     VkInstance                                  instance,
     VkSurfaceKHR                                surface,
@@ -3285,7 +3280,7 @@ extern(C) VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
 }
 
 enum VK_KHR_swapchain = 1;
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
+mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkSwapchainKHR"));
 
 enum VK_KHR_SWAPCHAIN_SPEC_VERSION = 67;
 enum VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain";
@@ -3331,7 +3326,7 @@ alias PFN_vkGetSwapchainImagesKHR = nothrow VkResult function(VkDevice device, V
 alias PFN_vkAcquireNextImageKHR = nothrow VkResult function(VkDevice device, VkSwapchainKHR swapchain, ulong timeout, VkSemaphore semaphore, VkFence fence, uint* pImageIndex);
 alias PFN_vkQueuePresentKHR = nothrow VkResult function(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateSwapchainKHR(
     VkDevice                                    device,
     const VkSwapchainCreateInfoKHR*             pCreateInfo,
@@ -3363,8 +3358,8 @@ extern(C) VkResult vkQueuePresentKHR(
 }
 
 enum VK_KHR_display = 1;
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
+mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDisplayKHR"));
+mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDisplayModeKHR"));
 
 enum VK_KHR_DISPLAY_SPEC_VERSION = 21;
 enum VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display";
@@ -3447,7 +3442,7 @@ alias PFN_vkCreateDisplayModeKHR = nothrow VkResult function(VkPhysicalDevice ph
 alias PFN_vkGetDisplayPlaneCapabilitiesKHR = nothrow VkResult function(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
 alias PFN_vkCreateDisplayPlaneSurfaceKHR = nothrow VkResult function(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
     VkPhysicalDevice                            physicalDevice,
     uint*                                   pPropertyCount,
@@ -3505,7 +3500,7 @@ struct VkDisplayPresentInfoKHR {
 
 alias PFN_vkCreateSharedSwapchainsKHR = nothrow VkResult function(VkDevice device, uint swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateSharedSwapchainsKHR(
     VkDevice                                    device,
     uint                                    swapchainCount,
@@ -3535,7 +3530,7 @@ struct VkXlibSurfaceCreateInfoKHR {
 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(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateXlibSurfaceKHR(
     VkInstance                                  instance,
     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
@@ -3571,7 +3566,7 @@ struct VkXcbSurfaceCreateInfoKHR {
 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(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateXcbSurfaceKHR(
     VkInstance                                  instance,
     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
@@ -3599,15 +3594,15 @@ struct VkWaylandSurfaceCreateInfoKHR {
     VkStructureType                   sType;
     const void*                       pNext;
     VkWaylandSurfaceCreateFlagsKHR    flags;
-    struct wl_display*                display;
-    struct wl_surface*                surface;
+    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, struct wl_display* display);
+alias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = nothrow VkBool32 function(VkPhysicalDevice physicalDevice, uint queueFamilyIndex, wl_display* display);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateWaylandSurfaceKHR(
     VkInstance                                  instance,
     const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
@@ -3617,7 +3612,7 @@ extern(C) VkResult vkCreateWaylandSurfaceKHR(
 extern(C) VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
     VkPhysicalDevice                            physicalDevice,
     uint                                    queueFamilyIndex,
-    struct wl_display*                          display);
+    wl_display*                          display);
 }
 }
 
@@ -3642,7 +3637,7 @@ struct VkMirSurfaceCreateInfoKHR {
 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(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateMirSurfaceKHR(
     VkInstance                                  instance,
     const VkMirSurfaceCreateInfoKHR*            pCreateInfo,
@@ -3675,7 +3670,7 @@ struct VkAndroidSurfaceCreateInfoKHR {
 
 alias PFN_vkCreateAndroidSurfaceKHR = nothrow VkResult function(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateAndroidSurfaceKHR(
     VkInstance                                  instance,
     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
@@ -3705,7 +3700,7 @@ struct VkWin32SurfaceCreateInfoKHR {
 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(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateWin32SurfaceKHR(
     VkInstance                                  instance,
     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
@@ -3719,7 +3714,7 @@ extern(C) VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(
 }
 
 enum VK_EXT_debug_report = 1;
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
+mixin(VK_DEFINE_NON_DISPATCHABLE_HANDLE("VkDebugReportCallbackEXT"));
 
 enum VK_EXT_DEBUG_REPORT_SPEC_VERSION = 1;
 enum VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report";
@@ -3797,7 +3792,7 @@ alias PFN_vkCreateDebugReportCallbackEXT = nothrow VkResult function(VkInstance
 alias PFN_vkDestroyDebugReportCallbackEXT = nothrow void function(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
 alias PFN_vkDebugReportMessageEXT = nothrow void function(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, ulong object, size_t location, int messageCode, const char* pLayerPrefix, const char* pMessage);
 
-version(VK_NO_PROTOTYPES){} else {
+version(none) {
 extern(C) VkResult vkCreateDebugReportCallbackEXT(
     VkInstance                                  instance,
     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,

+ 18 - 5
source/derelict/vulkan/vulkan.d

@@ -25,7 +25,7 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.
 
 */
-module derelict.vulkan.escapi;
+module derelict.vulkan.vulkan;
 
 public
 {
@@ -48,7 +48,7 @@ private
         static assert(0, "Need to implement vulkan libNames for this operating system.");
 }
 
-class DerelictESCAPILoader : SharedLibLoader
+class DerelictVulkanLoader : SharedLibLoader
 {
     protected
     {
@@ -249,6 +249,7 @@ class DerelictESCAPILoader : SharedLibLoader
 			bindFunc(cast(void**)&vkCmdNextSubpass, "vkCmdNextSubpass");
 			bindFunc(cast(void**)&vkCmdEndRenderPass, "vkCmdEndRenderPass");
 			bindFunc(cast(void**)&vkCmdExecuteCommands, "vkCmdExecuteCommands");
+			
 			bindFunc(cast(void**)&vkDestroySurfaceKHR, "vkDestroySurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceSurfaceSupportKHR, "vkGetPhysicalDeviceSurfaceSupportKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceSurfaceCapabilitiesKHR, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
@@ -267,17 +268,29 @@ class DerelictESCAPILoader : SharedLibLoader
 			bindFunc(cast(void**)&vkGetDisplayPlaneCapabilitiesKHR, "vkGetDisplayPlaneCapabilitiesKHR");
 			bindFunc(cast(void**)&vkCreateDisplayPlaneSurfaceKHR, "vkCreateDisplayPlaneSurfaceKHR");
 			bindFunc(cast(void**)&vkCreateSharedSwapchainsKHR, "vkCreateSharedSwapchainsKHR");
+			version(VK_USE_PLATFORM_XLIB_KHR) {
 			bindFunc(cast(void**)&vkCreateXlibSurfaceKHR, "vkCreateXlibSurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceXlibPresentationSupportKHR, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
+			}
+			version(VK_USE_PLATFORM_XCB_KHR) {
 			bindFunc(cast(void**)&vkCreateXcbSurfaceKHR, "vkCreateXcbSurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceXcbPresentationSupportKHR, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
+			}
+			version(VK_USE_PLATFORM_WAYLAND_KHR) {
 			bindFunc(cast(void**)&vkCreateWaylandSurfaceKHR, "vkCreateWaylandSurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceWaylandPresentationSupportKHR, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+			}
+			version(VK_USE_PLATFORM_MIR_KHR) {
 			bindFunc(cast(void**)&vkCreateMirSurfaceKHR, "vkCreateMirSurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceMirPresentationSupportKHR, "vkGetPhysicalDeviceMirPresentationSupportKHR");
+			}
+			version(VK_USE_PLATFORM_ANDROID_KHR) {
 			bindFunc(cast(void**)&vkCreateAndroidSurfaceKHR, "vkCreateAndroidSurfaceKHR");
+			}
+			version(VK_USE_PLATFORM_WIN32_KHR) {
 			bindFunc(cast(void**)&vkCreateWin32SurfaceKHR, "vkCreateWin32SurfaceKHR");
 			bindFunc(cast(void**)&vkGetPhysicalDeviceWin32PresentationSupportKHR, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
+			}
 			bindFunc(cast(void**)&vkDebugReportCallbackEXT, "vkDebugReportCallbackEXT");
 			bindFunc(cast(void**)&vkCreateDebugReportCallbackEXT, "vkCreateDebugReportCallbackEXT");
 			bindFunc(cast(void**)&vkDestroyDebugReportCallbackEXT, "vkDestroyDebugReportCallbackEXT");
@@ -293,14 +306,14 @@ class DerelictESCAPILoader : SharedLibLoader
     }
 }
 
-__gshared DerelictESCAPILoader DerelictESCAPI;
+__gshared DerelictVulkanLoader DerelictVulkan;
 
 shared static this()
 {
-    DerelictESCAPI = new DerelictESCAPILoader();
+    DerelictVulkan = new DerelictVulkanLoader();
 }
 
 shared static ~this()
 {
-    DerelictESCAPI.unload();
+    DerelictVulkan.unload();
 }