blob: 155a599a1e082963ab39825f74c85afa41097f83 [file] [log] [blame]
Chia-I Wu0c203242016-03-15 13:44:51 +08001/*
2 * Copyright 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17// WARNING: This file is generated. See ../README.md for instructions.
18
19#include <string.h>
20#include <algorithm>
21#include <log/log.h>
22
23#include "api.h"
24
25namespace vulkan {
26namespace api {
27
28#define UNLIKELY(expr) __builtin_expect((expr), 0)
29
30#define INIT_PROC(obj, proc) \
31 do { \
32 data.dispatch.proc = \
33 reinterpret_cast<PFN_vk##proc>(get_proc(obj, "vk" #proc)); \
34 if (UNLIKELY(!data.dispatch.proc)) { \
35 ALOGE("missing " #obj " proc: vk" #proc); \
36 success = false; \
37 } \
38 } while (0)
39
Chia-I Wu8925efd2016-04-13 15:13:21 +080040// Exported extension functions may be invoked even when their extensions
41// are disabled. Dispatch to stubs when that happens.
42#define INIT_PROC_EXT(ext, obj, proc) \
43 do { \
44 if (extensions[driver::ProcHook::ext]) \
45 INIT_PROC(obj, proc); \
46 else \
47 data.dispatch.proc = disabled##proc; \
Chia-I Wu0c203242016-03-15 13:44:51 +080048 } while (0)
49
Chia-I Wu8925efd2016-04-13 15:13:21 +080050namespace {
51
52// clang-format off
53
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080054VKAPI_ATTR void disabledDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR, const VkAllocationCallbacks*) {
55 driver::Logger(instance).Err(instance, "VK_KHR_surface not enabled. Exported vkDestroySurfaceKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080056}
57
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080058VKAPI_ATTR VkResult disabledGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t, VkSurfaceKHR, VkBool32*) {
59 driver::Logger(physicalDevice).Err(physicalDevice, "VK_KHR_surface not enabled. Exported vkGetPhysicalDeviceSurfaceSupportKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080060 return VK_SUCCESS;
61}
62
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080063VKAPI_ATTR VkResult disabledGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR, VkSurfaceCapabilitiesKHR*) {
64 driver::Logger(physicalDevice).Err(physicalDevice, "VK_KHR_surface not enabled. Exported vkGetPhysicalDeviceSurfaceCapabilitiesKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080065 return VK_SUCCESS;
66}
67
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080068VKAPI_ATTR VkResult disabledGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR, uint32_t*, VkSurfaceFormatKHR*) {
69 driver::Logger(physicalDevice).Err(physicalDevice, "VK_KHR_surface not enabled. Exported vkGetPhysicalDeviceSurfaceFormatsKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080070 return VK_SUCCESS;
71}
72
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080073VKAPI_ATTR VkResult disabledGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR, uint32_t*, VkPresentModeKHR*) {
74 driver::Logger(physicalDevice).Err(physicalDevice, "VK_KHR_surface not enabled. Exported vkGetPhysicalDeviceSurfacePresentModesKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080075 return VK_SUCCESS;
76}
77
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080078VKAPI_ATTR VkResult disabledCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR*, const VkAllocationCallbacks*, VkSwapchainKHR*) {
79 driver::Logger(device).Err(device, "VK_KHR_swapchain not enabled. Exported vkCreateSwapchainKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080080 return VK_SUCCESS;
81}
82
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080083VKAPI_ATTR void disabledDestroySwapchainKHR(VkDevice device, VkSwapchainKHR, const VkAllocationCallbacks*) {
84 driver::Logger(device).Err(device, "VK_KHR_swapchain not enabled. Exported vkDestroySwapchainKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080085}
86
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080087VKAPI_ATTR VkResult disabledGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR, uint32_t*, VkImage*) {
88 driver::Logger(device).Err(device, "VK_KHR_swapchain not enabled. Exported vkGetSwapchainImagesKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080089 return VK_SUCCESS;
90}
91
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080092VKAPI_ATTR VkResult disabledAcquireNextImageKHR(VkDevice device, VkSwapchainKHR, uint64_t, VkSemaphore, VkFence, uint32_t*) {
93 driver::Logger(device).Err(device, "VK_KHR_swapchain not enabled. Exported vkAcquireNextImageKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080094 return VK_SUCCESS;
95}
96
Chia-I Wu5beb2ac2016-05-04 16:37:23 +080097VKAPI_ATTR VkResult disabledQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR*) {
98 driver::Logger(queue).Err(queue, "VK_KHR_swapchain not enabled. Exported vkQueuePresentKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +080099 return VK_SUCCESS;
100}
101
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800102VKAPI_ATTR VkResult disabledCreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR*, const VkAllocationCallbacks*, VkSurfaceKHR*) {
103 driver::Logger(instance).Err(instance, "VK_KHR_android_surface not enabled. Exported vkCreateAndroidSurfaceKHR not executed.");
Chia-I Wu8925efd2016-04-13 15:13:21 +0800104 return VK_SUCCESS;
105}
106
107// clang-format on
108
109} // anonymous
110
111bool InitDispatchTable(
112 VkInstance instance,
113 PFN_vkGetInstanceProcAddr get_proc,
114 const std::bitset<driver::ProcHook::EXTENSION_COUNT>& extensions) {
Chia-I Wu0c203242016-03-15 13:44:51 +0800115 auto& data = GetData(instance);
116 bool success = true;
117
118 // clang-format off
119 INIT_PROC(instance, DestroyInstance);
120 INIT_PROC(instance, EnumeratePhysicalDevices);
121 INIT_PROC(instance, GetInstanceProcAddr);
122 INIT_PROC(instance, GetPhysicalDeviceProperties);
123 INIT_PROC(instance, GetPhysicalDeviceQueueFamilyProperties);
124 INIT_PROC(instance, GetPhysicalDeviceMemoryProperties);
125 INIT_PROC(instance, GetPhysicalDeviceFeatures);
126 INIT_PROC(instance, GetPhysicalDeviceFormatProperties);
127 INIT_PROC(instance, GetPhysicalDeviceImageFormatProperties);
128 INIT_PROC(instance, CreateDevice);
129 INIT_PROC(instance, EnumerateDeviceLayerProperties);
130 INIT_PROC(instance, EnumerateDeviceExtensionProperties);
131 INIT_PROC(instance, GetPhysicalDeviceSparseImageFormatProperties);
132 INIT_PROC_EXT(KHR_surface, instance, DestroySurfaceKHR);
133 INIT_PROC_EXT(KHR_surface, instance, GetPhysicalDeviceSurfaceSupportKHR);
134 INIT_PROC_EXT(KHR_surface, instance, GetPhysicalDeviceSurfaceCapabilitiesKHR);
135 INIT_PROC_EXT(KHR_surface, instance, GetPhysicalDeviceSurfaceFormatsKHR);
136 INIT_PROC_EXT(KHR_surface, instance, GetPhysicalDeviceSurfacePresentModesKHR);
137 INIT_PROC_EXT(KHR_android_surface, instance, CreateAndroidSurfaceKHR);
138 // clang-format on
139
140 return success;
141}
142
Chia-I Wu8925efd2016-04-13 15:13:21 +0800143bool InitDispatchTable(
144 VkDevice dev,
145 PFN_vkGetDeviceProcAddr get_proc,
146 const std::bitset<driver::ProcHook::EXTENSION_COUNT>& extensions) {
Chia-I Wu0c203242016-03-15 13:44:51 +0800147 auto& data = GetData(dev);
148 bool success = true;
149
150 // clang-format off
151 INIT_PROC(dev, GetDeviceProcAddr);
152 INIT_PROC(dev, DestroyDevice);
153 INIT_PROC(dev, GetDeviceQueue);
154 INIT_PROC(dev, QueueSubmit);
155 INIT_PROC(dev, QueueWaitIdle);
156 INIT_PROC(dev, DeviceWaitIdle);
157 INIT_PROC(dev, AllocateMemory);
158 INIT_PROC(dev, FreeMemory);
159 INIT_PROC(dev, MapMemory);
160 INIT_PROC(dev, UnmapMemory);
161 INIT_PROC(dev, FlushMappedMemoryRanges);
162 INIT_PROC(dev, InvalidateMappedMemoryRanges);
163 INIT_PROC(dev, GetDeviceMemoryCommitment);
164 INIT_PROC(dev, GetBufferMemoryRequirements);
165 INIT_PROC(dev, BindBufferMemory);
166 INIT_PROC(dev, GetImageMemoryRequirements);
167 INIT_PROC(dev, BindImageMemory);
168 INIT_PROC(dev, GetImageSparseMemoryRequirements);
169 INIT_PROC(dev, QueueBindSparse);
170 INIT_PROC(dev, CreateFence);
171 INIT_PROC(dev, DestroyFence);
172 INIT_PROC(dev, ResetFences);
173 INIT_PROC(dev, GetFenceStatus);
174 INIT_PROC(dev, WaitForFences);
175 INIT_PROC(dev, CreateSemaphore);
176 INIT_PROC(dev, DestroySemaphore);
177 INIT_PROC(dev, CreateEvent);
178 INIT_PROC(dev, DestroyEvent);
179 INIT_PROC(dev, GetEventStatus);
180 INIT_PROC(dev, SetEvent);
181 INIT_PROC(dev, ResetEvent);
182 INIT_PROC(dev, CreateQueryPool);
183 INIT_PROC(dev, DestroyQueryPool);
184 INIT_PROC(dev, GetQueryPoolResults);
185 INIT_PROC(dev, CreateBuffer);
186 INIT_PROC(dev, DestroyBuffer);
187 INIT_PROC(dev, CreateBufferView);
188 INIT_PROC(dev, DestroyBufferView);
189 INIT_PROC(dev, CreateImage);
190 INIT_PROC(dev, DestroyImage);
191 INIT_PROC(dev, GetImageSubresourceLayout);
192 INIT_PROC(dev, CreateImageView);
193 INIT_PROC(dev, DestroyImageView);
194 INIT_PROC(dev, CreateShaderModule);
195 INIT_PROC(dev, DestroyShaderModule);
196 INIT_PROC(dev, CreatePipelineCache);
197 INIT_PROC(dev, DestroyPipelineCache);
198 INIT_PROC(dev, GetPipelineCacheData);
199 INIT_PROC(dev, MergePipelineCaches);
200 INIT_PROC(dev, CreateGraphicsPipelines);
201 INIT_PROC(dev, CreateComputePipelines);
202 INIT_PROC(dev, DestroyPipeline);
203 INIT_PROC(dev, CreatePipelineLayout);
204 INIT_PROC(dev, DestroyPipelineLayout);
205 INIT_PROC(dev, CreateSampler);
206 INIT_PROC(dev, DestroySampler);
207 INIT_PROC(dev, CreateDescriptorSetLayout);
208 INIT_PROC(dev, DestroyDescriptorSetLayout);
209 INIT_PROC(dev, CreateDescriptorPool);
210 INIT_PROC(dev, DestroyDescriptorPool);
211 INIT_PROC(dev, ResetDescriptorPool);
212 INIT_PROC(dev, AllocateDescriptorSets);
213 INIT_PROC(dev, FreeDescriptorSets);
214 INIT_PROC(dev, UpdateDescriptorSets);
215 INIT_PROC(dev, CreateFramebuffer);
216 INIT_PROC(dev, DestroyFramebuffer);
217 INIT_PROC(dev, CreateRenderPass);
218 INIT_PROC(dev, DestroyRenderPass);
219 INIT_PROC(dev, GetRenderAreaGranularity);
220 INIT_PROC(dev, CreateCommandPool);
221 INIT_PROC(dev, DestroyCommandPool);
222 INIT_PROC(dev, ResetCommandPool);
223 INIT_PROC(dev, AllocateCommandBuffers);
224 INIT_PROC(dev, FreeCommandBuffers);
225 INIT_PROC(dev, BeginCommandBuffer);
226 INIT_PROC(dev, EndCommandBuffer);
227 INIT_PROC(dev, ResetCommandBuffer);
228 INIT_PROC(dev, CmdBindPipeline);
229 INIT_PROC(dev, CmdSetViewport);
230 INIT_PROC(dev, CmdSetScissor);
231 INIT_PROC(dev, CmdSetLineWidth);
232 INIT_PROC(dev, CmdSetDepthBias);
233 INIT_PROC(dev, CmdSetBlendConstants);
234 INIT_PROC(dev, CmdSetDepthBounds);
235 INIT_PROC(dev, CmdSetStencilCompareMask);
236 INIT_PROC(dev, CmdSetStencilWriteMask);
237 INIT_PROC(dev, CmdSetStencilReference);
238 INIT_PROC(dev, CmdBindDescriptorSets);
239 INIT_PROC(dev, CmdBindIndexBuffer);
240 INIT_PROC(dev, CmdBindVertexBuffers);
241 INIT_PROC(dev, CmdDraw);
242 INIT_PROC(dev, CmdDrawIndexed);
243 INIT_PROC(dev, CmdDrawIndirect);
244 INIT_PROC(dev, CmdDrawIndexedIndirect);
245 INIT_PROC(dev, CmdDispatch);
246 INIT_PROC(dev, CmdDispatchIndirect);
247 INIT_PROC(dev, CmdCopyBuffer);
248 INIT_PROC(dev, CmdCopyImage);
249 INIT_PROC(dev, CmdBlitImage);
250 INIT_PROC(dev, CmdCopyBufferToImage);
251 INIT_PROC(dev, CmdCopyImageToBuffer);
252 INIT_PROC(dev, CmdUpdateBuffer);
253 INIT_PROC(dev, CmdFillBuffer);
254 INIT_PROC(dev, CmdClearColorImage);
255 INIT_PROC(dev, CmdClearDepthStencilImage);
256 INIT_PROC(dev, CmdClearAttachments);
257 INIT_PROC(dev, CmdResolveImage);
258 INIT_PROC(dev, CmdSetEvent);
259 INIT_PROC(dev, CmdResetEvent);
260 INIT_PROC(dev, CmdWaitEvents);
261 INIT_PROC(dev, CmdPipelineBarrier);
262 INIT_PROC(dev, CmdBeginQuery);
263 INIT_PROC(dev, CmdEndQuery);
264 INIT_PROC(dev, CmdResetQueryPool);
265 INIT_PROC(dev, CmdWriteTimestamp);
266 INIT_PROC(dev, CmdCopyQueryPoolResults);
267 INIT_PROC(dev, CmdPushConstants);
268 INIT_PROC(dev, CmdBeginRenderPass);
269 INIT_PROC(dev, CmdNextSubpass);
270 INIT_PROC(dev, CmdEndRenderPass);
271 INIT_PROC(dev, CmdExecuteCommands);
272 INIT_PROC_EXT(KHR_swapchain, dev, CreateSwapchainKHR);
273 INIT_PROC_EXT(KHR_swapchain, dev, DestroySwapchainKHR);
274 INIT_PROC_EXT(KHR_swapchain, dev, GetSwapchainImagesKHR);
275 INIT_PROC_EXT(KHR_swapchain, dev, AcquireNextImageKHR);
276 INIT_PROC_EXT(KHR_swapchain, dev, QueuePresentKHR);
277 // clang-format on
278
279 return success;
280}
281
282} // namespace api
283} // namespace vulkan
284
285// clang-format off
286
287__attribute__((visibility("default")))
288VKAPI_ATTR VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) {
289 // call into api.cpp
290 return vulkan::api::CreateInstance(pCreateInfo, pAllocator, pInstance);
291}
292
293__attribute__((visibility("default")))
294VKAPI_ATTR void vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
295 // call into api.cpp
296 vulkan::api::DestroyInstance(instance, pAllocator);
297}
298
299__attribute__((visibility("default")))
300VKAPI_ATTR VkResult vkEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) {
301 return vulkan::api::GetData(instance).dispatch.EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
302}
303
304__attribute__((visibility("default")))
305VKAPI_ATTR PFN_vkVoidFunction vkGetDeviceProcAddr(VkDevice device, const char* pName) {
306 if (device == VK_NULL_HANDLE) {
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800307 ALOGE("invalid vkGetDeviceProcAddr(VK_NULL_HANDLE, ...) call");
Chia-I Wu0c203242016-03-15 13:44:51 +0800308 return nullptr;
309 }
310
311 static const char* const known_non_device_names[] = {
312 "vkCreateAndroidSurfaceKHR",
313 "vkCreateDebugReportCallbackEXT",
314 "vkCreateDevice",
315 "vkCreateInstance",
316 "vkDebugReportMessageEXT",
317 "vkDestroyDebugReportCallbackEXT",
318 "vkDestroyInstance",
319 "vkDestroySurfaceKHR",
320 "vkEnumerateDeviceExtensionProperties",
321 "vkEnumerateDeviceLayerProperties",
322 "vkEnumerateInstanceExtensionProperties",
323 "vkEnumerateInstanceLayerProperties",
324 "vkEnumeratePhysicalDevices",
325 "vkGetInstanceProcAddr",
326 "vkGetPhysicalDeviceFeatures",
327 "vkGetPhysicalDeviceFormatProperties",
328 "vkGetPhysicalDeviceImageFormatProperties",
329 "vkGetPhysicalDeviceMemoryProperties",
330 "vkGetPhysicalDeviceProperties",
331 "vkGetPhysicalDeviceQueueFamilyProperties",
332 "vkGetPhysicalDeviceSparseImageFormatProperties",
333 "vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
334 "vkGetPhysicalDeviceSurfaceFormatsKHR",
335 "vkGetPhysicalDeviceSurfacePresentModesKHR",
336 "vkGetPhysicalDeviceSurfaceSupportKHR",
337 };
338 // clang-format on
339 constexpr size_t count =
340 sizeof(known_non_device_names) / sizeof(known_non_device_names[0]);
341 if (!pName ||
342 std::binary_search(
343 known_non_device_names, known_non_device_names + count, pName,
344 [](const char* a, const char* b) { return (strcmp(a, b) < 0); })) {
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800345 vulkan::driver::Logger(device).Err(
346 device, "invalid vkGetDeviceProcAddr(%p, \"%s\") call", device,
347 (pName) ? pName : "(null)");
Chia-I Wu0c203242016-03-15 13:44:51 +0800348 return nullptr;
349 }
350 // clang-format off
351
Chia-I Wuc56603e2016-04-12 11:16:17 +0800352 if (strcmp(pName, "vkGetDeviceProcAddr") == 0) return reinterpret_cast<PFN_vkVoidFunction>(vkGetDeviceProcAddr);
353 if (strcmp(pName, "vkDestroyDevice") == 0) return reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::DestroyDevice);
354
Chia-I Wu0c203242016-03-15 13:44:51 +0800355 return vulkan::api::GetData(device).dispatch.GetDeviceProcAddr(device, pName);
356}
357
358__attribute__((visibility("default")))
359VKAPI_ATTR PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* pName) {
360 // global functions
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800361 if (instance == VK_NULL_HANDLE) {
Chia-I Wu0c203242016-03-15 13:44:51 +0800362 if (strcmp(pName, "vkCreateInstance") == 0) return reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::CreateInstance);
363 if (strcmp(pName, "vkEnumerateInstanceLayerProperties") == 0) return reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::EnumerateInstanceLayerProperties);
364 if (strcmp(pName, "vkEnumerateInstanceExtensionProperties") == 0) return reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::EnumerateInstanceExtensionProperties);
365
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800366 ALOGE("invalid vkGetInstanceProcAddr(VK_NULL_HANDLE, \"%s\") call", pName);
Chia-I Wu0c203242016-03-15 13:44:51 +0800367 return nullptr;
368 }
369
370 static const struct Hook {
371 const char* name;
372 PFN_vkVoidFunction proc;
373 } hooks[] = {
374 { "vkAcquireNextImageKHR", reinterpret_cast<PFN_vkVoidFunction>(vkAcquireNextImageKHR) },
375 { "vkAllocateCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateCommandBuffers) },
376 { "vkAllocateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateDescriptorSets) },
377 { "vkAllocateMemory", reinterpret_cast<PFN_vkVoidFunction>(vkAllocateMemory) },
378 { "vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkBeginCommandBuffer) },
379 { "vkBindBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(vkBindBufferMemory) },
380 { "vkBindImageMemory", reinterpret_cast<PFN_vkVoidFunction>(vkBindImageMemory) },
381 { "vkCmdBeginQuery", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBeginQuery) },
382 { "vkCmdBeginRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBeginRenderPass) },
383 { "vkCmdBindDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDescriptorSets) },
384 { "vkCmdBindIndexBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindIndexBuffer) },
385 { "vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindPipeline) },
386 { "vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindVertexBuffers) },
387 { "vkCmdBlitImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBlitImage) },
388 { "vkCmdClearAttachments", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearAttachments) },
389 { "vkCmdClearColorImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearColorImage) },
390 { "vkCmdClearDepthStencilImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdClearDepthStencilImage) },
391 { "vkCmdCopyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyBuffer) },
392 { "vkCmdCopyBufferToImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyBufferToImage) },
393 { "vkCmdCopyImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyImage) },
394 { "vkCmdCopyImageToBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyImageToBuffer) },
395 { "vkCmdCopyQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(vkCmdCopyQueryPoolResults) },
396 { "vkCmdDispatch", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDispatch) },
397 { "vkCmdDispatchIndirect", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDispatchIndirect) },
398 { "vkCmdDraw", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDraw) },
399 { "vkCmdDrawIndexed", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDrawIndexed) },
400 { "vkCmdDrawIndexedIndirect", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDrawIndexedIndirect) },
401 { "vkCmdDrawIndirect", reinterpret_cast<PFN_vkVoidFunction>(vkCmdDrawIndirect) },
402 { "vkCmdEndQuery", reinterpret_cast<PFN_vkVoidFunction>(vkCmdEndQuery) },
403 { "vkCmdEndRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkCmdEndRenderPass) },
404 { "vkCmdExecuteCommands", reinterpret_cast<PFN_vkVoidFunction>(vkCmdExecuteCommands) },
405 { "vkCmdFillBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdFillBuffer) },
406 { "vkCmdNextSubpass", reinterpret_cast<PFN_vkVoidFunction>(vkCmdNextSubpass) },
407 { "vkCmdPipelineBarrier", reinterpret_cast<PFN_vkVoidFunction>(vkCmdPipelineBarrier) },
408 { "vkCmdPushConstants", reinterpret_cast<PFN_vkVoidFunction>(vkCmdPushConstants) },
409 { "vkCmdResetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResetEvent) },
410 { "vkCmdResetQueryPool", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResetQueryPool) },
411 { "vkCmdResolveImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResolveImage) },
412 { "vkCmdSetBlendConstants", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetBlendConstants) },
413 { "vkCmdSetDepthBias", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetDepthBias) },
414 { "vkCmdSetDepthBounds", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetDepthBounds) },
415 { "vkCmdSetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetEvent) },
416 { "vkCmdSetLineWidth", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetLineWidth) },
417 { "vkCmdSetScissor", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetScissor) },
418 { "vkCmdSetStencilCompareMask", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilCompareMask) },
419 { "vkCmdSetStencilReference", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilReference) },
420 { "vkCmdSetStencilWriteMask", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilWriteMask) },
421 { "vkCmdSetViewport", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetViewport) },
422 { "vkCmdUpdateBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdUpdateBuffer) },
423 { "vkCmdWaitEvents", reinterpret_cast<PFN_vkVoidFunction>(vkCmdWaitEvents) },
424 { "vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(vkCmdWriteTimestamp) },
425 { "vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBuffer) },
426 { "vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBufferView) },
427 { "vkCreateCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateCommandPool) },
428 { "vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(vkCreateComputePipelines) },
429 { "vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDescriptorPool) },
430 { "vkCreateDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDescriptorSetLayout) },
431 { "vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::CreateDevice) },
432 { "vkCreateEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCreateEvent) },
433 { "vkCreateFence", reinterpret_cast<PFN_vkVoidFunction>(vkCreateFence) },
434 { "vkCreateFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateFramebuffer) },
435 { "vkCreateGraphicsPipelines", reinterpret_cast<PFN_vkVoidFunction>(vkCreateGraphicsPipelines) },
436 { "vkCreateImage", reinterpret_cast<PFN_vkVoidFunction>(vkCreateImage) },
437 { "vkCreateImageView", reinterpret_cast<PFN_vkVoidFunction>(vkCreateImageView) },
438 { "vkCreateInstance", nullptr },
439 { "vkCreatePipelineCache", reinterpret_cast<PFN_vkVoidFunction>(vkCreatePipelineCache) },
440 { "vkCreatePipelineLayout", reinterpret_cast<PFN_vkVoidFunction>(vkCreatePipelineLayout) },
441 { "vkCreateQueryPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateQueryPool) },
442 { "vkCreateRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkCreateRenderPass) },
443 { "vkCreateSampler", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSampler) },
444 { "vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSemaphore) },
445 { "vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(vkCreateShaderModule) },
446 { "vkCreateSwapchainKHR", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSwapchainKHR) },
447 { "vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBuffer) },
448 { "vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBufferView) },
449 { "vkDestroyCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyCommandPool) },
450 { "vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorPool) },
451 { "vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorSetLayout) },
452 { "vkDestroyDevice", reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::DestroyDevice) },
453 { "vkDestroyEvent", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyEvent) },
454 { "vkDestroyFence", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyFence) },
455 { "vkDestroyFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyFramebuffer) },
456 { "vkDestroyImage", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyImage) },
457 { "vkDestroyImageView", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyImageView) },
458 { "vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::DestroyInstance) },
459 { "vkDestroyPipeline", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyPipeline) },
460 { "vkDestroyPipelineCache", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyPipelineCache) },
461 { "vkDestroyPipelineLayout", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyPipelineLayout) },
462 { "vkDestroyQueryPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyQueryPool) },
463 { "vkDestroyRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyRenderPass) },
464 { "vkDestroySampler", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySampler) },
465 { "vkDestroySemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySemaphore) },
466 { "vkDestroyShaderModule", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyShaderModule) },
467 { "vkDestroySwapchainKHR", reinterpret_cast<PFN_vkVoidFunction>(vkDestroySwapchainKHR) },
468 { "vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkDeviceWaitIdle) },
469 { "vkEndCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkEndCommandBuffer) },
470 { "vkEnumerateDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::EnumerateDeviceExtensionProperties) },
471 { "vkEnumerateDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vulkan::api::EnumerateDeviceLayerProperties) },
472 { "vkEnumerateInstanceExtensionProperties", nullptr },
473 { "vkEnumerateInstanceLayerProperties", nullptr },
474 { "vkFlushMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkFlushMappedMemoryRanges) },
475 { "vkFreeCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkFreeCommandBuffers) },
476 { "vkFreeDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkFreeDescriptorSets) },
477 { "vkFreeMemory", reinterpret_cast<PFN_vkVoidFunction>(vkFreeMemory) },
478 { "vkGetBufferMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(vkGetBufferMemoryRequirements) },
479 { "vkGetDeviceMemoryCommitment", reinterpret_cast<PFN_vkVoidFunction>(vkGetDeviceMemoryCommitment) },
480 { "vkGetDeviceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(vkGetDeviceProcAddr) },
481 { "vkGetDeviceQueue", reinterpret_cast<PFN_vkVoidFunction>(vkGetDeviceQueue) },
482 { "vkGetEventStatus", reinterpret_cast<PFN_vkVoidFunction>(vkGetEventStatus) },
483 { "vkGetFenceStatus", reinterpret_cast<PFN_vkVoidFunction>(vkGetFenceStatus) },
484 { "vkGetImageMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(vkGetImageMemoryRequirements) },
485 { "vkGetImageSparseMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(vkGetImageSparseMemoryRequirements) },
486 { "vkGetImageSubresourceLayout", reinterpret_cast<PFN_vkVoidFunction>(vkGetImageSubresourceLayout) },
487 { "vkGetInstanceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(vkGetInstanceProcAddr) },
488 { "vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(vkGetPipelineCacheData) },
489 { "vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(vkGetQueryPoolResults) },
490 { "vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(vkGetRenderAreaGranularity) },
491 { "vkGetSwapchainImagesKHR", reinterpret_cast<PFN_vkVoidFunction>(vkGetSwapchainImagesKHR) },
492 { "vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(vkInvalidateMappedMemoryRanges) },
493 { "vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(vkMapMemory) },
494 { "vkMergePipelineCaches", reinterpret_cast<PFN_vkVoidFunction>(vkMergePipelineCaches) },
495 { "vkQueueBindSparse", reinterpret_cast<PFN_vkVoidFunction>(vkQueueBindSparse) },
496 { "vkQueuePresentKHR", reinterpret_cast<PFN_vkVoidFunction>(vkQueuePresentKHR) },
497 { "vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(vkQueueSubmit) },
498 { "vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(vkQueueWaitIdle) },
499 { "vkResetCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkResetCommandBuffer) },
500 { "vkResetCommandPool", reinterpret_cast<PFN_vkVoidFunction>(vkResetCommandPool) },
501 { "vkResetDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkResetDescriptorPool) },
502 { "vkResetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkResetEvent) },
503 { "vkResetFences", reinterpret_cast<PFN_vkVoidFunction>(vkResetFences) },
504 { "vkSetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkSetEvent) },
505 { "vkUnmapMemory", reinterpret_cast<PFN_vkVoidFunction>(vkUnmapMemory) },
506 { "vkUpdateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkUpdateDescriptorSets) },
507 { "vkWaitForFences", reinterpret_cast<PFN_vkVoidFunction>(vkWaitForFences) },
508 };
509 // clang-format on
510 constexpr size_t count = sizeof(hooks) / sizeof(hooks[0]);
511 auto hook = std::lower_bound(
512 hooks, hooks + count, pName,
513 [](const Hook& h, const char* n) { return strcmp(h.name, n) < 0; });
514 if (hook < hooks + count && strcmp(hook->name, pName) == 0) {
Chia-I Wu5beb2ac2016-05-04 16:37:23 +0800515 if (!hook->proc) {
516 vulkan::driver::Logger(instance).Err(
517 instance, "invalid vkGetInstanceProcAddr(%p, \"%s\") call",
518 instance, pName);
519 }
Chia-I Wu0c203242016-03-15 13:44:51 +0800520 return hook->proc;
521 }
522 // clang-format off
523
524 return vulkan::api::GetData(instance).dispatch.GetInstanceProcAddr(instance, pName);
525}
526
527__attribute__((visibility("default")))
528VKAPI_ATTR void vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) {
529 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceProperties(physicalDevice, pProperties);
530}
531
532__attribute__((visibility("default")))
533VKAPI_ATTR void vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
534 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
535}
536
537__attribute__((visibility("default")))
538VKAPI_ATTR void vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
539 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
540}
541
542__attribute__((visibility("default")))
543VKAPI_ATTR void vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
544 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
545}
546
547__attribute__((visibility("default")))
548VKAPI_ATTR void vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
549 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
550}
551
552__attribute__((visibility("default")))
553VKAPI_ATTR VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
554 return vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
555}
556
557__attribute__((visibility("default")))
558VKAPI_ATTR VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
559 // call into api.cpp
560 return vulkan::api::CreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
561}
562
563__attribute__((visibility("default")))
564VKAPI_ATTR void vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) {
565 // call into api.cpp
566 vulkan::api::DestroyDevice(device, pAllocator);
567}
568
569__attribute__((visibility("default")))
570VKAPI_ATTR VkResult vkEnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
571 // call into api.cpp
572 return vulkan::api::EnumerateInstanceLayerProperties(pPropertyCount, pProperties);
573}
574
575__attribute__((visibility("default")))
576VKAPI_ATTR VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
577 // call into api.cpp
578 return vulkan::api::EnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties);
579}
580
581__attribute__((visibility("default")))
582VKAPI_ATTR VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) {
583 // call into api.cpp
584 return vulkan::api::EnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
585}
586
587__attribute__((visibility("default")))
588VKAPI_ATTR VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
589 // call into api.cpp
590 return vulkan::api::EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
591}
592
593__attribute__((visibility("default")))
594VKAPI_ATTR void vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) {
595 vulkan::api::GetData(device).dispatch.GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
596}
597
598__attribute__((visibility("default")))
599VKAPI_ATTR VkResult vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
600 return vulkan::api::GetData(queue).dispatch.QueueSubmit(queue, submitCount, pSubmits, fence);
601}
602
603__attribute__((visibility("default")))
604VKAPI_ATTR VkResult vkQueueWaitIdle(VkQueue queue) {
605 return vulkan::api::GetData(queue).dispatch.QueueWaitIdle(queue);
606}
607
608__attribute__((visibility("default")))
609VKAPI_ATTR VkResult vkDeviceWaitIdle(VkDevice device) {
610 return vulkan::api::GetData(device).dispatch.DeviceWaitIdle(device);
611}
612
613__attribute__((visibility("default")))
614VKAPI_ATTR VkResult vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
615 return vulkan::api::GetData(device).dispatch.AllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
616}
617
618__attribute__((visibility("default")))
619VKAPI_ATTR void vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) {
620 vulkan::api::GetData(device).dispatch.FreeMemory(device, memory, pAllocator);
621}
622
623__attribute__((visibility("default")))
624VKAPI_ATTR VkResult vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
625 return vulkan::api::GetData(device).dispatch.MapMemory(device, memory, offset, size, flags, ppData);
626}
627
628__attribute__((visibility("default")))
629VKAPI_ATTR void vkUnmapMemory(VkDevice device, VkDeviceMemory memory) {
630 vulkan::api::GetData(device).dispatch.UnmapMemory(device, memory);
631}
632
633__attribute__((visibility("default")))
634VKAPI_ATTR VkResult vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
635 return vulkan::api::GetData(device).dispatch.FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
636}
637
638__attribute__((visibility("default")))
639VKAPI_ATTR VkResult vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) {
640 return vulkan::api::GetData(device).dispatch.InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
641}
642
643__attribute__((visibility("default")))
644VKAPI_ATTR void vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
645 vulkan::api::GetData(device).dispatch.GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
646}
647
648__attribute__((visibility("default")))
649VKAPI_ATTR void vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
650 vulkan::api::GetData(device).dispatch.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
651}
652
653__attribute__((visibility("default")))
654VKAPI_ATTR VkResult vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
655 return vulkan::api::GetData(device).dispatch.BindBufferMemory(device, buffer, memory, memoryOffset);
656}
657
658__attribute__((visibility("default")))
659VKAPI_ATTR void vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
660 vulkan::api::GetData(device).dispatch.GetImageMemoryRequirements(device, image, pMemoryRequirements);
661}
662
663__attribute__((visibility("default")))
664VKAPI_ATTR VkResult vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
665 return vulkan::api::GetData(device).dispatch.BindImageMemory(device, image, memory, memoryOffset);
666}
667
668__attribute__((visibility("default")))
669VKAPI_ATTR void vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
670 vulkan::api::GetData(device).dispatch.GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
671}
672
673__attribute__((visibility("default")))
674VKAPI_ATTR void vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
675 vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
676}
677
678__attribute__((visibility("default")))
679VKAPI_ATTR VkResult vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
680 return vulkan::api::GetData(queue).dispatch.QueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
681}
682
683__attribute__((visibility("default")))
684VKAPI_ATTR VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
685 return vulkan::api::GetData(device).dispatch.CreateFence(device, pCreateInfo, pAllocator, pFence);
686}
687
688__attribute__((visibility("default")))
689VKAPI_ATTR void vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) {
690 vulkan::api::GetData(device).dispatch.DestroyFence(device, fence, pAllocator);
691}
692
693__attribute__((visibility("default")))
694VKAPI_ATTR VkResult vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
695 return vulkan::api::GetData(device).dispatch.ResetFences(device, fenceCount, pFences);
696}
697
698__attribute__((visibility("default")))
699VKAPI_ATTR VkResult vkGetFenceStatus(VkDevice device, VkFence fence) {
700 return vulkan::api::GetData(device).dispatch.GetFenceStatus(device, fence);
701}
702
703__attribute__((visibility("default")))
704VKAPI_ATTR VkResult vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
705 return vulkan::api::GetData(device).dispatch.WaitForFences(device, fenceCount, pFences, waitAll, timeout);
706}
707
708__attribute__((visibility("default")))
709VKAPI_ATTR VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) {
710 return vulkan::api::GetData(device).dispatch.CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
711}
712
713__attribute__((visibility("default")))
714VKAPI_ATTR void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) {
715 vulkan::api::GetData(device).dispatch.DestroySemaphore(device, semaphore, pAllocator);
716}
717
718__attribute__((visibility("default")))
719VKAPI_ATTR VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
720 return vulkan::api::GetData(device).dispatch.CreateEvent(device, pCreateInfo, pAllocator, pEvent);
721}
722
723__attribute__((visibility("default")))
724VKAPI_ATTR void vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) {
725 vulkan::api::GetData(device).dispatch.DestroyEvent(device, event, pAllocator);
726}
727
728__attribute__((visibility("default")))
729VKAPI_ATTR VkResult vkGetEventStatus(VkDevice device, VkEvent event) {
730 return vulkan::api::GetData(device).dispatch.GetEventStatus(device, event);
731}
732
733__attribute__((visibility("default")))
734VKAPI_ATTR VkResult vkSetEvent(VkDevice device, VkEvent event) {
735 return vulkan::api::GetData(device).dispatch.SetEvent(device, event);
736}
737
738__attribute__((visibility("default")))
739VKAPI_ATTR VkResult vkResetEvent(VkDevice device, VkEvent event) {
740 return vulkan::api::GetData(device).dispatch.ResetEvent(device, event);
741}
742
743__attribute__((visibility("default")))
744VKAPI_ATTR VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) {
745 return vulkan::api::GetData(device).dispatch.CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
746}
747
748__attribute__((visibility("default")))
749VKAPI_ATTR void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) {
750 vulkan::api::GetData(device).dispatch.DestroyQueryPool(device, queryPool, pAllocator);
751}
752
753__attribute__((visibility("default")))
754VKAPI_ATTR VkResult vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
755 return vulkan::api::GetData(device).dispatch.GetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
756}
757
758__attribute__((visibility("default")))
759VKAPI_ATTR VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
760 return vulkan::api::GetData(device).dispatch.CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
761}
762
763__attribute__((visibility("default")))
764VKAPI_ATTR void vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) {
765 vulkan::api::GetData(device).dispatch.DestroyBuffer(device, buffer, pAllocator);
766}
767
768__attribute__((visibility("default")))
769VKAPI_ATTR VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) {
770 return vulkan::api::GetData(device).dispatch.CreateBufferView(device, pCreateInfo, pAllocator, pView);
771}
772
773__attribute__((visibility("default")))
774VKAPI_ATTR void vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) {
775 vulkan::api::GetData(device).dispatch.DestroyBufferView(device, bufferView, pAllocator);
776}
777
778__attribute__((visibility("default")))
779VKAPI_ATTR VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
780 return vulkan::api::GetData(device).dispatch.CreateImage(device, pCreateInfo, pAllocator, pImage);
781}
782
783__attribute__((visibility("default")))
784VKAPI_ATTR void vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) {
785 vulkan::api::GetData(device).dispatch.DestroyImage(device, image, pAllocator);
786}
787
788__attribute__((visibility("default")))
789VKAPI_ATTR void vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
790 vulkan::api::GetData(device).dispatch.GetImageSubresourceLayout(device, image, pSubresource, pLayout);
791}
792
793__attribute__((visibility("default")))
794VKAPI_ATTR VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
795 return vulkan::api::GetData(device).dispatch.CreateImageView(device, pCreateInfo, pAllocator, pView);
796}
797
798__attribute__((visibility("default")))
799VKAPI_ATTR void vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) {
800 vulkan::api::GetData(device).dispatch.DestroyImageView(device, imageView, pAllocator);
801}
802
803__attribute__((visibility("default")))
804VKAPI_ATTR VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) {
805 return vulkan::api::GetData(device).dispatch.CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
806}
807
808__attribute__((visibility("default")))
809VKAPI_ATTR void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) {
810 vulkan::api::GetData(device).dispatch.DestroyShaderModule(device, shaderModule, pAllocator);
811}
812
813__attribute__((visibility("default")))
814VKAPI_ATTR VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
815 return vulkan::api::GetData(device).dispatch.CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
816}
817
818__attribute__((visibility("default")))
819VKAPI_ATTR void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) {
820 vulkan::api::GetData(device).dispatch.DestroyPipelineCache(device, pipelineCache, pAllocator);
821}
822
823__attribute__((visibility("default")))
824VKAPI_ATTR VkResult vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
825 return vulkan::api::GetData(device).dispatch.GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
826}
827
828__attribute__((visibility("default")))
829VKAPI_ATTR VkResult vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
830 return vulkan::api::GetData(device).dispatch.MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
831}
832
833__attribute__((visibility("default")))
834VKAPI_ATTR VkResult vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
835 return vulkan::api::GetData(device).dispatch.CreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
836}
837
838__attribute__((visibility("default")))
839VKAPI_ATTR VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
840 return vulkan::api::GetData(device).dispatch.CreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
841}
842
843__attribute__((visibility("default")))
844VKAPI_ATTR void vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) {
845 vulkan::api::GetData(device).dispatch.DestroyPipeline(device, pipeline, pAllocator);
846}
847
848__attribute__((visibility("default")))
849VKAPI_ATTR VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
850 return vulkan::api::GetData(device).dispatch.CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
851}
852
853__attribute__((visibility("default")))
854VKAPI_ATTR void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) {
855 vulkan::api::GetData(device).dispatch.DestroyPipelineLayout(device, pipelineLayout, pAllocator);
856}
857
858__attribute__((visibility("default")))
859VKAPI_ATTR VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
860 return vulkan::api::GetData(device).dispatch.CreateSampler(device, pCreateInfo, pAllocator, pSampler);
861}
862
863__attribute__((visibility("default")))
864VKAPI_ATTR void vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) {
865 vulkan::api::GetData(device).dispatch.DestroySampler(device, sampler, pAllocator);
866}
867
868__attribute__((visibility("default")))
869VKAPI_ATTR VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
870 return vulkan::api::GetData(device).dispatch.CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
871}
872
873__attribute__((visibility("default")))
874VKAPI_ATTR void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) {
875 vulkan::api::GetData(device).dispatch.DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
876}
877
878__attribute__((visibility("default")))
879VKAPI_ATTR VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
880 return vulkan::api::GetData(device).dispatch.CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
881}
882
883__attribute__((visibility("default")))
884VKAPI_ATTR void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) {
885 vulkan::api::GetData(device).dispatch.DestroyDescriptorPool(device, descriptorPool, pAllocator);
886}
887
888__attribute__((visibility("default")))
889VKAPI_ATTR VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
890 return vulkan::api::GetData(device).dispatch.ResetDescriptorPool(device, descriptorPool, flags);
891}
892
893__attribute__((visibility("default")))
894VKAPI_ATTR VkResult vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) {
895 return vulkan::api::GetData(device).dispatch.AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
896}
897
898__attribute__((visibility("default")))
899VKAPI_ATTR VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets) {
900 return vulkan::api::GetData(device).dispatch.FreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
901}
902
903__attribute__((visibility("default")))
904VKAPI_ATTR void vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
905 vulkan::api::GetData(device).dispatch.UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
906}
907
908__attribute__((visibility("default")))
909VKAPI_ATTR VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
910 return vulkan::api::GetData(device).dispatch.CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
911}
912
913__attribute__((visibility("default")))
914VKAPI_ATTR void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) {
915 vulkan::api::GetData(device).dispatch.DestroyFramebuffer(device, framebuffer, pAllocator);
916}
917
918__attribute__((visibility("default")))
919VKAPI_ATTR VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
920 return vulkan::api::GetData(device).dispatch.CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
921}
922
923__attribute__((visibility("default")))
924VKAPI_ATTR void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) {
925 vulkan::api::GetData(device).dispatch.DestroyRenderPass(device, renderPass, pAllocator);
926}
927
928__attribute__((visibility("default")))
929VKAPI_ATTR void vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
930 vulkan::api::GetData(device).dispatch.GetRenderAreaGranularity(device, renderPass, pGranularity);
931}
932
933__attribute__((visibility("default")))
934VKAPI_ATTR VkResult vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) {
935 return vulkan::api::GetData(device).dispatch.CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
936}
937
938__attribute__((visibility("default")))
939VKAPI_ATTR void vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) {
940 vulkan::api::GetData(device).dispatch.DestroyCommandPool(device, commandPool, pAllocator);
941}
942
943__attribute__((visibility("default")))
944VKAPI_ATTR VkResult vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) {
945 return vulkan::api::GetData(device).dispatch.ResetCommandPool(device, commandPool, flags);
946}
947
948__attribute__((visibility("default")))
949VKAPI_ATTR VkResult vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) {
950 return vulkan::api::GetData(device).dispatch.AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
951}
952
953__attribute__((visibility("default")))
954VKAPI_ATTR void vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) {
955 vulkan::api::GetData(device).dispatch.FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
956}
957
958__attribute__((visibility("default")))
959VKAPI_ATTR VkResult vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
960 return vulkan::api::GetData(commandBuffer).dispatch.BeginCommandBuffer(commandBuffer, pBeginInfo);
961}
962
963__attribute__((visibility("default")))
964VKAPI_ATTR VkResult vkEndCommandBuffer(VkCommandBuffer commandBuffer) {
965 return vulkan::api::GetData(commandBuffer).dispatch.EndCommandBuffer(commandBuffer);
966}
967
968__attribute__((visibility("default")))
969VKAPI_ATTR VkResult vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) {
970 return vulkan::api::GetData(commandBuffer).dispatch.ResetCommandBuffer(commandBuffer, flags);
971}
972
973__attribute__((visibility("default")))
974VKAPI_ATTR void vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
975 vulkan::api::GetData(commandBuffer).dispatch.CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
976}
977
978__attribute__((visibility("default")))
979VKAPI_ATTR void vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports) {
980 vulkan::api::GetData(commandBuffer).dispatch.CmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
981}
982
983__attribute__((visibility("default")))
984VKAPI_ATTR void vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors) {
985 vulkan::api::GetData(commandBuffer).dispatch.CmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
986}
987
988__attribute__((visibility("default")))
989VKAPI_ATTR void vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
990 vulkan::api::GetData(commandBuffer).dispatch.CmdSetLineWidth(commandBuffer, lineWidth);
991}
992
993__attribute__((visibility("default")))
994VKAPI_ATTR void vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) {
995 vulkan::api::GetData(commandBuffer).dispatch.CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
996}
997
998__attribute__((visibility("default")))
999VKAPI_ATTR void vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) {
1000 vulkan::api::GetData(commandBuffer).dispatch.CmdSetBlendConstants(commandBuffer, blendConstants);
1001}
1002
1003__attribute__((visibility("default")))
1004VKAPI_ATTR void vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) {
1005 vulkan::api::GetData(commandBuffer).dispatch.CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1006}
1007
1008__attribute__((visibility("default")))
1009VKAPI_ATTR void vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) {
1010 vulkan::api::GetData(commandBuffer).dispatch.CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1011}
1012
1013__attribute__((visibility("default")))
1014VKAPI_ATTR void vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) {
1015 vulkan::api::GetData(commandBuffer).dispatch.CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1016}
1017
1018__attribute__((visibility("default")))
1019VKAPI_ATTR void vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) {
1020 vulkan::api::GetData(commandBuffer).dispatch.CmdSetStencilReference(commandBuffer, faceMask, reference);
1021}
1022
1023__attribute__((visibility("default")))
1024VKAPI_ATTR void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
1025 vulkan::api::GetData(commandBuffer).dispatch.CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1026}
1027
1028__attribute__((visibility("default")))
1029VKAPI_ATTR void vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
1030 vulkan::api::GetData(commandBuffer).dispatch.CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1031}
1032
1033__attribute__((visibility("default")))
1034VKAPI_ATTR void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
1035 vulkan::api::GetData(commandBuffer).dispatch.CmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1036}
1037
1038__attribute__((visibility("default")))
1039VKAPI_ATTR void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
1040 vulkan::api::GetData(commandBuffer).dispatch.CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1041}
1042
1043__attribute__((visibility("default")))
1044VKAPI_ATTR void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
1045 vulkan::api::GetData(commandBuffer).dispatch.CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1046}
1047
1048__attribute__((visibility("default")))
1049VKAPI_ATTR void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
1050 vulkan::api::GetData(commandBuffer).dispatch.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1051}
1052
1053__attribute__((visibility("default")))
1054VKAPI_ATTR void vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
1055 vulkan::api::GetData(commandBuffer).dispatch.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1056}
1057
1058__attribute__((visibility("default")))
1059VKAPI_ATTR void vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) {
1060 vulkan::api::GetData(commandBuffer).dispatch.CmdDispatch(commandBuffer, x, y, z);
1061}
1062
1063__attribute__((visibility("default")))
1064VKAPI_ATTR void vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
1065 vulkan::api::GetData(commandBuffer).dispatch.CmdDispatchIndirect(commandBuffer, buffer, offset);
1066}
1067
1068__attribute__((visibility("default")))
1069VKAPI_ATTR void vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
1070 vulkan::api::GetData(commandBuffer).dispatch.CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1071}
1072
1073__attribute__((visibility("default")))
1074VKAPI_ATTR void vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
1075 vulkan::api::GetData(commandBuffer).dispatch.CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1076}
1077
1078__attribute__((visibility("default")))
1079VKAPI_ATTR void vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
1080 vulkan::api::GetData(commandBuffer).dispatch.CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1081}
1082
1083__attribute__((visibility("default")))
1084VKAPI_ATTR void vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1085 vulkan::api::GetData(commandBuffer).dispatch.CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1086}
1087
1088__attribute__((visibility("default")))
1089VKAPI_ATTR void vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1090 vulkan::api::GetData(commandBuffer).dispatch.CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1091}
1092
1093__attribute__((visibility("default")))
1094VKAPI_ATTR void vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData) {
1095 vulkan::api::GetData(commandBuffer).dispatch.CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1096}
1097
1098__attribute__((visibility("default")))
1099VKAPI_ATTR void vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
1100 vulkan::api::GetData(commandBuffer).dispatch.CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1101}
1102
1103__attribute__((visibility("default")))
1104VKAPI_ATTR void vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
1105 vulkan::api::GetData(commandBuffer).dispatch.CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1106}
1107
1108__attribute__((visibility("default")))
1109VKAPI_ATTR void vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
1110 vulkan::api::GetData(commandBuffer).dispatch.CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1111}
1112
1113__attribute__((visibility("default")))
1114VKAPI_ATTR void vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
1115 vulkan::api::GetData(commandBuffer).dispatch.CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1116}
1117
1118__attribute__((visibility("default")))
1119VKAPI_ATTR void vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
1120 vulkan::api::GetData(commandBuffer).dispatch.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1121}
1122
1123__attribute__((visibility("default")))
1124VKAPI_ATTR void vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
1125 vulkan::api::GetData(commandBuffer).dispatch.CmdSetEvent(commandBuffer, event, stageMask);
1126}
1127
1128__attribute__((visibility("default")))
1129VKAPI_ATTR void vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
1130 vulkan::api::GetData(commandBuffer).dispatch.CmdResetEvent(commandBuffer, event, stageMask);
1131}
1132
1133__attribute__((visibility("default")))
1134VKAPI_ATTR void vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
1135 vulkan::api::GetData(commandBuffer).dispatch.CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1136}
1137
1138__attribute__((visibility("default")))
1139VKAPI_ATTR void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
1140 vulkan::api::GetData(commandBuffer).dispatch.CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1141}
1142
1143__attribute__((visibility("default")))
1144VKAPI_ATTR void vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) {
1145 vulkan::api::GetData(commandBuffer).dispatch.CmdBeginQuery(commandBuffer, queryPool, query, flags);
1146}
1147
1148__attribute__((visibility("default")))
1149VKAPI_ATTR void vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query) {
1150 vulkan::api::GetData(commandBuffer).dispatch.CmdEndQuery(commandBuffer, queryPool, query);
1151}
1152
1153__attribute__((visibility("default")))
1154VKAPI_ATTR void vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) {
1155 vulkan::api::GetData(commandBuffer).dispatch.CmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1156}
1157
1158__attribute__((visibility("default")))
1159VKAPI_ATTR void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query) {
1160 vulkan::api::GetData(commandBuffer).dispatch.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1161}
1162
1163__attribute__((visibility("default")))
1164VKAPI_ATTR void vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) {
1165 vulkan::api::GetData(commandBuffer).dispatch.CmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1166}
1167
1168__attribute__((visibility("default")))
1169VKAPI_ATTR void vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues) {
1170 vulkan::api::GetData(commandBuffer).dispatch.CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1171}
1172
1173__attribute__((visibility("default")))
1174VKAPI_ATTR void vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
1175 vulkan::api::GetData(commandBuffer).dispatch.CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1176}
1177
1178__attribute__((visibility("default")))
1179VKAPI_ATTR void vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
1180 vulkan::api::GetData(commandBuffer).dispatch.CmdNextSubpass(commandBuffer, contents);
1181}
1182
1183__attribute__((visibility("default")))
1184VKAPI_ATTR void vkCmdEndRenderPass(VkCommandBuffer commandBuffer) {
1185 vulkan::api::GetData(commandBuffer).dispatch.CmdEndRenderPass(commandBuffer);
1186}
1187
1188__attribute__((visibility("default")))
1189VKAPI_ATTR void vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) {
1190 vulkan::api::GetData(commandBuffer).dispatch.CmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1191}
1192
1193__attribute__((visibility("default")))
1194VKAPI_ATTR void vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) {
1195 vulkan::api::GetData(instance).dispatch.DestroySurfaceKHR(instance, surface, pAllocator);
1196}
1197
1198__attribute__((visibility("default")))
1199VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) {
1200 return vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
1201}
1202
1203__attribute__((visibility("default")))
1204VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
1205 return vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
1206}
1207
1208__attribute__((visibility("default")))
1209VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) {
1210 return vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
1211}
1212
1213__attribute__((visibility("default")))
1214VKAPI_ATTR VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
1215 return vulkan::api::GetData(physicalDevice).dispatch.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
1216}
1217
1218__attribute__((visibility("default")))
1219VKAPI_ATTR VkResult vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) {
1220 return vulkan::api::GetData(device).dispatch.CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
1221}
1222
1223__attribute__((visibility("default")))
1224VKAPI_ATTR void vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) {
1225 vulkan::api::GetData(device).dispatch.DestroySwapchainKHR(device, swapchain, pAllocator);
1226}
1227
1228__attribute__((visibility("default")))
1229VKAPI_ATTR VkResult vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) {
1230 return vulkan::api::GetData(device).dispatch.GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
1231}
1232
1233__attribute__((visibility("default")))
1234VKAPI_ATTR VkResult vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {
1235 return vulkan::api::GetData(device).dispatch.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
1236}
1237
1238__attribute__((visibility("default")))
1239VKAPI_ATTR VkResult vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) {
1240 return vulkan::api::GetData(queue).dispatch.QueuePresentKHR(queue, pPresentInfo);
1241}
1242
1243__attribute__((visibility("default")))
1244VKAPI_ATTR VkResult vkCreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
1245 return vulkan::api::GetData(instance).dispatch.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
1246}
1247
1248// clang-format on