blob: 114f036355e7be1b418eea0dc60deabdd37f3507 [file] [log] [blame]
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001/*
2 * Vulkan
3 *
4 * Copyright (C) 2014 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
Courtney Goeltzenleuchterb620ace2015-07-05 11:28:29 -060024#define _GNU_SOURCE
Jon Ashburnfce93d92015-05-12 17:26:48 -060025#include <stdlib.h>
26#include <string.h>
Jon Ashburn2139a3e2015-05-06 09:02:10 -060027
Tobin Ehlis7a51d902015-07-03 10:34:49 -060028#include "vk_loader_platform.h"
Jon Ashburn2139a3e2015-05-06 09:02:10 -060029#include "loader.h"
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060030#include "debug_report.h"
Ian Elliott1d73e662015-07-06 14:36:13 -060031#include "wsi_swapchain.h"
Jon Ashburn2139a3e2015-05-06 09:02:10 -060032
Tobin Ehlis3126f012015-05-13 11:57:18 -060033#if defined(WIN32)
34// On Windows need to disable global optimization for function entrypoints or
35// else mhook will not be able to hook all of them
36#pragma optimize( "g", off )
37#endif
38
Jon Ashburn2139a3e2015-05-06 09:02:10 -060039/* Trampoline entrypoints */
Jon Ashburnfce93d92015-05-12 17:26:48 -060040LOADER_EXPORT VkResult VKAPI vkCreateInstance(
Courtney Goeltzenleuchter70c4ebc2015-06-08 15:13:50 -060041 const VkInstanceCreateInfo* pCreateInfo,
42 VkInstance* pInstance)
Jon Ashburnfce93d92015-05-12 17:26:48 -060043{
44 struct loader_instance *ptr_instance = NULL;
45
46 VkResult res = VK_ERROR_INITIALIZATION_FAILED;
Jon Ashburnfce93d92015-05-12 17:26:48 -060047
48 /* Scan/discover all ICD libraries in a single-threaded manner */
49 loader_platform_thread_once(&once_icd, loader_icd_scan);
50
51 /* get layer libraries in a single-threaded manner */
Jon Ashburn68a63922015-07-02 09:40:15 -060052 loader_platform_thread_once(&once_layer, loader_layer_scan);
Jon Ashburnfce93d92015-05-12 17:26:48 -060053
54 /* merge any duplicate extensions */
55 loader_platform_thread_once(&once_exts, loader_coalesce_extensions);
56
Courtney Goeltzenleuchtera17697f2015-07-06 20:14:18 -060057 res = loader_validate_layers(pCreateInfo->layerCount,
58 pCreateInfo->ppEnabledLayerNames,
Jon Ashburn0bf6a182015-07-16 17:19:31 -060059 &loader.scanned_instance_layers);
Courtney Goeltzenleuchter5d9f29b2015-07-06 17:45:08 -060060 if (res != VK_SUCCESS) {
61 return res;
62 }
63
64 res = loader_validate_instance_extensions(pCreateInfo);
65 if (res != VK_SUCCESS) {
66 return res;
67 }
68
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060069 if (pCreateInfo->pAllocCb
70 && pCreateInfo->pAllocCb->pfnAlloc
71 && pCreateInfo->pAllocCb->pfnFree) {
72 ptr_instance = (struct loader_instance *) pCreateInfo->pAllocCb->pfnAlloc(
73 pCreateInfo->pAllocCb->pUserData,
74 sizeof(struct loader_instance),
75 sizeof(VkInstance),
76 VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
77 } else {
78 ptr_instance = (struct loader_instance *) malloc(sizeof(struct loader_instance));
79 }
Jon Ashburnfce93d92015-05-12 17:26:48 -060080 if (ptr_instance == NULL) {
81 return VK_ERROR_OUT_OF_HOST_MEMORY;
82 }
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060083
Jon Ashburnfce93d92015-05-12 17:26:48 -060084 memset(ptr_instance, 0, sizeof(struct loader_instance));
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060085
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060086 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburncedc15f2015-05-21 18:13:33 -060087
Courtney Goeltzenleuchterb620ace2015-07-05 11:28:29 -060088 if (pCreateInfo->pAllocCb
89 && pCreateInfo->pAllocCb->pfnAlloc
90 && pCreateInfo->pAllocCb->pfnFree) {
91 ptr_instance->alloc_callbacks.pUserData = pCreateInfo->pAllocCb->pUserData;
92 ptr_instance->alloc_callbacks.pfnAlloc = pCreateInfo->pAllocCb->pfnAlloc;
93 ptr_instance->alloc_callbacks.pfnFree = pCreateInfo->pAllocCb->pfnFree;
94 }
95
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060096 ptr_instance->disp = loader_heap_alloc(
97 ptr_instance,
98 sizeof(VkLayerInstanceDispatchTable),
99 VK_SYSTEM_ALLOC_TYPE_INTERNAL);
100 if (ptr_instance->disp == NULL) {
101 loader_platform_thread_unlock_mutex(&loader_lock);
102 return VK_ERROR_OUT_OF_HOST_MEMORY;
103 }
104 memcpy(ptr_instance->disp, &instance_disp, sizeof(instance_disp));
105 ptr_instance->next = loader.instances;
106 loader.instances = ptr_instance;
107
108 res = loader_enable_instance_layers(ptr_instance, pCreateInfo);
109 if (res != VK_SUCCESS) {
110 loader_heap_free(ptr_instance, ptr_instance->disp);
111 loader_heap_free(ptr_instance, ptr_instance);
112 return res;
113 }
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600114
Ian Elliott1d73e662015-07-06 14:36:13 -0600115 wsi_swapchain_create_instance(ptr_instance, pCreateInfo);
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600116 debug_report_create_instance(ptr_instance, pCreateInfo);
Jon Ashburncedc15f2015-05-21 18:13:33 -0600117
118 /* enable any layers on instance chain */
Jon Ashburnfce93d92015-05-12 17:26:48 -0600119 loader_activate_instance_layers(ptr_instance);
120
Jon Ashburnfce93d92015-05-12 17:26:48 -0600121 *pInstance = (VkInstance) ptr_instance;
Jon Ashburna179dcf2015-05-21 17:42:17 -0600122
123 res = ptr_instance->disp->CreateInstance(pCreateInfo, pInstance);
124
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -0600125 /*
126 * Finally have the layers in place and everyone has seen
127 * the CreateInstance command go by. This allows the layer's
128 * GetInstanceProcAddr functions to return valid extension functions
129 * if enabled.
130 */
131 loader_activate_instance_layer_extensions(ptr_instance);
132
Jon Ashburnb40f2562015-05-29 13:15:39 -0600133 loader_platform_thread_unlock_mutex(&loader_lock);
134
Jon Ashburnfce93d92015-05-12 17:26:48 -0600135 return res;
136}
137
138LOADER_EXPORT VkResult VKAPI vkDestroyInstance(
139 VkInstance instance)
140{
141 const VkLayerInstanceDispatchTable *disp;
Jon Ashburnb40f2562015-05-29 13:15:39 -0600142 VkResult res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600143 disp = loader_get_instance_dispatch(instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600144
Jon Ashburnb40f2562015-05-29 13:15:39 -0600145 loader_platform_thread_lock_mutex(&loader_lock);
146
147 res = disp->DestroyInstance(instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600148
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600149 struct loader_instance *ptr_instance = loader_instance(instance);
150 loader_deactivate_instance_layers(ptr_instance);
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600151
152 free(ptr_instance);
153
Jon Ashburnb40f2562015-05-29 13:15:39 -0600154 loader_platform_thread_unlock_mutex(&loader_lock);
155
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600156 return res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600157}
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600158
Jon Ashburnfce93d92015-05-12 17:26:48 -0600159LOADER_EXPORT VkResult VKAPI vkEnumeratePhysicalDevices(
160 VkInstance instance,
161 uint32_t* pPhysicalDeviceCount,
162 VkPhysicalDevice* pPhysicalDevices)
163{
164 const VkLayerInstanceDispatchTable *disp;
Jon Ashburnb40f2562015-05-29 13:15:39 -0600165 VkResult res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600166 disp = loader_get_instance_dispatch(instance);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600167
168 loader_platform_thread_lock_mutex(&loader_lock);
169 res = disp->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount,
Jon Ashburnfce93d92015-05-12 17:26:48 -0600170 pPhysicalDevices);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600171 loader_platform_thread_unlock_mutex(&loader_lock);
172 return res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600173}
174
Tony Barbour426b9052015-06-24 16:06:58 -0600175LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceProperties(
Jon Ashburnfce93d92015-05-12 17:26:48 -0600176 VkPhysicalDevice gpu,
Tony Barbour426b9052015-06-24 16:06:58 -0600177 VkPhysicalDeviceProperties* pProperties)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600178{
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600179 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600180 VkResult res;
181
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600182 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600183 res = disp->GetPhysicalDeviceProperties(gpu, pProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600184 return res;
185}
186
Tony Barbour426b9052015-06-24 16:06:58 -0600187LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueCount(
188 VkPhysicalDevice gpu,
189 uint32_t* pCount)
190{
191 const VkLayerInstanceDispatchTable *disp;
192 VkResult res;
193
194 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600195 res = disp->GetPhysicalDeviceQueueCount(gpu, pCount);
Tony Barbour426b9052015-06-24 16:06:58 -0600196 return res;
197}
198
199LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueProperties(
200 VkPhysicalDevice gpu,
201 uint32_t count,
202 VkPhysicalDeviceQueueProperties* pQueueProperties)
203{
204 const VkLayerInstanceDispatchTable *disp;
205 VkResult res;
206
207 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600208 res = disp->GetPhysicalDeviceQueueProperties(gpu, count, pQueueProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600209 return res;
210}
211
212LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
213 VkPhysicalDevice gpu,
214 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
215{
216 const VkLayerInstanceDispatchTable *disp;
217 VkResult res;
218
219 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600220 res = disp->GetPhysicalDeviceMemoryProperties(gpu, pMemoryProperties);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600221 return res;
222}
223
Chris Forbesd7576302015-06-21 22:55:02 +1200224LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures(
225 VkPhysicalDevice gpu,
226 VkPhysicalDeviceFeatures *pFeatures)
227{
228 const VkLayerInstanceDispatchTable *disp;
229 VkResult res;
230
231 disp = loader_get_instance_dispatch(gpu);
Chris Forbesd7576302015-06-21 22:55:02 +1200232 res = disp->GetPhysicalDeviceFeatures(gpu, pFeatures);
Chris Forbesd7576302015-06-21 22:55:02 +1200233 return res;
234}
235
Courtney Goeltzenleuchter4da96aa2015-07-12 12:52:09 -0600236LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
Chris Forbesd7576302015-06-21 22:55:02 +1200237 VkPhysicalDevice gpu,
238 VkFormat format,
239 VkFormatProperties *pFormatInfo)
240{
241 const VkLayerInstanceDispatchTable *disp;
242 VkResult res;
243
244 disp = loader_get_instance_dispatch(gpu);
Courtney Goeltzenleuchter4da96aa2015-07-12 12:52:09 -0600245 res = disp->GetPhysicalDeviceFormatProperties(gpu, format, pFormatInfo);
Chris Forbesd7576302015-06-21 22:55:02 +1200246 return res;
247}
248
249LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits(
250 VkPhysicalDevice gpu,
251 VkPhysicalDeviceLimits *pLimits)
252{
253 const VkLayerInstanceDispatchTable *disp;
254 VkResult res;
255
256 disp = loader_get_instance_dispatch(gpu);
Chris Forbesd7576302015-06-21 22:55:02 +1200257 res = disp->GetPhysicalDeviceLimits(gpu, pLimits);
Chris Forbesd7576302015-06-21 22:55:02 +1200258 return res;
259}
260
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600261LOADER_EXPORT VkResult VKAPI vkCreateDevice(
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600262 VkPhysicalDevice gpu,
263 const VkDeviceCreateInfo* pCreateInfo,
264 VkDevice* pDevice)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600265{
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600266 VkResult res;
267
Jon Ashburnb40f2562015-05-29 13:15:39 -0600268 loader_platform_thread_lock_mutex(&loader_lock);
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600269
270 res = loader_CreateDevice(gpu, pCreateInfo, pDevice);
271
Jon Ashburnb40f2562015-05-29 13:15:39 -0600272 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600273 return res;
274}
275
276LOADER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device)
277{
278 const VkLayerDispatchTable *disp;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600279 VkResult res;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600280
281 disp = loader_get_dispatch(device);
282
Jon Ashburnb40f2562015-05-29 13:15:39 -0600283 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600284 res = disp->DestroyDevice(device);
Jon Ashburncb5a5ac2015-06-10 10:06:06 -0600285 loader_remove_logical_device(device);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600286 loader_platform_thread_unlock_mutex(&loader_lock);
287 return res;
288}
289
Tony Barbour426b9052015-06-24 16:06:58 -0600290LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600291 VkPhysicalDevice physicalDevice,
292 const char* pLayerName,
293 uint32_t* pCount,
294 VkExtensionProperties* pProperties)
Jon Ashburnb40f2562015-05-29 13:15:39 -0600295{
296 VkResult res;
297
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600298 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburn0bf6a182015-07-16 17:19:31 -0600299 //TODO convert over to using instance chain dispatch
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600300 res = loader_GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
301 loader_platform_thread_unlock_mutex(&loader_lock);
Tony Barbour426b9052015-06-24 16:06:58 -0600302 return res;
303}
304
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600305LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
306 VkPhysicalDevice physicalDevice,
307 uint32_t* pCount,
308 VkLayerProperties* pProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600309{
310 VkResult res;
311
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600312 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburn0bf6a182015-07-16 17:19:31 -0600313 //TODO convert over to using instance chain dispatch
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600314 res = loader_GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
315 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600316 return res;
317}
318
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600319LOADER_EXPORT VkResult VKAPI vkGetDeviceQueue(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue)
320{
321 const VkLayerDispatchTable *disp;
322 VkResult res;
323
324 disp = loader_get_dispatch(device);
325
326 res = disp->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
327 if (res == VK_SUCCESS) {
328 loader_set_dispatch(*pQueue, disp);
329 }
330
331 return res;
332}
333
334LOADER_EXPORT VkResult VKAPI vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence)
335{
336 const VkLayerDispatchTable *disp;
337
338 disp = loader_get_dispatch(queue);
339
340 return disp->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
341}
342
343LOADER_EXPORT VkResult VKAPI vkQueueWaitIdle(VkQueue queue)
344{
345 const VkLayerDispatchTable *disp;
346
347 disp = loader_get_dispatch(queue);
348
349 return disp->QueueWaitIdle(queue);
350}
351
352LOADER_EXPORT VkResult VKAPI vkDeviceWaitIdle(VkDevice device)
353{
354 const VkLayerDispatchTable *disp;
355
356 disp = loader_get_dispatch(device);
357
358 return disp->DeviceWaitIdle(device);
359}
360
361LOADER_EXPORT VkResult VKAPI vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem)
362{
363 const VkLayerDispatchTable *disp;
364
365 disp = loader_get_dispatch(device);
366
367 return disp->AllocMemory(device, pAllocInfo, pMem);
368}
369
370LOADER_EXPORT VkResult VKAPI vkFreeMemory(VkDevice device, VkDeviceMemory mem)
371{
372 const VkLayerDispatchTable *disp;
373
374 disp = loader_get_dispatch(device);
375
376 return disp->FreeMemory(device, mem);
377}
378
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600379LOADER_EXPORT VkResult VKAPI vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkFlags flags, void** ppData)
380{
381 const VkLayerDispatchTable *disp;
382
383 disp = loader_get_dispatch(device);
384
385 return disp->MapMemory(device, mem, offset, size, flags, ppData);
386}
387
388LOADER_EXPORT VkResult VKAPI vkUnmapMemory(VkDevice device, VkDeviceMemory mem)
389{
390 const VkLayerDispatchTable *disp;
391
392 disp = loader_get_dispatch(device);
393
394 return disp->UnmapMemory(device, mem);
395}
396
397LOADER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
398{
399 const VkLayerDispatchTable *disp;
400
401 disp = loader_get_dispatch(device);
402
403 return disp->FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
404}
405
406LOADER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
407{
408 const VkLayerDispatchTable *disp;
409
410 disp = loader_get_dispatch(device);
411
412 return disp->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
413}
414
Courtney Goeltzenleuchterd040c5c2015-07-09 21:57:28 -0600415LOADER_EXPORT VkResult VKAPI vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)
416{
417 const VkLayerDispatchTable *disp;
418
419 disp = loader_get_dispatch(device);
420
421 return disp->GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
422}
423
Tony Barbourde4124d2015-07-03 10:33:54 -0600424LOADER_EXPORT VkResult VKAPI vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600425{
426 const VkLayerDispatchTable *disp;
427
428 disp = loader_get_dispatch(device);
429
Tony Barbourde4124d2015-07-03 10:33:54 -0600430 return disp->GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600431}
432
Tony Barbourde4124d2015-07-03 10:33:54 -0600433LOADER_EXPORT VkResult VKAPI vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600434{
435 const VkLayerDispatchTable *disp;
436
437 disp = loader_get_dispatch(device);
438
Tony Barbourde4124d2015-07-03 10:33:54 -0600439 return disp->GetImageMemoryRequirements(device, image, pMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600440}
441
Tony Barbourde4124d2015-07-03 10:33:54 -0600442LOADER_EXPORT VkResult VKAPI vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600443{
444 const VkLayerDispatchTable *disp;
445
Mark Lobodzinskifb9f5642015-05-11 17:21:15 -0500446 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600447
Tony Barbourde4124d2015-07-03 10:33:54 -0600448 return disp->BindBufferMemory(device, buffer, mem, offset);
449}
450
451LOADER_EXPORT VkResult VKAPI vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize offset)
452{
453 const VkLayerDispatchTable *disp;
454
455 disp = loader_get_dispatch(device);
456
457 return disp->BindImageMemory(device, image, mem, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600458}
459
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600460LOADER_EXPORT VkResult VKAPI vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600461{
462 const VkLayerDispatchTable *disp;
463
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600464 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600465
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600466 return disp->GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600467}
468
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600469LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties)
470{
471 const VkLayerInstanceDispatchTable *disp;
472
473 disp = loader_get_instance_dispatch(physicalDevice);
474
475 return disp->GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
476}
477
478LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600479{
480 const VkLayerDispatchTable *disp;
481
482 disp = loader_get_dispatch(queue);
483
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600484 return disp->QueueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
485}
486
487LOADER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
488{
489 const VkLayerDispatchTable *disp;
490
491 disp = loader_get_dispatch(queue);
492
493 return disp->QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
494}
495
496LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo)
497{
498 const VkLayerDispatchTable *disp;
499
500 disp = loader_get_dispatch(queue);
501
502 return disp->QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600503}
504
505LOADER_EXPORT VkResult VKAPI vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence)
506{
507 const VkLayerDispatchTable *disp;
508
509 disp = loader_get_dispatch(device);
510
511 return disp->CreateFence(device, pCreateInfo, pFence);
512}
513
Tony Barbourde4124d2015-07-03 10:33:54 -0600514LOADER_EXPORT VkResult VKAPI vkDestroyFence(VkDevice device, VkFence fence)
515{
516 const VkLayerDispatchTable *disp;
517
518 disp = loader_get_dispatch(device);
519
520 return disp->DestroyFence(device, fence);
521}
522
Courtney Goeltzenleuchterf2e33ad2015-06-18 17:28:20 -0600523LOADER_EXPORT VkResult VKAPI vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600524{
525 const VkLayerDispatchTable *disp;
526
527 disp = loader_get_dispatch(device);
528
529 return disp->ResetFences(device, fenceCount, pFences);
530}
531
532LOADER_EXPORT VkResult VKAPI vkGetFenceStatus(VkDevice device, VkFence fence)
533{
534 const VkLayerDispatchTable *disp;
535
536 disp = loader_get_dispatch(device);
537
538 return disp->GetFenceStatus(device, fence);
539}
540
Courtney Goeltzenleuchter1f41f542015-07-09 11:44:38 -0600541LOADER_EXPORT VkResult VKAPI vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600542{
543 const VkLayerDispatchTable *disp;
544
545 disp = loader_get_dispatch(device);
546
547 return disp->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
548}
549
550LOADER_EXPORT VkResult VKAPI vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore)
551{
552 const VkLayerDispatchTable *disp;
553
554 disp = loader_get_dispatch(device);
555
556 return disp->CreateSemaphore(device, pCreateInfo, pSemaphore);
557}
558
Tony Barbourde4124d2015-07-03 10:33:54 -0600559LOADER_EXPORT VkResult VKAPI vkDestroySemaphore(VkDevice device, VkSemaphore semaphore)
560{
561 const VkLayerDispatchTable *disp;
562
563 disp = loader_get_dispatch(device);
564
565 return disp->DestroySemaphore(device, semaphore);
566}
567
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600568LOADER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore)
569{
570 const VkLayerDispatchTable *disp;
571
572 disp = loader_get_dispatch(queue);
573
574 return disp->QueueSignalSemaphore(queue, semaphore);
575}
576
577LOADER_EXPORT VkResult VKAPI vkQueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore)
578{
579 const VkLayerDispatchTable *disp;
580
581 disp = loader_get_dispatch(queue);
582
583 return disp->QueueWaitSemaphore(queue, semaphore);
584}
585
586LOADER_EXPORT VkResult VKAPI vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent)
587{
588 const VkLayerDispatchTable *disp;
589
590 disp = loader_get_dispatch(device);
591
592 return disp->CreateEvent(device, pCreateInfo, pEvent);
593}
594
Tony Barbourde4124d2015-07-03 10:33:54 -0600595LOADER_EXPORT VkResult VKAPI vkDestroyEvent(VkDevice device, VkEvent event)
596{
597 const VkLayerDispatchTable *disp;
598
599 disp = loader_get_dispatch(device);
600
601 return disp->DestroyEvent(device, event);
602}
603
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600604LOADER_EXPORT VkResult VKAPI vkGetEventStatus(VkDevice device, VkEvent event)
605{
606 const VkLayerDispatchTable *disp;
607
608 disp = loader_get_dispatch(device);
609
610 return disp->GetEventStatus(device, event);
611}
612
613LOADER_EXPORT VkResult VKAPI vkSetEvent(VkDevice device, VkEvent event)
614{
615 const VkLayerDispatchTable *disp;
616
617 disp = loader_get_dispatch(device);
618
619 return disp->SetEvent(device, event);
620}
621
622LOADER_EXPORT VkResult VKAPI vkResetEvent(VkDevice device, VkEvent event)
623{
624 const VkLayerDispatchTable *disp;
625
626 disp = loader_get_dispatch(device);
627
628 return disp->ResetEvent(device, event);
629}
630
631LOADER_EXPORT VkResult VKAPI vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool)
632{
633 const VkLayerDispatchTable *disp;
634
635 disp = loader_get_dispatch(device);
636
637 return disp->CreateQueryPool(device, pCreateInfo, pQueryPool);
638}
639
Tony Barbourde4124d2015-07-03 10:33:54 -0600640LOADER_EXPORT VkResult VKAPI vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool)
641{
642 const VkLayerDispatchTable *disp;
643
644 disp = loader_get_dispatch(device);
645
646 return disp->DestroyQueryPool(device, queryPool);
647}
648
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600649LOADER_EXPORT VkResult VKAPI vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags)
650{
651 const VkLayerDispatchTable *disp;
652
653 disp = loader_get_dispatch(device);
654
655 return disp->GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
656}
657
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600658LOADER_EXPORT VkResult VKAPI vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer)
659{
660 const VkLayerDispatchTable *disp;
661
662 disp = loader_get_dispatch(device);
663
664 return disp->CreateBuffer(device, pCreateInfo, pBuffer);
665}
666
Tony Barbourde4124d2015-07-03 10:33:54 -0600667LOADER_EXPORT VkResult VKAPI vkDestroyBuffer(VkDevice device, VkBuffer buffer)
668{
669 const VkLayerDispatchTable *disp;
670
671 disp = loader_get_dispatch(device);
672
673 return disp->DestroyBuffer(device, buffer);
674}
675
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600676LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView)
677{
678 const VkLayerDispatchTable *disp;
679
680 disp = loader_get_dispatch(device);
681
682 return disp->CreateBufferView(device, pCreateInfo, pView);
683}
684
Tony Barbourde4124d2015-07-03 10:33:54 -0600685LOADER_EXPORT VkResult VKAPI vkDestroyBufferView(VkDevice device, VkBufferView bufferView)
686{
687 const VkLayerDispatchTable *disp;
688
689 disp = loader_get_dispatch(device);
690
691 return disp->DestroyBufferView(device, bufferView);
692}
693
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600694LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage)
695{
696 const VkLayerDispatchTable *disp;
697
698 disp = loader_get_dispatch(device);
699
700 return disp->CreateImage(device, pCreateInfo, pImage);
701}
702
Tony Barbourde4124d2015-07-03 10:33:54 -0600703LOADER_EXPORT VkResult VKAPI vkDestroyImage(VkDevice device, VkImage image)
704{
705 const VkLayerDispatchTable *disp;
706
707 disp = loader_get_dispatch(device);
708
709 return disp->DestroyImage(device, image);
710}
711
Tony Barbour426b9052015-06-24 16:06:58 -0600712LOADER_EXPORT VkResult VKAPI vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600713{
714 const VkLayerDispatchTable *disp;
715
716 disp = loader_get_dispatch(device);
717
Tony Barbour426b9052015-06-24 16:06:58 -0600718 return disp->GetImageSubresourceLayout(device, image, pSubresource, pLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600719}
720
721LOADER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView)
722{
723 const VkLayerDispatchTable *disp;
724
725 disp = loader_get_dispatch(device);
726
727 return disp->CreateImageView(device, pCreateInfo, pView);
728}
729
Tony Barbourde4124d2015-07-03 10:33:54 -0600730LOADER_EXPORT VkResult VKAPI vkDestroyImageView(VkDevice device, VkImageView imageView)
731{
732 const VkLayerDispatchTable *disp;
733
734 disp = loader_get_dispatch(device);
735
736 return disp->DestroyImageView(device, imageView);
737}
738
Chia-I Wuc278df82015-07-07 11:50:03 +0800739LOADER_EXPORT VkResult VKAPI vkCreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600740{
741 const VkLayerDispatchTable *disp;
742
743 disp = loader_get_dispatch(device);
744
Chia-I Wuc278df82015-07-07 11:50:03 +0800745 return disp->CreateAttachmentView(device, pCreateInfo, pView);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600746}
747
Tony Barbourde4124d2015-07-03 10:33:54 -0600748LOADER_EXPORT VkResult VKAPI vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView)
749{
750 const VkLayerDispatchTable *disp;
751
752 disp = loader_get_dispatch(device);
753
754 return disp->DestroyAttachmentView(device, attachmentView);
755}
756
Courtney Goeltzenleuchter0b29b0d2015-06-24 18:24:19 -0600757LOADER_EXPORT VkResult VKAPI vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShader)
758{
759 const VkLayerDispatchTable *disp;
760
761 disp = loader_get_dispatch(device);
762
763 return disp->CreateShaderModule(device, pCreateInfo, pShader);
764}
765
Tony Barbourde4124d2015-07-03 10:33:54 -0600766LOADER_EXPORT VkResult VKAPI vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule)
767{
768 const VkLayerDispatchTable *disp;
769
770 disp = loader_get_dispatch(device);
771
772 return disp->DestroyShaderModule(device, shaderModule);
773}
774
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600775LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader)
776{
777 const VkLayerDispatchTable *disp;
778
779 disp = loader_get_dispatch(device);
780
781 return disp->CreateShader(device, pCreateInfo, pShader);
782}
783
Tony Barbourde4124d2015-07-03 10:33:54 -0600784LOADER_EXPORT VkResult VKAPI vkDestroyShader(VkDevice device, VkShader shader)
785{
786 const VkLayerDispatchTable *disp;
787
788 disp = loader_get_dispatch(device);
789
790 return disp->DestroyShader(device, shader);
791}
792
Jon Ashburn0d60d272015-07-09 15:02:25 -0600793LOADER_EXPORT VkResult VKAPI vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600794{
795 const VkLayerDispatchTable *disp;
796
797 disp = loader_get_dispatch(device);
798
Jon Ashburn0d60d272015-07-09 15:02:25 -0600799 return disp->CreatePipelineCache(device, pCreateInfo, pPipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600800}
801
Jon Ashburn0d60d272015-07-09 15:02:25 -0600802LOADER_EXPORT VkResult VKAPI vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600803{
804 const VkLayerDispatchTable *disp;
805
806 disp = loader_get_dispatch(device);
807
Jon Ashburn0d60d272015-07-09 15:02:25 -0600808 return disp->DestroyPipelineCache(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600809}
810
Jon Ashburn0d60d272015-07-09 15:02:25 -0600811LOADER_EXPORT size_t VKAPI vkGetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600812{
813 const VkLayerDispatchTable *disp;
814
815 disp = loader_get_dispatch(device);
816
Jon Ashburn0d60d272015-07-09 15:02:25 -0600817 return disp->GetPipelineCacheSize(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600818}
819
Jon Ashburn0d60d272015-07-09 15:02:25 -0600820LOADER_EXPORT VkResult VKAPI vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600821{
822 const VkLayerDispatchTable *disp;
823
824 disp = loader_get_dispatch(device);
825
Jon Ashburn0d60d272015-07-09 15:02:25 -0600826 return disp->GetPipelineCacheData(device, pipelineCache, pData);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600827}
828
Jon Ashburn0d60d272015-07-09 15:02:25 -0600829LOADER_EXPORT VkResult VKAPI vkMergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600830{
831 const VkLayerDispatchTable *disp;
832
833 disp = loader_get_dispatch(device);
834
Jon Ashburn0d60d272015-07-09 15:02:25 -0600835 return disp->MergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600836}
837
Jon Ashburn0d60d272015-07-09 15:02:25 -0600838LOADER_EXPORT VkResult VKAPI vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600839{
840 const VkLayerDispatchTable *disp;
841
842 disp = loader_get_dispatch(device);
843
Jon Ashburn0d60d272015-07-09 15:02:25 -0600844 return disp->CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
845}
846
847LOADER_EXPORT VkResult VKAPI vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
848{
849 const VkLayerDispatchTable *disp;
850
851 disp = loader_get_dispatch(device);
852
853 return disp->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600854}
855
Tony Barbourde4124d2015-07-03 10:33:54 -0600856LOADER_EXPORT VkResult VKAPI vkDestroyPipeline(VkDevice device, VkPipeline pipeline)
857{
858 const VkLayerDispatchTable *disp;
859
860 disp = loader_get_dispatch(device);
861
862 return disp->DestroyPipeline(device, pipeline);
863}
864
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600865LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout)
866{
867 const VkLayerDispatchTable *disp;
868
869 disp = loader_get_dispatch(device);
870
871 return disp->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
872}
873
Tony Barbourde4124d2015-07-03 10:33:54 -0600874LOADER_EXPORT VkResult VKAPI vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout)
875{
876 const VkLayerDispatchTable *disp;
877
878 disp = loader_get_dispatch(device);
879
880 return disp->DestroyPipelineLayout(device, pipelineLayout);
881}
882
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600883LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler)
884{
885 const VkLayerDispatchTable *disp;
886
887 disp = loader_get_dispatch(device);
888
889 return disp->CreateSampler(device, pCreateInfo, pSampler);
890}
891
Tony Barbourde4124d2015-07-03 10:33:54 -0600892LOADER_EXPORT VkResult VKAPI vkDestroySampler(VkDevice device, VkSampler sampler)
893{
894 const VkLayerDispatchTable *disp;
895
896 disp = loader_get_dispatch(device);
897
898 return disp->DestroySampler(device, sampler);
899}
900
901
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600902LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout)
903{
904 const VkLayerDispatchTable *disp;
905
906 disp = loader_get_dispatch(device);
907
908 return disp->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
909}
910
Tony Barbourde4124d2015-07-03 10:33:54 -0600911LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout)
912{
913 const VkLayerDispatchTable *disp;
914
915 disp = loader_get_dispatch(device);
916
917 return disp->DestroyDescriptorSetLayout(device, descriptorSetLayout);
918}
919
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600920LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool)
921{
922 const VkLayerDispatchTable *disp;
923
924 disp = loader_get_dispatch(device);
925
926 return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
927}
928
Tony Barbourde4124d2015-07-03 10:33:54 -0600929LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
930{
931 const VkLayerDispatchTable *disp;
932
933 disp = loader_get_dispatch(device);
934
935 return disp->DestroyDescriptorPool(device, descriptorPool);
936}
937
938
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600939LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
940{
941 const VkLayerDispatchTable *disp;
942
943 disp = loader_get_dispatch(device);
944
945 return disp->ResetDescriptorPool(device, descriptorPool);
946}
947
948LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount)
949{
950 const VkLayerDispatchTable *disp;
951
952 disp = loader_get_dispatch(device);
953
954 return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
955}
956
Tony Barbourb857d312015-07-10 10:50:45 -0600957LOADER_EXPORT VkResult VKAPI vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets)
958{
959 const VkLayerDispatchTable *disp;
960
961 disp = loader_get_dispatch(device);
962
963 return disp->FreeDescriptorSets(device, descriptorPool, count, pDescriptorSets);
964}
965
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800966LOADER_EXPORT VkResult VKAPI vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600967{
968 const VkLayerDispatchTable *disp;
969
970 disp = loader_get_dispatch(device);
971
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800972 return disp->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600973}
974
Tony Barbourde4124d2015-07-03 10:33:54 -0600975LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600976{
977 const VkLayerDispatchTable *disp;
978
979 disp = loader_get_dispatch(device);
980
981 return disp->CreateDynamicViewportState(device, pCreateInfo, pState);
982}
983
Tony Barbourde4124d2015-07-03 10:33:54 -0600984LOADER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState)
985{
986 const VkLayerDispatchTable *disp;
987
988 disp = loader_get_dispatch(device);
989
990 return disp->DestroyDynamicViewportState(device, dynamicViewportState);
991}
992
993LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600994{
995 const VkLayerDispatchTable *disp;
996
997 disp = loader_get_dispatch(device);
998
999 return disp->CreateDynamicRasterState(device, pCreateInfo, pState);
1000}
1001
Tony Barbourde4124d2015-07-03 10:33:54 -06001002LOADER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState)
1003{
1004 const VkLayerDispatchTable *disp;
1005
1006 disp = loader_get_dispatch(device);
1007
1008 return disp->DestroyDynamicRasterState(device, dynamicRasterState);
1009}
1010
1011LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001012{
1013 const VkLayerDispatchTable *disp;
1014
1015 disp = loader_get_dispatch(device);
1016
1017 return disp->CreateDynamicColorBlendState(device, pCreateInfo, pState);
1018}
1019
Tony Barbourde4124d2015-07-03 10:33:54 -06001020LOADER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState)
1021{
1022 const VkLayerDispatchTable *disp;
1023
1024 disp = loader_get_dispatch(device);
1025
1026 return disp->DestroyDynamicColorBlendState(device, dynamicColorBlendState);
1027}
1028
1029LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001030{
1031 const VkLayerDispatchTable *disp;
1032
1033 disp = loader_get_dispatch(device);
1034
1035 return disp->CreateDynamicDepthStencilState(device, pCreateInfo, pState);
1036}
1037
Tony Barbourde4124d2015-07-03 10:33:54 -06001038LOADER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState)
1039{
1040 const VkLayerDispatchTable *disp;
1041
1042 disp = loader_get_dispatch(device);
1043
1044 return disp->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState);
1045}
1046
Cody Northropf02f9f82015-07-09 18:08:05 -06001047LOADER_EXPORT VkResult VKAPI vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool)
1048{
1049 const VkLayerDispatchTable *disp;
1050
1051 disp = loader_get_dispatch(device);
1052
1053 return disp->CreateCommandPool(device, pCreateInfo, pCmdPool);
1054}
1055
1056LOADER_EXPORT VkResult VKAPI vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool)
1057{
1058 const VkLayerDispatchTable *disp;
1059
1060 disp = loader_get_dispatch(device);
1061
1062 return disp->DestroyCommandPool(device, cmdPool);
1063}
1064
1065LOADER_EXPORT VkResult VKAPI vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags)
1066{
1067 const VkLayerDispatchTable *disp;
1068
1069 disp = loader_get_dispatch(device);
1070
1071 return disp->ResetCommandPool(device, cmdPool, flags);
1072}
1073
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001074LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer)
1075{
1076 const VkLayerDispatchTable *disp;
1077 VkResult res;
1078
1079 disp = loader_get_dispatch(device);
1080
1081 res = disp->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
1082 if (res == VK_SUCCESS) {
1083 loader_init_dispatch(*pCmdBuffer, disp);
1084 }
1085
1086 return res;
1087}
1088
Tony Barbourde4124d2015-07-03 10:33:54 -06001089LOADER_EXPORT VkResult VKAPI vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdBuffer)
1090{
1091 const VkLayerDispatchTable *disp;
1092
1093 disp = loader_get_dispatch(device);
1094
1095 return disp->DestroyCommandBuffer(device, cmdBuffer);
1096}
1097
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001098LOADER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo)
1099{
1100 const VkLayerDispatchTable *disp;
1101
1102 disp = loader_get_dispatch(cmdBuffer);
1103
1104 return disp->BeginCommandBuffer(cmdBuffer, pBeginInfo);
1105}
1106
1107LOADER_EXPORT VkResult VKAPI vkEndCommandBuffer(VkCmdBuffer cmdBuffer)
1108{
1109 const VkLayerDispatchTable *disp;
1110
1111 disp = loader_get_dispatch(cmdBuffer);
1112
1113 return disp->EndCommandBuffer(cmdBuffer);
1114}
1115
Cody Northropf02f9f82015-07-09 18:08:05 -06001116LOADER_EXPORT VkResult VKAPI vkResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001117{
1118 const VkLayerDispatchTable *disp;
1119
1120 disp = loader_get_dispatch(cmdBuffer);
1121
Cody Northropf02f9f82015-07-09 18:08:05 -06001122 return disp->ResetCommandBuffer(cmdBuffer, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001123}
1124
1125LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
1126{
1127 const VkLayerDispatchTable *disp;
1128
1129 disp = loader_get_dispatch(cmdBuffer);
1130
1131 disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
1132}
1133
Tony Barbourde4124d2015-07-03 10:33:54 -06001134LOADER_EXPORT void VKAPI vkCmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState state)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001135{
1136 const VkLayerDispatchTable *disp;
1137
1138 disp = loader_get_dispatch(cmdBuffer);
1139
Tony Barbourde4124d2015-07-03 10:33:54 -06001140 disp->CmdBindDynamicViewportState(cmdBuffer, state);
1141}
1142
1143LOADER_EXPORT void VKAPI vkCmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState state)
1144{
1145 const VkLayerDispatchTable *disp;
1146
1147 disp = loader_get_dispatch(cmdBuffer);
1148
1149 disp->CmdBindDynamicRasterState(cmdBuffer, state);
1150}
1151
1152LOADER_EXPORT void VKAPI vkCmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState state)
1153{
1154 const VkLayerDispatchTable *disp;
1155
1156 disp = loader_get_dispatch(cmdBuffer);
1157
1158 disp->CmdBindDynamicColorBlendState(cmdBuffer, state);
1159}
1160
1161LOADER_EXPORT void VKAPI vkCmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState state)
1162{
1163 const VkLayerDispatchTable *disp;
1164
1165 disp = loader_get_dispatch(cmdBuffer);
1166
1167 disp->CmdBindDynamicDepthStencilState(cmdBuffer, state);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001168}
1169
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001170LOADER_EXPORT void VKAPI vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001171{
1172 const VkLayerDispatchTable *disp;
1173
1174 disp = loader_get_dispatch(cmdBuffer);
1175
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001176 disp->CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001177}
1178
1179LOADER_EXPORT void VKAPI vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
1180{
1181 const VkLayerDispatchTable *disp;
1182
1183 disp = loader_get_dispatch(cmdBuffer);
1184
1185 disp->CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
1186}
1187
1188LOADER_EXPORT void VKAPI vkCmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
1189{
1190 const VkLayerDispatchTable *disp;
1191
1192 disp = loader_get_dispatch(cmdBuffer);
1193
1194 disp->CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
1195}
1196
1197LOADER_EXPORT void VKAPI vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
1198{
1199 const VkLayerDispatchTable *disp;
1200
1201 disp = loader_get_dispatch(cmdBuffer);
1202
1203 disp->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
1204}
1205
1206LOADER_EXPORT void VKAPI vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
1207{
1208 const VkLayerDispatchTable *disp;
1209
1210 disp = loader_get_dispatch(cmdBuffer);
1211
1212 disp->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
1213}
1214
1215LOADER_EXPORT void VKAPI vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1216{
1217 const VkLayerDispatchTable *disp;
1218
1219 disp = loader_get_dispatch(cmdBuffer);
1220
1221 disp->CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
1222}
1223
1224LOADER_EXPORT void VKAPI vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1225{
1226 const VkLayerDispatchTable *disp;
1227
1228 disp = loader_get_dispatch(cmdBuffer);
1229
1230 disp->CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
1231}
1232
1233LOADER_EXPORT void VKAPI vkCmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z)
1234{
1235 const VkLayerDispatchTable *disp;
1236
1237 disp = loader_get_dispatch(cmdBuffer);
1238
1239 disp->CmdDispatch(cmdBuffer, x, y, z);
1240}
1241
1242LOADER_EXPORT void VKAPI vkCmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset)
1243{
1244 const VkLayerDispatchTable *disp;
1245
1246 disp = loader_get_dispatch(cmdBuffer);
1247
1248 disp->CmdDispatchIndirect(cmdBuffer, buffer, offset);
1249}
1250
1251LOADER_EXPORT void VKAPI vkCmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
1252{
1253 const VkLayerDispatchTable *disp;
1254
1255 disp = loader_get_dispatch(cmdBuffer);
1256
1257 disp->CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
1258}
1259
1260LOADER_EXPORT void VKAPI vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions)
1261{
1262 const VkLayerDispatchTable *disp;
1263
1264 disp = loader_get_dispatch(cmdBuffer);
1265
1266 disp->CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1267}
1268
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001269LOADER_EXPORT void VKAPI vkCmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001270{
1271 const VkLayerDispatchTable *disp;
1272
1273 disp = loader_get_dispatch(cmdBuffer);
1274
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001275 disp->CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001276}
1277
1278LOADER_EXPORT void VKAPI vkCmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1279{
1280 const VkLayerDispatchTable *disp;
1281
1282 disp = loader_get_dispatch(cmdBuffer);
1283
1284 disp->CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
1285}
1286
1287LOADER_EXPORT void VKAPI vkCmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1288{
1289 const VkLayerDispatchTable *disp;
1290
1291 disp = loader_get_dispatch(cmdBuffer);
1292
1293 disp->CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
1294}
1295
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001296LOADER_EXPORT void VKAPI vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData)
1297{
1298 const VkLayerDispatchTable *disp;
1299
1300 disp = loader_get_dispatch(cmdBuffer);
1301
1302 disp->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
1303}
1304
1305LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
1306{
1307 const VkLayerDispatchTable *disp;
1308
1309 disp = loader_get_dispatch(cmdBuffer);
1310
1311 disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
1312}
1313
Chris Forbese3105972015-06-24 14:34:53 +12001314LOADER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001315{
1316 const VkLayerDispatchTable *disp;
1317
1318 disp = loader_get_dispatch(cmdBuffer);
1319
1320 disp->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1321}
1322
Chris Forbes2951d7d2015-06-22 17:21:59 +12001323LOADER_EXPORT void VKAPI vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001324{
1325 const VkLayerDispatchTable *disp;
1326
1327 disp = loader_get_dispatch(cmdBuffer);
1328
Chris Forbes2951d7d2015-06-22 17:21:59 +12001329 disp->CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
1330}
1331
Chris Forbese3105972015-06-24 14:34:53 +12001332LOADER_EXPORT void VKAPI vkCmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects)
Chris Forbes2951d7d2015-06-22 17:21:59 +12001333{
1334 const VkLayerDispatchTable *disp;
1335
1336 disp = loader_get_dispatch(cmdBuffer);
1337
1338 disp->CmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects);
1339}
1340
1341LOADER_EXPORT void VKAPI vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects)
1342{
1343 const VkLayerDispatchTable *disp;
1344
1345 disp = loader_get_dispatch(cmdBuffer);
1346
1347 disp->CmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001348}
1349
1350LOADER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions)
1351{
1352 const VkLayerDispatchTable *disp;
1353
1354 disp = loader_get_dispatch(cmdBuffer);
1355
1356 disp->CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1357}
1358
Tony Barbourc2e987e2015-06-29 16:20:35 -06001359LOADER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001360{
1361 const VkLayerDispatchTable *disp;
1362
1363 disp = loader_get_dispatch(cmdBuffer);
1364
Tony Barbourc2e987e2015-06-29 16:20:35 -06001365 disp->CmdSetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001366}
1367
Tony Barbourc2e987e2015-06-29 16:20:35 -06001368LOADER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001369{
1370 const VkLayerDispatchTable *disp;
1371
1372 disp = loader_get_dispatch(cmdBuffer);
1373
Tony Barbourc2e987e2015-06-29 16:20:35 -06001374 disp->CmdResetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001375}
1376
Courtney Goeltzenleuchterd9ba3422015-07-12 12:58:58 -06001377LOADER_EXPORT void VKAPI vkCmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001378{
1379 const VkLayerDispatchTable *disp;
1380
1381 disp = loader_get_dispatch(cmdBuffer);
1382
Tony Barbourc2e987e2015-06-29 16:20:35 -06001383 disp->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001384}
1385
Courtney Goeltzenleuchter82b348f2015-07-12 13:07:46 -06001386LOADER_EXPORT void VKAPI vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001387{
1388 const VkLayerDispatchTable *disp;
1389
1390 disp = loader_get_dispatch(cmdBuffer);
1391
Courtney Goeltzenleuchter82b348f2015-07-12 13:07:46 -06001392 disp->CmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001393}
1394
1395LOADER_EXPORT void VKAPI vkCmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags)
1396{
1397 const VkLayerDispatchTable *disp;
1398
1399 disp = loader_get_dispatch(cmdBuffer);
1400
1401 disp->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
1402}
1403
1404LOADER_EXPORT void VKAPI vkCmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot)
1405{
1406 const VkLayerDispatchTable *disp;
1407
1408 disp = loader_get_dispatch(cmdBuffer);
1409
1410 disp->CmdEndQuery(cmdBuffer, queryPool, slot);
1411}
1412
1413LOADER_EXPORT void VKAPI vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount)
1414{
1415 const VkLayerDispatchTable *disp;
1416
1417 disp = loader_get_dispatch(cmdBuffer);
1418
1419 disp->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
1420}
1421
1422LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset)
1423{
1424 const VkLayerDispatchTable *disp;
1425
1426 disp = loader_get_dispatch(cmdBuffer);
1427
1428 disp->CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
1429}
1430
1431LOADER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkFlags flags)
1432{
1433 const VkLayerDispatchTable *disp;
1434
1435 disp = loader_get_dispatch(cmdBuffer);
1436
1437 disp->CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
1438}
1439
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001440LOADER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer)
1441{
1442 const VkLayerDispatchTable *disp;
1443
1444 disp = loader_get_dispatch(device);
1445
1446 return disp->CreateFramebuffer(device, pCreateInfo, pFramebuffer);
1447}
1448
Tony Barbourde4124d2015-07-03 10:33:54 -06001449LOADER_EXPORT VkResult VKAPI vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer)
1450{
1451 const VkLayerDispatchTable *disp;
1452
1453 disp = loader_get_dispatch(device);
1454
1455 return disp->DestroyFramebuffer(device, framebuffer);
1456}
1457
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001458LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass)
1459{
1460 const VkLayerDispatchTable *disp;
1461
1462 disp = loader_get_dispatch(device);
1463
1464 return disp->CreateRenderPass(device, pCreateInfo, pRenderPass);
1465}
1466
Tony Barbourde4124d2015-07-03 10:33:54 -06001467LOADER_EXPORT VkResult VKAPI vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass)
1468{
1469 const VkLayerDispatchTable *disp;
1470
1471 disp = loader_get_dispatch(device);
1472
1473 return disp->DestroyRenderPass(device, renderPass);
1474}
1475
Chia-I Wuc278df82015-07-07 11:50:03 +08001476LOADER_EXPORT void VKAPI vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001477{
1478 const VkLayerDispatchTable *disp;
1479
1480 disp = loader_get_dispatch(cmdBuffer);
1481
Chia-I Wuc278df82015-07-07 11:50:03 +08001482 disp->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents);
1483}
1484
1485LOADER_EXPORT void VKAPI vkCmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents)
1486{
1487 const VkLayerDispatchTable *disp;
1488
1489 disp = loader_get_dispatch(cmdBuffer);
1490
1491 disp->CmdNextSubpass(cmdBuffer, contents);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001492}
1493
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001494LOADER_EXPORT void VKAPI vkCmdEndRenderPass(VkCmdBuffer cmdBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001495{
1496 const VkLayerDispatchTable *disp;
1497
1498 disp = loader_get_dispatch(cmdBuffer);
1499
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001500 disp->CmdEndRenderPass(cmdBuffer);
1501}
1502
1503LOADER_EXPORT void VKAPI vkCmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers)
1504{
1505 const VkLayerDispatchTable *disp;
1506
1507 disp = loader_get_dispatch(cmdBuffer);
1508
1509 disp->CmdExecuteCommands(cmdBuffer, cmdBuffersCount, pCmdBuffers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001510}