1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */
28 module derelict.vulkan.functions;
29 
30 private {
31 	import derelict.vulkan.vk;
32 }
33 
34 __gshared {
35 	PFN_vkAllocationFunction vkAllocationFunction;
36 	PFN_vkReallocationFunction vkReallocationFunction;
37 	PFN_vkFreeFunction vkFreeFunction;
38 	PFN_vkInternalAllocationNotification vkInternalAllocationNotification;
39 	PFN_vkInternalFreeNotification vkInternalFreeNotification;
40 	PFN_vkVoidFunction vkVoidFunction;
41 	PFN_vkCreateInstance vkCreateInstance;
42 	PFN_vkDestroyInstance vkDestroyInstance;
43 	PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
44 	PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
45 	PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
46 	PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
47 	PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
48 	PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
49 	PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
50 	PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
51 	PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
52 	PFN_vkCreateDevice vkCreateDevice;
53 	PFN_vkDestroyDevice vkDestroyDevice;
54 	PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
55 	PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
56 	PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
57 	PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
58 	PFN_vkGetDeviceQueue vkGetDeviceQueue;
59 	PFN_vkQueueSubmit vkQueueSubmit;
60 	PFN_vkQueueWaitIdle vkQueueWaitIdle;
61 	PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
62 	PFN_vkAllocateMemory vkAllocateMemory;
63 	PFN_vkFreeMemory vkFreeMemory;
64 	PFN_vkMapMemory vkMapMemory;
65 	PFN_vkUnmapMemory vkUnmapMemory;
66 	PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
67 	PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
68 	PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
69 	PFN_vkBindBufferMemory vkBindBufferMemory;
70 	PFN_vkBindImageMemory vkBindImageMemory;
71 	PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
72 	PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
73 	PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
74 	PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
75 	PFN_vkQueueBindSparse vkQueueBindSparse;
76 	PFN_vkCreateFence vkCreateFence;
77 	PFN_vkDestroyFence vkDestroyFence;
78 	PFN_vkResetFences vkResetFences;
79 	PFN_vkGetFenceStatus vkGetFenceStatus;
80 	PFN_vkWaitForFences vkWaitForFences;
81 	PFN_vkCreateSemaphore vkCreateSemaphore;
82 	PFN_vkDestroySemaphore vkDestroySemaphore;
83 	PFN_vkCreateEvent vkCreateEvent;
84 	PFN_vkDestroyEvent vkDestroyEvent;
85 	PFN_vkGetEventStatus vkGetEventStatus;
86 	PFN_vkSetEvent vkSetEvent;
87 	PFN_vkResetEvent vkResetEvent;
88 	PFN_vkCreateQueryPool vkCreateQueryPool;
89 	PFN_vkDestroyQueryPool vkDestroyQueryPool;
90 	PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
91 	PFN_vkCreateBuffer vkCreateBuffer;
92 	PFN_vkDestroyBuffer vkDestroyBuffer;
93 	PFN_vkCreateBufferView vkCreateBufferView;
94 	PFN_vkDestroyBufferView vkDestroyBufferView;
95 	PFN_vkCreateImage vkCreateImage;
96 	PFN_vkDestroyImage vkDestroyImage;
97 	PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
98 	PFN_vkCreateImageView vkCreateImageView;
99 	PFN_vkDestroyImageView vkDestroyImageView;
100 	PFN_vkCreateShaderModule vkCreateShaderModule;
101 	PFN_vkDestroyShaderModule vkDestroyShaderModule;
102 	PFN_vkCreatePipelineCache vkCreatePipelineCache;
103 	PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
104 	PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
105 	PFN_vkMergePipelineCaches vkMergePipelineCaches;
106 	PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
107 	PFN_vkCreateComputePipelines vkCreateComputePipelines;
108 	PFN_vkDestroyPipeline vkDestroyPipeline;
109 	PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
110 	PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
111 	PFN_vkCreateSampler vkCreateSampler;
112 	PFN_vkDestroySampler vkDestroySampler;
113 	PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
114 	PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
115 	PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
116 	PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
117 	PFN_vkResetDescriptorPool vkResetDescriptorPool;
118 	PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
119 	PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
120 	PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
121 	PFN_vkCreateFramebuffer vkCreateFramebuffer;
122 	PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
123 	PFN_vkCreateRenderPass vkCreateRenderPass;
124 	PFN_vkDestroyRenderPass vkDestroyRenderPass;
125 	PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
126 	PFN_vkCreateCommandPool vkCreateCommandPool;
127 	PFN_vkDestroyCommandPool vkDestroyCommandPool;
128 	PFN_vkResetCommandPool vkResetCommandPool;
129 	PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
130 	PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
131 	PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
132 	PFN_vkEndCommandBuffer vkEndCommandBuffer;
133 	PFN_vkResetCommandBuffer vkResetCommandBuffer;
134 	PFN_vkCmdBindPipeline vkCmdBindPipeline;
135 	PFN_vkCmdSetViewport vkCmdSetViewport;
136 	PFN_vkCmdSetScissor vkCmdSetScissor;
137 	PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
138 	PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
139 	PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
140 	PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
141 	PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
142 	PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
143 	PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
144 	PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
145 	PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
146 	PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
147 	PFN_vkCmdDraw vkCmdDraw;
148 	PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
149 	PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
150 	PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
151 	PFN_vkCmdDispatch vkCmdDispatch;
152 	PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
153 	PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
154 	PFN_vkCmdCopyImage vkCmdCopyImage;
155 	PFN_vkCmdBlitImage vkCmdBlitImage;
156 	PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
157 	PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
158 	PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
159 	PFN_vkCmdFillBuffer vkCmdFillBuffer;
160 	PFN_vkCmdClearColorImage vkCmdClearColorImage;
161 	PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
162 	PFN_vkCmdClearAttachments vkCmdClearAttachments;
163 	PFN_vkCmdResolveImage vkCmdResolveImage;
164 	PFN_vkCmdSetEvent vkCmdSetEvent;
165 	PFN_vkCmdResetEvent vkCmdResetEvent;
166 	PFN_vkCmdWaitEvents vkCmdWaitEvents;
167 	PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
168 	PFN_vkCmdBeginQuery vkCmdBeginQuery;
169 	PFN_vkCmdEndQuery vkCmdEndQuery;
170 	PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
171 	PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
172 	PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
173 	PFN_vkCmdPushConstants vkCmdPushConstants;
174 	PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
175 	PFN_vkCmdNextSubpass vkCmdNextSubpass;
176 	PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
177 	PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
178 
179 	PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
180 	PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
181 	PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
182 	PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
183 	PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
184 	PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
185 	PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
186 	PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
187 	PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
188 	PFN_vkQueuePresentKHR vkQueuePresentKHR;
189 	PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;
190 	PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
191 	PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;
192 	PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;
193 	PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;
194 	PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
195 	PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
196 	PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
197 	version (VK_USE_PLATFORM_XLIB_KHR) {
198 		PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
199 		PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
200 	}
201 	version (VK_USE_PLATFORM_XCB_KHR) {
202 		PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
203 		PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
204 	}
205 	version (VK_USE_PLATFORM_WAYLAND_KHR) {
206 		PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
207 		PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
208 	}
209 	version (VK_USE_PLATFORM_MIR_KHR) {
210 		PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR;
211 		PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR;
212 	}
213 	version (VK_USE_PLATFORM_ANDROID_KHR) {
214 		PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
215 	}
216 	version (VK_USE_PLATFORM_WIN32_KHR) {
217 		PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
218 		PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
219 	}
220 	PFN_vkDebugReportCallbackEXT vkDebugReportCallbackEXT;
221 	PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
222 	PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
223 	PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
224 }