blob: b4eca0f638ed906a101797a7dd9ac4ea139d2359 [file] [log] [blame]
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001/*
Jon Ashburn2139a3e2015-05-06 09:02:10 -06002 *
Courtney Goeltzenleuchter8a17da52015-10-29 13:50:34 -06003 * Copyright (C) 2015 Valve Corporation
Jon Ashburn2139a3e2015-05-06 09:02:10 -06004 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included
13 * in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
Courtney Goeltzenleuchter96cd7952015-10-30 11:14:30 -060022 *
23 * Author: Chris Forbes <chrisf@ijw.co.nz>
24 * Author: Cody Northrop <cody@lunarg.com>
25 * Author: Jon Ashburn <jon@lunarg.com>
26 * Author: Tony Barbour <tony@LunarG.com>
Jon Ashburn2139a3e2015-05-06 09:02:10 -060027 */
Courtney Goeltzenleuchterb620ace2015-07-05 11:28:29 -060028#define _GNU_SOURCE
Jon Ashburnfce93d92015-05-12 17:26:48 -060029#include <stdlib.h>
30#include <string.h>
Jon Ashburn2139a3e2015-05-06 09:02:10 -060031
Tobin Ehlis7a51d902015-07-03 10:34:49 -060032#include "vk_loader_platform.h"
Jon Ashburn2139a3e2015-05-06 09:02:10 -060033#include "loader.h"
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060034#include "debug_report.h"
Ian Elliotta81e8ac2015-10-30 15:28:23 -060035#include "wsi.h"
Jon Ashburn2139a3e2015-05-06 09:02:10 -060036
Tobin Ehlis3126f012015-05-13 11:57:18 -060037
Jon Ashburn2139a3e2015-05-06 09:02:10 -060038/* Trampoline entrypoints */
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +080039LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
Courtney Goeltzenleuchter70c4ebc2015-06-08 15:13:50 -060040 const VkInstanceCreateInfo* pCreateInfo,
Chia-I Wu1f851912015-10-27 18:04:07 +080041 const VkAllocationCallbacks* pAllocator,
Courtney Goeltzenleuchter70c4ebc2015-06-08 15:13:50 -060042 VkInstance* pInstance)
Jon Ashburnfce93d92015-05-12 17:26:48 -060043{
44 struct loader_instance *ptr_instance = NULL;
Jon Ashburnfce93d92015-05-12 17:26:48 -060045 VkResult res = VK_ERROR_INITIALIZATION_FAILED;
Jon Ashburnfce93d92015-05-12 17:26:48 -060046
Jon Ashburn754f1992015-08-18 18:04:47 -060047 loader_platform_thread_once(&once_init, loader_initialize);
Jon Ashburnfce93d92015-05-12 17:26:48 -060048
Chia-I Wu69f40122015-10-26 21:10:41 +080049 if (pAllocator) {
Chia-I Wu1f851912015-10-27 18:04:07 +080050 ptr_instance = (struct loader_instance *) pAllocator->pfnAllocation(
Chia-I Wu69f40122015-10-26 21:10:41 +080051 pAllocator->pUserData,
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060052 sizeof(struct loader_instance),
53 sizeof(VkInstance),
Chia-I Wu1f851912015-10-27 18:04:07 +080054 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060055 } else {
56 ptr_instance = (struct loader_instance *) malloc(sizeof(struct loader_instance));
57 }
Jon Ashburnfce93d92015-05-12 17:26:48 -060058 if (ptr_instance == NULL) {
59 return VK_ERROR_OUT_OF_HOST_MEMORY;
60 }
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060061
Jon Ashburn413d6582015-08-28 15:19:27 -060062 tls_instance = ptr_instance;
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -060063 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburn182b8302015-08-11 14:49:54 -060064 memset(ptr_instance, 0, sizeof(struct loader_instance));
Jon Ashburncedc15f2015-05-21 18:13:33 -060065
Chia-I Wu69f40122015-10-26 21:10:41 +080066 if (pAllocator) {
67 ptr_instance->alloc_callbacks = *pAllocator;
Courtney Goeltzenleuchterb620ace2015-07-05 11:28:29 -060068 }
69
Jon Ashburne9ca8fa2015-08-20 16:35:30 -060070 /* Due to implicit layers need to get layer list even if
Chia-I Wu763a7492015-10-26 20:48:51 +080071 * enabledLayerNameCount == 0 and VK_INSTANCE_LAYERS is unset. For now always
Jon Ashburne9ca8fa2015-08-20 16:35:30 -060072 * get layer list (both instance and device) via loader_layer_scan(). */
73 memset(&ptr_instance->instance_layer_list, 0, sizeof(ptr_instance->instance_layer_list));
74 memset(&ptr_instance->device_layer_list, 0, sizeof(ptr_instance->device_layer_list));
Jon Ashburne58f1a32015-08-28 13:38:21 -060075 loader_layer_scan(ptr_instance,
76
77
78 &ptr_instance->instance_layer_list,
79 &ptr_instance->device_layer_list);
Jon Ashburne9ca8fa2015-08-20 16:35:30 -060080
81 /* validate the app requested layers to be enabled */
Chia-I Wu763a7492015-10-26 20:48:51 +080082 if (pCreateInfo->enabledLayerNameCount > 0) {
83 res = loader_validate_layers(pCreateInfo->enabledLayerNameCount,
Jon Ashburne9ca8fa2015-08-20 16:35:30 -060084 pCreateInfo->ppEnabledLayerNames,
85 &ptr_instance->instance_layer_list);
86 if (res != VK_SUCCESS) {
Jon Ashburn19d11ea2015-10-09 09:40:30 -060087 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburne9ca8fa2015-08-20 16:35:30 -060088 return res;
89 }
90 }
91
Jon Ashburn754f1992015-08-18 18:04:47 -060092 /* Scan/discover all ICD libraries */
93 memset(&ptr_instance->icd_libs, 0, sizeof(ptr_instance->icd_libs));
Jon Ashburne58f1a32015-08-28 13:38:21 -060094 loader_icd_scan(ptr_instance, &ptr_instance->icd_libs);
Jon Ashburn754f1992015-08-18 18:04:47 -060095
Jon Ashburncfe4e682015-08-14 12:51:47 -060096 /* get extensions from all ICD's, merge so no duplicates, then validate */
Jon Ashburne58f1a32015-08-28 13:38:21 -060097 loader_get_icd_loader_instance_extensions(ptr_instance,
98 &ptr_instance->icd_libs,
99 &ptr_instance->ext_list);
100 res = loader_validate_instance_extensions(&ptr_instance->ext_list,
101 &ptr_instance->instance_layer_list,
102 pCreateInfo);
Jon Ashburncfe4e682015-08-14 12:51:47 -0600103 if (res != VK_SUCCESS) {
Jon Ashburne58f1a32015-08-28 13:38:21 -0600104 loader_delete_layer_properties(ptr_instance,
105 &ptr_instance->device_layer_list);
106 loader_delete_layer_properties(ptr_instance,
107 &ptr_instance->instance_layer_list);
108 loader_scanned_icd_clear(ptr_instance, &ptr_instance->icd_libs);
109 loader_destroy_ext_list(ptr_instance, &ptr_instance->ext_list);
Jon Ashburncfe4e682015-08-14 12:51:47 -0600110 loader_platform_thread_unlock_mutex(&loader_lock);
111 loader_heap_free(ptr_instance, ptr_instance);
112 return res;
113 }
114
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600115 ptr_instance->disp = loader_heap_alloc(
116 ptr_instance,
117 sizeof(VkLayerInstanceDispatchTable),
Chia-I Wu1f851912015-10-27 18:04:07 +0800118 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600119 if (ptr_instance->disp == NULL) {
Jon Ashburne58f1a32015-08-28 13:38:21 -0600120 loader_delete_layer_properties(ptr_instance,
121 &ptr_instance->device_layer_list);
122 loader_delete_layer_properties(ptr_instance,
123 &ptr_instance->instance_layer_list);
124 loader_scanned_icd_clear(ptr_instance,
125 &ptr_instance->icd_libs);
126 loader_destroy_ext_list(ptr_instance,
127 &ptr_instance->ext_list);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600128 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburncfe4e682015-08-14 12:51:47 -0600129 loader_heap_free(ptr_instance, ptr_instance);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600130 return VK_ERROR_OUT_OF_HOST_MEMORY;
131 }
132 memcpy(ptr_instance->disp, &instance_disp, sizeof(instance_disp));
133 ptr_instance->next = loader.instances;
134 loader.instances = ptr_instance;
135
Jon Ashburn182b8302015-08-11 14:49:54 -0600136 /* activate any layers on instance chain */
Jon Ashburne58f1a32015-08-28 13:38:21 -0600137 res = loader_enable_instance_layers(ptr_instance,
138 pCreateInfo,
139 &ptr_instance->instance_layer_list);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600140 if (res != VK_SUCCESS) {
Jon Ashburne58f1a32015-08-28 13:38:21 -0600141 loader_delete_layer_properties(ptr_instance,
142 &ptr_instance->device_layer_list);
143 loader_delete_layer_properties(ptr_instance,
144 &ptr_instance->instance_layer_list);
145 loader_scanned_icd_clear(ptr_instance,
146 &ptr_instance->icd_libs);
147 loader_destroy_ext_list(ptr_instance,
148 &ptr_instance->ext_list);
Jon Ashburncfe4e682015-08-14 12:51:47 -0600149 loader.instances = ptr_instance->next;
150 loader_platform_thread_unlock_mutex(&loader_lock);
Courtney Goeltzenleuchter1381cd12015-07-06 09:08:37 -0600151 loader_heap_free(ptr_instance, ptr_instance->disp);
152 loader_heap_free(ptr_instance, ptr_instance);
153 return res;
154 }
Jon Ashburn182b8302015-08-11 14:49:54 -0600155 loader_activate_instance_layers(ptr_instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600156
Ian Elliotta81e8ac2015-10-30 15:28:23 -0600157 wsi_create_instance(ptr_instance, pCreateInfo);
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600158 debug_report_create_instance(ptr_instance, pCreateInfo);
Jon Ashburncedc15f2015-05-21 18:13:33 -0600159
Jon Ashburnfce93d92015-05-12 17:26:48 -0600160
Jon Ashburnfce93d92015-05-12 17:26:48 -0600161 *pInstance = (VkInstance) ptr_instance;
Jon Ashburna179dcf2015-05-21 17:42:17 -0600162
Chia-I Wu69f40122015-10-26 21:10:41 +0800163 res = ptr_instance->disp->CreateInstance(pCreateInfo, pAllocator, pInstance);
Jon Ashburna179dcf2015-05-21 17:42:17 -0600164
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -0600165 /*
166 * Finally have the layers in place and everyone has seen
167 * the CreateInstance command go by. This allows the layer's
168 * GetInstanceProcAddr functions to return valid extension functions
169 * if enabled.
170 */
171 loader_activate_instance_layer_extensions(ptr_instance);
172
Jon Ashburnb40f2562015-05-29 13:15:39 -0600173 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600174 return res;
175}
176
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800177LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
Chia-I Wu69f40122015-10-26 21:10:41 +0800178 VkInstance instance,
Chia-I Wu1f851912015-10-27 18:04:07 +0800179 const VkAllocationCallbacks* pAllocator)
Jon Ashburnfce93d92015-05-12 17:26:48 -0600180{
181 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn0c5eea22015-09-30 12:56:42 -0600182 struct loader_instance *ptr_instance = NULL;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600183 disp = loader_get_instance_dispatch(instance);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600184
Jon Ashburnb40f2562015-05-29 13:15:39 -0600185 loader_platform_thread_lock_mutex(&loader_lock);
186
Jon Ashburn0c5eea22015-09-30 12:56:42 -0600187 ptr_instance = loader_get_instance(instance);
Chia-I Wu69f40122015-10-26 21:10:41 +0800188 disp->DestroyInstance(instance, pAllocator);
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -0600189
Courtney Goeltzenleuchter3d8dc1f2015-06-08 15:09:22 -0600190 loader_deactivate_instance_layers(ptr_instance);
Jon Ashburncfe4e682015-08-14 12:51:47 -0600191 loader_heap_free(ptr_instance, ptr_instance->disp);
192 loader_heap_free(ptr_instance, ptr_instance);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600193 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600194}
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600195
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800196LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
Jon Ashburnfce93d92015-05-12 17:26:48 -0600197 VkInstance instance,
198 uint32_t* pPhysicalDeviceCount,
199 VkPhysicalDevice* pPhysicalDevices)
200{
201 const VkLayerInstanceDispatchTable *disp;
Jon Ashburnb40f2562015-05-29 13:15:39 -0600202 VkResult res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600203 disp = loader_get_instance_dispatch(instance);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600204
205 loader_platform_thread_lock_mutex(&loader_lock);
206 res = disp->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount,
Jon Ashburnfce93d92015-05-12 17:26:48 -0600207 pPhysicalDevices);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600208 loader_platform_thread_unlock_mutex(&loader_lock);
209 return res;
Jon Ashburnfce93d92015-05-12 17:26:48 -0600210}
211
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800212LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
Jon Ashburn4e189562015-07-23 18:49:07 -0600213 VkPhysicalDevice gpu,
214 VkPhysicalDeviceFeatures *pFeatures)
215{
216 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn4e189562015-07-23 18:49:07 -0600217
218 disp = loader_get_instance_dispatch(gpu);
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600219 disp->GetPhysicalDeviceFeatures(gpu, pFeatures);
Jon Ashburn4e189562015-07-23 18:49:07 -0600220}
221
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800222LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
Jon Ashburn4e189562015-07-23 18:49:07 -0600223 VkPhysicalDevice gpu,
224 VkFormat format,
225 VkFormatProperties *pFormatInfo)
226{
227 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn4e189562015-07-23 18:49:07 -0600228
229 disp = loader_get_instance_dispatch(gpu);
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600230 disp->GetPhysicalDeviceFormatProperties(gpu, format, pFormatInfo);
Jon Ashburn4e189562015-07-23 18:49:07 -0600231}
232
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800233LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties)
Jon Ashburn4e189562015-07-23 18:49:07 -0600234{
235 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn4e189562015-07-23 18:49:07 -0600236
237 disp = loader_get_instance_dispatch(physicalDevice);
Chia-I Wu5202c542015-10-31 00:31:16 +0800238 return disp->GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
Jon Ashburn4e189562015-07-23 18:49:07 -0600239}
240
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800241LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
Jon Ashburnfce93d92015-05-12 17:26:48 -0600242 VkPhysicalDevice gpu,
Tony Barbour426b9052015-06-24 16:06:58 -0600243 VkPhysicalDeviceProperties* pProperties)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600244{
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600245 const VkLayerInstanceDispatchTable *disp;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600246
Jon Ashburn2666e2f2015-05-15 15:09:35 -0600247 disp = loader_get_instance_dispatch(gpu);
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600248 disp->GetPhysicalDeviceProperties(gpu, pProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600249}
250
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800251LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
Tony Barbour426b9052015-06-24 16:06:58 -0600252 VkPhysicalDevice gpu,
Chia-I Wu763a7492015-10-26 20:48:51 +0800253 uint32_t* pQueueFamilyPropertyCount,
Cody Northropef72e2a2015-08-03 17:04:53 -0600254 VkQueueFamilyProperties* pQueueProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600255{
256 const VkLayerInstanceDispatchTable *disp;
Tony Barbour426b9052015-06-24 16:06:58 -0600257
258 disp = loader_get_instance_dispatch(gpu);
Chia-I Wu763a7492015-10-26 20:48:51 +0800259 disp->GetPhysicalDeviceQueueFamilyProperties(gpu, pQueueFamilyPropertyCount, pQueueProperties);
Tony Barbour426b9052015-06-24 16:06:58 -0600260}
261
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800262LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
Tony Barbour426b9052015-06-24 16:06:58 -0600263 VkPhysicalDevice gpu,
264 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
265{
266 const VkLayerInstanceDispatchTable *disp;
Tony Barbour426b9052015-06-24 16:06:58 -0600267
268 disp = loader_get_instance_dispatch(gpu);
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600269 disp->GetPhysicalDeviceMemoryProperties(gpu, pMemoryProperties);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600270}
271
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800272LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600273 VkPhysicalDevice gpu,
274 const VkDeviceCreateInfo* pCreateInfo,
Chia-I Wu1f851912015-10-27 18:04:07 +0800275 const VkAllocationCallbacks* pAllocator,
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600276 VkDevice* pDevice)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600277{
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600278 VkResult res;
279
Jon Ashburnb40f2562015-05-29 13:15:39 -0600280 loader_platform_thread_lock_mutex(&loader_lock);
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600281
Chia-I Wu69f40122015-10-26 21:10:41 +0800282 res = loader_CreateDevice(gpu, pCreateInfo, pAllocator, pDevice);
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -0600283
Jon Ashburnb40f2562015-05-29 13:15:39 -0600284 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600285 return res;
286}
287
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800288LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600289{
290 const VkLayerDispatchTable *disp;
Jon Ashburne58f1a32015-08-28 13:38:21 -0600291 struct loader_device *dev;
292 struct loader_icd *icd = loader_get_icd_and_device(device, &dev);
293 const struct loader_instance *inst = icd->this_instance;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600294 disp = loader_get_dispatch(device);
295
Jon Ashburnb40f2562015-05-29 13:15:39 -0600296 loader_platform_thread_lock_mutex(&loader_lock);
Chia-I Wu69f40122015-10-26 21:10:41 +0800297 disp->DestroyDevice(device, pAllocator);
Jon Ashburndbf8cee2015-11-19 15:43:26 -0700298 dev->device = NULL;
299 loader_remove_logical_device(inst, icd, dev);
300
Jon Ashburnb40f2562015-05-29 13:15:39 -0600301 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnb40f2562015-05-29 13:15:39 -0600302}
303
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800304LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600305 VkPhysicalDevice physicalDevice,
306 const char* pLayerName,
Chia-I Wu763a7492015-10-26 20:48:51 +0800307 uint32_t* pPropertyCount,
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600308 VkExtensionProperties* pProperties)
Jon Ashburnb40f2562015-05-29 13:15:39 -0600309{
310 VkResult res;
311
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600312 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburndb5a5bc2015-11-02 17:40:01 -0700313
314 /* If pLayerName == NULL, then querying ICD extensions, pass this call
315 down the instance chain which will terminate in the ICD. This allows
316 layers to filter the extensions coming back up the chain.
317 If pLayerName != NULL then get layer extensions from manifest file. */
318 if (pLayerName == NULL || strlen(pLayerName) == 0) {
319 const VkLayerInstanceDispatchTable *disp;
320
321 disp = loader_get_instance_dispatch(physicalDevice);
322 res = disp->EnumerateDeviceExtensionProperties(physicalDevice, NULL, pPropertyCount, pProperties);
323 } else {
324 res = loader_EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
325 }
326
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600327 loader_platform_thread_unlock_mutex(&loader_lock);
Tony Barbour426b9052015-06-24 16:06:58 -0600328 return res;
329}
330
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800331LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600332 VkPhysicalDevice physicalDevice,
Chia-I Wu763a7492015-10-26 20:48:51 +0800333 uint32_t* pPropertyCount,
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600334 VkLayerProperties* pProperties)
Tony Barbour426b9052015-06-24 16:06:58 -0600335{
336 VkResult res;
337
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600338 loader_platform_thread_lock_mutex(&loader_lock);
Jon Ashburndb5a5bc2015-11-02 17:40:01 -0700339
340 /* Don't dispatch this call down the instance chain, want all device layers
341 enumerated and instance chain may not contain all device layers */
Chia-I Wu763a7492015-10-26 20:48:51 +0800342 res = loader_EnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
Courtney Goeltzenleuchter18061cd2015-06-29 15:39:26 -0600343 loader_platform_thread_unlock_mutex(&loader_lock);
Jon Ashburnfce93d92015-05-12 17:26:48 -0600344 return res;
345}
346
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800347LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600348{
349 const VkLayerDispatchTable *disp;
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600350
351 disp = loader_get_dispatch(device);
352
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600353 disp->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
354 loader_set_dispatch(*pQueue, disp);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600355}
356
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800357LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600358{
359 const VkLayerDispatchTable *disp;
360
361 disp = loader_get_dispatch(queue);
362
Chia-I Wu483e7702015-10-26 17:20:32 +0800363 return disp->QueueSubmit(queue, submitCount, pSubmits, fence);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600364}
365
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800366LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600367{
368 const VkLayerDispatchTable *disp;
369
370 disp = loader_get_dispatch(queue);
371
372 return disp->QueueWaitIdle(queue);
373}
374
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800375LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(VkDevice device)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600376{
377 const VkLayerDispatchTable *disp;
378
379 disp = loader_get_dispatch(device);
380
381 return disp->DeviceWaitIdle(device);
382}
383
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800384LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600385{
386 const VkLayerDispatchTable *disp;
387
388 disp = loader_get_dispatch(device);
389
Chia-I Wu1f851912015-10-27 18:04:07 +0800390 return disp->AllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600391}
392
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800393LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeMemory(VkDevice device, VkDeviceMemory mem, const VkAllocationCallbacks* pAllocator)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600394{
395 const VkLayerDispatchTable *disp;
396
397 disp = loader_get_dispatch(device);
398
Chia-I Wu69f40122015-10-26 21:10:41 +0800399 disp->FreeMemory(device, mem, pAllocator);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600400}
401
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800402LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkFlags flags, void** ppData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600403{
404 const VkLayerDispatchTable *disp;
405
406 disp = loader_get_dispatch(device);
407
408 return disp->MapMemory(device, mem, offset, size, flags, ppData);
409}
410
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800411LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(VkDevice device, VkDeviceMemory mem)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600412{
413 const VkLayerDispatchTable *disp;
414
415 disp = loader_get_dispatch(device);
416
Mark Lobodzinski67b42b72015-09-07 13:59:43 -0600417 disp->UnmapMemory(device, mem);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600418}
419
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800420LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600421{
422 const VkLayerDispatchTable *disp;
423
424 disp = loader_get_dispatch(device);
425
Chia-I Wu1f851912015-10-27 18:04:07 +0800426 return disp->FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600427}
428
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800429LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600430{
431 const VkLayerDispatchTable *disp;
432
433 disp = loader_get_dispatch(device);
434
Chia-I Wu1f851912015-10-27 18:04:07 +0800435 return disp->InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600436}
437
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800438LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)
Courtney Goeltzenleuchterd040c5c2015-07-09 21:57:28 -0600439{
440 const VkLayerDispatchTable *disp;
441
442 disp = loader_get_dispatch(device);
443
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600444 disp->GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
Courtney Goeltzenleuchterd040c5c2015-07-09 21:57:28 -0600445}
446
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800447LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600448{
449 const VkLayerDispatchTable *disp;
450
Mark Lobodzinskifb9f5642015-05-11 17:21:15 -0500451 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600452
Tony Barbourde4124d2015-07-03 10:33:54 -0600453 return disp->BindBufferMemory(device, buffer, mem, offset);
454}
455
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800456LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize offset)
Tony Barbourde4124d2015-07-03 10:33:54 -0600457{
458 const VkLayerDispatchTable *disp;
459
460 disp = loader_get_dispatch(device);
461
462 return disp->BindImageMemory(device, image, mem, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600463}
464
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800465LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn4e189562015-07-23 18:49:07 -0600466{
467 const VkLayerDispatchTable *disp;
468
469 disp = loader_get_dispatch(device);
470
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600471 disp->GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
Jon Ashburn4e189562015-07-23 18:49:07 -0600472}
473
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800474LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements)
Jon Ashburn4e189562015-07-23 18:49:07 -0600475{
476 const VkLayerDispatchTable *disp;
477
478 disp = loader_get_dispatch(device);
479
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600480 disp->GetImageMemoryRequirements(device, image, pMemoryRequirements);
Jon Ashburn4e189562015-07-23 18:49:07 -0600481}
482
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800483LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600484{
485 const VkLayerDispatchTable *disp;
486
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600487 disp = loader_get_dispatch(device);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600488
Chia-I Wu763a7492015-10-26 20:48:51 +0800489 disp->GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600490}
491
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800492LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties)
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600493{
494 const VkLayerInstanceDispatchTable *disp;
495
496 disp = loader_get_instance_dispatch(physicalDevice);
497
Chia-I Wu763a7492015-10-26 20:48:51 +0800498 disp->GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600499}
500
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800501LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence)
Mark Lobodzinski83d4e6a2015-07-03 15:58:09 -0600502{
503 const VkLayerDispatchTable *disp;
504
505 disp = loader_get_dispatch(queue);
506
Chia-I Wu06809d52015-10-26 16:55:27 +0800507 return disp->QueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600508}
509
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800510LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600511{
512 const VkLayerDispatchTable *disp;
513
514 disp = loader_get_dispatch(device);
515
Chia-I Wu69f40122015-10-26 21:10:41 +0800516 return disp->CreateFence(device, pCreateInfo, pAllocator, pFence);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600517}
518
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800519LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600520{
521 const VkLayerDispatchTable *disp;
522
523 disp = loader_get_dispatch(device);
524
Chia-I Wu69f40122015-10-26 21:10:41 +0800525 disp->DestroyFence(device, fence, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600526}
527
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800528LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600529{
530 const VkLayerDispatchTable *disp;
531
532 disp = loader_get_dispatch(device);
533
534 return disp->ResetFences(device, fenceCount, pFences);
535}
536
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800537LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(VkDevice device, VkFence fence)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600538{
539 const VkLayerDispatchTable *disp;
540
541 disp = loader_get_dispatch(device);
542
543 return disp->GetFenceStatus(device, fence);
544}
545
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800546LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600547{
548 const VkLayerDispatchTable *disp;
549
550 disp = loader_get_dispatch(device);
551
552 return disp->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
553}
554
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800555LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600556{
557 const VkLayerDispatchTable *disp;
558
559 disp = loader_get_dispatch(device);
560
Chia-I Wu69f40122015-10-26 21:10:41 +0800561 return disp->CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600562}
563
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800564LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600565{
566 const VkLayerDispatchTable *disp;
567
568 disp = loader_get_dispatch(device);
569
Chia-I Wu69f40122015-10-26 21:10:41 +0800570 disp->DestroySemaphore(device, semaphore, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600571}
572
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800573LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600574{
575 const VkLayerDispatchTable *disp;
576
577 disp = loader_get_dispatch(device);
578
Chia-I Wu69f40122015-10-26 21:10:41 +0800579 return disp->CreateEvent(device, pCreateInfo, pAllocator, pEvent);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600580}
581
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800582LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600583{
584 const VkLayerDispatchTable *disp;
585
586 disp = loader_get_dispatch(device);
587
Chia-I Wu69f40122015-10-26 21:10:41 +0800588 disp->DestroyEvent(device, event, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600589}
590
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800591LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(VkDevice device, VkEvent event)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600592{
593 const VkLayerDispatchTable *disp;
594
595 disp = loader_get_dispatch(device);
596
597 return disp->GetEventStatus(device, event);
598}
599
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800600LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(VkDevice device, VkEvent event)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600601{
602 const VkLayerDispatchTable *disp;
603
604 disp = loader_get_dispatch(device);
605
606 return disp->SetEvent(device, event);
607}
608
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800609LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(VkDevice device, VkEvent event)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600610{
611 const VkLayerDispatchTable *disp;
612
613 disp = loader_get_dispatch(device);
614
615 return disp->ResetEvent(device, event);
616}
617
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800618LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600619{
620 const VkLayerDispatchTable *disp;
621
622 disp = loader_get_dispatch(device);
623
Chia-I Wu69f40122015-10-26 21:10:41 +0800624 return disp->CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600625}
626
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800627LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600628{
629 const VkLayerDispatchTable *disp;
630
631 disp = loader_get_dispatch(device);
632
Chia-I Wu69f40122015-10-26 21:10:41 +0800633 disp->DestroyQueryPool(device, queryPool, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600634}
635
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800636LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600637{
638 const VkLayerDispatchTable *disp;
639
640 disp = loader_get_dispatch(device);
641
Chia-I Wu1f6942d2015-10-26 18:36:20 +0800642 return disp->GetQueryPoolResults(device, queryPool, startQuery, queryCount, dataSize, pData, stride, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600643}
644
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800645LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600646{
647 const VkLayerDispatchTable *disp;
648
649 disp = loader_get_dispatch(device);
650
Chia-I Wu69f40122015-10-26 21:10:41 +0800651 return disp->CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600652}
653
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800654LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600655{
656 const VkLayerDispatchTable *disp;
657
658 disp = loader_get_dispatch(device);
659
Chia-I Wu69f40122015-10-26 21:10:41 +0800660 disp->DestroyBuffer(device, buffer, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600661}
662
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800663LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600664{
665 const VkLayerDispatchTable *disp;
666
667 disp = loader_get_dispatch(device);
668
Chia-I Wu69f40122015-10-26 21:10:41 +0800669 return disp->CreateBufferView(device, pCreateInfo, pAllocator, pView);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600670}
671
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800672LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600673{
674 const VkLayerDispatchTable *disp;
675
676 disp = loader_get_dispatch(device);
677
Chia-I Wu69f40122015-10-26 21:10:41 +0800678 disp->DestroyBufferView(device, bufferView, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600679}
680
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800681LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600682{
683 const VkLayerDispatchTable *disp;
684
685 disp = loader_get_dispatch(device);
686
Chia-I Wu69f40122015-10-26 21:10:41 +0800687 return disp->CreateImage(device, pCreateInfo, pAllocator, pImage);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600688}
689
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800690LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600691{
692 const VkLayerDispatchTable *disp;
693
694 disp = loader_get_dispatch(device);
695
Chia-I Wu69f40122015-10-26 21:10:41 +0800696 disp->DestroyImage(device, image, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600697}
698
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800699LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600700{
701 const VkLayerDispatchTable *disp;
702
703 disp = loader_get_dispatch(device);
704
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600705 disp->GetImageSubresourceLayout(device, image, pSubresource, pLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600706}
707
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800708LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600709{
710 const VkLayerDispatchTable *disp;
711
712 disp = loader_get_dispatch(device);
713
Chia-I Wu69f40122015-10-26 21:10:41 +0800714 return disp->CreateImageView(device, pCreateInfo, pAllocator, pView);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600715}
716
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800717LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600718{
719 const VkLayerDispatchTable *disp;
720
721 disp = loader_get_dispatch(device);
722
Chia-I Wu69f40122015-10-26 21:10:41 +0800723 disp->DestroyImageView(device, imageView, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600724}
725
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800726LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShader)
Courtney Goeltzenleuchter0b29b0d2015-06-24 18:24:19 -0600727{
728 const VkLayerDispatchTable *disp;
729
730 disp = loader_get_dispatch(device);
731
Chia-I Wu69f40122015-10-26 21:10:41 +0800732 return disp->CreateShaderModule(device, pCreateInfo, pAllocator, pShader);
Courtney Goeltzenleuchter0b29b0d2015-06-24 18:24:19 -0600733}
734
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800735LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600736{
737 const VkLayerDispatchTable *disp;
738
739 disp = loader_get_dispatch(device);
740
Chia-I Wu69f40122015-10-26 21:10:41 +0800741 disp->DestroyShaderModule(device, shaderModule, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600742}
743
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800744LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600745{
746 const VkLayerDispatchTable *disp;
747
748 disp = loader_get_dispatch(device);
749
Chia-I Wu69f40122015-10-26 21:10:41 +0800750 return disp->CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600751}
752
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800753LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600754{
755 const VkLayerDispatchTable *disp;
756
757 disp = loader_get_dispatch(device);
758
Chia-I Wu69f40122015-10-26 21:10:41 +0800759 disp->DestroyPipelineCache(device, pipelineCache, pAllocator);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600760}
761
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800762LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600763{
764 const VkLayerDispatchTable *disp;
765
766 disp = loader_get_dispatch(device);
767
Chia-I Wu28c3c432015-10-26 19:17:06 +0800768 return disp->GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600769}
770
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800771LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600772{
773 const VkLayerDispatchTable *disp;
774
775 disp = loader_get_dispatch(device);
776
Chia-I Wu1f851912015-10-27 18:04:07 +0800777 return disp->MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600778}
779
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800780LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600781{
782 const VkLayerDispatchTable *disp;
783
784 disp = loader_get_dispatch(device);
785
Chia-I Wu69f40122015-10-26 21:10:41 +0800786 return disp->CreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
Jon Ashburn0d60d272015-07-09 15:02:25 -0600787}
788
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800789LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
Jon Ashburn0d60d272015-07-09 15:02:25 -0600790{
791 const VkLayerDispatchTable *disp;
792
793 disp = loader_get_dispatch(device);
794
Chia-I Wu69f40122015-10-26 21:10:41 +0800795 return disp->CreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600796}
797
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800798LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600799{
800 const VkLayerDispatchTable *disp;
801
802 disp = loader_get_dispatch(device);
803
Chia-I Wu69f40122015-10-26 21:10:41 +0800804 disp->DestroyPipeline(device, pipeline, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600805}
806
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800807LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600808{
809 const VkLayerDispatchTable *disp;
810
811 disp = loader_get_dispatch(device);
812
Chia-I Wu69f40122015-10-26 21:10:41 +0800813 return disp->CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600814}
815
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800816LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600817{
818 const VkLayerDispatchTable *disp;
819
820 disp = loader_get_dispatch(device);
821
Chia-I Wu69f40122015-10-26 21:10:41 +0800822 disp->DestroyPipelineLayout(device, pipelineLayout, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600823}
824
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800825LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600826{
827 const VkLayerDispatchTable *disp;
828
829 disp = loader_get_dispatch(device);
830
Chia-I Wu69f40122015-10-26 21:10:41 +0800831 return disp->CreateSampler(device, pCreateInfo, pAllocator, pSampler);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600832}
833
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800834LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600835{
836 const VkLayerDispatchTable *disp;
837
838 disp = loader_get_dispatch(device);
839
Chia-I Wu69f40122015-10-26 21:10:41 +0800840 disp->DestroySampler(device, sampler, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600841}
842
843
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800844LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600845{
846 const VkLayerDispatchTable *disp;
847
848 disp = loader_get_dispatch(device);
849
Chia-I Wu69f40122015-10-26 21:10:41 +0800850 return disp->CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600851}
852
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800853LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600854{
855 const VkLayerDispatchTable *disp;
856
857 disp = loader_get_dispatch(device);
858
Chia-I Wu69f40122015-10-26 21:10:41 +0800859 disp->DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600860}
861
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800862LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600863{
864 const VkLayerDispatchTable *disp;
865
866 disp = loader_get_dispatch(device);
867
Chia-I Wu69f40122015-10-26 21:10:41 +0800868 return disp->CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600869}
870
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800871LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
Tony Barbourde4124d2015-07-03 10:33:54 -0600872{
873 const VkLayerDispatchTable *disp;
874
875 disp = loader_get_dispatch(device);
876
Chia-I Wu69f40122015-10-26 21:10:41 +0800877 disp->DestroyDescriptorPool(device, descriptorPool, pAllocator);
Tony Barbourde4124d2015-07-03 10:33:54 -0600878}
879
880
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800881LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600882{
883 const VkLayerDispatchTable *disp;
884
885 disp = loader_get_dispatch(device);
886
Courtney Goeltzenleuchter831c1832015-10-23 14:21:05 -0600887 return disp->ResetDescriptorPool(device, descriptorPool, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600888}
889
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800890LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600891{
892 const VkLayerDispatchTable *disp;
893
894 disp = loader_get_dispatch(device);
895
Chia-I Wu1f851912015-10-27 18:04:07 +0800896 return disp->AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600897}
898
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800899LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets)
Tony Barbourb857d312015-07-10 10:50:45 -0600900{
901 const VkLayerDispatchTable *disp;
902
903 disp = loader_get_dispatch(device);
904
Chia-I Wu763a7492015-10-26 20:48:51 +0800905 return disp->FreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
Tony Barbourb857d312015-07-10 10:50:45 -0600906}
907
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800908LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600909{
910 const VkLayerDispatchTable *disp;
911
912 disp = loader_get_dispatch(device);
913
Chia-I Wu483e7702015-10-26 17:20:32 +0800914 disp->UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600915}
916
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800917LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)
Jon Ashburn4e189562015-07-23 18:49:07 -0600918{
919 const VkLayerDispatchTable *disp;
920
921 disp = loader_get_dispatch(device);
922
Chia-I Wu69f40122015-10-26 21:10:41 +0800923 return disp->CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
Jon Ashburn4e189562015-07-23 18:49:07 -0600924}
925
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800926LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)
Jon Ashburn4e189562015-07-23 18:49:07 -0600927{
928 const VkLayerDispatchTable *disp;
929
930 disp = loader_get_dispatch(device);
931
Chia-I Wu69f40122015-10-26 21:10:41 +0800932 disp->DestroyFramebuffer(device, framebuffer, pAllocator);
Jon Ashburn4e189562015-07-23 18:49:07 -0600933}
934
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800935LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
Jon Ashburn4e189562015-07-23 18:49:07 -0600936{
937 const VkLayerDispatchTable *disp;
938
939 disp = loader_get_dispatch(device);
940
Chia-I Wu69f40122015-10-26 21:10:41 +0800941 return disp->CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
Jon Ashburn4e189562015-07-23 18:49:07 -0600942}
943
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800944LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)
Jon Ashburn4e189562015-07-23 18:49:07 -0600945{
946 const VkLayerDispatchTable *disp;
947
948 disp = loader_get_dispatch(device);
949
Chia-I Wu69f40122015-10-26 21:10:41 +0800950 disp->DestroyRenderPass(device, renderPass, pAllocator);
Jon Ashburn4e189562015-07-23 18:49:07 -0600951}
952
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800953LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)
Jon Ashburn4e189562015-07-23 18:49:07 -0600954{
955 const VkLayerDispatchTable *disp;
956
957 disp = loader_get_dispatch(device);
958
Courtney Goeltzenleuchter01d2ae12015-10-20 16:40:38 -0600959 disp->GetRenderAreaGranularity(device, renderPass, pGranularity);
Jon Ashburn4e189562015-07-23 18:49:07 -0600960}
961
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800962LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool)
Cody Northropf02f9f82015-07-09 18:08:05 -0600963{
964 const VkLayerDispatchTable *disp;
965
966 disp = loader_get_dispatch(device);
967
Chia-I Wu1f851912015-10-27 18:04:07 +0800968 return disp->CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
Cody Northropf02f9f82015-07-09 18:08:05 -0600969}
970
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800971LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator)
Cody Northropf02f9f82015-07-09 18:08:05 -0600972{
973 const VkLayerDispatchTable *disp;
974
975 disp = loader_get_dispatch(device);
976
Chia-I Wu1f851912015-10-27 18:04:07 +0800977 disp->DestroyCommandPool(device, commandPool, pAllocator);
Cody Northropf02f9f82015-07-09 18:08:05 -0600978}
979
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800980LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags)
Cody Northropf02f9f82015-07-09 18:08:05 -0600981{
982 const VkLayerDispatchTable *disp;
983
984 disp = loader_get_dispatch(device);
985
Chia-I Wu1f851912015-10-27 18:04:07 +0800986 return disp->ResetCommandPool(device, commandPool, flags);
Cody Northropf02f9f82015-07-09 18:08:05 -0600987}
988
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +0800989LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
Courtney Goeltzenleuchter831c1832015-10-23 14:21:05 -0600990 VkDevice device,
Chia-I Wu1f851912015-10-27 18:04:07 +0800991 const VkCommandBufferAllocateInfo* pAllocateInfo,
992 VkCommandBuffer* pCommandBuffers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -0600993{
994 const VkLayerDispatchTable *disp;
995 VkResult res;
996
997 disp = loader_get_dispatch(device);
998
Chia-I Wu1f851912015-10-27 18:04:07 +0800999 res = disp->AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001000 if (res == VK_SUCCESS) {
Chia-I Wu1f851912015-10-27 18:04:07 +08001001 for (uint32_t i =0; i < pAllocateInfo->bufferCount; i++) {
1002 if (pCommandBuffers[i]) {
1003 loader_init_dispatch(pCommandBuffers[i], disp);
Courtney Goeltzenleuchter831c1832015-10-23 14:21:05 -06001004 }
1005 }
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001006 }
1007
1008 return res;
1009}
1010
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001011LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
Courtney Goeltzenleuchter831c1832015-10-23 14:21:05 -06001012 VkDevice device,
Chia-I Wu1f851912015-10-27 18:04:07 +08001013 VkCommandPool commandPool,
Chia-I Wu763a7492015-10-26 20:48:51 +08001014 uint32_t commandBufferCount,
Chia-I Wu1f851912015-10-27 18:04:07 +08001015 const VkCommandBuffer* pCommandBuffers)
Tony Barbourde4124d2015-07-03 10:33:54 -06001016{
1017 const VkLayerDispatchTable *disp;
1018
1019 disp = loader_get_dispatch(device);
1020
Chia-I Wu1f851912015-10-27 18:04:07 +08001021 disp->FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
Tony Barbourde4124d2015-07-03 10:33:54 -06001022}
1023
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001024LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001025{
1026 const VkLayerDispatchTable *disp;
1027
Chia-I Wu1f851912015-10-27 18:04:07 +08001028 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001029
Chia-I Wu1f851912015-10-27 18:04:07 +08001030 return disp->BeginCommandBuffer(commandBuffer, pBeginInfo);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001031}
1032
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001033LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(VkCommandBuffer commandBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001034{
1035 const VkLayerDispatchTable *disp;
1036
Chia-I Wu1f851912015-10-27 18:04:07 +08001037 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001038
Chia-I Wu1f851912015-10-27 18:04:07 +08001039 return disp->EndCommandBuffer(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001040}
1041
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001042LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001043{
1044 const VkLayerDispatchTable *disp;
1045
Chia-I Wu1f851912015-10-27 18:04:07 +08001046 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001047
Chia-I Wu1f851912015-10-27 18:04:07 +08001048 return disp->ResetCommandBuffer(commandBuffer, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001049}
1050
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001051LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001052{
1053 const VkLayerDispatchTable *disp;
1054
Chia-I Wu1f851912015-10-27 18:04:07 +08001055 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001056
Chia-I Wu1f851912015-10-27 18:04:07 +08001057 disp->CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001058}
1059
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001060LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001061{
1062 const VkLayerDispatchTable *disp;
1063
Chia-I Wu1f851912015-10-27 18:04:07 +08001064 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001065
Chia-I Wu1f851912015-10-27 18:04:07 +08001066 disp->CmdSetViewport(commandBuffer, viewportCount, pViewports);
Courtney Goeltzenleuchter932cdb52015-09-21 11:44:06 -06001067}
1068
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001069LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors)
Courtney Goeltzenleuchter932cdb52015-09-21 11:44:06 -06001070{
1071 const VkLayerDispatchTable *disp;
1072
Chia-I Wu1f851912015-10-27 18:04:07 +08001073 disp = loader_get_dispatch(commandBuffer);
Courtney Goeltzenleuchter932cdb52015-09-21 11:44:06 -06001074
Chia-I Wu1f851912015-10-27 18:04:07 +08001075 disp->CmdSetScissor(commandBuffer, scissorCount, pScissors);
Tony Barbourde4124d2015-07-03 10:33:54 -06001076}
1077
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001078LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth)
Tony Barbourde4124d2015-07-03 10:33:54 -06001079{
1080 const VkLayerDispatchTable *disp;
1081
Chia-I Wu1f851912015-10-27 18:04:07 +08001082 disp = loader_get_dispatch(commandBuffer);
Tony Barbourde4124d2015-07-03 10:33:54 -06001083
Chia-I Wu1f851912015-10-27 18:04:07 +08001084 disp->CmdSetLineWidth(commandBuffer, lineWidth);
Cody Northropf5bd2252015-08-17 11:10:49 -06001085}
1086
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001087LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
Cody Northropf5bd2252015-08-17 11:10:49 -06001088{
1089 const VkLayerDispatchTable *disp;
1090
Chia-I Wu1f851912015-10-27 18:04:07 +08001091 disp = loader_get_dispatch(commandBuffer);
Cody Northropf5bd2252015-08-17 11:10:49 -06001092
Chia-I Wu1f851912015-10-27 18:04:07 +08001093 disp->CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
Tony Barbourde4124d2015-07-03 10:33:54 -06001094}
1095
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001096LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4])
Tony Barbourde4124d2015-07-03 10:33:54 -06001097{
1098 const VkLayerDispatchTable *disp;
1099
Chia-I Wu1f851912015-10-27 18:04:07 +08001100 disp = loader_get_dispatch(commandBuffer);
Tony Barbourde4124d2015-07-03 10:33:54 -06001101
Chia-I Wu1f851912015-10-27 18:04:07 +08001102 disp->CmdSetBlendConstants(commandBuffer, blendConstants);
Tony Barbourde4124d2015-07-03 10:33:54 -06001103}
1104
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001105LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds)
Tony Barbourde4124d2015-07-03 10:33:54 -06001106{
1107 const VkLayerDispatchTable *disp;
1108
Chia-I Wu1f851912015-10-27 18:04:07 +08001109 disp = loader_get_dispatch(commandBuffer);
Tony Barbourde4124d2015-07-03 10:33:54 -06001110
Chia-I Wu1f851912015-10-27 18:04:07 +08001111 disp->CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
Cody Northrop2605cb02015-08-18 15:21:16 -06001112}
1113
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001114LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask)
Cody Northrop2605cb02015-08-18 15:21:16 -06001115{
1116 const VkLayerDispatchTable *disp;
1117
Chia-I Wu1f851912015-10-27 18:04:07 +08001118 disp = loader_get_dispatch(commandBuffer);
Cody Northrop2605cb02015-08-18 15:21:16 -06001119
Chia-I Wuc51b1212015-10-27 19:25:11 +08001120 disp->CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001121}
1122
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001123LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask)
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001124{
1125 const VkLayerDispatchTable *disp;
1126
Chia-I Wu1f851912015-10-27 18:04:07 +08001127 disp = loader_get_dispatch(commandBuffer);
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001128
Chia-I Wuc51b1212015-10-27 19:25:11 +08001129 disp->CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001130}
1131
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001132LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference)
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001133{
1134 const VkLayerDispatchTable *disp;
1135
Chia-I Wu1f851912015-10-27 18:04:07 +08001136 disp = loader_get_dispatch(commandBuffer);
Courtney Goeltzenleuchter09772bb2015-09-17 15:06:17 -06001137
Chia-I Wuc51b1212015-10-27 19:25:11 +08001138 disp->CmdSetStencilReference(commandBuffer, faceMask, reference);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001139}
1140
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001141LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001142{
1143 const VkLayerDispatchTable *disp;
1144
Chia-I Wu1f851912015-10-27 18:04:07 +08001145 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001146
Chia-I Wu1f851912015-10-27 18:04:07 +08001147 disp->CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001148}
1149
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001150LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001151{
1152 const VkLayerDispatchTable *disp;
1153
Chia-I Wu1f851912015-10-27 18:04:07 +08001154 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001155
Chia-I Wu1f851912015-10-27 18:04:07 +08001156 disp->CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001157}
1158
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001159LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
Jon Ashburn4e189562015-07-23 18:49:07 -06001160{
1161 const VkLayerDispatchTable *disp;
1162
Chia-I Wu1f851912015-10-27 18:04:07 +08001163 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn4e189562015-07-23 18:49:07 -06001164
Chia-I Wu1f851912015-10-27 18:04:07 +08001165 disp->CmdBindVertexBuffers(commandBuffer, startBinding, bindingCount, pBuffers, pOffsets);
Jon Ashburn4e189562015-07-23 18:49:07 -06001166}
1167
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001168LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001169{
1170 const VkLayerDispatchTable *disp;
1171
Chia-I Wu1f851912015-10-27 18:04:07 +08001172 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001173
Chia-I Wu1f851912015-10-27 18:04:07 +08001174 disp->CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001175}
1176
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001177LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001178{
1179 const VkLayerDispatchTable *disp;
1180
Chia-I Wu1f851912015-10-27 18:04:07 +08001181 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001182
Chia-I Wu1f851912015-10-27 18:04:07 +08001183 disp->CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001184}
1185
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001186LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001187{
1188 const VkLayerDispatchTable *disp;
1189
Chia-I Wu1f851912015-10-27 18:04:07 +08001190 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001191
Chia-I Wu1f851912015-10-27 18:04:07 +08001192 disp->CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001193}
1194
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001195LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001196{
1197 const VkLayerDispatchTable *disp;
1198
Chia-I Wu1f851912015-10-27 18:04:07 +08001199 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001200
Chia-I Wu1f851912015-10-27 18:04:07 +08001201 disp->CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001202}
1203
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001204LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001205{
1206 const VkLayerDispatchTable *disp;
1207
Chia-I Wu1f851912015-10-27 18:04:07 +08001208 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001209
Chia-I Wu1f851912015-10-27 18:04:07 +08001210 disp->CmdDispatch(commandBuffer, x, y, z);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001211}
1212
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001213LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001214{
1215 const VkLayerDispatchTable *disp;
1216
Chia-I Wu1f851912015-10-27 18:04:07 +08001217 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001218
Chia-I Wu1f851912015-10-27 18:04:07 +08001219 disp->CmdDispatchIndirect(commandBuffer, buffer, offset);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001220}
1221
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001222LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001223{
1224 const VkLayerDispatchTable *disp;
1225
Chia-I Wu1f851912015-10-27 18:04:07 +08001226 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001227
Chia-I Wu1f851912015-10-27 18:04:07 +08001228 disp->CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001229}
1230
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001231LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001232{
1233 const VkLayerDispatchTable *disp;
1234
Chia-I Wu1f851912015-10-27 18:04:07 +08001235 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001236
Chia-I Wu1f851912015-10-27 18:04:07 +08001237 disp->CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001238}
1239
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001240LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001241{
1242 const VkLayerDispatchTable *disp;
1243
Chia-I Wu1f851912015-10-27 18:04:07 +08001244 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001245
Chia-I Wu1f851912015-10-27 18:04:07 +08001246 disp->CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001247}
1248
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001249LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001250{
1251 const VkLayerDispatchTable *disp;
1252
Chia-I Wu1f851912015-10-27 18:04:07 +08001253 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001254
Chia-I Wu1f851912015-10-27 18:04:07 +08001255 disp->CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001256}
1257
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001258LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001259{
1260 const VkLayerDispatchTable *disp;
1261
Chia-I Wu1f851912015-10-27 18:04:07 +08001262 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001263
Chia-I Wu1f851912015-10-27 18:04:07 +08001264 disp->CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001265}
1266
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001267LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001268{
1269 const VkLayerDispatchTable *disp;
1270
Chia-I Wu1f851912015-10-27 18:04:07 +08001271 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001272
Chia-I Wu1f851912015-10-27 18:04:07 +08001273 disp->CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001274}
1275
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001276LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001277{
1278 const VkLayerDispatchTable *disp;
1279
Chia-I Wu1f851912015-10-27 18:04:07 +08001280 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001281
Chia-I Wu1f851912015-10-27 18:04:07 +08001282 disp->CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001283}
1284
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001285LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001286{
1287 const VkLayerDispatchTable *disp;
1288
Chia-I Wu1f851912015-10-27 18:04:07 +08001289 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001290
Chia-I Wu1f851912015-10-27 18:04:07 +08001291 disp->CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001292}
1293
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001294LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001295{
1296 const VkLayerDispatchTable *disp;
1297
Chia-I Wu1f851912015-10-27 18:04:07 +08001298 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001299
Chia-I Wu1f851912015-10-27 18:04:07 +08001300 disp->CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
Chris Forbes2951d7d2015-06-22 17:21:59 +12001301}
1302
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001303LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects)
Chris Forbes2951d7d2015-06-22 17:21:59 +12001304{
1305 const VkLayerDispatchTable *disp;
1306
Chia-I Wu1f851912015-10-27 18:04:07 +08001307 disp = loader_get_dispatch(commandBuffer);
Chris Forbes2951d7d2015-06-22 17:21:59 +12001308
Chia-I Wu1f851912015-10-27 18:04:07 +08001309 disp->CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001310}
1311
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001312LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001313{
1314 const VkLayerDispatchTable *disp;
1315
Chia-I Wu1f851912015-10-27 18:04:07 +08001316 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001317
Chia-I Wu1f851912015-10-27 18:04:07 +08001318 disp->CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001319}
1320
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001321LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001322{
1323 const VkLayerDispatchTable *disp;
1324
Chia-I Wu1f851912015-10-27 18:04:07 +08001325 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001326
Chia-I Wu1f851912015-10-27 18:04:07 +08001327 disp->CmdSetEvent(commandBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001328}
1329
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001330LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001331{
1332 const VkLayerDispatchTable *disp;
1333
Chia-I Wu1f851912015-10-27 18:04:07 +08001334 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001335
Chia-I Wu1f851912015-10-27 18:04:07 +08001336 disp->CmdResetEvent(commandBuffer, event, stageMask);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001337}
1338
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001339LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001340{
1341 const VkLayerDispatchTable *disp;
1342
Chia-I Wu1f851912015-10-27 18:04:07 +08001343 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001344
Chia-I Wu1f851912015-10-27 18:04:07 +08001345 disp->CmdWaitEvents(commandBuffer, eventCount, pEvents, sourceStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001346}
1347
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001348LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001349{
1350 const VkLayerDispatchTable *disp;
1351
Chia-I Wu1f851912015-10-27 18:04:07 +08001352 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001353
Chia-I Wu1f851912015-10-27 18:04:07 +08001354 disp->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001355}
1356
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001357LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001358{
1359 const VkLayerDispatchTable *disp;
1360
Chia-I Wu1f851912015-10-27 18:04:07 +08001361 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001362
Chia-I Wu1f851912015-10-27 18:04:07 +08001363 disp->CmdBeginQuery(commandBuffer, queryPool, slot, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001364}
1365
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001366LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001367{
1368 const VkLayerDispatchTable *disp;
1369
Chia-I Wu1f851912015-10-27 18:04:07 +08001370 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001371
Chia-I Wu1f851912015-10-27 18:04:07 +08001372 disp->CmdEndQuery(commandBuffer, queryPool, slot);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001373}
1374
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001375LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001376{
1377 const VkLayerDispatchTable *disp;
1378
Chia-I Wu1f851912015-10-27 18:04:07 +08001379 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001380
Chia-I Wu1f851912015-10-27 18:04:07 +08001381 disp->CmdResetQueryPool(commandBuffer, queryPool, startQuery, queryCount);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001382}
1383
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001384LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001385{
1386 const VkLayerDispatchTable *disp;
1387
Chia-I Wu1f851912015-10-27 18:04:07 +08001388 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001389
Chia-I Wu1f851912015-10-27 18:04:07 +08001390 disp->CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, slot);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001391}
1392
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001393LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkFlags flags)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001394{
1395 const VkLayerDispatchTable *disp;
1396
Chia-I Wu1f851912015-10-27 18:04:07 +08001397 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001398
Chia-I Wu1f851912015-10-27 18:04:07 +08001399 disp->CmdCopyQueryPoolResults(commandBuffer, queryPool, startQuery, queryCount, dstBuffer, dstOffset, stride, flags);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001400}
1401
Chia-I Wu0ee0ca02015-11-12 06:09:22 +08001402LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001403{
1404 const VkLayerDispatchTable *disp;
1405
Chia-I Wu1f851912015-10-27 18:04:07 +08001406 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001407
Chia-I Wu0ee0ca02015-11-12 06:09:22 +08001408 disp->CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
Tony Barbourde4124d2015-07-03 10:33:54 -06001409}
1410
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001411LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001412{
1413 const VkLayerDispatchTable *disp;
1414
Chia-I Wu1f851912015-10-27 18:04:07 +08001415 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001416
Chia-I Wu1f851912015-10-27 18:04:07 +08001417 disp->CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
Chia-I Wuc278df82015-07-07 11:50:03 +08001418}
1419
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001420LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents)
Chia-I Wuc278df82015-07-07 11:50:03 +08001421{
1422 const VkLayerDispatchTable *disp;
1423
Chia-I Wu1f851912015-10-27 18:04:07 +08001424 disp = loader_get_dispatch(commandBuffer);
Chia-I Wuc278df82015-07-07 11:50:03 +08001425
Chia-I Wu1f851912015-10-27 18:04:07 +08001426 disp->CmdNextSubpass(commandBuffer, contents);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001427}
1428
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001429LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(VkCommandBuffer commandBuffer)
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001430{
1431 const VkLayerDispatchTable *disp;
1432
Chia-I Wu1f851912015-10-27 18:04:07 +08001433 disp = loader_get_dispatch(commandBuffer);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001434
Chia-I Wu1f851912015-10-27 18:04:07 +08001435 disp->CmdEndRenderPass(commandBuffer);
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001436}
1437
Chia-I Wuaf9e4fd2015-11-06 06:42:02 +08001438LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers)
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001439{
1440 const VkLayerDispatchTable *disp;
1441
Chia-I Wu1f851912015-10-27 18:04:07 +08001442 disp = loader_get_dispatch(commandBuffer);
Chia-I Wu88eaa3b2015-06-26 15:34:39 +08001443
Chia-I Wu1f851912015-10-27 18:04:07 +08001444 disp->CmdExecuteCommands(commandBuffer, commandBuffersCount, pCommandBuffers);
Jon Ashburn2139a3e2015-05-06 09:02:10 -06001445}