/* 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. */ module derelict.vulkan.escapi; public { import derelict.vulkan.vk; import derelict.vulkan.functions; } private { import derelict.util.loader; import derelict.util.system; static if(Derelict_OS_Windows) enum libNames = "vulkan.dll"; //~ else static if(Derelict_OS_Mac) //~ enum libNames = "libglfw.3.dylib"; //~ else static if(Derelict_OS_Posix) //~ enum libNames = "libglfw3.so,libglfw.so.3,/usr/local/lib/libglfw3.so,/usr/local/lib/libglfw.so.3"; else static assert(0, "Need to implement vulkan libNames for this operating system."); } class DerelictESCAPILoader : SharedLibLoader { protected { override void loadSymbols() { bindFunc(cast(void**)&vkAllocationFunction, "vkAllocationFunction"); bindFunc(cast(void**)&vkReallocationFunction, "vkReallocationFunction"); bindFunc(cast(void**)&vkFreeFunction, "vkFreeFunction"); bindFunc(cast(void**)&vkInternalAllocationNotification, "vkInternalAllocationNotification"); bindFunc(cast(void**)&vkInternalFreeNotification, "vkInternalFreeNotification"); bindFunc(cast(void**)&vkVoidFunction, "vkVoidFunction"); bindFunc(cast(void**)&vkCreateInstance, "vkCreateInstance"); bindFunc(cast(void**)&vkDestroyInstance, "vkDestroyInstance"); bindFunc(cast(void**)&vkEnumeratePhysicalDevices, "vkEnumeratePhysicalDevices"); bindFunc(cast(void**)&vkGetPhysicalDeviceFeatures, "vkGetPhysicalDeviceFeatures"); bindFunc(cast(void**)&vkGetPhysicalDeviceFormatProperties, "vkGetPhysicalDeviceFormatProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceImageFormatProperties, "vkGetPhysicalDeviceImageFormatProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceProperties, "vkGetPhysicalDeviceProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceQueueFamilyProperties, "vkGetPhysicalDeviceQueueFamilyProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceMemoryProperties, "vkGetPhysicalDeviceMemoryProperties"); bindFunc(cast(void**)&vkGetInstanceProcAddr, "vkGetInstanceProcAddr"); bindFunc(cast(void**)&vkGetDeviceProcAddr, "vkGetDeviceProcAddr"); bindFunc(cast(void**)&vkCreateDevice, "vkCreateDevice"); bindFunc(cast(void**)&vkDestroyDevice, "vkDestroyDevice"); bindFunc(cast(void**)&vkEnumerateInstanceExtensionProperties, "vkEnumerateInstanceExtensionProperties"); bindFunc(cast(void**)&vkEnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties"); bindFunc(cast(void**)&vkEnumerateInstanceLayerProperties, "vkEnumerateInstanceLayerProperties"); bindFunc(cast(void**)&vkEnumerateDeviceLayerProperties, "vkEnumerateDeviceLayerProperties"); bindFunc(cast(void**)&vkGetDeviceQueue, "vkGetDeviceQueue"); bindFunc(cast(void**)&vkQueueSubmit, "vkQueueSubmit"); bindFunc(cast(void**)&vkQueueWaitIdle, "vkQueueWaitIdle"); bindFunc(cast(void**)&vkDeviceWaitIdle, "vkDeviceWaitIdle"); bindFunc(cast(void**)&vkAllocateMemory, "vkAllocateMemory"); bindFunc(cast(void**)&vkFreeMemory, "vkFreeMemory"); bindFunc(cast(void**)&vkMapMemory, "vkMapMemory"); bindFunc(cast(void**)&vkUnmapMemory, "vkUnmapMemory"); bindFunc(cast(void**)&vkFlushMappedMemoryRanges, "vkFlushMappedMemoryRanges"); bindFunc(cast(void**)&vkInvalidateMappedMemoryRanges, "vkInvalidateMappedMemoryRanges"); bindFunc(cast(void**)&vkGetDeviceMemoryCommitment, "vkGetDeviceMemoryCommitment"); bindFunc(cast(void**)&vkBindBufferMemory, "vkBindBufferMemory"); bindFunc(cast(void**)&vkBindImageMemory, "vkBindImageMemory"); bindFunc(cast(void**)&vkGetBufferMemoryRequirements, "vkGetBufferMemoryRequirements"); bindFunc(cast(void**)&vkGetImageMemoryRequirements, "vkGetImageMemoryRequirements"); bindFunc(cast(void**)&vkGetImageSparseMemoryRequirements, "vkGetImageSparseMemoryRequirements"); bindFunc(cast(void**)&vkGetPhysicalDeviceSparseImageFormatProperties, "vkGetPhysicalDeviceSparseImageFormatProperties"); bindFunc(cast(void**)&vkQueueBindSparse, "vkQueueBindSparse"); bindFunc(cast(void**)&vkCreateFence, "vkCreateFence"); bindFunc(cast(void**)&vkDestroyFence, "vkDestroyFence"); bindFunc(cast(void**)&vkResetFences, "vkResetFences"); bindFunc(cast(void**)&vkGetFenceStatus, "vkGetFenceStatus"); bindFunc(cast(void**)&vkWaitForFences, "vkWaitForFences"); bindFunc(cast(void**)&vkCreateSemaphore, "vkCreateSemaphore"); bindFunc(cast(void**)&vkDestroySemaphore, "vkDestroySemaphore"); bindFunc(cast(void**)&vkCreateEvent, "vkCreateEvent"); bindFunc(cast(void**)&vkDestroyEvent, "vkDestroyEvent"); bindFunc(cast(void**)&vkGetEventStatus, "vkGetEventStatus"); bindFunc(cast(void**)&vkSetEvent, "vkSetEvent"); bindFunc(cast(void**)&vkAllocationFunction, "vkAllocationFunction"); bindFunc(cast(void**)&vkReallocationFunction, "vkReallocationFunction"); bindFunc(cast(void**)&vkFreeFunction, "vkFreeFunction"); bindFunc(cast(void**)&vkInternalAllocationNotification, "vkInternalAllocationNotification"); bindFunc(cast(void**)&vkInternalFreeNotification, "vkInternalFreeNotification"); bindFunc(cast(void**)&vkVoidFunction, "vkVoidFunction"); bindFunc(cast(void**)&vkCreateInstance, "vkCreateInstance"); bindFunc(cast(void**)&vkDestroyInstance, "vkDestroyInstance"); bindFunc(cast(void**)&vkEnumeratePhysicalDevices, "vkEnumeratePhysicalDevices"); bindFunc(cast(void**)&vkGetPhysicalDeviceFeatures, "vkGetPhysicalDeviceFeatures"); bindFunc(cast(void**)&vkGetPhysicalDeviceFormatProperties, "vkGetPhysicalDeviceFormatProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceImageFormatProperties, "vkGetPhysicalDeviceImageFormatProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceProperties, "vkGetPhysicalDeviceProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceQueueFamilyProperties, "vkGetPhysicalDeviceQueueFamilyProperties"); bindFunc(cast(void**)&vkGetPhysicalDeviceMemoryProperties, "vkGetPhysicalDeviceMemoryProperties"); bindFunc(cast(void**)&vkGetInstanceProcAddr, "vkGetInstanceProcAddr"); bindFunc(cast(void**)&vkGetDeviceProcAddr, "vkGetDeviceProcAddr"); bindFunc(cast(void**)&vkCreateDevice, "vkCreateDevice"); bindFunc(cast(void**)&vkDestroyDevice, "vkDestroyDevice"); bindFunc(cast(void**)&vkEnumerateInstanceExtensionProperties, "vkEnumerateInstanceExtensionProperties"); bindFunc(cast(void**)&vkEnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties"); bindFunc(cast(void**)&vkEnumerateInstanceLayerProperties, "vkEnumerateInstanceLayerProperties"); bindFunc(cast(void**)&vkEnumerateDeviceLayerProperties, "vkEnumerateDeviceLayerProperties"); bindFunc(cast(void**)&vkGetDeviceQueue, "vkGetDeviceQueue"); bindFunc(cast(void**)&vkQueueSubmit, "vkQueueSubmit"); bindFunc(cast(void**)&vkQueueWaitIdle, "vkQueueWaitIdle"); bindFunc(cast(void**)&vkDeviceWaitIdle, "vkDeviceWaitIdle"); bindFunc(cast(void**)&vkAllocateMemory, "vkAllocateMemory"); bindFunc(cast(void**)&vkFreeMemory, "vkFreeMemory"); bindFunc(cast(void**)&vkMapMemory, "vkMapMemory"); bindFunc(cast(void**)&vkUnmapMemory, "vkUnmapMemory"); bindFunc(cast(void**)&vkFlushMappedMemoryRanges, "vkFlushMappedMemoryRanges"); bindFunc(cast(void**)&vkInvalidateMappedMemoryRanges, "vkInvalidateMappedMemoryRanges"); bindFunc(cast(void**)&vkGetDeviceMemoryCommitment, "vkGetDeviceMemoryCommitment"); bindFunc(cast(void**)&vkBindBufferMemory, "vkBindBufferMemory"); bindFunc(cast(void**)&vkBindImageMemory, "vkBindImageMemory"); bindFunc(cast(void**)&vkGetBufferMemoryRequirements, "vkGetBufferMemoryRequirements"); bindFunc(cast(void**)&vkGetImageMemoryRequirements, "vkGetImageMemoryRequirements"); bindFunc(cast(void**)&vkGetImageSparseMemoryRequirements, "vkGetImageSparseMemoryRequirements"); bindFunc(cast(void**)&vkGetPhysicalDeviceSparseImageFormatProperties, "vkGetPhysicalDeviceSparseImageFormatProperties"); bindFunc(cast(void**)&vkQueueBindSparse, "vkQueueBindSparse"); bindFunc(cast(void**)&vkCreateFence, "vkCreateFence"); bindFunc(cast(void**)&vkDestroyFence, "vkDestroyFence"); bindFunc(cast(void**)&vkResetFences, "vkResetFences"); bindFunc(cast(void**)&vkGetFenceStatus, "vkGetFenceStatus"); bindFunc(cast(void**)&vkWaitForFences, "vkWaitForFences"); bindFunc(cast(void**)&vkCreateSemaphore, "vkCreateSemaphore"); bindFunc(cast(void**)&vkDestroySemaphore, "vkDestroySemaphore"); bindFunc(cast(void**)&vkCreateEvent, "vkCreateEvent"); bindFunc(cast(void**)&vkDestroyEvent, "vkDestroyEvent"); bindFunc(cast(void**)&vkGetEventStatus, "vkGetEventStatus"); bindFunc(cast(void**)&vkSetEvent, "vkSetEvent"); bindFunc(cast(void**)&vkResetEvent, "vkResetEvent"); bindFunc(cast(void**)&vkCreateQueryPool, "vkCreateQueryPool"); bindFunc(cast(void**)&vkDestroyQueryPool, "vkDestroyQueryPool"); bindFunc(cast(void**)&vkGetQueryPoolResults, "vkGetQueryPoolResults"); bindFunc(cast(void**)&vkCreateBuffer, "vkCreateBuffer"); bindFunc(cast(void**)&vkDestroyBuffer, "vkDestroyBuffer"); bindFunc(cast(void**)&vkCreateBufferView, "vkCreateBufferView"); bindFunc(cast(void**)&vkDestroyBufferView, "vkDestroyBufferView"); bindFunc(cast(void**)&vkCreateImage, "vkCreateImage"); bindFunc(cast(void**)&vkDestroyImage, "vkDestroyImage"); bindFunc(cast(void**)&vkGetImageSubresourceLayout, "vkGetImageSubresourceLayout"); bindFunc(cast(void**)&vkCreateImageView, "vkCreateImageView"); bindFunc(cast(void**)&vkDestroyImageView, "vkDestroyImageView"); bindFunc(cast(void**)&vkCreateShaderModule, "vkCreateShaderModule"); bindFunc(cast(void**)&vkDestroyShaderModule, "vkDestroyShaderModule"); bindFunc(cast(void**)&vkCreatePipelineCache, "vkCreatePipelineCache"); bindFunc(cast(void**)&vkDestroyPipelineCache, "vkDestroyPipelineCache"); bindFunc(cast(void**)&vkGetPipelineCacheData, "vkGetPipelineCacheData"); bindFunc(cast(void**)&vkMergePipelineCaches, "vkMergePipelineCaches"); bindFunc(cast(void**)&vkCreateGraphicsPipelines, "vkCreateGraphicsPipelines"); bindFunc(cast(void**)&vkCreateComputePipelines, "vkCreateComputePipelines"); bindFunc(cast(void**)&vkDestroyPipeline, "vkDestroyPipeline"); bindFunc(cast(void**)&vkCreatePipelineLayout, "vkCreatePipelineLayout"); bindFunc(cast(void**)&vkDestroyPipelineLayout, "vkDestroyPipelineLayout"); bindFunc(cast(void**)&vkCreateSampler, "vkCreateSampler"); bindFunc(cast(void**)&vkDestroySampler, "vkDestroySampler"); bindFunc(cast(void**)&vkCreateDescriptorSetLayout, "vkCreateDescriptorSetLayout"); bindFunc(cast(void**)&vkDestroyDescriptorSetLayout, "vkDestroyDescriptorSetLayout"); bindFunc(cast(void**)&vkCreateDescriptorPool, "vkCreateDescriptorPool"); bindFunc(cast(void**)&vkDestroyDescriptorPool, "vkDestroyDescriptorPool"); bindFunc(cast(void**)&vkResetDescriptorPool, "vkResetDescriptorPool"); bindFunc(cast(void**)&vkAllocateDescriptorSets, "vkAllocateDescriptorSets"); bindFunc(cast(void**)&vkFreeDescriptorSets, "vkFreeDescriptorSets"); bindFunc(cast(void**)&vkUpdateDescriptorSets, "vkUpdateDescriptorSets"); bindFunc(cast(void**)&vkCreateFramebuffer, "vkCreateFramebuffer"); bindFunc(cast(void**)&vkDestroyFramebuffer, "vkDestroyFramebuffer"); bindFunc(cast(void**)&vkCreateRenderPass, "vkCreateRenderPass"); bindFunc(cast(void**)&vkDestroyRenderPass, "vkDestroyRenderPass"); bindFunc(cast(void**)&vkGetRenderAreaGranularity, "vkGetRenderAreaGranularity"); bindFunc(cast(void**)&vkCreateCommandPool, "vkCreateCommandPool"); bindFunc(cast(void**)&vkDestroyCommandPool, "vkDestroyCommandPool"); bindFunc(cast(void**)&vkResetCommandPool, "vkResetCommandPool"); bindFunc(cast(void**)&vkAllocateCommandBuffers, "vkAllocateCommandBuffers"); bindFunc(cast(void**)&vkFreeCommandBuffers, "vkFreeCommandBuffers"); bindFunc(cast(void**)&vkBeginCommandBuffer, "vkBeginCommandBuffer"); bindFunc(cast(void**)&vkEndCommandBuffer, "vkEndCommandBuffer"); bindFunc(cast(void**)&vkResetCommandBuffer, "vkResetCommandBuffer"); bindFunc(cast(void**)&vkCmdBindPipeline, "vkCmdBindPipeline"); bindFunc(cast(void**)&vkCmdSetViewport, "vkCmdSetViewport"); bindFunc(cast(void**)&vkCmdSetScissor, "vkCmdSetScissor"); bindFunc(cast(void**)&vkCmdSetLineWidth, "vkCmdSetLineWidth"); bindFunc(cast(void**)&vkCmdSetDepthBias, "vkCmdSetDepthBias"); bindFunc(cast(void**)&vkCmdSetBlendConstants, "vkCmdSetBlendConstants"); bindFunc(cast(void**)&vkCmdSetDepthBounds, "vkCmdSetDepthBounds"); bindFunc(cast(void**)&vkCmdSetStencilCompareMask, "vkCmdSetStencilCompareMask"); bindFunc(cast(void**)&vkCmdSetStencilWriteMask, "vkCmdSetStencilWriteMask"); bindFunc(cast(void**)&vkCmdSetStencilReference, "vkCmdSetStencilReference"); bindFunc(cast(void**)&vkCmdBindDescriptorSets, "vkCmdBindDescriptorSets"); bindFunc(cast(void**)&vkCmdBindIndexBuffer, "vkCmdBindIndexBuffer"); bindFunc(cast(void**)&vkCmdBindVertexBuffers, "vkCmdBindVertexBuffers"); bindFunc(cast(void**)&vkCmdDraw, "vkCmdDraw"); bindFunc(cast(void**)&vkCmdDrawIndexed, "vkCmdDrawIndexed"); bindFunc(cast(void**)&vkCmdDrawIndirect, "vkCmdDrawIndirect"); bindFunc(cast(void**)&vkCmdDrawIndexedIndirect, "vkCmdDrawIndexedIndirect"); bindFunc(cast(void**)&vkCmdDispatch, "vkCmdDispatch"); bindFunc(cast(void**)&vkCmdDispatchIndirect, "vkCmdDispatchIndirect"); bindFunc(cast(void**)&vkCmdCopyBuffer, "vkCmdCopyBuffer"); bindFunc(cast(void**)&vkCmdCopyImage, "vkCmdCopyImage"); bindFunc(cast(void**)&vkCmdBlitImage, "vkCmdBlitImage"); bindFunc(cast(void**)&vkCmdCopyBufferToImage, "vkCmdCopyBufferToImage"); bindFunc(cast(void**)&vkCmdCopyImageToBuffer, "vkCmdCopyImageToBuffer"); bindFunc(cast(void**)&vkCmdUpdateBuffer, "vkCmdUpdateBuffer"); bindFunc(cast(void**)&vkCmdFillBuffer, "vkCmdFillBuffer"); bindFunc(cast(void**)&vkCmdClearColorImage, "vkCmdClearColorImage"); bindFunc(cast(void**)&vkCmdClearDepthStencilImage, "vkCmdClearDepthStencilImage"); bindFunc(cast(void**)&vkCmdClearAttachments, "vkCmdClearAttachments"); bindFunc(cast(void**)&vkCmdResolveImage, "vkCmdResolveImage"); bindFunc(cast(void**)&vkCmdSetEvent, "vkCmdSetEvent"); bindFunc(cast(void**)&vkCmdResetEvent, "vkCmdResetEvent"); bindFunc(cast(void**)&vkCmdWaitEvents, "vkCmdWaitEvents"); bindFunc(cast(void**)&vkCmdPipelineBarrier, "vkCmdPipelineBarrier"); bindFunc(cast(void**)&vkCmdBeginQuery, "vkCmdBeginQuery"); bindFunc(cast(void**)&vkCmdEndQuery, "vkCmdEndQuery"); bindFunc(cast(void**)&vkCmdResetQueryPool, "vkCmdResetQueryPool"); bindFunc(cast(void**)&vkCmdWriteTimestamp, "vkCmdWriteTimestamp"); bindFunc(cast(void**)&vkCmdCopyQueryPoolResults, "vkCmdCopyQueryPoolResults"); bindFunc(cast(void**)&vkCmdPushConstants, "vkCmdPushConstants"); bindFunc(cast(void**)&vkCmdBeginRenderPass, "vkCmdBeginRenderPass"); 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"); bindFunc(cast(void**)&vkGetPhysicalDeviceSurfaceFormatsKHR, "vkGetPhysicalDeviceSurfaceFormatsKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceSurfacePresentModesKHR, "vkGetPhysicalDeviceSurfacePresentModesKHR"); bindFunc(cast(void**)&vkCreateSwapchainKHR, "vkCreateSwapchainKHR"); bindFunc(cast(void**)&vkDestroySwapchainKHR, "vkDestroySwapchainKHR"); bindFunc(cast(void**)&vkGetSwapchainImagesKHR, "vkGetSwapchainImagesKHR"); bindFunc(cast(void**)&vkAcquireNextImageKHR, "vkAcquireNextImageKHR"); bindFunc(cast(void**)&vkQueuePresentKHR, "vkQueuePresentKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceDisplayPropertiesKHR, "vkGetPhysicalDeviceDisplayPropertiesKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceDisplayPlanePropertiesKHR, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); bindFunc(cast(void**)&vkGetDisplayPlaneSupportedDisplaysKHR, "vkGetDisplayPlaneSupportedDisplaysKHR"); bindFunc(cast(void**)&vkGetDisplayModePropertiesKHR, "vkGetDisplayModePropertiesKHR"); bindFunc(cast(void**)&vkCreateDisplayModeKHR, "vkCreateDisplayModeKHR"); bindFunc(cast(void**)&vkGetDisplayPlaneCapabilitiesKHR, "vkGetDisplayPlaneCapabilitiesKHR"); bindFunc(cast(void**)&vkCreateDisplayPlaneSurfaceKHR, "vkCreateDisplayPlaneSurfaceKHR"); bindFunc(cast(void**)&vkCreateSharedSwapchainsKHR, "vkCreateSharedSwapchainsKHR"); bindFunc(cast(void**)&vkCreateXlibSurfaceKHR, "vkCreateXlibSurfaceKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceXlibPresentationSupportKHR, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); bindFunc(cast(void**)&vkCreateXcbSurfaceKHR, "vkCreateXcbSurfaceKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceXcbPresentationSupportKHR, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); bindFunc(cast(void**)&vkCreateWaylandSurfaceKHR, "vkCreateWaylandSurfaceKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceWaylandPresentationSupportKHR, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); bindFunc(cast(void**)&vkCreateMirSurfaceKHR, "vkCreateMirSurfaceKHR"); bindFunc(cast(void**)&vkGetPhysicalDeviceMirPresentationSupportKHR, "vkGetPhysicalDeviceMirPresentationSupportKHR"); bindFunc(cast(void**)&vkCreateAndroidSurfaceKHR, "vkCreateAndroidSurfaceKHR"); 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"); bindFunc(cast(void**)&vkDebugReportMessageEXT, "vkDebugReportMessageEXT"); } } public { this() { super(libNames); } } } __gshared DerelictESCAPILoader DerelictESCAPI; shared static this() { DerelictESCAPI = new DerelictESCAPILoader(); } shared static ~this() { DerelictESCAPI.unload(); }