blob: 136fe1ae01de43a8ccb6cc64b1d5eee1c89118b2 [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 */
24
25#include "loader.h"
26
Tobin Ehlis3126f012015-05-13 11:57:18 -060027#if defined(WIN32)
28// On Windows need to disable global optimization for function entrypoints or
29// else mhook will not be able to hook all of them
30#pragma optimize( "g", off )
31#endif
32
Jon Ashburn2139a3e2015-05-06 09:02:10 -060033/* Trampoline entrypoints */
34LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceInfo(VkPhysicalDevice gpu, VkPhysicalDeviceInfoType infoType, size_t* pDataSize, void* pData)
35{
36 const VkLayerDispatchTable *disp;
37 VkResult res;
38
39 disp = loader_get_dispatch(gpu);
40
41 res = disp->GetPhysicalDeviceInfo(gpu, infoType, pDataSize, pData);
42 if (infoType == VK_PHYSICAL_DEVICE_INFO_TYPE_DISPLAY_PROPERTIES_WSI && pData && res == VK_SUCCESS) {
43 VkDisplayPropertiesWSI *info = pData;
44 size_t count = *pDataSize / sizeof(*info), i;
45 for (i = 0; i < count; i++) {
46 loader_set_dispatch(info[i].display, disp);
47 }
48 }
49
50 return res;
51}
52
53LOADER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice)
54{
55 const VkLayerDispatchTable *disp;
56 VkResult res;
57
58 disp = loader_get_dispatch(gpu);
59
60 res = disp->CreateDevice(gpu, pCreateInfo, pDevice);
61 if (res == VK_SUCCESS) {
62 loader_init_dispatch(*pDevice, disp);
63 }
64
65 return res;
66}
67
68LOADER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device)
69{
70 const VkLayerDispatchTable *disp;
71
72 disp = loader_get_dispatch(device);
73
74 return disp->DestroyDevice(device);
75}
76
77LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionInfo(VkPhysicalDevice gpu, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData)
78{
79 const VkLayerDispatchTable *disp;
80
81 disp = loader_get_dispatch(gpu);
82
83 return disp->GetPhysicalDeviceExtensionInfo(gpu, infoType, extensionIndex, pDataSize, pData);
84}
85
86LOADER_EXPORT VkResult VKAPI vkGetDeviceQueue(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue)
87{
88 const VkLayerDispatchTable *disp;
89 VkResult res;
90
91 disp = loader_get_dispatch(device);
92
93 res = disp->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
94 if (res == VK_SUCCESS) {
95 loader_set_dispatch(*pQueue, disp);
96 }
97
98 return res;
99}
100
101LOADER_EXPORT VkResult VKAPI vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence)
102{
103 const VkLayerDispatchTable *disp;
104
105 disp = loader_get_dispatch(queue);
106
107 return disp->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
108}
109
110LOADER_EXPORT VkResult VKAPI vkQueueWaitIdle(VkQueue queue)
111{
112 const VkLayerDispatchTable *disp;
113
114 disp = loader_get_dispatch(queue);
115
116 return disp->QueueWaitIdle(queue);
117}
118
119LOADER_EXPORT VkResult VKAPI vkDeviceWaitIdle(VkDevice device)
120{
121 const VkLayerDispatchTable *disp;
122
123 disp = loader_get_dispatch(device);
124
125 return disp->DeviceWaitIdle(device);
126}
127
128LOADER_EXPORT VkResult VKAPI vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem)
129{
130 const VkLayerDispatchTable *disp;
131
132 disp = loader_get_dispatch(device);
133
134 return disp->AllocMemory(device, pAllocInfo, pMem);
135}
136
137LOADER_EXPORT VkResult VKAPI vkFreeMemory(VkDevice device, VkDeviceMemory mem)
138{
139 const VkLayerDispatchTable *disp;
140
141 disp = loader_get_dispatch(device);
142
143 return disp->FreeMemory(device, mem);
144}
145
146LOADER_EXPORT VkResult VKAPI vkSetMemoryPriority(VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority)
147{
148 const VkLayerDispatchTable *disp;
149
150 disp = loader_get_dispatch(device);
151
152 return disp->SetMemoryPriority(device, mem, priority);
153}
154
155LOADER_EXPORT VkResult VKAPI vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkFlags flags, void** ppData)
156{
157 const VkLayerDispatchTable *disp;
158
159 disp = loader_get_dispatch(device);
160
161 return disp->MapMemory(device, mem, offset, size, flags, ppData);
162}
163
164LOADER_EXPORT VkResult VKAPI vkUnmapMemory(VkDevice device, VkDeviceMemory mem)
165{
166 const VkLayerDispatchTable *disp;
167
168 disp = loader_get_dispatch(device);
169
170 return disp->UnmapMemory(device, mem);
171}
172
173LOADER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
174{
175 const VkLayerDispatchTable *disp;
176
177 disp = loader_get_dispatch(device);
178
179 return disp->FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
180}
181
182LOADER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges)
183{
184 const VkLayerDispatchTable *disp;
185
186 disp = loader_get_dispatch(device);
187
188 return disp->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
189}
190
191LOADER_EXPORT VkResult VKAPI vkPinSystemMemory(VkDevice device, const void* pSysMem, size_t memSize, VkDeviceMemory* pMem)
192{
193 const VkLayerDispatchTable *disp;
194
195 disp = loader_get_dispatch(device);
196
197 return disp->PinSystemMemory(device, pSysMem, memSize, pMem);
198}
199
200LOADER_EXPORT VkResult VKAPI vkGetMultiDeviceCompatibility(VkPhysicalDevice gpu0, VkPhysicalDevice gpu1, VkPhysicalDeviceCompatibilityInfo* pInfo)
201{
202 const VkLayerDispatchTable *disp;
203
204 disp = loader_get_dispatch(gpu0);
205
206 return disp->GetMultiDeviceCompatibility(gpu0, gpu1, pInfo);
207}
208
209LOADER_EXPORT VkResult VKAPI vkOpenSharedMemory(VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem)
210{
211 const VkLayerDispatchTable *disp;
212
213 disp = loader_get_dispatch(device);
214
215 return disp->OpenSharedMemory(device, pOpenInfo, pMem);
216}
217
218LOADER_EXPORT VkResult VKAPI vkOpenSharedSemaphore(VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore)
219{
220 const VkLayerDispatchTable *disp;
221
222 disp = loader_get_dispatch(device);
223
224 return disp->OpenSharedSemaphore(device, pOpenInfo, pSemaphore);
225}
226
227LOADER_EXPORT VkResult VKAPI vkOpenPeerMemory(VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem)
228{
229 const VkLayerDispatchTable *disp;
230
231 disp = loader_get_dispatch(device);
232
233 return disp->OpenPeerMemory(device, pOpenInfo, pMem);
234}
235
236LOADER_EXPORT VkResult VKAPI vkOpenPeerImage(VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkDeviceMemory* pMem)
237{
238 const VkLayerDispatchTable *disp;
239
240 disp = loader_get_dispatch(device);
241
242 return disp->OpenPeerImage(device, pOpenInfo, pImage, pMem);
243}
244
245LOADER_EXPORT VkResult VKAPI vkDestroyObject(VkDevice device, VkObjectType objType, VkObject object)
246{
247 const VkLayerDispatchTable *disp;
248
249 disp = loader_get_dispatch(device);
250
251 return disp->DestroyObject(device, objType, object);
252}
253
254LOADER_EXPORT VkResult VKAPI vkGetObjectInfo(VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData)
255{
256 const VkLayerDispatchTable *disp;
257
258 disp = loader_get_dispatch(device);
259
260 return disp->GetObjectInfo(device, objType, object, infoType, pDataSize, pData);
261}
262
Mark Lobodzinski23182612015-05-29 09:32:35 -0500263LOADER_EXPORT VkResult VKAPI vkBindObjectMemory(VkDevice device, VkObjectType objType, VkObject object, VkDeviceMemory mem, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600264{
265 const VkLayerDispatchTable *disp;
266
Mark Lobodzinskifb9f5642015-05-11 17:21:15 -0500267 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600268
Mark Lobodzinski23182612015-05-29 09:32:35 -0500269 return disp->BindObjectMemory(device, objType, object, mem, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600270}
271
Mark Lobodzinski23182612015-05-29 09:32:35 -0500272LOADER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600273{
274 const VkLayerDispatchTable *disp;
275
276 disp = loader_get_dispatch(queue);
277
Mark Lobodzinski23182612015-05-29 09:32:35 -0500278 return disp->QueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600279}
280
Mark Lobodzinski23182612015-05-29 09:32:35 -0500281LOADER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(VkQueue queue, VkImage image, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600282{
283 const VkLayerDispatchTable *disp;
284
285 disp = loader_get_dispatch(queue);
286
Mark Lobodzinski23182612015-05-29 09:32:35 -0500287 return disp->QueueBindSparseImageMemory(queue, image, pBindInfo, mem, memOffset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600288}
289
290LOADER_EXPORT VkResult VKAPI vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence)
291{
292 const VkLayerDispatchTable *disp;
293
294 disp = loader_get_dispatch(device);
295
296 return disp->CreateFence(device, pCreateInfo, pFence);
297}
298
299LOADER_EXPORT VkResult VKAPI vkResetFences(VkDevice device, uint32_t fenceCount, VkFence* pFences)
300{
301 const VkLayerDispatchTable *disp;
302
303 disp = loader_get_dispatch(device);
304
305 return disp->ResetFences(device, fenceCount, pFences);
306}
307
308LOADER_EXPORT VkResult VKAPI vkGetFenceStatus(VkDevice device, VkFence fence)
309{
310 const VkLayerDispatchTable *disp;
311
312 disp = loader_get_dispatch(device);
313
314 return disp->GetFenceStatus(device, fence);
315}
316
317LOADER_EXPORT VkResult VKAPI vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, bool32_t waitAll, uint64_t timeout)
318{
319 const VkLayerDispatchTable *disp;
320
321 disp = loader_get_dispatch(device);
322
323 return disp->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
324}
325
326LOADER_EXPORT VkResult VKAPI vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore)
327{
328 const VkLayerDispatchTable *disp;
329
330 disp = loader_get_dispatch(device);
331
332 return disp->CreateSemaphore(device, pCreateInfo, pSemaphore);
333}
334
335LOADER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore)
336{
337 const VkLayerDispatchTable *disp;
338
339 disp = loader_get_dispatch(queue);
340
341 return disp->QueueSignalSemaphore(queue, semaphore);
342}
343
344LOADER_EXPORT VkResult VKAPI vkQueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore)
345{
346 const VkLayerDispatchTable *disp;
347
348 disp = loader_get_dispatch(queue);
349
350 return disp->QueueWaitSemaphore(queue, semaphore);
351}
352
353LOADER_EXPORT VkResult VKAPI vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent)
354{
355 const VkLayerDispatchTable *disp;
356
357 disp = loader_get_dispatch(device);
358
359 return disp->CreateEvent(device, pCreateInfo, pEvent);
360}
361
362LOADER_EXPORT VkResult VKAPI vkGetEventStatus(VkDevice device, VkEvent event)
363{
364 const VkLayerDispatchTable *disp;
365
366 disp = loader_get_dispatch(device);
367
368 return disp->GetEventStatus(device, event);
369}
370
371LOADER_EXPORT VkResult VKAPI vkSetEvent(VkDevice device, VkEvent event)
372{
373 const VkLayerDispatchTable *disp;
374
375 disp = loader_get_dispatch(device);
376
377 return disp->SetEvent(device, event);
378}
379
380LOADER_EXPORT VkResult VKAPI vkResetEvent(VkDevice device, VkEvent event)
381{
382 const VkLayerDispatchTable *disp;
383
384 disp = loader_get_dispatch(device);
385
386 return disp->ResetEvent(device, event);
387}
388
389LOADER_EXPORT VkResult VKAPI vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool)
390{
391 const VkLayerDispatchTable *disp;
392
393 disp = loader_get_dispatch(device);
394
395 return disp->CreateQueryPool(device, pCreateInfo, pQueryPool);
396}
397
398LOADER_EXPORT VkResult VKAPI vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags)
399{
400 const VkLayerDispatchTable *disp;
401
402 disp = loader_get_dispatch(device);
403
404 return disp->GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
405}
406
407LOADER_EXPORT VkResult VKAPI vkGetFormatInfo(VkDevice device, VkFormat format, VkFormatInfoType infoType, size_t* pDataSize, void* pData)
408{
409 const VkLayerDispatchTable *disp;
410
411 disp = loader_get_dispatch(device);
412
413 return disp->GetFormatInfo(device, format, infoType, pDataSize, pData);
414}
415
416LOADER_EXPORT VkResult VKAPI vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer)
417{
418 const VkLayerDispatchTable *disp;
419
420 disp = loader_get_dispatch(device);
421
422 return disp->CreateBuffer(device, pCreateInfo, pBuffer);
423}
424
425LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView)
426{
427 const VkLayerDispatchTable *disp;
428
429 disp = loader_get_dispatch(device);
430
431 return disp->CreateBufferView(device, pCreateInfo, pView);
432}
433
434LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage)
435{
436 const VkLayerDispatchTable *disp;
437
438 disp = loader_get_dispatch(device);
439
440 return disp->CreateImage(device, pCreateInfo, pImage);
441}
442
443LOADER_EXPORT VkResult VKAPI vkGetImageSubresourceInfo(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, size_t* pDataSize, void* pData)
444{
445 const VkLayerDispatchTable *disp;
446
447 disp = loader_get_dispatch(device);
448
449 return disp->GetImageSubresourceInfo(device, image, pSubresource, infoType, pDataSize, pData);
450}
451
452LOADER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView)
453{
454 const VkLayerDispatchTable *disp;
455
456 disp = loader_get_dispatch(device);
457
458 return disp->CreateImageView(device, pCreateInfo, pView);
459}
460
461LOADER_EXPORT VkResult VKAPI vkCreateColorAttachmentView(VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView)
462{
463 const VkLayerDispatchTable *disp;
464
465 disp = loader_get_dispatch(device);
466
467 return disp->CreateColorAttachmentView(device, pCreateInfo, pView);
468}
469
470LOADER_EXPORT VkResult VKAPI vkCreateDepthStencilView(VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView)
471{
472 const VkLayerDispatchTable *disp;
473
474 disp = loader_get_dispatch(device);
475
476 return disp->CreateDepthStencilView(device, pCreateInfo, pView);
477}
478
479LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader)
480{
481 const VkLayerDispatchTable *disp;
482
483 disp = loader_get_dispatch(device);
484
485 return disp->CreateShader(device, pCreateInfo, pShader);
486}
487
488LOADER_EXPORT VkResult VKAPI vkCreateGraphicsPipeline(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline)
489{
490 const VkLayerDispatchTable *disp;
491
492 disp = loader_get_dispatch(device);
493
494 return disp->CreateGraphicsPipeline(device, pCreateInfo, pPipeline);
495}
496
497LOADER_EXPORT VkResult VKAPI vkCreateGraphicsPipelineDerivative(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline)
498{
499 const VkLayerDispatchTable *disp;
500
501 disp = loader_get_dispatch(device);
502
503 return disp->CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline);
504}
505
506LOADER_EXPORT VkResult VKAPI vkCreateComputePipeline(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline)
507{
508 const VkLayerDispatchTable *disp;
509
510 disp = loader_get_dispatch(device);
511
512 return disp->CreateComputePipeline(device, pCreateInfo, pPipeline);
513}
514
515LOADER_EXPORT VkResult VKAPI vkStorePipeline(VkDevice device, VkPipeline pipeline, size_t* pDataSize, void* pData)
516{
517 const VkLayerDispatchTable *disp;
518
519 disp = loader_get_dispatch(device);
520
521 return disp->StorePipeline(device, pipeline, pDataSize, pData);
522}
523
524LOADER_EXPORT VkResult VKAPI vkLoadPipeline(VkDevice device, size_t dataSize, const void* pData, VkPipeline* pPipeline)
525{
526 const VkLayerDispatchTable *disp;
527
528 disp = loader_get_dispatch(device);
529
530 return disp->LoadPipeline(device, dataSize, pData, pPipeline);
531}
532
533LOADER_EXPORT VkResult VKAPI vkLoadPipelineDerivative(VkDevice device, size_t dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline)
534{
535 const VkLayerDispatchTable *disp;
536
537 disp = loader_get_dispatch(device);
538
539 return disp->LoadPipelineDerivative(device, dataSize, pData, basePipeline, pPipeline);
540}
541
542LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout)
543{
544 const VkLayerDispatchTable *disp;
545
546 disp = loader_get_dispatch(device);
547
548 return disp->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
549}
550
551LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler)
552{
553 const VkLayerDispatchTable *disp;
554
555 disp = loader_get_dispatch(device);
556
557 return disp->CreateSampler(device, pCreateInfo, pSampler);
558}
559
560LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout)
561{
562 const VkLayerDispatchTable *disp;
563
564 disp = loader_get_dispatch(device);
565
566 return disp->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
567}
568
569LOADER_EXPORT VkResult VKAPI vkBeginDescriptorPoolUpdate(VkDevice device, VkDescriptorUpdateMode updateMode)
570{
571 const VkLayerDispatchTable *disp;
572
573 disp = loader_get_dispatch(device);
574
575 return disp->BeginDescriptorPoolUpdate(device, updateMode);
576}
577
578LOADER_EXPORT VkResult VKAPI vkEndDescriptorPoolUpdate(VkDevice device, VkCmdBuffer cmd)
579{
580 const VkLayerDispatchTable *disp;
581
582 disp = loader_get_dispatch(device);
583
584 return disp->EndDescriptorPoolUpdate(device, cmd);
585}
586
587LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool)
588{
589 const VkLayerDispatchTable *disp;
590
591 disp = loader_get_dispatch(device);
592
593 return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
594}
595
596LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
597{
598 const VkLayerDispatchTable *disp;
599
600 disp = loader_get_dispatch(device);
601
602 return disp->ResetDescriptorPool(device, descriptorPool);
603}
604
605LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount)
606{
607 const VkLayerDispatchTable *disp;
608
609 disp = loader_get_dispatch(device);
610
611 return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
612}
613
614LOADER_EXPORT void VKAPI vkClearDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets)
615{
616 const VkLayerDispatchTable *disp;
617
618 disp = loader_get_dispatch(device);
619
620 disp->ClearDescriptorSets(device, descriptorPool, count, pDescriptorSets);
621}
622
623LOADER_EXPORT void VKAPI vkUpdateDescriptors(VkDevice device, VkDescriptorSet descriptorSet, uint32_t updateCount, const void** ppUpdateArray)
624{
625 const VkLayerDispatchTable *disp;
626
627 disp = loader_get_dispatch(device);
628
629 disp->UpdateDescriptors(device, descriptorSet, updateCount, ppUpdateArray);
630}
631
632LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState)
633{
634 const VkLayerDispatchTable *disp;
635
636 disp = loader_get_dispatch(device);
637
638 return disp->CreateDynamicViewportState(device, pCreateInfo, pState);
639}
640
641LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState)
642{
643 const VkLayerDispatchTable *disp;
644
645 disp = loader_get_dispatch(device);
646
647 return disp->CreateDynamicRasterState(device, pCreateInfo, pState);
648}
649
650LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState)
651{
652 const VkLayerDispatchTable *disp;
653
654 disp = loader_get_dispatch(device);
655
656 return disp->CreateDynamicColorBlendState(device, pCreateInfo, pState);
657}
658
659LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState)
660{
661 const VkLayerDispatchTable *disp;
662
663 disp = loader_get_dispatch(device);
664
665 return disp->CreateDynamicDepthStencilState(device, pCreateInfo, pState);
666}
667
668LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer)
669{
670 const VkLayerDispatchTable *disp;
671 VkResult res;
672
673 disp = loader_get_dispatch(device);
674
675 res = disp->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
676 if (res == VK_SUCCESS) {
677 loader_init_dispatch(*pCmdBuffer, disp);
678 }
679
680 return res;
681}
682
683LOADER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo)
684{
685 const VkLayerDispatchTable *disp;
686
687 disp = loader_get_dispatch(cmdBuffer);
688
689 return disp->BeginCommandBuffer(cmdBuffer, pBeginInfo);
690}
691
692LOADER_EXPORT VkResult VKAPI vkEndCommandBuffer(VkCmdBuffer cmdBuffer)
693{
694 const VkLayerDispatchTable *disp;
695
696 disp = loader_get_dispatch(cmdBuffer);
697
698 return disp->EndCommandBuffer(cmdBuffer);
699}
700
701LOADER_EXPORT VkResult VKAPI vkResetCommandBuffer(VkCmdBuffer cmdBuffer)
702{
703 const VkLayerDispatchTable *disp;
704
705 disp = loader_get_dispatch(cmdBuffer);
706
707 return disp->ResetCommandBuffer(cmdBuffer);
708}
709
710LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
711{
712 const VkLayerDispatchTable *disp;
713
714 disp = loader_get_dispatch(cmdBuffer);
715
716 disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
717}
718
719LOADER_EXPORT void VKAPI vkCmdBindDynamicStateObject(VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject state)
720{
721 const VkLayerDispatchTable *disp;
722
723 disp = loader_get_dispatch(cmdBuffer);
724
725 disp->CmdBindDynamicStateObject(cmdBuffer, stateBindPoint, state);
726}
727
728LOADER_EXPORT void VKAPI vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets)
729{
730 const VkLayerDispatchTable *disp;
731
732 disp = loader_get_dispatch(cmdBuffer);
733
734 disp->CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
735}
736
737LOADER_EXPORT void VKAPI vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
738{
739 const VkLayerDispatchTable *disp;
740
741 disp = loader_get_dispatch(cmdBuffer);
742
743 disp->CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
744}
745
746LOADER_EXPORT void VKAPI vkCmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
747{
748 const VkLayerDispatchTable *disp;
749
750 disp = loader_get_dispatch(cmdBuffer);
751
752 disp->CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
753}
754
755LOADER_EXPORT void VKAPI vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
756{
757 const VkLayerDispatchTable *disp;
758
759 disp = loader_get_dispatch(cmdBuffer);
760
761 disp->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
762}
763
764LOADER_EXPORT void VKAPI vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount)
765{
766 const VkLayerDispatchTable *disp;
767
768 disp = loader_get_dispatch(cmdBuffer);
769
770 disp->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
771}
772
773LOADER_EXPORT void VKAPI vkCmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
774{
775 const VkLayerDispatchTable *disp;
776
777 disp = loader_get_dispatch(cmdBuffer);
778
779 disp->CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
780}
781
782LOADER_EXPORT void VKAPI vkCmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride)
783{
784 const VkLayerDispatchTable *disp;
785
786 disp = loader_get_dispatch(cmdBuffer);
787
788 disp->CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
789}
790
791LOADER_EXPORT void VKAPI vkCmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z)
792{
793 const VkLayerDispatchTable *disp;
794
795 disp = loader_get_dispatch(cmdBuffer);
796
797 disp->CmdDispatch(cmdBuffer, x, y, z);
798}
799
800LOADER_EXPORT void VKAPI vkCmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset)
801{
802 const VkLayerDispatchTable *disp;
803
804 disp = loader_get_dispatch(cmdBuffer);
805
806 disp->CmdDispatchIndirect(cmdBuffer, buffer, offset);
807}
808
809LOADER_EXPORT void VKAPI vkCmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
810{
811 const VkLayerDispatchTable *disp;
812
813 disp = loader_get_dispatch(cmdBuffer);
814
815 disp->CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
816}
817
818LOADER_EXPORT void VKAPI vkCmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions)
819{
820 const VkLayerDispatchTable *disp;
821
822 disp = loader_get_dispatch(cmdBuffer);
823
824 disp->CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
825}
826
Mark Lobodzinski20f68592015-05-22 14:43:25 -0500827LOADER_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 -0600828{
829 const VkLayerDispatchTable *disp;
830
831 disp = loader_get_dispatch(cmdBuffer);
832
Mark Lobodzinski20f68592015-05-22 14:43:25 -0500833 disp->CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600834}
835
836LOADER_EXPORT void VKAPI vkCmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
837{
838 const VkLayerDispatchTable *disp;
839
840 disp = loader_get_dispatch(cmdBuffer);
841
842 disp->CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
843}
844
845LOADER_EXPORT void VKAPI vkCmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
846{
847 const VkLayerDispatchTable *disp;
848
849 disp = loader_get_dispatch(cmdBuffer);
850
851 disp->CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
852}
853
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600854LOADER_EXPORT void VKAPI vkCmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData)
855{
856 const VkLayerDispatchTable *disp;
857
858 disp = loader_get_dispatch(cmdBuffer);
859
860 disp->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
861}
862
863LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
864{
865 const VkLayerDispatchTable *disp;
866
867 disp = loader_get_dispatch(cmdBuffer);
868
869 disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
870}
871
872LOADER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColor* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
873{
874 const VkLayerDispatchTable *disp;
875
876 disp = loader_get_dispatch(cmdBuffer);
877
878 disp->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
879}
880
881LOADER_EXPORT void VKAPI vkCmdClearDepthStencil(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
882{
883 const VkLayerDispatchTable *disp;
884
885 disp = loader_get_dispatch(cmdBuffer);
886
887 disp->CmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
888}
889
890LOADER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions)
891{
892 const VkLayerDispatchTable *disp;
893
894 disp = loader_get_dispatch(cmdBuffer);
895
896 disp->CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
897}
898
899LOADER_EXPORT void VKAPI vkCmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent)
900{
901 const VkLayerDispatchTable *disp;
902
903 disp = loader_get_dispatch(cmdBuffer);
904
905 disp->CmdSetEvent(cmdBuffer, event, pipeEvent);
906}
907
908LOADER_EXPORT void VKAPI vkCmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent)
909{
910 const VkLayerDispatchTable *disp;
911
912 disp = loader_get_dispatch(cmdBuffer);
913
914 disp->CmdResetEvent(cmdBuffer, event, pipeEvent);
915}
916
917LOADER_EXPORT void VKAPI vkCmdWaitEvents(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, uint32_t memBarrierCount, const void** ppMemBarriers)
918{
919 const VkLayerDispatchTable *disp;
920
921 disp = loader_get_dispatch(cmdBuffer);
922
923 disp->CmdWaitEvents(cmdBuffer, waitEvent, eventCount, pEvents, memBarrierCount, ppMemBarriers);
924}
925
926LOADER_EXPORT void VKAPI vkCmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t pipeEventCount, const VkPipeEvent* pPipeEvents, uint32_t memBarrierCount, const void** ppMemBarriers)
927{
928 const VkLayerDispatchTable *disp;
929
930 disp = loader_get_dispatch(cmdBuffer);
931
932 disp->CmdPipelineBarrier(cmdBuffer, waitEvent, pipeEventCount, pPipeEvents, memBarrierCount, ppMemBarriers);
933}
934
935LOADER_EXPORT void VKAPI vkCmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags)
936{
937 const VkLayerDispatchTable *disp;
938
939 disp = loader_get_dispatch(cmdBuffer);
940
941 disp->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
942}
943
944LOADER_EXPORT void VKAPI vkCmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot)
945{
946 const VkLayerDispatchTable *disp;
947
948 disp = loader_get_dispatch(cmdBuffer);
949
950 disp->CmdEndQuery(cmdBuffer, queryPool, slot);
951}
952
953LOADER_EXPORT void VKAPI vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount)
954{
955 const VkLayerDispatchTable *disp;
956
957 disp = loader_get_dispatch(cmdBuffer);
958
959 disp->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
960}
961
962LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset)
963{
964 const VkLayerDispatchTable *disp;
965
966 disp = loader_get_dispatch(cmdBuffer);
967
968 disp->CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
969}
970
971LOADER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkFlags flags)
972{
973 const VkLayerDispatchTable *disp;
974
975 disp = loader_get_dispatch(cmdBuffer);
976
977 disp->CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
978}
979
980LOADER_EXPORT void VKAPI vkCmdInitAtomicCounters(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, const uint32_t* pData)
981{
982 const VkLayerDispatchTable *disp;
983
984 disp = loader_get_dispatch(cmdBuffer);
985
986 disp->CmdInitAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, pData);
987}
988
989LOADER_EXPORT void VKAPI vkCmdLoadAtomicCounters(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, VkBuffer srcBuffer, VkDeviceSize srcOffset)
990{
991 const VkLayerDispatchTable *disp;
992
993 disp = loader_get_dispatch(cmdBuffer);
994
995 disp->CmdLoadAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, srcBuffer, srcOffset);
996}
997
998LOADER_EXPORT void VKAPI vkCmdSaveAtomicCounters(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, VkBuffer destBuffer, VkDeviceSize destOffset)
999{
1000 const VkLayerDispatchTable *disp;
1001
1002 disp = loader_get_dispatch(cmdBuffer);
1003
1004 disp->CmdSaveAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, destBuffer, destOffset);
1005}
1006
1007LOADER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer)
1008{
1009 const VkLayerDispatchTable *disp;
1010
1011 disp = loader_get_dispatch(device);
1012
1013 return disp->CreateFramebuffer(device, pCreateInfo, pFramebuffer);
1014}
1015
1016LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass)
1017{
1018 const VkLayerDispatchTable *disp;
1019
1020 disp = loader_get_dispatch(device);
1021
1022 return disp->CreateRenderPass(device, pCreateInfo, pRenderPass);
1023}
1024
1025LOADER_EXPORT void VKAPI vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin)
1026{
1027 const VkLayerDispatchTable *disp;
1028
1029 disp = loader_get_dispatch(cmdBuffer);
1030
1031 disp->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin);
1032}
1033
1034LOADER_EXPORT void VKAPI vkCmdEndRenderPass(VkCmdBuffer cmdBuffer, VkRenderPass renderPass)
1035{
1036 const VkLayerDispatchTable *disp;
1037
1038 disp = loader_get_dispatch(cmdBuffer);
1039
1040 disp->CmdEndRenderPass(cmdBuffer, renderPass);
1041}
1042
1043LOADER_EXPORT VkResult VKAPI vkDbgSetValidationLevel(VkDevice device, VkValidationLevel validationLevel)
1044{
1045 const VkLayerDispatchTable *disp;
1046
1047 disp = loader_get_dispatch(device);
1048
1049 return disp->DbgSetValidationLevel(device, validationLevel);
1050}
1051
1052LOADER_EXPORT VkResult VKAPI vkDbgSetMessageFilter(VkDevice device, int32_t msgCode, VK_DBG_MSG_FILTER filter)
1053{
1054 const VkLayerDispatchTable *disp;
1055
1056 disp = loader_get_dispatch(device);
1057
1058 return disp->DbgSetMessageFilter(device, msgCode, filter);
1059}
1060
1061LOADER_EXPORT VkResult VKAPI vkDbgSetObjectTag(VkDevice device, VkObject object, size_t tagSize, const void* pTag)
1062{
1063 const VkLayerDispatchTable *disp;
1064
1065 disp = loader_get_dispatch(device);
1066
1067 return disp->DbgSetObjectTag(device, object, tagSize, pTag);
1068}
1069
1070LOADER_EXPORT VkResult VKAPI vkDbgSetDeviceOption(VkDevice device, VK_DBG_DEVICE_OPTION dbgOption, size_t dataSize, const void* pData)
1071{
1072 const VkLayerDispatchTable *disp;
1073
1074 disp = loader_get_dispatch(device);
1075
1076 return disp->DbgSetDeviceOption(device, dbgOption, dataSize, pData);
1077}
1078
1079LOADER_EXPORT void VKAPI vkCmdDbgMarkerBegin(VkCmdBuffer cmdBuffer, const char* pMarker)
1080{
1081 const VkLayerDispatchTable *disp;
1082
1083 disp = loader_get_dispatch(cmdBuffer);
1084
1085 disp->CmdDbgMarkerBegin(cmdBuffer, pMarker);
1086}
1087
1088LOADER_EXPORT void VKAPI vkCmdDbgMarkerEnd(VkCmdBuffer cmdBuffer)
1089{
1090 const VkLayerDispatchTable *disp;
1091
1092 disp = loader_get_dispatch(cmdBuffer);
1093
1094 disp->CmdDbgMarkerEnd(cmdBuffer);
1095}
1096
1097LOADER_EXPORT VkResult VKAPI vkGetDisplayInfoWSI(VkDisplayWSI display, VkDisplayInfoTypeWSI infoType, size_t* pDataSize, void* pData)
1098{
1099 const VkLayerDispatchTable *disp;
1100
1101 disp = loader_get_dispatch(display);
1102
1103 return disp->GetDisplayInfoWSI(display, infoType, pDataSize, pData);
1104}
1105
1106LOADER_EXPORT VkResult VKAPI vkCreateSwapChainWSI(VkDevice device, const VkSwapChainCreateInfoWSI* pCreateInfo, VkSwapChainWSI* pSwapChain)
1107{
1108 const VkLayerDispatchTable *disp;
1109 VkResult res;
1110
1111 disp = loader_get_dispatch(device);
1112
1113 res = disp->CreateSwapChainWSI(device, pCreateInfo, pSwapChain);
1114 if (res == VK_SUCCESS) {
1115 loader_init_dispatch(*pSwapChain, disp);
1116 }
1117
1118 return res;
1119}
1120
1121LOADER_EXPORT VkResult VKAPI vkDestroySwapChainWSI(VkSwapChainWSI swapChain)
1122{
1123 const VkLayerDispatchTable *disp;
1124
1125 disp = loader_get_dispatch(swapChain);
1126
1127 return disp->DestroySwapChainWSI(swapChain);
1128}
1129
1130LOADER_EXPORT VkResult VKAPI vkGetSwapChainInfoWSI(VkSwapChainWSI swapChain, VkSwapChainInfoTypeWSI infoType, size_t* pDataSize, void* pData)
1131{
1132 const VkLayerDispatchTable *disp;
1133
1134 disp = loader_get_dispatch(swapChain);
1135
1136 return disp->GetSwapChainInfoWSI(swapChain, infoType, pDataSize, pData);
1137}
1138
1139LOADER_EXPORT VkResult VKAPI vkQueuePresentWSI(VkQueue queue, const VkPresentInfoWSI* pPresentInfo)
1140{
1141 const VkLayerDispatchTable *disp;
1142
1143 disp = loader_get_dispatch(queue);
1144
1145 return disp->QueuePresentWSI(queue, pPresentInfo);
1146}
Tobin Ehlis3126f012015-05-13 11:57:18 -06001147
1148#if defined(WIN32)
1149#pragma optimize( "", on )
1150#endif