blob: e978868e7990f607233a3961081fb9c7cb69b813 [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
Jon Ashburn4e189562015-07-23 18:49:07 -0600175
176
177
178
179
180LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures(
181 VkPhysicalDevice gpu,
182 VkPhysicalDeviceFeatures *pFeatures)
183{
184 const VkLayerInstanceDispatchTable *disp;
185 VkResult res;
186
187 disp = loader_get_instance_dispatch(gpu);
188 res = disp->GetPhysicalDeviceFeatures(gpu, pFeatures);
189 return res;
190}
191
192LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
193 VkPhysicalDevice gpu,
194 VkFormat format,
195 VkFormatProperties *pFormatInfo)
196{
197 const VkLayerInstanceDispatchTable *disp;
198 VkResult res;
199
200 disp = loader_get_instance_dispatch(gpu);
201 res = disp->GetPhysicalDeviceFormatProperties(gpu, format, pFormatInfo);
202 return res;
203}
204
205LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties)
206{
207 const VkLayerInstanceDispatchTable *disp;
208 VkResult res;
209
210 disp = loader_get_instance_dispatch(physicalDevice);
211 res = disp->GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, pImageFormatProperties);
212 return res;
213}
214
215LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits(
216 VkPhysicalDevice gpu,
217 VkPhysicalDeviceLimits *pLimits)
218{
219 const VkLayerInstanceDispatchTable *disp;
220 VkResult res;
221
222 disp = loader_get_instance_dispatch(gpu);
223 res = disp->GetPhysicalDeviceLimits(gpu, pLimits);
224 return res;
225}
226
Tony Barbour426b9052015-06-24 16:06:58 -0600227LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceProperties(
Jon Ashburnfce93d92015-05-12 17:26:48 -0600228 VkPhysicalDevice gpu,
Tony Barbour426b9052015-06-24 16:06:58 -0600229 VkPhysicalDeviceProperties* pProperties)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600230{
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600231 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600232 VkResult res;
233
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600234 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600235 res = disp->GetPhysicalDeviceProperties(gpu, pProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600236 return res;
237}
238
Cody Northropef72e2a2015-08-03 17:04:53 -0600239LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
Tony Barbour426b9052015-06-24 16:06:58 -0600240 VkPhysicalDevice gpu,
Cody Northropef72e2a2015-08-03 17:04:53 -0600241 uint32_t* pCount,
242 VkQueueFamilyProperties* pQueueProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600243{
244 const VkLayerInstanceDispatchTable *disp;
245 VkResult res;
246
247 disp = loader_get_instance_dispatch(gpu);
Cody Northropef72e2a2015-08-03 17:04:53 -0600248 res = disp->GetPhysicalDeviceQueueFamilyProperties(gpu, pCount, pQueueProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600249 return res;
250}
251
252LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
253 VkPhysicalDevice gpu,
254 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
255{
256 const VkLayerInstanceDispatchTable *disp;
257 VkResult res;
258
259 disp = loader_get_instance_dispatch(gpu);
Tony Barbour426b9052015-06-24 16:06:58 -0600260 res = disp->GetPhysicalDeviceMemoryProperties(gpu, pMemoryProperties);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600261 return res;
262}
263
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600264LOADER_EXPORT VkResult VKAPI vkCreateDevice(
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600265 VkPhysicalDevice gpu,
266 const VkDeviceCreateInfo* pCreateInfo,
267 VkDevice* pDevice)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600268{
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600269 VkResult res;
270
Jon Ashburnb40f2562015-05-29 13:15:39 -0600271 loader_platform_thread_lock_mutex(&loader_lock);
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600272
273 res = loader_CreateDevice(gpu, pCreateInfo, pDevice);
274
Jon Ashburnb40f2562015-05-29 13:15:39 -0600275 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600276 return res;
277}
278
279LOADER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device)
280{
281 const VkLayerDispatchTable *disp;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600282 VkResult res;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600283
284 disp = loader_get_dispatch(device);
285
Jon Ashburnb40f2562015-05-29 13:15:39 -0600286 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600287 res = disp->DestroyDevice(device);
Jon Ashburncb5a5ac2015-06-10 10:06:06 -0600288 loader_remove_logical_device(device);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600289 loader_platform_thread_unlock_mutex(&loader_lock);
290 return res;
291}
292
Tony Barbour426b9052015-06-24 16:06:58 -0600293LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600294 VkPhysicalDevice physicalDevice,
295 const char* pLayerName,
296 uint32_t* pCount,
297 VkExtensionProperties* pProperties)
Jon Ashburnb40f2562015-05-29 13:15:39 -0600298{
299 VkResult res;
300
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600301 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburn0bf6a182015-07-16 17:19:31 -0600302 //TODO convert over to using instance chain dispatch
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600303 res = loader_GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
304 loader_platform_thread_unlock_mutex(&loader_lock);
Tony Barbour426b9052015-06-24 16:06:58 -0600305 return res;
306}
307
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600308LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
309 VkPhysicalDevice physicalDevice,
310 uint32_t* pCount,
311 VkLayerProperties* pProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600312{
313 VkResult res;
314
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600315 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburn0bf6a182015-07-16 17:19:31 -0600316 //TODO convert over to using instance chain dispatch
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600317 res = loader_GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
318 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600319 return res;
320}
321
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600322LOADER_EXPORT VkResult VKAPI vkGetDeviceQueue(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue)
323{
324 const VkLayerDispatchTable *disp;
325 VkResult res;
326
327 disp = loader_get_dispatch(device);
328
329 res = disp->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
330 if (res == VK_SUCCESS) {
331 loader_set_dispatch(*pQueue, disp);
332 }
333
334 return res;
335}
336
337LOADER_EXPORT VkResult VKAPI vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence)
338{
339 const VkLayerDispatchTable *disp;
340
341 disp = loader_get_dispatch(queue);
342
343 return disp->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
344}
345
346LOADER_EXPORT VkResult VKAPI vkQueueWaitIdle(VkQueue queue)
347{
348 const VkLayerDispatchTable *disp;
349
350 disp = loader_get_dispatch(queue);
351
352 return disp->QueueWaitIdle(queue);
353}
354
355LOADER_EXPORT VkResult VKAPI vkDeviceWaitIdle(VkDevice device)
356{
357 const VkLayerDispatchTable *disp;
358
359 disp = loader_get_dispatch(device);
360
361 return disp->DeviceWaitIdle(device);
362}
363
364LOADER_EXPORT VkResult VKAPI vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem)
365{
366 const VkLayerDispatchTable *disp;
367
368 disp = loader_get_dispatch(device);
369
370 return disp->AllocMemory(device, pAllocInfo, pMem);
371}
372
373LOADER_EXPORT VkResult VKAPI vkFreeMemory(VkDevice device, VkDeviceMemory mem)
374{
375 const VkLayerDispatchTable *disp;
376
377 disp = loader_get_dispatch(device);
378
379 return disp->FreeMemory(device, mem);
380}
381
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600382LOADER_EXPORT VkResult VKAPI vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkFlags flags, void** ppData)
383{
384 const VkLayerDispatchTable *disp;
385
386 disp = loader_get_dispatch(device);
387
388 return disp->MapMemory(device, mem, offset, size, flags, ppData);
389}
390
391LOADER_EXPORT VkResult VKAPI vkUnmapMemory(VkDevice device, VkDeviceMemory mem)
392{
393 const VkLayerDispatchTable *disp;
394
395 disp = loader_get_dispatch(device);
396
397 return disp->UnmapMemory(device, mem);
398}
399
400LOADER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
401{
402 const VkLayerDispatchTable *disp;
403
404 disp = loader_get_dispatch(device);
405
406 return disp->FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
407}
408
409LOADER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
410{
411 const VkLayerDispatchTable *disp;
412
413 disp = loader_get_dispatch(device);
414
415 return disp->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
416}
417
Courtney Goeltzenleuchterd040c5c2015-07-09 21:57:28 -0600418LOADER_EXPORT VkResult VKAPI vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)
419{
420 const VkLayerDispatchTable *disp;
421
422 disp = loader_get_dispatch(device);
423
424 return disp->GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
425}
426
Tony Barbourde4124d2015-07-03 10:33:54 -0600427LOADER_EXPORT VkResult VKAPI vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600428{
429 const VkLayerDispatchTable *disp;
430
Mark Lobodzinskifb9f5642015-05-11 17:21:15 -0500431 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600432
Tony Barbourde4124d2015-07-03 10:33:54 -0600433 return disp->BindBufferMemory(device, buffer, mem, offset);
434}
435
436LOADER_EXPORT VkResult VKAPI vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize offset)
437{
438 const VkLayerDispatchTable *disp;
439
440 disp = loader_get_dispatch(device);
441
442 return disp->BindImageMemory(device, image, mem, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600443}
444
Jon Ashburn4e189562015-07-23 18:49:07 -0600445LOADER_EXPORT VkResult VKAPI vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
446{
447 const VkLayerDispatchTable *disp;
448
449 disp = loader_get_dispatch(device);
450
451 return disp->GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
452}
453
454LOADER_EXPORT VkResult VKAPI vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements)
455{
456 const VkLayerDispatchTable *disp;
457
458 disp = loader_get_dispatch(device);
459
460 return disp->GetImageMemoryRequirements(device, image, pMemoryRequirements);
461}
462
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600463LOADER_EXPORT VkResult VKAPI vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600464{
465 const VkLayerDispatchTable *disp;
466
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600467 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600468
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600469 return disp->GetImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600470}
471
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600472LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties)
473{
474 const VkLayerInstanceDispatchTable *disp;
475
476 disp = loader_get_instance_dispatch(physicalDevice);
477
478 return disp->GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
479}
480
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600481LOADER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
482{
483 const VkLayerDispatchTable *disp;
484
485 disp = loader_get_dispatch(queue);
486
487 return disp->QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
488}
489
Jon Ashburn4e189562015-07-23 18:49:07 -0600490LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo)
491{
492 const VkLayerDispatchTable *disp;
493
494 disp = loader_get_dispatch(queue);
495
496 return disp->QueueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
497}
498
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600499LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo)
500{
501 const VkLayerDispatchTable *disp;
502
503 disp = loader_get_dispatch(queue);
504
505 return disp->QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600506}
507
508LOADER_EXPORT VkResult VKAPI vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence)
509{
510 const VkLayerDispatchTable *disp;
511
512 disp = loader_get_dispatch(device);
513
514 return disp->CreateFence(device, pCreateInfo, pFence);
515}
516
Tony Barbourde4124d2015-07-03 10:33:54 -0600517LOADER_EXPORT VkResult VKAPI vkDestroyFence(VkDevice device, VkFence fence)
518{
519 const VkLayerDispatchTable *disp;
520
521 disp = loader_get_dispatch(device);
522
523 return disp->DestroyFence(device, fence);
524}
525
Courtney Goeltzenleuchterf2e33ad2015-06-18 17:28:20 -0600526LOADER_EXPORT VkResult VKAPI vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600527{
528 const VkLayerDispatchTable *disp;
529
530 disp = loader_get_dispatch(device);
531
532 return disp->ResetFences(device, fenceCount, pFences);
533}
534
535LOADER_EXPORT VkResult VKAPI vkGetFenceStatus(VkDevice device, VkFence fence)
536{
537 const VkLayerDispatchTable *disp;
538
539 disp = loader_get_dispatch(device);
540
541 return disp->GetFenceStatus(device, fence);
542}
543
Courtney Goeltzenleuchter1f41f542015-07-09 11:44:38 -0600544LOADER_EXPORT VkResult VKAPI vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600545{
546 const VkLayerDispatchTable *disp;
547
548 disp = loader_get_dispatch(device);
549
550 return disp->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
551}
552
553LOADER_EXPORT VkResult VKAPI vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore)
554{
555 const VkLayerDispatchTable *disp;
556
557 disp = loader_get_dispatch(device);
558
559 return disp->CreateSemaphore(device, pCreateInfo, pSemaphore);
560}
561
Tony Barbourde4124d2015-07-03 10:33:54 -0600562LOADER_EXPORT VkResult VKAPI vkDestroySemaphore(VkDevice device, VkSemaphore semaphore)
563{
564 const VkLayerDispatchTable *disp;
565
566 disp = loader_get_dispatch(device);
567
568 return disp->DestroySemaphore(device, semaphore);
569}
570
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600571LOADER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore)
572{
573 const VkLayerDispatchTable *disp;
574
575 disp = loader_get_dispatch(queue);
576
577 return disp->QueueSignalSemaphore(queue, semaphore);
578}
579
580LOADER_EXPORT VkResult VKAPI vkQueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore)
581{
582 const VkLayerDispatchTable *disp;
583
584 disp = loader_get_dispatch(queue);
585
586 return disp->QueueWaitSemaphore(queue, semaphore);
587}
588
589LOADER_EXPORT VkResult VKAPI vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent)
590{
591 const VkLayerDispatchTable *disp;
592
593 disp = loader_get_dispatch(device);
594
595 return disp->CreateEvent(device, pCreateInfo, pEvent);
596}
597
Tony Barbourde4124d2015-07-03 10:33:54 -0600598LOADER_EXPORT VkResult VKAPI vkDestroyEvent(VkDevice device, VkEvent event)
599{
600 const VkLayerDispatchTable *disp;
601
602 disp = loader_get_dispatch(device);
603
604 return disp->DestroyEvent(device, event);
605}
606
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600607LOADER_EXPORT VkResult VKAPI vkGetEventStatus(VkDevice device, VkEvent event)
608{
609 const VkLayerDispatchTable *disp;
610
611 disp = loader_get_dispatch(device);
612
613 return disp->GetEventStatus(device, event);
614}
615
616LOADER_EXPORT VkResult VKAPI vkSetEvent(VkDevice device, VkEvent event)
617{
618 const VkLayerDispatchTable *disp;
619
620 disp = loader_get_dispatch(device);
621
622 return disp->SetEvent(device, event);
623}
624
625LOADER_EXPORT VkResult VKAPI vkResetEvent(VkDevice device, VkEvent event)
626{
627 const VkLayerDispatchTable *disp;
628
629 disp = loader_get_dispatch(device);
630
631 return disp->ResetEvent(device, event);
632}
633
634LOADER_EXPORT VkResult VKAPI vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool)
635{
636 const VkLayerDispatchTable *disp;
637
638 disp = loader_get_dispatch(device);
639
640 return disp->CreateQueryPool(device, pCreateInfo, pQueryPool);
641}
642
Tony Barbourde4124d2015-07-03 10:33:54 -0600643LOADER_EXPORT VkResult VKAPI vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool)
644{
645 const VkLayerDispatchTable *disp;
646
647 disp = loader_get_dispatch(device);
648
649 return disp->DestroyQueryPool(device, queryPool);
650}
651
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600652LOADER_EXPORT VkResult VKAPI vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags)
653{
654 const VkLayerDispatchTable *disp;
655
656 disp = loader_get_dispatch(device);
657
658 return disp->GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
659}
660
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600661LOADER_EXPORT VkResult VKAPI vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer)
662{
663 const VkLayerDispatchTable *disp;
664
665 disp = loader_get_dispatch(device);
666
667 return disp->CreateBuffer(device, pCreateInfo, pBuffer);
668}
669
Tony Barbourde4124d2015-07-03 10:33:54 -0600670LOADER_EXPORT VkResult VKAPI vkDestroyBuffer(VkDevice device, VkBuffer buffer)
671{
672 const VkLayerDispatchTable *disp;
673
674 disp = loader_get_dispatch(device);
675
676 return disp->DestroyBuffer(device, buffer);
677}
678
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600679LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView)
680{
681 const VkLayerDispatchTable *disp;
682
683 disp = loader_get_dispatch(device);
684
685 return disp->CreateBufferView(device, pCreateInfo, pView);
686}
687
Tony Barbourde4124d2015-07-03 10:33:54 -0600688LOADER_EXPORT VkResult VKAPI vkDestroyBufferView(VkDevice device, VkBufferView bufferView)
689{
690 const VkLayerDispatchTable *disp;
691
692 disp = loader_get_dispatch(device);
693
694 return disp->DestroyBufferView(device, bufferView);
695}
696
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600697LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage)
698{
699 const VkLayerDispatchTable *disp;
700
701 disp = loader_get_dispatch(device);
702
703 return disp->CreateImage(device, pCreateInfo, pImage);
704}
705
Tony Barbourde4124d2015-07-03 10:33:54 -0600706LOADER_EXPORT VkResult VKAPI vkDestroyImage(VkDevice device, VkImage image)
707{
708 const VkLayerDispatchTable *disp;
709
710 disp = loader_get_dispatch(device);
711
712 return disp->DestroyImage(device, image);
713}
714
Tony Barbour426b9052015-06-24 16:06:58 -0600715LOADER_EXPORT VkResult VKAPI vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600716{
717 const VkLayerDispatchTable *disp;
718
719 disp = loader_get_dispatch(device);
720
Tony Barbour426b9052015-06-24 16:06:58 -0600721 return disp->GetImageSubresourceLayout(device, image, pSubresource, pLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600722}
723
724LOADER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView)
725{
726 const VkLayerDispatchTable *disp;
727
728 disp = loader_get_dispatch(device);
729
730 return disp->CreateImageView(device, pCreateInfo, pView);
731}
732
Tony Barbourde4124d2015-07-03 10:33:54 -0600733LOADER_EXPORT VkResult VKAPI vkDestroyImageView(VkDevice device, VkImageView imageView)
734{
735 const VkLayerDispatchTable *disp;
736
737 disp = loader_get_dispatch(device);
738
739 return disp->DestroyImageView(device, imageView);
740}
741
Chia-I Wuc278df82015-07-07 11:50:03 +0800742LOADER_EXPORT VkResult VKAPI vkCreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600743{
744 const VkLayerDispatchTable *disp;
745
746 disp = loader_get_dispatch(device);
747
Chia-I Wuc278df82015-07-07 11:50:03 +0800748 return disp->CreateAttachmentView(device, pCreateInfo, pView);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600749}
750
Tony Barbourde4124d2015-07-03 10:33:54 -0600751LOADER_EXPORT VkResult VKAPI vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView)
752{
753 const VkLayerDispatchTable *disp;
754
755 disp = loader_get_dispatch(device);
756
757 return disp->DestroyAttachmentView(device, attachmentView);
758}
759
Courtney Goeltzenleuchter0b29b0d2015-06-24 18:24:19 -0600760LOADER_EXPORT VkResult VKAPI vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShader)
761{
762 const VkLayerDispatchTable *disp;
763
764 disp = loader_get_dispatch(device);
765
766 return disp->CreateShaderModule(device, pCreateInfo, pShader);
767}
768
Tony Barbourde4124d2015-07-03 10:33:54 -0600769LOADER_EXPORT VkResult VKAPI vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule)
770{
771 const VkLayerDispatchTable *disp;
772
773 disp = loader_get_dispatch(device);
774
775 return disp->DestroyShaderModule(device, shaderModule);
776}
777
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600778LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader)
779{
780 const VkLayerDispatchTable *disp;
781
782 disp = loader_get_dispatch(device);
783
784 return disp->CreateShader(device, pCreateInfo, pShader);
785}
786
Tony Barbourde4124d2015-07-03 10:33:54 -0600787LOADER_EXPORT VkResult VKAPI vkDestroyShader(VkDevice device, VkShader shader)
788{
789 const VkLayerDispatchTable *disp;
790
791 disp = loader_get_dispatch(device);
792
793 return disp->DestroyShader(device, shader);
794}
795
Jon Ashburn0d60d272015-07-09 15:02:25 -0600796LOADER_EXPORT VkResult VKAPI vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600797{
798 const VkLayerDispatchTable *disp;
799
800 disp = loader_get_dispatch(device);
801
Jon Ashburn0d60d272015-07-09 15:02:25 -0600802 return disp->CreatePipelineCache(device, pCreateInfo, pPipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600803}
804
Jon Ashburn0d60d272015-07-09 15:02:25 -0600805LOADER_EXPORT VkResult VKAPI vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600806{
807 const VkLayerDispatchTable *disp;
808
809 disp = loader_get_dispatch(device);
810
Jon Ashburn0d60d272015-07-09 15:02:25 -0600811 return disp->DestroyPipelineCache(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600812}
813
Jon Ashburn0d60d272015-07-09 15:02:25 -0600814LOADER_EXPORT size_t VKAPI vkGetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600815{
816 const VkLayerDispatchTable *disp;
817
818 disp = loader_get_dispatch(device);
819
Jon Ashburn0d60d272015-07-09 15:02:25 -0600820 return disp->GetPipelineCacheSize(device, pipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600821}
822
Jon Ashburn0d60d272015-07-09 15:02:25 -0600823LOADER_EXPORT VkResult VKAPI vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600824{
825 const VkLayerDispatchTable *disp;
826
827 disp = loader_get_dispatch(device);
828
Jon Ashburn0d60d272015-07-09 15:02:25 -0600829 return disp->GetPipelineCacheData(device, pipelineCache, pData);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600830}
831
Jon Ashburn0d60d272015-07-09 15:02:25 -0600832LOADER_EXPORT VkResult VKAPI vkMergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600833{
834 const VkLayerDispatchTable *disp;
835
836 disp = loader_get_dispatch(device);
837
Jon Ashburn0d60d272015-07-09 15:02:25 -0600838 return disp->MergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600839}
840
Jon Ashburn0d60d272015-07-09 15:02:25 -0600841LOADER_EXPORT VkResult VKAPI vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600842{
843 const VkLayerDispatchTable *disp;
844
845 disp = loader_get_dispatch(device);
846
Jon Ashburn0d60d272015-07-09 15:02:25 -0600847 return disp->CreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
848}
849
850LOADER_EXPORT VkResult VKAPI vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines)
851{
852 const VkLayerDispatchTable *disp;
853
854 disp = loader_get_dispatch(device);
855
856 return disp->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600857}
858
Tony Barbourde4124d2015-07-03 10:33:54 -0600859LOADER_EXPORT VkResult VKAPI vkDestroyPipeline(VkDevice device, VkPipeline pipeline)
860{
861 const VkLayerDispatchTable *disp;
862
863 disp = loader_get_dispatch(device);
864
865 return disp->DestroyPipeline(device, pipeline);
866}
867
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600868LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout)
869{
870 const VkLayerDispatchTable *disp;
871
872 disp = loader_get_dispatch(device);
873
874 return disp->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
875}
876
Tony Barbourde4124d2015-07-03 10:33:54 -0600877LOADER_EXPORT VkResult VKAPI vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout)
878{
879 const VkLayerDispatchTable *disp;
880
881 disp = loader_get_dispatch(device);
882
883 return disp->DestroyPipelineLayout(device, pipelineLayout);
884}
885
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600886LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler)
887{
888 const VkLayerDispatchTable *disp;
889
890 disp = loader_get_dispatch(device);
891
892 return disp->CreateSampler(device, pCreateInfo, pSampler);
893}
894
Tony Barbourde4124d2015-07-03 10:33:54 -0600895LOADER_EXPORT VkResult VKAPI vkDestroySampler(VkDevice device, VkSampler sampler)
896{
897 const VkLayerDispatchTable *disp;
898
899 disp = loader_get_dispatch(device);
900
901 return disp->DestroySampler(device, sampler);
902}
903
904
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600905LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout)
906{
907 const VkLayerDispatchTable *disp;
908
909 disp = loader_get_dispatch(device);
910
911 return disp->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
912}
913
Tony Barbourde4124d2015-07-03 10:33:54 -0600914LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout)
915{
916 const VkLayerDispatchTable *disp;
917
918 disp = loader_get_dispatch(device);
919
920 return disp->DestroyDescriptorSetLayout(device, descriptorSetLayout);
921}
922
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600923LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool)
924{
925 const VkLayerDispatchTable *disp;
926
927 disp = loader_get_dispatch(device);
928
929 return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
930}
931
Tony Barbourde4124d2015-07-03 10:33:54 -0600932LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
933{
934 const VkLayerDispatchTable *disp;
935
936 disp = loader_get_dispatch(device);
937
938 return disp->DestroyDescriptorPool(device, descriptorPool);
939}
940
941
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600942LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
943{
944 const VkLayerDispatchTable *disp;
945
946 disp = loader_get_dispatch(device);
947
948 return disp->ResetDescriptorPool(device, descriptorPool);
949}
950
Cody Northropc8aa4a52015-08-03 12:47:29 -0600951LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600952{
953 const VkLayerDispatchTable *disp;
954
955 disp = loader_get_dispatch(device);
956
Cody Northropc8aa4a52015-08-03 12:47:29 -0600957 return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600958}
959
Tony Barbourb857d312015-07-10 10:50:45 -0600960LOADER_EXPORT VkResult VKAPI vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets)
961{
962 const VkLayerDispatchTable *disp;
963
964 disp = loader_get_dispatch(device);
965
966 return disp->FreeDescriptorSets(device, descriptorPool, count, pDescriptorSets);
967}
968
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800969LOADER_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 -0600970{
971 const VkLayerDispatchTable *disp;
972
973 disp = loader_get_dispatch(device);
974
Chia-I Wu8cd8ecd2015-05-25 16:27:55 +0800975 return disp->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600976}
977
Tony Barbourde4124d2015-07-03 10:33:54 -0600978LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600979{
980 const VkLayerDispatchTable *disp;
981
982 disp = loader_get_dispatch(device);
983
984 return disp->CreateDynamicViewportState(device, pCreateInfo, pState);
985}
986
Tony Barbourde4124d2015-07-03 10:33:54 -0600987LOADER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState)
988{
989 const VkLayerDispatchTable *disp;
990
991 disp = loader_get_dispatch(device);
992
993 return disp->DestroyDynamicViewportState(device, dynamicViewportState);
994}
995
996LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600997{
998 const VkLayerDispatchTable *disp;
999
1000 disp = loader_get_dispatch(device);
1001
1002 return disp->CreateDynamicRasterState(device, pCreateInfo, pState);
1003}
1004
Tony Barbourde4124d2015-07-03 10:33:54 -06001005LOADER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState)
1006{
1007 const VkLayerDispatchTable *disp;
1008
1009 disp = loader_get_dispatch(device);
1010
1011 return disp->DestroyDynamicRasterState(device, dynamicRasterState);
1012}
1013
1014LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001015{
1016 const VkLayerDispatchTable *disp;
1017
1018 disp = loader_get_dispatch(device);
1019
1020 return disp->CreateDynamicColorBlendState(device, pCreateInfo, pState);
1021}
1022
Tony Barbourde4124d2015-07-03 10:33:54 -06001023LOADER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState)
1024{
1025 const VkLayerDispatchTable *disp;
1026
1027 disp = loader_get_dispatch(device);
1028
1029 return disp->DestroyDynamicColorBlendState(device, dynamicColorBlendState);
1030}
1031
1032LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001033{
1034 const VkLayerDispatchTable *disp;
1035
1036 disp = loader_get_dispatch(device);
1037
1038 return disp->CreateDynamicDepthStencilState(device, pCreateInfo, pState);
1039}
1040
Tony Barbourde4124d2015-07-03 10:33:54 -06001041LOADER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState)
1042{
1043 const VkLayerDispatchTable *disp;
1044
1045 disp = loader_get_dispatch(device);
1046
1047 return disp->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState);
1048}
1049
Jon Ashburn4e189562015-07-23 18:49:07 -06001050LOADER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer)
1051{
1052 const VkLayerDispatchTable *disp;
1053
1054 disp = loader_get_dispatch(device);
1055
1056 return disp->CreateFramebuffer(device, pCreateInfo, pFramebuffer);
1057}
1058
1059LOADER_EXPORT VkResult VKAPI vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer)
1060{
1061 const VkLayerDispatchTable *disp;
1062
1063 disp = loader_get_dispatch(device);
1064
1065 return disp->DestroyFramebuffer(device, framebuffer);
1066}
1067
1068LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass)
1069{
1070 const VkLayerDispatchTable *disp;
1071
1072 disp = loader_get_dispatch(device);
1073
1074 return disp->CreateRenderPass(device, pCreateInfo, pRenderPass);
1075}
1076
1077LOADER_EXPORT VkResult VKAPI vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass)
1078{
1079 const VkLayerDispatchTable *disp;
1080
1081 disp = loader_get_dispatch(device);
1082
1083 return disp->DestroyRenderPass(device, renderPass);
1084}
1085
1086LOADER_EXPORT VkResult VKAPI vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)
1087{
1088 const VkLayerDispatchTable *disp;
1089
1090 disp = loader_get_dispatch(device);
1091
1092 return disp->GetRenderAreaGranularity(device, renderPass, pGranularity);
1093}
1094
Cody Northropf02f9f82015-07-09 18:08:05 -06001095LOADER_EXPORT VkResult VKAPI vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool)
1096{
1097 const VkLayerDispatchTable *disp;
1098
1099 disp = loader_get_dispatch(device);
1100
1101 return disp->CreateCommandPool(device, pCreateInfo, pCmdPool);
1102}
1103
1104LOADER_EXPORT VkResult VKAPI vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool)
1105{
1106 const VkLayerDispatchTable *disp;
1107
1108 disp = loader_get_dispatch(device);
1109
1110 return disp->DestroyCommandPool(device, cmdPool);
1111}
1112
1113LOADER_EXPORT VkResult VKAPI vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags)
1114{
1115 const VkLayerDispatchTable *disp;
1116
1117 disp = loader_get_dispatch(device);
1118
1119 return disp->ResetCommandPool(device, cmdPool, flags);
1120}
1121
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001122LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer)
1123{
1124 const VkLayerDispatchTable *disp;
1125 VkResult res;
1126
1127 disp = loader_get_dispatch(device);
1128
1129 res = disp->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
1130 if (res == VK_SUCCESS) {
1131 loader_init_dispatch(*pCmdBuffer, disp);
1132 }
1133
1134 return res;
1135}
1136
Tony Barbourde4124d2015-07-03 10:33:54 -06001137LOADER_EXPORT VkResult VKAPI vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdBuffer)
1138{
1139 const VkLayerDispatchTable *disp;
1140
1141 disp = loader_get_dispatch(device);
1142
1143 return disp->DestroyCommandBuffer(device, cmdBuffer);
1144}
1145
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001146LOADER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo)
1147{
1148 const VkLayerDispatchTable *disp;
1149
1150 disp = loader_get_dispatch(cmdBuffer);
1151
1152 return disp->BeginCommandBuffer(cmdBuffer, pBeginInfo);
1153}
1154
1155LOADER_EXPORT VkResult VKAPI vkEndCommandBuffer(VkCmdBuffer cmdBuffer)
1156{
1157 const VkLayerDispatchTable *disp;
1158
1159 disp = loader_get_dispatch(cmdBuffer);
1160
1161 return disp->EndCommandBuffer(cmdBuffer);
1162}
1163
Cody Northropf02f9f82015-07-09 18:08:05 -06001164LOADER_EXPORT VkResult VKAPI vkResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001165{
1166 const VkLayerDispatchTable *disp;
1167
1168 disp = loader_get_dispatch(cmdBuffer);
1169
Cody Northropf02f9f82015-07-09 18:08:05 -06001170 return disp->ResetCommandBuffer(cmdBuffer, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001171}
1172
1173LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
1174{
1175 const VkLayerDispatchTable *disp;
1176
1177 disp = loader_get_dispatch(cmdBuffer);
1178
1179 disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
1180}
1181
Tony Barbourde4124d2015-07-03 10:33:54 -06001182LOADER_EXPORT void VKAPI vkCmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState state)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001183{
1184 const VkLayerDispatchTable *disp;
1185
1186 disp = loader_get_dispatch(cmdBuffer);
1187
Tony Barbourde4124d2015-07-03 10:33:54 -06001188 disp->CmdBindDynamicViewportState(cmdBuffer, state);
1189}
1190
1191LOADER_EXPORT void VKAPI vkCmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState state)
1192{
1193 const VkLayerDispatchTable *disp;
1194
1195 disp = loader_get_dispatch(cmdBuffer);
1196
1197 disp->CmdBindDynamicRasterState(cmdBuffer, state);
1198}
1199
1200LOADER_EXPORT void VKAPI vkCmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState state)
1201{
1202 const VkLayerDispatchTable *disp;
1203
1204 disp = loader_get_dispatch(cmdBuffer);
1205
1206 disp->CmdBindDynamicColorBlendState(cmdBuffer, state);
1207}
1208
1209LOADER_EXPORT void VKAPI vkCmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState state)
1210{
1211 const VkLayerDispatchTable *disp;
1212
1213 disp = loader_get_dispatch(cmdBuffer);
1214
1215 disp->CmdBindDynamicDepthStencilState(cmdBuffer, state);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001216}
1217
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001218LOADER_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 -06001219{
1220 const VkLayerDispatchTable *disp;
1221
1222 disp = loader_get_dispatch(cmdBuffer);
1223
Mark Lobodzinskia65c4632015-06-15 13:21:21 -06001224 disp->CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001225}
1226
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001227LOADER_EXPORT void VKAPI vkCmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
1228{
1229 const VkLayerDispatchTable *disp;
1230
1231 disp = loader_get_dispatch(cmdBuffer);
1232
1233 disp->CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
1234}
1235
Jon Ashburn4e189562015-07-23 18:49:07 -06001236LOADER_EXPORT void VKAPI vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
1237{
1238 const VkLayerDispatchTable *disp;
1239
1240 disp = loader_get_dispatch(cmdBuffer);
1241
1242 disp->CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
1243}
1244
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001245LOADER_EXPORT void VKAPI vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
1246{
1247 const VkLayerDispatchTable *disp;
1248
1249 disp = loader_get_dispatch(cmdBuffer);
1250
1251 disp->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
1252}
1253
1254LOADER_EXPORT void VKAPI vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
1255{
1256 const VkLayerDispatchTable *disp;
1257
1258 disp = loader_get_dispatch(cmdBuffer);
1259
1260 disp->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
1261}
1262
1263LOADER_EXPORT void VKAPI vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1264{
1265 const VkLayerDispatchTable *disp;
1266
1267 disp = loader_get_dispatch(cmdBuffer);
1268
1269 disp->CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
1270}
1271
1272LOADER_EXPORT void VKAPI vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
1273{
1274 const VkLayerDispatchTable *disp;
1275
1276 disp = loader_get_dispatch(cmdBuffer);
1277
1278 disp->CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
1279}
1280
1281LOADER_EXPORT void VKAPI vkCmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z)
1282{
1283 const VkLayerDispatchTable *disp;
1284
1285 disp = loader_get_dispatch(cmdBuffer);
1286
1287 disp->CmdDispatch(cmdBuffer, x, y, z);
1288}
1289
1290LOADER_EXPORT void VKAPI vkCmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset)
1291{
1292 const VkLayerDispatchTable *disp;
1293
1294 disp = loader_get_dispatch(cmdBuffer);
1295
1296 disp->CmdDispatchIndirect(cmdBuffer, buffer, offset);
1297}
1298
1299LOADER_EXPORT void VKAPI vkCmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
1300{
1301 const VkLayerDispatchTable *disp;
1302
1303 disp = loader_get_dispatch(cmdBuffer);
1304
1305 disp->CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
1306}
1307
1308LOADER_EXPORT void VKAPI vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions)
1309{
1310 const VkLayerDispatchTable *disp;
1311
1312 disp = loader_get_dispatch(cmdBuffer);
1313
1314 disp->CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1315}
1316
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001317LOADER_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 -06001318{
1319 const VkLayerDispatchTable *disp;
1320
1321 disp = loader_get_dispatch(cmdBuffer);
1322
Mark Lobodzinski20f68592015-05-22 14:43:25 -05001323 disp->CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001324}
1325
1326LOADER_EXPORT void VKAPI vkCmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1327{
1328 const VkLayerDispatchTable *disp;
1329
1330 disp = loader_get_dispatch(cmdBuffer);
1331
1332 disp->CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
1333}
1334
1335LOADER_EXPORT void VKAPI vkCmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
1336{
1337 const VkLayerDispatchTable *disp;
1338
1339 disp = loader_get_dispatch(cmdBuffer);
1340
1341 disp->CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
1342}
1343
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001344LOADER_EXPORT void VKAPI vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData)
1345{
1346 const VkLayerDispatchTable *disp;
1347
1348 disp = loader_get_dispatch(cmdBuffer);
1349
1350 disp->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
1351}
1352
1353LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
1354{
1355 const VkLayerDispatchTable *disp;
1356
1357 disp = loader_get_dispatch(cmdBuffer);
1358
1359 disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
1360}
1361
Chris Forbese3105972015-06-24 14:34:53 +12001362LOADER_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 -06001363{
1364 const VkLayerDispatchTable *disp;
1365
1366 disp = loader_get_dispatch(cmdBuffer);
1367
1368 disp->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1369}
1370
Chris Forbes2951d7d2015-06-22 17:21:59 +12001371LOADER_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 -06001372{
1373 const VkLayerDispatchTable *disp;
1374
1375 disp = loader_get_dispatch(cmdBuffer);
1376
Chris Forbes2951d7d2015-06-22 17:21:59 +12001377 disp->CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
1378}
1379
Chris Forbese3105972015-06-24 14:34:53 +12001380LOADER_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 +12001381{
1382 const VkLayerDispatchTable *disp;
1383
1384 disp = loader_get_dispatch(cmdBuffer);
1385
1386 disp->CmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects);
1387}
1388
1389LOADER_EXPORT void VKAPI vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects)
1390{
1391 const VkLayerDispatchTable *disp;
1392
1393 disp = loader_get_dispatch(cmdBuffer);
1394
1395 disp->CmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001396}
1397
1398LOADER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions)
1399{
1400 const VkLayerDispatchTable *disp;
1401
1402 disp = loader_get_dispatch(cmdBuffer);
1403
1404 disp->CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
1405}
1406
Tony Barbourc2e987e2015-06-29 16:20:35 -06001407LOADER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001408{
1409 const VkLayerDispatchTable *disp;
1410
1411 disp = loader_get_dispatch(cmdBuffer);
1412
Tony Barbourc2e987e2015-06-29 16:20:35 -06001413 disp->CmdSetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001414}
1415
Tony Barbourc2e987e2015-06-29 16:20:35 -06001416LOADER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001417{
1418 const VkLayerDispatchTable *disp;
1419
1420 disp = loader_get_dispatch(cmdBuffer);
1421
Tony Barbourc2e987e2015-06-29 16:20:35 -06001422 disp->CmdResetEvent(cmdBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001423}
1424
Courtney Goeltzenleuchterd9ba3422015-07-12 12:58:58 -06001425LOADER_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 -06001426{
1427 const VkLayerDispatchTable *disp;
1428
1429 disp = loader_get_dispatch(cmdBuffer);
1430
Tony Barbourc2e987e2015-06-29 16:20:35 -06001431 disp->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001432}
1433
Courtney Goeltzenleuchter82b348f2015-07-12 13:07:46 -06001434LOADER_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 -06001435{
1436 const VkLayerDispatchTable *disp;
1437
1438 disp = loader_get_dispatch(cmdBuffer);
1439
Courtney Goeltzenleuchter82b348f2015-07-12 13:07:46 -06001440 disp->CmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001441}
1442
1443LOADER_EXPORT void VKAPI vkCmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags)
1444{
1445 const VkLayerDispatchTable *disp;
1446
1447 disp = loader_get_dispatch(cmdBuffer);
1448
1449 disp->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
1450}
1451
1452LOADER_EXPORT void VKAPI vkCmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot)
1453{
1454 const VkLayerDispatchTable *disp;
1455
1456 disp = loader_get_dispatch(cmdBuffer);
1457
1458 disp->CmdEndQuery(cmdBuffer, queryPool, slot);
1459}
1460
1461LOADER_EXPORT void VKAPI vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount)
1462{
1463 const VkLayerDispatchTable *disp;
1464
1465 disp = loader_get_dispatch(cmdBuffer);
1466
1467 disp->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
1468}
1469
1470LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset)
1471{
1472 const VkLayerDispatchTable *disp;
1473
1474 disp = loader_get_dispatch(cmdBuffer);
1475
1476 disp->CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
1477}
1478
1479LOADER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkFlags flags)
1480{
1481 const VkLayerDispatchTable *disp;
1482
1483 disp = loader_get_dispatch(cmdBuffer);
1484
1485 disp->CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
1486}
1487
Jon Ashburn4e189562015-07-23 18:49:07 -06001488LOADER_EXPORT void VKAPI vkCmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001489{
1490 const VkLayerDispatchTable *disp;
1491
Jon Ashburn4e189562015-07-23 18:49:07 -06001492 disp = loader_get_dispatch(cmdBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001493
Courtney Goeltzenleuchtera375b622015-07-27 14:04:01 -06001494 disp->CmdPushConstants(cmdBuffer, layout, stageFlags, start, length, values);
Tony Barbourde4124d2015-07-03 10:33:54 -06001495}
1496
Chia-I Wuc278df82015-07-07 11:50:03 +08001497LOADER_EXPORT void VKAPI vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001498{
1499 const VkLayerDispatchTable *disp;
1500
1501 disp = loader_get_dispatch(cmdBuffer);
1502
Chia-I Wuc278df82015-07-07 11:50:03 +08001503 disp->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents);
1504}
1505
1506LOADER_EXPORT void VKAPI vkCmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents)
1507{
1508 const VkLayerDispatchTable *disp;
1509
1510 disp = loader_get_dispatch(cmdBuffer);
1511
1512 disp->CmdNextSubpass(cmdBuffer, contents);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001513}
1514
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001515LOADER_EXPORT void VKAPI vkCmdEndRenderPass(VkCmdBuffer cmdBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001516{
1517 const VkLayerDispatchTable *disp;
1518
1519 disp = loader_get_dispatch(cmdBuffer);
1520
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001521 disp->CmdEndRenderPass(cmdBuffer);
1522}
1523
1524LOADER_EXPORT void VKAPI vkCmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers)
1525{
1526 const VkLayerDispatchTable *disp;
1527
1528 disp = loader_get_dispatch(cmdBuffer);
1529
1530 disp->CmdExecuteCommands(cmdBuffer, cmdBuffersCount, pCmdBuffers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001531}