blob: 183062c4ef03d293eff5efd29813af16110cefcc [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"
Jon Ashburn2139a3e2015-05-06 09:02:10 -060031
Tobin Ehlis3126f012015-05-13 11:57:18 -060032#if defined(WIN32)
33// On Windows need to disable global optimization for function entrypoints or
34// else mhook will not be able to hook all of them
35#pragma optimize( "g", off )
36#endif
37
Jon Ashburn2139a3e2015-05-06 09:02:10 -060038/* Trampoline entrypoints */
Jon Ashburnfce93d92015-05-12 17:26:48 -060039LOADER_EXPORT VkResult VKAPI vkCreateInstance(
Courtney Goeltzenleuchter70c4ebc2015-06-08 15:13:50 -060040 const VkInstanceCreateInfo* pCreateInfo,
41 VkInstance* pInstance)
Jon Ashburnfce93d92015-05-12 17:26:48 -060042{
43 struct loader_instance *ptr_instance = NULL;
44
45 VkResult res = VK_ERROR_INITIALIZATION_FAILED;
Jon Ashburnfce93d92015-05-12 17:26:48 -060046
47 /* Scan/discover all ICD libraries in a single-threaded manner */
48 loader_platform_thread_once(&once_icd, loader_icd_scan);
49
50 /* get layer libraries in a single-threaded manner */
Jon Ashburn68a63922015-07-02 09:40:15 -060051 loader_platform_thread_once(&once_layer, loader_layer_scan);
Jon Ashburnfce93d92015-05-12 17:26:48 -060052
53 /* merge any duplicate extensions */
54 loader_platform_thread_once(&once_exts, loader_coalesce_extensions);
55
Courtney Goeltzenleuchtera17697f2015-07-06 20:14:18 -060056 res = loader_validate_layers(pCreateInfo->layerCount,
57 pCreateInfo->ppEnabledLayerNames,
Jon Ashburn1b111de2015-07-06 15:40:35 -060058 &loader.scanned_layers);
Courtney Goeltzenleuchter5d9f29b2015-07-06 17:45:08 -060059 if (res != VK_SUCCESS) {
60 return res;
61 }
62
63 res = loader_validate_instance_extensions(pCreateInfo);
64 if (res != VK_SUCCESS) {
65 return res;
66 }
67
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060068 if (pCreateInfo->pAllocCb
69 && pCreateInfo->pAllocCb->pfnAlloc
70 && pCreateInfo->pAllocCb->pfnFree) {
71 ptr_instance = (struct loader_instance *) pCreateInfo->pAllocCb->pfnAlloc(
72 pCreateInfo->pAllocCb->pUserData,
73 sizeof(struct loader_instance),
74 sizeof(VkInstance),
75 VK_SYSTEM_ALLOC_TYPE_API_OBJECT);
76 } else {
77 ptr_instance = (struct loader_instance *) malloc(sizeof(struct loader_instance));
78 }
Jon Ashburnfce93d92015-05-12 17:26:48 -060079 if (ptr_instance == NULL) {
80 return VK_ERROR_OUT_OF_HOST_MEMORY;
81 }
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060082
Jon Ashburnfce93d92015-05-12 17:26:48 -060083 memset(ptr_instance, 0, sizeof(struct loader_instance));
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060084
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060085 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburncedc15f2015-05-21 18:13:33 -060086
Courtney Goeltzenleuchterb620ace2015-07-05 11:28:29 -060087 if (pCreateInfo->pAllocCb
88 && pCreateInfo->pAllocCb->pfnAlloc
89 && pCreateInfo->pAllocCb->pfnFree) {
90 ptr_instance->alloc_callbacks.pUserData = pCreateInfo->pAllocCb->pUserData;
91 ptr_instance->alloc_callbacks.pfnAlloc = pCreateInfo->pAllocCb->pfnAlloc;
92 ptr_instance->alloc_callbacks.pfnFree = pCreateInfo->pAllocCb->pfnFree;
93 }
94
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060095 ptr_instance->disp = loader_heap_alloc(
96 ptr_instance,
97 sizeof(VkLayerInstanceDispatchTable),
98 VK_SYSTEM_ALLOC_TYPE_INTERNAL);
99 if (ptr_instance->disp == NULL) {
100 loader_platform_thread_unlock_mutex(&loader_lock);
101 return VK_ERROR_OUT_OF_HOST_MEMORY;
102 }
103 memcpy(ptr_instance->disp, &instance_disp, sizeof(instance_disp));
104 ptr_instance->next = loader.instances;
105 loader.instances = ptr_instance;
106
107 res = loader_enable_instance_layers(ptr_instance, pCreateInfo);
108 if (res != VK_SUCCESS) {
109 loader_heap_free(ptr_instance, ptr_instance->disp);
110 loader_heap_free(ptr_instance, ptr_instance);
111 return res;
112 }
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600113
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600114 debug_report_create_instance(ptr_instance, pCreateInfo);
Jon Ashburncedc15f2015-05-21 18:13:33 -0600115
116 /* enable any layers on instance chain */
Jon Ashburnfce93d92015-05-12 17:26:48 -0600117 loader_activate_instance_layers(ptr_instance);
118
Jon Ashburnfce93d92015-05-12 17:26:48 -0600119 *pInstance = (VkInstance) ptr_instance;
Jon Ashburna179dcf2015-05-21 17:42:17 -0600120
121 res = ptr_instance->disp->CreateInstance(pCreateInfo, pInstance);
122
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -0600123 /*
124 * Finally have the layers in place and everyone has seen
125 * the CreateInstance command go by. This allows the layer's
126 * GetInstanceProcAddr functions to return valid extension functions
127 * if enabled.
128 */
129 loader_activate_instance_layer_extensions(ptr_instance);
130
Jon Ashburnb40f2562015-05-29 13:15:39 -0600131 loader_platform_thread_unlock_mutex(&loader_lock);
132
Jon Ashburnfce93d92015-05-12 17:26:48 -0600133 return res;
134}
135
136LOADER_EXPORT VkResult VKAPI vkDestroyInstance(
137 VkInstance instance)
138{
139 const VkLayerInstanceDispatchTable *disp;
Jon Ashburnb40f2562015-05-29 13:15:39 -0600140 VkResult res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600141 disp = loader_get_instance_dispatch(instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600142
Jon Ashburnb40f2562015-05-29 13:15:39 -0600143 loader_platform_thread_lock_mutex(&loader_lock);
144
145 res = disp->DestroyInstance(instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600146
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600147 struct loader_instance *ptr_instance = loader_instance(instance);
148 loader_deactivate_instance_layers(ptr_instance);
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600149
150 free(ptr_instance);
151
Jon Ashburnb40f2562015-05-29 13:15:39 -0600152 loader_platform_thread_unlock_mutex(&loader_lock);
153
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600154 return res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600155}
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600156
Jon Ashburnfce93d92015-05-12 17:26:48 -0600157LOADER_EXPORT VkResult VKAPI vkEnumeratePhysicalDevices(
158 VkInstance instance,
159 uint32_t* pPhysicalDeviceCount,
160 VkPhysicalDevice* pPhysicalDevices)
161{
162 const VkLayerInstanceDispatchTable *disp;
Jon Ashburnb40f2562015-05-29 13:15:39 -0600163 VkResult res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600164 disp = loader_get_instance_dispatch(instance);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600165
166 loader_platform_thread_lock_mutex(&loader_lock);
167 res = disp->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount,
Jon Ashburnfce93d92015-05-12 17:26:48 -0600168 pPhysicalDevices);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600169 loader_platform_thread_unlock_mutex(&loader_lock);
170 return res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600171}
172
Tony Barbour426b9052015-06-24 16:06:58 -0600173LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceProperties(
Jon Ashburnfce93d92015-05-12 17:26:48 -0600174 VkPhysicalDevice gpu,
Tony Barbour426b9052015-06-24 16:06:58 -0600175 VkPhysicalDeviceProperties* pProperties)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600176{
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600177 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600178 VkResult res;
179
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600180 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600181 res = disp->GetPhysicalDeviceProperties(gpu, pProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600182 return res;
183}
184
185LOADER_EXPORT VkResult VKAPI vkGetPhysicalDevicePerformance(
186 VkPhysicalDevice gpu,
187 VkPhysicalDevicePerformance* pPerformance)
188{
189 const VkLayerInstanceDispatchTable *disp;
190 VkResult res;
191
192 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600193 res = disp->GetPhysicalDevicePerformance(gpu, pPerformance);
Tony Barbour426b9052015-06-24 16:06:58 -0600194 return res;
195}
196
197LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueCount(
198 VkPhysicalDevice gpu,
199 uint32_t* pCount)
200{
201 const VkLayerInstanceDispatchTable *disp;
202 VkResult res;
203
204 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600205 res = disp->GetPhysicalDeviceQueueCount(gpu, pCount);
Tony Barbour426b9052015-06-24 16:06:58 -0600206 return res;
207}
208
209LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueProperties(
210 VkPhysicalDevice gpu,
211 uint32_t count,
212 VkPhysicalDeviceQueueProperties* pQueueProperties)
213{
214 const VkLayerInstanceDispatchTable *disp;
215 VkResult res;
216
217 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600218 res = disp->GetPhysicalDeviceQueueProperties(gpu, count, pQueueProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600219 return res;
220}
221
222LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
223 VkPhysicalDevice gpu,
224 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
225{
226 const VkLayerInstanceDispatchTable *disp;
227 VkResult res;
228
229 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600230 res = disp->GetPhysicalDeviceMemoryProperties(gpu, pMemoryProperties);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600231 return res;
232}
233
Chris Forbesd7576302015-06-21 22:55:02 +1200234LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures(
235 VkPhysicalDevice gpu,
236 VkPhysicalDeviceFeatures *pFeatures)
237{
238 const VkLayerInstanceDispatchTable *disp;
239 VkResult res;
240
241 disp = loader_get_instance_dispatch(gpu);
Chris Forbesd7576302015-06-21 22:55:02 +1200242 res = disp->GetPhysicalDeviceFeatures(gpu, pFeatures);
Chris Forbesd7576302015-06-21 22:55:02 +1200243 return res;
244}
245
246LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatInfo(
247 VkPhysicalDevice gpu,
248 VkFormat format,
249 VkFormatProperties *pFormatInfo)
250{
251 const VkLayerInstanceDispatchTable *disp;
252 VkResult res;
253
254 disp = loader_get_instance_dispatch(gpu);
Chris Forbesd7576302015-06-21 22:55:02 +1200255 res = disp->GetPhysicalDeviceFormatInfo(gpu, format, pFormatInfo);
Chris Forbesd7576302015-06-21 22:55:02 +1200256 return res;
257}
258
259LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits(
260 VkPhysicalDevice gpu,
261 VkPhysicalDeviceLimits *pLimits)
262{
263 const VkLayerInstanceDispatchTable *disp;
264 VkResult res;
265
266 disp = loader_get_instance_dispatch(gpu);
Chris Forbesd7576302015-06-21 22:55:02 +1200267 res = disp->GetPhysicalDeviceLimits(gpu, pLimits);
Chris Forbesd7576302015-06-21 22:55:02 +1200268 return res;
269}
270
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600271LOADER_EXPORT VkResult VKAPI vkCreateDevice(
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600272 VkPhysicalDevice gpu,
273 const VkDeviceCreateInfo* pCreateInfo,
274 VkDevice* pDevice)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600275{
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600276 VkResult res;
277
Jon Ashburnb40f2562015-05-29 13:15:39 -0600278 loader_platform_thread_lock_mutex(&loader_lock);
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600279
280 res = loader_CreateDevice(gpu, pCreateInfo, pDevice);
281
Jon Ashburnb40f2562015-05-29 13:15:39 -0600282 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600283 return res;
284}
285
286LOADER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device)
287{
288 const VkLayerDispatchTable *disp;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600289 VkResult res;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600290
291 disp = loader_get_dispatch(device);
292
Jon Ashburnb40f2562015-05-29 13:15:39 -0600293 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600294 res = disp->DestroyDevice(device);
Jon Ashburncb5a5ac2015-06-10 10:06:06 -0600295 loader_remove_logical_device(device);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600296 loader_platform_thread_unlock_mutex(&loader_lock);
297 return res;
298}
299
Tony Barbour426b9052015-06-24 16:06:58 -0600300LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600301 VkPhysicalDevice physicalDevice,
302 const char* pLayerName,
303 uint32_t* pCount,
304 VkExtensionProperties* pProperties)
Jon Ashburnb40f2562015-05-29 13:15:39 -0600305{
306 VkResult res;
307
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600308 loader_platform_thread_lock_mutex(&loader_lock);
309 res = loader_GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
310 loader_platform_thread_unlock_mutex(&loader_lock);
Tony Barbour426b9052015-06-24 16:06:58 -0600311 return res;
312}
313
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600314LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
315 VkPhysicalDevice physicalDevice,
316 uint32_t* pCount,
317 VkLayerProperties* pProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600318{
319 VkResult res;
320
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600321 loader_platform_thread_lock_mutex(&loader_lock);
322 res = loader_GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
323 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600324 return res;
325}
326
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600327LOADER_EXPORT VkResult VKAPI vkGetDeviceQueue(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue)
328{
329 const VkLayerDispatchTable *disp;
330 VkResult res;
331
332 disp = loader_get_dispatch(device);
333
334 res = disp->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
335 if (res == VK_SUCCESS) {
336 loader_set_dispatch(*pQueue, disp);
337 }
338
339 return res;
340}
341
342LOADER_EXPORT VkResult VKAPI vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence)
343{
344 const VkLayerDispatchTable *disp;
345
346 disp = loader_get_dispatch(queue);
347
348 return disp->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
349}
350
351LOADER_EXPORT VkResult VKAPI vkQueueWaitIdle(VkQueue queue)
352{
353 const VkLayerDispatchTable *disp;
354
355 disp = loader_get_dispatch(queue);
356
357 return disp->QueueWaitIdle(queue);
358}
359
360LOADER_EXPORT VkResult VKAPI vkDeviceWaitIdle(VkDevice device)
361{
362 const VkLayerDispatchTable *disp;
363
364 disp = loader_get_dispatch(device);
365
366 return disp->DeviceWaitIdle(device);
367}
368
369LOADER_EXPORT VkResult VKAPI vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem)
370{
371 const VkLayerDispatchTable *disp;
372
373 disp = loader_get_dispatch(device);
374
375 return disp->AllocMemory(device, pAllocInfo, pMem);
376}
377
378LOADER_EXPORT VkResult VKAPI vkFreeMemory(VkDevice device, VkDeviceMemory mem)
379{
380 const VkLayerDispatchTable *disp;
381
382 disp = loader_get_dispatch(device);
383
384 return disp->FreeMemory(device, mem);
385}
386
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600387LOADER_EXPORT VkResult VKAPI vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkFlags flags, void** ppData)
388{
389 const VkLayerDispatchTable *disp;
390
391 disp = loader_get_dispatch(device);
392
393 return disp->MapMemory(device, mem, offset, size, flags, ppData);
394}
395
396LOADER_EXPORT VkResult VKAPI vkUnmapMemory(VkDevice device, VkDeviceMemory mem)
397{
398 const VkLayerDispatchTable *disp;
399
400 disp = loader_get_dispatch(device);
401
402 return disp->UnmapMemory(device, mem);
403}
404
405LOADER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
406{
407 const VkLayerDispatchTable *disp;
408
409 disp = loader_get_dispatch(device);
410
411 return disp->FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
412}
413
414LOADER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
415{
416 const VkLayerDispatchTable *disp;
417
418 disp = loader_get_dispatch(device);
419
420 return disp->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
421}
422
Courtney Goeltzenleuchterd040c5c2015-07-09 21:57:28 -0600423LOADER_EXPORT VkResult VKAPI vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)
424{
425 const VkLayerDispatchTable *disp;
426
427 disp = loader_get_dispatch(device);
428
429 return disp->GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
430}
431
Tony Barbourde4124d2015-07-03 10:33:54 -0600432LOADER_EXPORT VkResult VKAPI vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600433{
434 const VkLayerDispatchTable *disp;
435
436 disp = loader_get_dispatch(device);
437
Tony Barbourde4124d2015-07-03 10:33:54 -0600438 return disp->GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600439}
440
Tony Barbourde4124d2015-07-03 10:33:54 -0600441LOADER_EXPORT VkResult VKAPI vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600442{
443 const VkLayerDispatchTable *disp;
444
445 disp = loader_get_dispatch(device);
446
Tony Barbourde4124d2015-07-03 10:33:54 -0600447 return disp->GetImageMemoryRequirements(device, image, pMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600448}
449
Tony Barbourde4124d2015-07-03 10:33:54 -0600450LOADER_EXPORT VkResult VKAPI vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600451{
452 const VkLayerDispatchTable *disp;
453
Mark Lobodzinskifb9f5642015-05-11 17:21:15 -0500454 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600455
Tony Barbourde4124d2015-07-03 10:33:54 -0600456 return disp->BindBufferMemory(device, buffer, mem, offset);
457}
458
459LOADER_EXPORT VkResult VKAPI vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize offset)
460{
461 const VkLayerDispatchTable *disp;
462
463 disp = loader_get_dispatch(device);
464
465 return disp->BindImageMemory(device, image, mem, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600466}
467
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600468LOADER_EXPORT VkResult VKAPI vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600469{
470 const VkLayerDispatchTable *disp;
471
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600472 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600473
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600474 return disp->GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600475}
476
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600477LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties)
478{
479 const VkLayerInstanceDispatchTable *disp;
480
481 disp = loader_get_instance_dispatch(physicalDevice);
482
483 return disp->GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
484}
485
486LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600487{
488 const VkLayerDispatchTable *disp;
489
490 disp = loader_get_dispatch(queue);
491
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600492 return disp->QueueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
493}
494
495LOADER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
496{
497 const VkLayerDispatchTable *disp;
498
499 disp = loader_get_dispatch(queue);
500
501 return disp->QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
502}
503
504LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo)
505{
506 const VkLayerDispatchTable *disp;
507
508 disp = loader_get_dispatch(queue);
509
510 return disp->QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600511}
512
513LOADER_EXPORT VkResult VKAPI vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence)
514{
515 const VkLayerDispatchTable *disp;
516
517 disp = loader_get_dispatch(device);
518
519 return disp->CreateFence(device, pCreateInfo, pFence);
520}
521
Tony Barbourde4124d2015-07-03 10:33:54 -0600522LOADER_EXPORT VkResult VKAPI vkDestroyFence(VkDevice device, VkFence fence)
523{
524 const VkLayerDispatchTable *disp;
525
526 disp = loader_get_dispatch(device);
527
528 return disp->DestroyFence(device, fence);
529}
530
Courtney Goeltzenleuchterf2e33ad2015-06-18 17:28:20 -0600531LOADER_EXPORT VkResult VKAPI vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600532{
533 const VkLayerDispatchTable *disp;
534
535 disp = loader_get_dispatch(device);
536
537 return disp->ResetFences(device, fenceCount, pFences);
538}
539
540LOADER_EXPORT VkResult VKAPI vkGetFenceStatus(VkDevice device, VkFence fence)
541{
542 const VkLayerDispatchTable *disp;
543
544 disp = loader_get_dispatch(device);
545
546 return disp->GetFenceStatus(device, fence);
547}
548
Courtney Goeltzenleuchter1f41f542015-07-09 11:44:38 -0600549LOADER_EXPORT VkResult VKAPI vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600550{
551 const VkLayerDispatchTable *disp;
552
553 disp = loader_get_dispatch(device);
554
555 return disp->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
556}
557
558LOADER_EXPORT VkResult VKAPI vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore)
559{
560 const VkLayerDispatchTable *disp;
561
562 disp = loader_get_dispatch(device);
563
564 return disp->CreateSemaphore(device, pCreateInfo, pSemaphore);
565}
566
Tony Barbourde4124d2015-07-03 10:33:54 -0600567LOADER_EXPORT VkResult VKAPI vkDestroySemaphore(VkDevice device, VkSemaphore semaphore)
568{
569 const VkLayerDispatchTable *disp;
570
571 disp = loader_get_dispatch(device);
572
573 return disp->DestroySemaphore(device, semaphore);
574}
575
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600576LOADER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore)
577{
578 const VkLayerDispatchTable *disp;
579
580 disp = loader_get_dispatch(queue);
581
582 return disp->QueueSignalSemaphore(queue, semaphore);
583}
584
585LOADER_EXPORT VkResult VKAPI vkQueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore)
586{
587 const VkLayerDispatchTable *disp;
588
589 disp = loader_get_dispatch(queue);
590
591 return disp->QueueWaitSemaphore(queue, semaphore);
592}
593
594LOADER_EXPORT VkResult VKAPI vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent)
595{
596 const VkLayerDispatchTable *disp;
597
598 disp = loader_get_dispatch(device);
599
600 return disp->CreateEvent(device, pCreateInfo, pEvent);
601}
602
Tony Barbourde4124d2015-07-03 10:33:54 -0600603LOADER_EXPORT VkResult VKAPI vkDestroyEvent(VkDevice device, VkEvent event)
604{
605 const VkLayerDispatchTable *disp;
606
607 disp = loader_get_dispatch(device);
608
609 return disp->DestroyEvent(device, event);
610}
611
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600612LOADER_EXPORT VkResult VKAPI vkGetEventStatus(VkDevice device, VkEvent event)
613{
614 const VkLayerDispatchTable *disp;
615
616 disp = loader_get_dispatch(device);
617
618 return disp->GetEventStatus(device, event);
619}
620
621LOADER_EXPORT VkResult VKAPI vkSetEvent(VkDevice device, VkEvent event)
622{
623 const VkLayerDispatchTable *disp;
624
625 disp = loader_get_dispatch(device);
626
627 return disp->SetEvent(device, event);
628}
629
630LOADER_EXPORT VkResult VKAPI vkResetEvent(VkDevice device, VkEvent event)
631{
632 const VkLayerDispatchTable *disp;
633
634 disp = loader_get_dispatch(device);
635
636 return disp->ResetEvent(device, event);
637}
638
639LOADER_EXPORT VkResult VKAPI vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool)
640{
641 const VkLayerDispatchTable *disp;
642
643 disp = loader_get_dispatch(device);
644
645 return disp->CreateQueryPool(device, pCreateInfo, pQueryPool);
646}
647
Tony Barbourde4124d2015-07-03 10:33:54 -0600648LOADER_EXPORT VkResult VKAPI vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool)
649{
650 const VkLayerDispatchTable *disp;
651
652 disp = loader_get_dispatch(device);
653
654 return disp->DestroyQueryPool(device, queryPool);
655}
656
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600657LOADER_EXPORT VkResult VKAPI vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags)
658{
659 const VkLayerDispatchTable *disp;
660
661 disp = loader_get_dispatch(device);
662
663 return disp->GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
664}
665
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600666LOADER_EXPORT VkResult VKAPI vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer)
667{
668 const VkLayerDispatchTable *disp;
669
670 disp = loader_get_dispatch(device);
671
672 return disp->CreateBuffer(device, pCreateInfo, pBuffer);
673}
674
Tony Barbourde4124d2015-07-03 10:33:54 -0600675LOADER_EXPORT VkResult VKAPI vkDestroyBuffer(VkDevice device, VkBuffer buffer)
676{
677 const VkLayerDispatchTable *disp;
678
679 disp = loader_get_dispatch(device);
680
681 return disp->DestroyBuffer(device, buffer);
682}
683
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600684LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView)
685{
686 const VkLayerDispatchTable *disp;
687
688 disp = loader_get_dispatch(device);
689
690 return disp->CreateBufferView(device, pCreateInfo, pView);
691}
692
Tony Barbourde4124d2015-07-03 10:33:54 -0600693LOADER_EXPORT VkResult VKAPI vkDestroyBufferView(VkDevice device, VkBufferView bufferView)
694{
695 const VkLayerDispatchTable *disp;
696
697 disp = loader_get_dispatch(device);
698
699 return disp->DestroyBufferView(device, bufferView);
700}
701
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600702LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage)
703{
704 const VkLayerDispatchTable *disp;
705
706 disp = loader_get_dispatch(device);
707
708 return disp->CreateImage(device, pCreateInfo, pImage);
709}
710
Tony Barbourde4124d2015-07-03 10:33:54 -0600711LOADER_EXPORT VkResult VKAPI vkDestroyImage(VkDevice device, VkImage image)
712{
713 const VkLayerDispatchTable *disp;
714
715 disp = loader_get_dispatch(device);
716
717 return disp->DestroyImage(device, image);
718}
719
Tony Barbour426b9052015-06-24 16:06:58 -0600720LOADER_EXPORT VkResult VKAPI vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600721{
722 const VkLayerDispatchTable *disp;
723
724 disp = loader_get_dispatch(device);
725
Tony Barbour426b9052015-06-24 16:06:58 -0600726 return disp->GetImageSubresourceLayout(device, image, pSubresource, pLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600727}
728
729LOADER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView)
730{
731 const VkLayerDispatchTable *disp;
732
733 disp = loader_get_dispatch(device);
734
735 return disp->CreateImageView(device, pCreateInfo, pView);
736}
737
Tony Barbourde4124d2015-07-03 10:33:54 -0600738LOADER_EXPORT VkResult VKAPI vkDestroyImageView(VkDevice device, VkImageView imageView)
739{
740 const VkLayerDispatchTable *disp;
741
742 disp = loader_get_dispatch(device);
743
744 return disp->DestroyImageView(device, imageView);
745}
746
Chia-I Wuc278df82015-07-07 11:50:03 +0800747LOADER_EXPORT VkResult VKAPI vkCreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600748{
749 const VkLayerDispatchTable *disp;
750
751 disp = loader_get_dispatch(device);
752
Chia-I Wuc278df82015-07-07 11:50:03 +0800753 return disp->CreateAttachmentView(device, pCreateInfo, pView);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600754}
755
Tony Barbourde4124d2015-07-03 10:33:54 -0600756LOADER_EXPORT VkResult VKAPI vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView)
757{
758 const VkLayerDispatchTable *disp;
759
760 disp = loader_get_dispatch(device);
761
762 return disp->DestroyAttachmentView(device, attachmentView);
763}
764
Courtney Goeltzenleuchter0b29b0d2015-06-24 18:24:19 -0600765LOADER_EXPORT VkResult VKAPI vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShader)
766{
767 const VkLayerDispatchTable *disp;
768
769 disp = loader_get_dispatch(device);
770
771 return disp->CreateShaderModule(device, pCreateInfo, pShader);
772}
773
Tony Barbourde4124d2015-07-03 10:33:54 -0600774LOADER_EXPORT VkResult VKAPI vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule)
775{
776 const VkLayerDispatchTable *disp;
777
778 disp = loader_get_dispatch(device);
779
780 return disp->DestroyShaderModule(device, shaderModule);
781}
782
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600783LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader)
784{
785 const VkLayerDispatchTable *disp;
786
787 disp = loader_get_dispatch(device);
788
789 return disp->CreateShader(device, pCreateInfo, pShader);
790}
791
Tony Barbourde4124d2015-07-03 10:33:54 -0600792LOADER_EXPORT VkResult VKAPI vkDestroyShader(VkDevice device, VkShader shader)
793{
794 const VkLayerDispatchTable *disp;
795
796 disp = loader_get_dispatch(device);
797
798 return disp->DestroyShader(device, shader);
799}
800
Jon Ashburn0d60d272015-07-09 15:02:25 -0600801LOADER_EXPORT VkResult VKAPI vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600802{
803 const VkLayerDispatchTable *disp;
804
805 disp = loader_get_dispatch(device);
806
Jon Ashburn0d60d272015-07-09 15:02:25 -0600807 return disp->CreatePipelineCache(device, pCreateInfo, pPipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600808}
809
Jon Ashburn0d60d272015-07-09 15:02:25 -0600810LOADER_EXPORT VkResult VKAPI vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600811{
812 const VkLayerDispatchTable *disp;
813
814 disp = loader_get_dispatch(device);
815
Jon Ashburn0d60d272015-07-09 15:02:25 -0600816 return disp->DestroyPipelineCache(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600817}
818
Jon Ashburn0d60d272015-07-09 15:02:25 -0600819LOADER_EXPORT size_t VKAPI vkGetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600820{
821 const VkLayerDispatchTable *disp;
822
823 disp = loader_get_dispatch(device);
824
Jon Ashburn0d60d272015-07-09 15:02:25 -0600825 return disp->GetPipelineCacheSize(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600826}
827
Jon Ashburn0d60d272015-07-09 15:02:25 -0600828LOADER_EXPORT VkResult VKAPI vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600829{
830 const VkLayerDispatchTable *disp;
831
832 disp = loader_get_dispatch(device);
833
Jon Ashburn0d60d272015-07-09 15:02:25 -0600834 return disp->GetPipelineCacheData(device, pipelineCache, pData);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600835}
836
Jon Ashburn0d60d272015-07-09 15:02:25 -0600837LOADER_EXPORT VkResult VKAPI vkMergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600838{
839 const VkLayerDispatchTable *disp;
840
841 disp = loader_get_dispatch(device);
842
Jon Ashburn0d60d272015-07-09 15:02:25 -0600843 return disp->MergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600844}
845
Jon Ashburn0d60d272015-07-09 15:02:25 -0600846LOADER_EXPORT VkResult VKAPI vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600847{
848 const VkLayerDispatchTable *disp;
849
850 disp = loader_get_dispatch(device);
851
Jon Ashburn0d60d272015-07-09 15:02:25 -0600852 return disp->CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
853}
854
855LOADER_EXPORT VkResult VKAPI vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
856{
857 const VkLayerDispatchTable *disp;
858
859 disp = loader_get_dispatch(device);
860
861 return disp->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600862}
863
Tony Barbourde4124d2015-07-03 10:33:54 -0600864LOADER_EXPORT VkResult VKAPI vkDestroyPipeline(VkDevice device, VkPipeline pipeline)
865{
866 const VkLayerDispatchTable *disp;
867
868 disp = loader_get_dispatch(device);
869
870 return disp->DestroyPipeline(device, pipeline);
871}
872
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600873LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout)
874{
875 const VkLayerDispatchTable *disp;
876
877 disp = loader_get_dispatch(device);
878
879 return disp->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
880}
881
Tony Barbourde4124d2015-07-03 10:33:54 -0600882LOADER_EXPORT VkResult VKAPI vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout)
883{
884 const VkLayerDispatchTable *disp;
885
886 disp = loader_get_dispatch(device);
887
888 return disp->DestroyPipelineLayout(device, pipelineLayout);
889}
890
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600891LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler)
892{
893 const VkLayerDispatchTable *disp;
894
895 disp = loader_get_dispatch(device);
896
897 return disp->CreateSampler(device, pCreateInfo, pSampler);
898}
899
Tony Barbourde4124d2015-07-03 10:33:54 -0600900LOADER_EXPORT VkResult VKAPI vkDestroySampler(VkDevice device, VkSampler sampler)
901{
902 const VkLayerDispatchTable *disp;
903
904 disp = loader_get_dispatch(device);
905
906 return disp->DestroySampler(device, sampler);
907}
908
909
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600910LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout)
911{
912 const VkLayerDispatchTable *disp;
913
914 disp = loader_get_dispatch(device);
915
916 return disp->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
917}
918
Tony Barbourde4124d2015-07-03 10:33:54 -0600919LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout)
920{
921 const VkLayerDispatchTable *disp;
922
923 disp = loader_get_dispatch(device);
924
925 return disp->DestroyDescriptorSetLayout(device, descriptorSetLayout);
926}
927
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600928LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool)
929{
930 const VkLayerDispatchTable *disp;
931
932 disp = loader_get_dispatch(device);
933
934 return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
935}
936
Tony Barbourde4124d2015-07-03 10:33:54 -0600937LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
938{
939 const VkLayerDispatchTable *disp;
940
941 disp = loader_get_dispatch(device);
942
943 return disp->DestroyDescriptorPool(device, descriptorPool);
944}
945
946
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600947LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
948{
949 const VkLayerDispatchTable *disp;
950
951 disp = loader_get_dispatch(device);
952
953 return disp->ResetDescriptorPool(device, descriptorPool);
954}
955
956LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount)
957{
958 const VkLayerDispatchTable *disp;
959
960 disp = loader_get_dispatch(device);
961
962 return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
963}
964
Tony Barbourb857d312015-07-10 10:50:45 -0600965LOADER_EXPORT VkResult VKAPI vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets)
966{
967 const VkLayerDispatchTable *disp;
968
969 disp = loader_get_dispatch(device);
970
971 return disp->FreeDescriptorSets(device, descriptorPool, count, pDescriptorSets);
972}
973
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800974LOADER_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 -0600975{
976 const VkLayerDispatchTable *disp;
977
978 disp = loader_get_dispatch(device);
979
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800980 return disp->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600981}
982
Tony Barbourde4124d2015-07-03 10:33:54 -0600983LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600984{
985 const VkLayerDispatchTable *disp;
986
987 disp = loader_get_dispatch(device);
988
989 return disp->CreateDynamicViewportState(device, pCreateInfo, pState);
990}
991
Tony Barbourde4124d2015-07-03 10:33:54 -0600992LOADER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState)
993{
994 const VkLayerDispatchTable *disp;
995
996 disp = loader_get_dispatch(device);
997
998 return disp->DestroyDynamicViewportState(device, dynamicViewportState);
999}
1000
1001LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001002{
1003 const VkLayerDispatchTable *disp;
1004
1005 disp = loader_get_dispatch(device);
1006
1007 return disp->CreateDynamicRasterState(device, pCreateInfo, pState);
1008}
1009
Tony Barbourde4124d2015-07-03 10:33:54 -06001010LOADER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState)
1011{
1012 const VkLayerDispatchTable *disp;
1013
1014 disp = loader_get_dispatch(device);
1015
1016 return disp->DestroyDynamicRasterState(device, dynamicRasterState);
1017}
1018
1019LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001020{
1021 const VkLayerDispatchTable *disp;
1022
1023 disp = loader_get_dispatch(device);
1024
1025 return disp->CreateDynamicColorBlendState(device, pCreateInfo, pState);
1026}
1027
Tony Barbourde4124d2015-07-03 10:33:54 -06001028LOADER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState)
1029{
1030 const VkLayerDispatchTable *disp;
1031
1032 disp = loader_get_dispatch(device);
1033
1034 return disp->DestroyDynamicColorBlendState(device, dynamicColorBlendState);
1035}
1036
1037LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001038{
1039 const VkLayerDispatchTable *disp;
1040
1041 disp = loader_get_dispatch(device);
1042
1043 return disp->CreateDynamicDepthStencilState(device, pCreateInfo, pState);
1044}
1045
Tony Barbourde4124d2015-07-03 10:33:54 -06001046LOADER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState)
1047{
1048 const VkLayerDispatchTable *disp;
1049
1050 disp = loader_get_dispatch(device);
1051
1052 return disp->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState);
1053}
1054
Cody Northropf02f9f82015-07-09 18:08:05 -06001055LOADER_EXPORT VkResult VKAPI vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool)
1056{
1057 const VkLayerDispatchTable *disp;
1058
1059 disp = loader_get_dispatch(device);
1060
1061 return disp->CreateCommandPool(device, pCreateInfo, pCmdPool);
1062}
1063
1064LOADER_EXPORT VkResult VKAPI vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool)
1065{
1066 const VkLayerDispatchTable *disp;
1067
1068 disp = loader_get_dispatch(device);
1069
1070 return disp->DestroyCommandPool(device, cmdPool);
1071}
1072
1073LOADER_EXPORT VkResult VKAPI vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags)
1074{
1075 const VkLayerDispatchTable *disp;
1076
1077 disp = loader_get_dispatch(device);
1078
1079 return disp->ResetCommandPool(device, cmdPool, flags);
1080}
1081
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001082LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer)
1083{
1084 const VkLayerDispatchTable *disp;
1085 VkResult res;
1086
1087 disp = loader_get_dispatch(device);
1088
1089 res = disp->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
1090 if (res == VK_SUCCESS) {
1091 loader_init_dispatch(*pCmdBuffer, disp);
1092 }
1093
1094 return res;
1095}
1096
Tony Barbourde4124d2015-07-03 10:33:54 -06001097LOADER_EXPORT VkResult VKAPI vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdBuffer)
1098{
1099 const VkLayerDispatchTable *disp;
1100
1101 disp = loader_get_dispatch(device);
1102
1103 return disp->DestroyCommandBuffer(device, cmdBuffer);
1104}
1105
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001106LOADER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo)
1107{
1108 const VkLayerDispatchTable *disp;
1109
1110 disp = loader_get_dispatch(cmdBuffer);
1111
1112 return disp->BeginCommandBuffer(cmdBuffer, pBeginInfo);
1113}
1114
1115LOADER_EXPORT VkResult VKAPI vkEndCommandBuffer(VkCmdBuffer cmdBuffer)
1116{
1117 const VkLayerDispatchTable *disp;
1118
1119 disp = loader_get_dispatch(cmdBuffer);
1120
1121 return disp->EndCommandBuffer(cmdBuffer);
1122}
1123
Cody Northropf02f9f82015-07-09 18:08:05 -06001124LOADER_EXPORT VkResult VKAPI vkResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001125{
1126 const VkLayerDispatchTable *disp;
1127
1128 disp = loader_get_dispatch(cmdBuffer);
1129
Cody Northropf02f9f82015-07-09 18:08:05 -06001130 return disp->ResetCommandBuffer(cmdBuffer, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001131}
1132
1133LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
1134{
1135 const VkLayerDispatchTable *disp;
1136
1137 disp = loader_get_dispatch(cmdBuffer);
1138
1139 disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
1140}
1141
Tony Barbourde4124d2015-07-03 10:33:54 -06001142LOADER_EXPORT void VKAPI vkCmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState state)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001143{
1144 const VkLayerDispatchTable *disp;
1145
1146 disp = loader_get_dispatch(cmdBuffer);
1147
Tony Barbourde4124d2015-07-03 10:33:54 -06001148 disp->CmdBindDynamicViewportState(cmdBuffer, state);
1149}
1150
1151LOADER_EXPORT void VKAPI vkCmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState state)
1152{
1153 const VkLayerDispatchTable *disp;
1154
1155 disp = loader_get_dispatch(cmdBuffer);
1156
1157 disp->CmdBindDynamicRasterState(cmdBuffer, state);
1158}
1159
1160LOADER_EXPORT void VKAPI vkCmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState state)
1161{
1162 const VkLayerDispatchTable *disp;
1163
1164 disp = loader_get_dispatch(cmdBuffer);
1165
1166 disp->CmdBindDynamicColorBlendState(cmdBuffer, state);
1167}
1168
1169LOADER_EXPORT void VKAPI vkCmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState state)
1170{
1171 const VkLayerDispatchTable *disp;
1172
1173 disp = loader_get_dispatch(cmdBuffer);
1174
1175 disp->CmdBindDynamicDepthStencilState(cmdBuffer, state);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001176}
1177
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001178LOADER_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 -06001179{
1180 const VkLayerDispatchTable *disp;
1181
1182 disp = loader_get_dispatch(cmdBuffer);
1183
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001184 disp->CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001185}
1186
1187LOADER_EXPORT void VKAPI vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
1188{
1189 const VkLayerDispatchTable *disp;
1190
1191 disp = loader_get_dispatch(cmdBuffer);
1192
1193 disp->CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
1194}
1195
1196LOADER_EXPORT void VKAPI vkCmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
1197{
1198 const VkLayerDispatchTable *disp;
1199
1200 disp = loader_get_dispatch(cmdBuffer);
1201
1202 disp->CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
1203}
1204
1205LOADER_EXPORT void VKAPI vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
1206{
1207 const VkLayerDispatchTable *disp;
1208
1209 disp = loader_get_dispatch(cmdBuffer);
1210
1211 disp->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
1212}
1213
1214LOADER_EXPORT void VKAPI vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
1215{
1216 const VkLayerDispatchTable *disp;
1217
1218 disp = loader_get_dispatch(cmdBuffer);
1219
1220 disp->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
1221}
1222
1223LOADER_EXPORT void VKAPI vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1224{
1225 const VkLayerDispatchTable *disp;
1226
1227 disp = loader_get_dispatch(cmdBuffer);
1228
1229 disp->CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
1230}
1231
1232LOADER_EXPORT void VKAPI vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1233{
1234 const VkLayerDispatchTable *disp;
1235
1236 disp = loader_get_dispatch(cmdBuffer);
1237
1238 disp->CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
1239}
1240
1241LOADER_EXPORT void VKAPI vkCmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z)
1242{
1243 const VkLayerDispatchTable *disp;
1244
1245 disp = loader_get_dispatch(cmdBuffer);
1246
1247 disp->CmdDispatch(cmdBuffer, x, y, z);
1248}
1249
1250LOADER_EXPORT void VKAPI vkCmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset)
1251{
1252 const VkLayerDispatchTable *disp;
1253
1254 disp = loader_get_dispatch(cmdBuffer);
1255
1256 disp->CmdDispatchIndirect(cmdBuffer, buffer, offset);
1257}
1258
1259LOADER_EXPORT void VKAPI vkCmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
1260{
1261 const VkLayerDispatchTable *disp;
1262
1263 disp = loader_get_dispatch(cmdBuffer);
1264
1265 disp->CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
1266}
1267
1268LOADER_EXPORT void VKAPI vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions)
1269{
1270 const VkLayerDispatchTable *disp;
1271
1272 disp = loader_get_dispatch(cmdBuffer);
1273
1274 disp->CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1275}
1276
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001277LOADER_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 -06001278{
1279 const VkLayerDispatchTable *disp;
1280
1281 disp = loader_get_dispatch(cmdBuffer);
1282
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001283 disp->CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001284}
1285
1286LOADER_EXPORT void VKAPI vkCmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1287{
1288 const VkLayerDispatchTable *disp;
1289
1290 disp = loader_get_dispatch(cmdBuffer);
1291
1292 disp->CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
1293}
1294
1295LOADER_EXPORT void VKAPI vkCmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1296{
1297 const VkLayerDispatchTable *disp;
1298
1299 disp = loader_get_dispatch(cmdBuffer);
1300
1301 disp->CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
1302}
1303
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001304LOADER_EXPORT void VKAPI vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData)
1305{
1306 const VkLayerDispatchTable *disp;
1307
1308 disp = loader_get_dispatch(cmdBuffer);
1309
1310 disp->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
1311}
1312
1313LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
1314{
1315 const VkLayerDispatchTable *disp;
1316
1317 disp = loader_get_dispatch(cmdBuffer);
1318
1319 disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
1320}
1321
Chris Forbese3105972015-06-24 14:34:53 +12001322LOADER_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 -06001323{
1324 const VkLayerDispatchTable *disp;
1325
1326 disp = loader_get_dispatch(cmdBuffer);
1327
1328 disp->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1329}
1330
Chris Forbes2951d7d2015-06-22 17:21:59 +12001331LOADER_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 -06001332{
1333 const VkLayerDispatchTable *disp;
1334
1335 disp = loader_get_dispatch(cmdBuffer);
1336
Chris Forbes2951d7d2015-06-22 17:21:59 +12001337 disp->CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
1338}
1339
Chris Forbese3105972015-06-24 14:34:53 +12001340LOADER_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 +12001341{
1342 const VkLayerDispatchTable *disp;
1343
1344 disp = loader_get_dispatch(cmdBuffer);
1345
1346 disp->CmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects);
1347}
1348
1349LOADER_EXPORT void VKAPI vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects)
1350{
1351 const VkLayerDispatchTable *disp;
1352
1353 disp = loader_get_dispatch(cmdBuffer);
1354
1355 disp->CmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001356}
1357
1358LOADER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions)
1359{
1360 const VkLayerDispatchTable *disp;
1361
1362 disp = loader_get_dispatch(cmdBuffer);
1363
1364 disp->CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1365}
1366
Tony Barbourc2e987e2015-06-29 16:20:35 -06001367LOADER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001368{
1369 const VkLayerDispatchTable *disp;
1370
1371 disp = loader_get_dispatch(cmdBuffer);
1372
Tony Barbourc2e987e2015-06-29 16:20:35 -06001373 disp->CmdSetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001374}
1375
Tony Barbourc2e987e2015-06-29 16:20:35 -06001376LOADER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001377{
1378 const VkLayerDispatchTable *disp;
1379
1380 disp = loader_get_dispatch(cmdBuffer);
1381
Tony Barbourc2e987e2015-06-29 16:20:35 -06001382 disp->CmdResetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001383}
1384
Tony Barbourc2e987e2015-06-29 16:20:35 -06001385LOADER_EXPORT void VKAPI vkCmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void** ppMemBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001386{
1387 const VkLayerDispatchTable *disp;
1388
1389 disp = loader_get_dispatch(cmdBuffer);
1390
Tony Barbourc2e987e2015-06-29 16:20:35 -06001391 disp->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001392}
1393
Courtney Goeltzenleuchter1f41f542015-07-09 11:44:38 -06001394LOADER_EXPORT void VKAPI vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void** ppMemBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001395{
1396 const VkLayerDispatchTable *disp;
1397
1398 disp = loader_get_dispatch(cmdBuffer);
1399
Tony Barbourc2e987e2015-06-29 16:20:35 -06001400 disp->CmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001401}
1402
1403LOADER_EXPORT void VKAPI vkCmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags)
1404{
1405 const VkLayerDispatchTable *disp;
1406
1407 disp = loader_get_dispatch(cmdBuffer);
1408
1409 disp->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
1410}
1411
1412LOADER_EXPORT void VKAPI vkCmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot)
1413{
1414 const VkLayerDispatchTable *disp;
1415
1416 disp = loader_get_dispatch(cmdBuffer);
1417
1418 disp->CmdEndQuery(cmdBuffer, queryPool, slot);
1419}
1420
1421LOADER_EXPORT void VKAPI vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount)
1422{
1423 const VkLayerDispatchTable *disp;
1424
1425 disp = loader_get_dispatch(cmdBuffer);
1426
1427 disp->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
1428}
1429
1430LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset)
1431{
1432 const VkLayerDispatchTable *disp;
1433
1434 disp = loader_get_dispatch(cmdBuffer);
1435
1436 disp->CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
1437}
1438
1439LOADER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkFlags flags)
1440{
1441 const VkLayerDispatchTable *disp;
1442
1443 disp = loader_get_dispatch(cmdBuffer);
1444
1445 disp->CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
1446}
1447
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001448LOADER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer)
1449{
1450 const VkLayerDispatchTable *disp;
1451
1452 disp = loader_get_dispatch(device);
1453
1454 return disp->CreateFramebuffer(device, pCreateInfo, pFramebuffer);
1455}
1456
Tony Barbourde4124d2015-07-03 10:33:54 -06001457LOADER_EXPORT VkResult VKAPI vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer)
1458{
1459 const VkLayerDispatchTable *disp;
1460
1461 disp = loader_get_dispatch(device);
1462
1463 return disp->DestroyFramebuffer(device, framebuffer);
1464}
1465
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001466LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass)
1467{
1468 const VkLayerDispatchTable *disp;
1469
1470 disp = loader_get_dispatch(device);
1471
1472 return disp->CreateRenderPass(device, pCreateInfo, pRenderPass);
1473}
1474
Tony Barbourde4124d2015-07-03 10:33:54 -06001475LOADER_EXPORT VkResult VKAPI vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass)
1476{
1477 const VkLayerDispatchTable *disp;
1478
1479 disp = loader_get_dispatch(device);
1480
1481 return disp->DestroyRenderPass(device, renderPass);
1482}
1483
Chia-I Wuc278df82015-07-07 11:50:03 +08001484LOADER_EXPORT void VKAPI vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001485{
1486 const VkLayerDispatchTable *disp;
1487
1488 disp = loader_get_dispatch(cmdBuffer);
1489
Chia-I Wuc278df82015-07-07 11:50:03 +08001490 disp->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents);
1491}
1492
1493LOADER_EXPORT void VKAPI vkCmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents)
1494{
1495 const VkLayerDispatchTable *disp;
1496
1497 disp = loader_get_dispatch(cmdBuffer);
1498
1499 disp->CmdNextSubpass(cmdBuffer, contents);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001500}
1501
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001502LOADER_EXPORT void VKAPI vkCmdEndRenderPass(VkCmdBuffer cmdBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001503{
1504 const VkLayerDispatchTable *disp;
1505
1506 disp = loader_get_dispatch(cmdBuffer);
1507
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001508 disp->CmdEndRenderPass(cmdBuffer);
1509}
1510
1511LOADER_EXPORT void VKAPI vkCmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers)
1512{
1513 const VkLayerDispatchTable *disp;
1514
1515 disp = loader_get_dispatch(cmdBuffer);
1516
1517 disp->CmdExecuteCommands(cmdBuffer, cmdBuffersCount, pCmdBuffers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001518}