1 #ifndef __thread_check_h_ 2 #define __thread_check_h_ 1 3 4 namespace threading { 5 6 /* 7 ** Copyright (c) 2015-2016 The Khronos Group Inc. 8 ** 9 ** Licensed under the Apache License, Version 2.0 (the "License"); 10 ** you may not use this file except in compliance with the License. 11 ** You may obtain a copy of the License at 12 ** 13 ** http://www.apache.org/licenses/LICENSE-2.0 14 ** 15 ** Unless required by applicable law or agreed to in writing, software 16 ** distributed under the License is distributed on an "AS IS" BASIS, 17 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 ** See the License for the specific language governing permissions and 19 ** limitations under the License. 20 */ 21 22 /* 23 ** This header is generated from the Khronos Vulkan XML API Registry. 24 ** 25 */ 26 27 28 29 // declare only 30 VKAPI_ATTR VkResult VKAPI_CALL CreateInstance( 31 const VkInstanceCreateInfo* pCreateInfo, 32 const VkAllocationCallbacks* pAllocator, 33 VkInstance* pInstance); 34 35 // declare only 36 VKAPI_ATTR void VKAPI_CALL DestroyInstance( 37 VkInstance instance, 38 const VkAllocationCallbacks* pAllocator); 39 40 VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDevices( 41 VkInstance instance, 42 uint32_t* pPhysicalDeviceCount, 43 VkPhysicalDevice* pPhysicalDevices) 44 { 45 dispatch_key key = get_dispatch_key(instance); 46 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 47 VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table; 48 VkResult result; 49 startReadObject(my_data, instance); 50 51 result = pTable->EnumeratePhysicalDevices(instance,pPhysicalDeviceCount,pPhysicalDevices); 52 finishReadObject(my_data, instance); 53 54 return result; 55 } 56 57 // declare only 58 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr( 59 VkInstance instance, 60 const char* pName); 61 62 // declare only 63 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr( 64 VkDevice device, 65 const char* pName); 66 67 // declare only 68 VKAPI_ATTR VkResult VKAPI_CALL CreateDevice( 69 VkPhysicalDevice physicalDevice, 70 const VkDeviceCreateInfo* pCreateInfo, 71 const VkAllocationCallbacks* pAllocator, 72 VkDevice* pDevice); 73 74 // declare only 75 VKAPI_ATTR void VKAPI_CALL DestroyDevice( 76 VkDevice device, 77 const VkAllocationCallbacks* pAllocator); 78 79 VKAPI_ATTR void VKAPI_CALL GetDeviceQueue( 80 VkDevice device, 81 uint32_t queueFamilyIndex, 82 uint32_t queueIndex, 83 VkQueue* pQueue) 84 { 85 dispatch_key key = get_dispatch_key(device); 86 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 87 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 88 startReadObject(my_data, device); 89 90 pTable->GetDeviceQueue(device,queueFamilyIndex,queueIndex,pQueue); 91 finishReadObject(my_data, device); 92 93 } 94 95 VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit( 96 VkQueue queue, 97 uint32_t submitCount, 98 const VkSubmitInfo* pSubmits, 99 VkFence fence) 100 { 101 dispatch_key key = get_dispatch_key(queue); 102 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 103 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 104 VkResult result; 105 startWriteObject(my_data, queue); 106 for (uint32_t index=0;index<submitCount;index++) { 107 for(uint32_t index2=0;index2<pSubmits[index].waitSemaphoreCount;index2++) startWriteObject(my_data, pSubmits[index].pWaitSemaphores[index2]); 108 for(uint32_t index2=0;index2<pSubmits[index].signalSemaphoreCount;index2++) startWriteObject(my_data, pSubmits[index].pSignalSemaphores[index2]); 109 } 110 startWriteObject(my_data, fence); 111 // Host access to queue must be externally synchronized 112 // Host access to pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[] must be externally synchronized 113 // Host access to fence must be externally synchronized 114 115 result = pTable->QueueSubmit(queue,submitCount,pSubmits,fence); 116 finishWriteObject(my_data, queue); 117 for (uint32_t index=0;index<submitCount;index++) { 118 for(uint32_t index2=0;index2<pSubmits[index].waitSemaphoreCount;index2++) finishWriteObject(my_data, pSubmits[index].pWaitSemaphores[index2]); 119 for(uint32_t index2=0;index2<pSubmits[index].signalSemaphoreCount;index2++) finishWriteObject(my_data, pSubmits[index].pSignalSemaphores[index2]); 120 } 121 finishWriteObject(my_data, fence); 122 // Host access to queue must be externally synchronized 123 // Host access to pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[] must be externally synchronized 124 // Host access to fence must be externally synchronized 125 126 return result; 127 } 128 129 VKAPI_ATTR VkResult VKAPI_CALL QueueWaitIdle( 130 VkQueue queue) 131 { 132 dispatch_key key = get_dispatch_key(queue); 133 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 134 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 135 VkResult result; 136 startReadObject(my_data, queue); 137 138 result = pTable->QueueWaitIdle(queue); 139 finishReadObject(my_data, queue); 140 141 return result; 142 } 143 144 VKAPI_ATTR VkResult VKAPI_CALL DeviceWaitIdle( 145 VkDevice device) 146 { 147 dispatch_key key = get_dispatch_key(device); 148 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 149 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 150 VkResult result; 151 startReadObject(my_data, device); 152 // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses 153 154 result = pTable->DeviceWaitIdle(device); 155 finishReadObject(my_data, device); 156 // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses 157 158 return result; 159 } 160 161 VKAPI_ATTR VkResult VKAPI_CALL AllocateMemory( 162 VkDevice device, 163 const VkMemoryAllocateInfo* pAllocateInfo, 164 const VkAllocationCallbacks* pAllocator, 165 VkDeviceMemory* pMemory) 166 { 167 dispatch_key key = get_dispatch_key(device); 168 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 169 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 170 VkResult result; 171 startReadObject(my_data, device); 172 173 result = pTable->AllocateMemory(device,pAllocateInfo,pAllocator,pMemory); 174 finishReadObject(my_data, device); 175 176 return result; 177 } 178 179 VKAPI_ATTR void VKAPI_CALL FreeMemory( 180 VkDevice device, 181 VkDeviceMemory memory, 182 const VkAllocationCallbacks* pAllocator) 183 { 184 dispatch_key key = get_dispatch_key(device); 185 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 186 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 187 startReadObject(my_data, device); 188 startWriteObject(my_data, memory); 189 // Host access to memory must be externally synchronized 190 191 pTable->FreeMemory(device,memory,pAllocator); 192 finishReadObject(my_data, device); 193 finishWriteObject(my_data, memory); 194 // Host access to memory must be externally synchronized 195 196 } 197 198 VKAPI_ATTR VkResult VKAPI_CALL MapMemory( 199 VkDevice device, 200 VkDeviceMemory memory, 201 VkDeviceSize offset, 202 VkDeviceSize size, 203 VkMemoryMapFlags flags, 204 void** ppData) 205 { 206 dispatch_key key = get_dispatch_key(device); 207 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 208 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 209 VkResult result; 210 startReadObject(my_data, device); 211 startWriteObject(my_data, memory); 212 // Host access to memory must be externally synchronized 213 214 result = pTable->MapMemory(device,memory,offset,size,flags,ppData); 215 finishReadObject(my_data, device); 216 finishWriteObject(my_data, memory); 217 // Host access to memory must be externally synchronized 218 219 return result; 220 } 221 222 VKAPI_ATTR void VKAPI_CALL UnmapMemory( 223 VkDevice device, 224 VkDeviceMemory memory) 225 { 226 dispatch_key key = get_dispatch_key(device); 227 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 228 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 229 startReadObject(my_data, device); 230 startWriteObject(my_data, memory); 231 // Host access to memory must be externally synchronized 232 233 pTable->UnmapMemory(device,memory); 234 finishReadObject(my_data, device); 235 finishWriteObject(my_data, memory); 236 // Host access to memory must be externally synchronized 237 238 } 239 240 VKAPI_ATTR VkResult VKAPI_CALL FlushMappedMemoryRanges( 241 VkDevice device, 242 uint32_t memoryRangeCount, 243 const VkMappedMemoryRange* pMemoryRanges) 244 { 245 dispatch_key key = get_dispatch_key(device); 246 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 247 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 248 VkResult result; 249 startReadObject(my_data, device); 250 251 result = pTable->FlushMappedMemoryRanges(device,memoryRangeCount,pMemoryRanges); 252 finishReadObject(my_data, device); 253 254 return result; 255 } 256 257 VKAPI_ATTR VkResult VKAPI_CALL InvalidateMappedMemoryRanges( 258 VkDevice device, 259 uint32_t memoryRangeCount, 260 const VkMappedMemoryRange* pMemoryRanges) 261 { 262 dispatch_key key = get_dispatch_key(device); 263 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 264 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 265 VkResult result; 266 startReadObject(my_data, device); 267 268 result = pTable->InvalidateMappedMemoryRanges(device,memoryRangeCount,pMemoryRanges); 269 finishReadObject(my_data, device); 270 271 return result; 272 } 273 274 VKAPI_ATTR void VKAPI_CALL GetDeviceMemoryCommitment( 275 VkDevice device, 276 VkDeviceMemory memory, 277 VkDeviceSize* pCommittedMemoryInBytes) 278 { 279 dispatch_key key = get_dispatch_key(device); 280 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 281 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 282 startReadObject(my_data, device); 283 startReadObject(my_data, memory); 284 285 pTable->GetDeviceMemoryCommitment(device,memory,pCommittedMemoryInBytes); 286 finishReadObject(my_data, device); 287 finishReadObject(my_data, memory); 288 289 } 290 291 VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory( 292 VkDevice device, 293 VkBuffer buffer, 294 VkDeviceMemory memory, 295 VkDeviceSize memoryOffset) 296 { 297 dispatch_key key = get_dispatch_key(device); 298 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 299 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 300 VkResult result; 301 startReadObject(my_data, device); 302 startWriteObject(my_data, buffer); 303 startReadObject(my_data, memory); 304 // Host access to buffer must be externally synchronized 305 306 result = pTable->BindBufferMemory(device,buffer,memory,memoryOffset); 307 finishReadObject(my_data, device); 308 finishWriteObject(my_data, buffer); 309 finishReadObject(my_data, memory); 310 // Host access to buffer must be externally synchronized 311 312 return result; 313 } 314 315 VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory( 316 VkDevice device, 317 VkImage image, 318 VkDeviceMemory memory, 319 VkDeviceSize memoryOffset) 320 { 321 dispatch_key key = get_dispatch_key(device); 322 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 323 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 324 VkResult result; 325 startReadObject(my_data, device); 326 startWriteObject(my_data, image); 327 startReadObject(my_data, memory); 328 // Host access to image must be externally synchronized 329 330 result = pTable->BindImageMemory(device,image,memory,memoryOffset); 331 finishReadObject(my_data, device); 332 finishWriteObject(my_data, image); 333 finishReadObject(my_data, memory); 334 // Host access to image must be externally synchronized 335 336 return result; 337 } 338 339 VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements( 340 VkDevice device, 341 VkBuffer buffer, 342 VkMemoryRequirements* pMemoryRequirements) 343 { 344 dispatch_key key = get_dispatch_key(device); 345 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 346 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 347 startReadObject(my_data, device); 348 startReadObject(my_data, buffer); 349 350 pTable->GetBufferMemoryRequirements(device,buffer,pMemoryRequirements); 351 finishReadObject(my_data, device); 352 finishReadObject(my_data, buffer); 353 354 } 355 356 VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements( 357 VkDevice device, 358 VkImage image, 359 VkMemoryRequirements* pMemoryRequirements) 360 { 361 dispatch_key key = get_dispatch_key(device); 362 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 363 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 364 startReadObject(my_data, device); 365 startReadObject(my_data, image); 366 367 pTable->GetImageMemoryRequirements(device,image,pMemoryRequirements); 368 finishReadObject(my_data, device); 369 finishReadObject(my_data, image); 370 371 } 372 373 VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements( 374 VkDevice device, 375 VkImage image, 376 uint32_t* pSparseMemoryRequirementCount, 377 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) 378 { 379 dispatch_key key = get_dispatch_key(device); 380 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 381 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 382 startReadObject(my_data, device); 383 startReadObject(my_data, image); 384 385 pTable->GetImageSparseMemoryRequirements(device,image,pSparseMemoryRequirementCount,pSparseMemoryRequirements); 386 finishReadObject(my_data, device); 387 finishReadObject(my_data, image); 388 389 } 390 391 VKAPI_ATTR VkResult VKAPI_CALL QueueBindSparse( 392 VkQueue queue, 393 uint32_t bindInfoCount, 394 const VkBindSparseInfo* pBindInfo, 395 VkFence fence) 396 { 397 dispatch_key key = get_dispatch_key(queue); 398 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 399 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 400 VkResult result; 401 startWriteObject(my_data, queue); 402 for (uint32_t index=0;index<bindInfoCount;index++) { 403 for(uint32_t index2=0;index2<pBindInfo[index].waitSemaphoreCount;index2++) startWriteObject(my_data, pBindInfo[index].pWaitSemaphores[index2]); 404 for(uint32_t index2=0;index2<pBindInfo[index].signalSemaphoreCount;index2++) startWriteObject(my_data, pBindInfo[index].pSignalSemaphores[index2]); 405 for(uint32_t index2=0;index2<pBindInfo[index].bufferBindCount;index2++) startWriteObject(my_data, pBindInfo[index].pBufferBinds[index2].buffer); 406 for(uint32_t index2=0;index2<pBindInfo[index].imageOpaqueBindCount;index2++) startWriteObject(my_data, pBindInfo[index].pImageOpaqueBinds[index2].image); 407 for(uint32_t index2=0;index2<pBindInfo[index].imageBindCount;index2++) startWriteObject(my_data, pBindInfo[index].pImageBinds[index2].image); 408 } 409 startWriteObject(my_data, fence); 410 // Host access to queue must be externally synchronized 411 // Host access to pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized 412 // Host access to fence must be externally synchronized 413 414 result = pTable->QueueBindSparse(queue,bindInfoCount,pBindInfo,fence); 415 finishWriteObject(my_data, queue); 416 for (uint32_t index=0;index<bindInfoCount;index++) { 417 for(uint32_t index2=0;index2<pBindInfo[index].waitSemaphoreCount;index2++) finishWriteObject(my_data, pBindInfo[index].pWaitSemaphores[index2]); 418 for(uint32_t index2=0;index2<pBindInfo[index].signalSemaphoreCount;index2++) finishWriteObject(my_data, pBindInfo[index].pSignalSemaphores[index2]); 419 for(uint32_t index2=0;index2<pBindInfo[index].bufferBindCount;index2++) finishWriteObject(my_data, pBindInfo[index].pBufferBinds[index2].buffer); 420 for(uint32_t index2=0;index2<pBindInfo[index].imageOpaqueBindCount;index2++) finishWriteObject(my_data, pBindInfo[index].pImageOpaqueBinds[index2].image); 421 for(uint32_t index2=0;index2<pBindInfo[index].imageBindCount;index2++) finishWriteObject(my_data, pBindInfo[index].pImageBinds[index2].image); 422 } 423 finishWriteObject(my_data, fence); 424 // Host access to queue must be externally synchronized 425 // Host access to pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized 426 // Host access to fence must be externally synchronized 427 428 return result; 429 } 430 431 VKAPI_ATTR VkResult VKAPI_CALL CreateFence( 432 VkDevice device, 433 const VkFenceCreateInfo* pCreateInfo, 434 const VkAllocationCallbacks* pAllocator, 435 VkFence* pFence) 436 { 437 dispatch_key key = get_dispatch_key(device); 438 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 439 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 440 VkResult result; 441 startReadObject(my_data, device); 442 443 result = pTable->CreateFence(device,pCreateInfo,pAllocator,pFence); 444 finishReadObject(my_data, device); 445 446 return result; 447 } 448 449 VKAPI_ATTR void VKAPI_CALL DestroyFence( 450 VkDevice device, 451 VkFence fence, 452 const VkAllocationCallbacks* pAllocator) 453 { 454 dispatch_key key = get_dispatch_key(device); 455 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 456 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 457 startReadObject(my_data, device); 458 startWriteObject(my_data, fence); 459 // Host access to fence must be externally synchronized 460 461 pTable->DestroyFence(device,fence,pAllocator); 462 finishReadObject(my_data, device); 463 finishWriteObject(my_data, fence); 464 // Host access to fence must be externally synchronized 465 466 } 467 468 VKAPI_ATTR VkResult VKAPI_CALL ResetFences( 469 VkDevice device, 470 uint32_t fenceCount, 471 const VkFence* pFences) 472 { 473 dispatch_key key = get_dispatch_key(device); 474 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 475 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 476 VkResult result; 477 startReadObject(my_data, device); 478 for (uint32_t index=0;index<fenceCount;index++) { 479 startWriteObject(my_data, pFences[index]); 480 } 481 // Host access to each member of pFences must be externally synchronized 482 483 result = pTable->ResetFences(device,fenceCount,pFences); 484 finishReadObject(my_data, device); 485 for (uint32_t index=0;index<fenceCount;index++) { 486 finishWriteObject(my_data, pFences[index]); 487 } 488 // Host access to each member of pFences must be externally synchronized 489 490 return result; 491 } 492 493 VKAPI_ATTR VkResult VKAPI_CALL GetFenceStatus( 494 VkDevice device, 495 VkFence fence) 496 { 497 dispatch_key key = get_dispatch_key(device); 498 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 499 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 500 VkResult result; 501 startReadObject(my_data, device); 502 startReadObject(my_data, fence); 503 504 result = pTable->GetFenceStatus(device,fence); 505 finishReadObject(my_data, device); 506 finishReadObject(my_data, fence); 507 508 return result; 509 } 510 511 VKAPI_ATTR VkResult VKAPI_CALL WaitForFences( 512 VkDevice device, 513 uint32_t fenceCount, 514 const VkFence* pFences, 515 VkBool32 waitAll, 516 uint64_t timeout) 517 { 518 dispatch_key key = get_dispatch_key(device); 519 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 520 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 521 VkResult result; 522 startReadObject(my_data, device); 523 for (uint32_t index=0;index<fenceCount;index++) { 524 startReadObject(my_data, pFences[index]); 525 } 526 527 result = pTable->WaitForFences(device,fenceCount,pFences,waitAll,timeout); 528 finishReadObject(my_data, device); 529 for (uint32_t index=0;index<fenceCount;index++) { 530 finishReadObject(my_data, pFences[index]); 531 } 532 533 return result; 534 } 535 536 VKAPI_ATTR VkResult VKAPI_CALL CreateSemaphore( 537 VkDevice device, 538 const VkSemaphoreCreateInfo* pCreateInfo, 539 const VkAllocationCallbacks* pAllocator, 540 VkSemaphore* pSemaphore) 541 { 542 dispatch_key key = get_dispatch_key(device); 543 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 544 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 545 VkResult result; 546 startReadObject(my_data, device); 547 548 result = pTable->CreateSemaphore(device,pCreateInfo,pAllocator,pSemaphore); 549 finishReadObject(my_data, device); 550 551 return result; 552 } 553 554 VKAPI_ATTR void VKAPI_CALL DestroySemaphore( 555 VkDevice device, 556 VkSemaphore semaphore, 557 const VkAllocationCallbacks* pAllocator) 558 { 559 dispatch_key key = get_dispatch_key(device); 560 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 561 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 562 startReadObject(my_data, device); 563 startWriteObject(my_data, semaphore); 564 // Host access to semaphore must be externally synchronized 565 566 pTable->DestroySemaphore(device,semaphore,pAllocator); 567 finishReadObject(my_data, device); 568 finishWriteObject(my_data, semaphore); 569 // Host access to semaphore must be externally synchronized 570 571 } 572 573 VKAPI_ATTR VkResult VKAPI_CALL CreateEvent( 574 VkDevice device, 575 const VkEventCreateInfo* pCreateInfo, 576 const VkAllocationCallbacks* pAllocator, 577 VkEvent* pEvent) 578 { 579 dispatch_key key = get_dispatch_key(device); 580 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 581 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 582 VkResult result; 583 startReadObject(my_data, device); 584 585 result = pTable->CreateEvent(device,pCreateInfo,pAllocator,pEvent); 586 finishReadObject(my_data, device); 587 588 return result; 589 } 590 591 VKAPI_ATTR void VKAPI_CALL DestroyEvent( 592 VkDevice device, 593 VkEvent event, 594 const VkAllocationCallbacks* pAllocator) 595 { 596 dispatch_key key = get_dispatch_key(device); 597 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 598 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 599 startReadObject(my_data, device); 600 startWriteObject(my_data, event); 601 // Host access to event must be externally synchronized 602 603 pTable->DestroyEvent(device,event,pAllocator); 604 finishReadObject(my_data, device); 605 finishWriteObject(my_data, event); 606 // Host access to event must be externally synchronized 607 608 } 609 610 VKAPI_ATTR VkResult VKAPI_CALL GetEventStatus( 611 VkDevice device, 612 VkEvent event) 613 { 614 dispatch_key key = get_dispatch_key(device); 615 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 616 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 617 VkResult result; 618 startReadObject(my_data, device); 619 startReadObject(my_data, event); 620 621 result = pTable->GetEventStatus(device,event); 622 finishReadObject(my_data, device); 623 finishReadObject(my_data, event); 624 625 return result; 626 } 627 628 VKAPI_ATTR VkResult VKAPI_CALL SetEvent( 629 VkDevice device, 630 VkEvent event) 631 { 632 dispatch_key key = get_dispatch_key(device); 633 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 634 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 635 VkResult result; 636 startReadObject(my_data, device); 637 startWriteObject(my_data, event); 638 // Host access to event must be externally synchronized 639 640 result = pTable->SetEvent(device,event); 641 finishReadObject(my_data, device); 642 finishWriteObject(my_data, event); 643 // Host access to event must be externally synchronized 644 645 return result; 646 } 647 648 VKAPI_ATTR VkResult VKAPI_CALL ResetEvent( 649 VkDevice device, 650 VkEvent event) 651 { 652 dispatch_key key = get_dispatch_key(device); 653 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 654 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 655 VkResult result; 656 startReadObject(my_data, device); 657 startWriteObject(my_data, event); 658 // Host access to event must be externally synchronized 659 660 result = pTable->ResetEvent(device,event); 661 finishReadObject(my_data, device); 662 finishWriteObject(my_data, event); 663 // Host access to event must be externally synchronized 664 665 return result; 666 } 667 668 VKAPI_ATTR VkResult VKAPI_CALL CreateQueryPool( 669 VkDevice device, 670 const VkQueryPoolCreateInfo* pCreateInfo, 671 const VkAllocationCallbacks* pAllocator, 672 VkQueryPool* pQueryPool) 673 { 674 dispatch_key key = get_dispatch_key(device); 675 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 676 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 677 VkResult result; 678 startReadObject(my_data, device); 679 680 result = pTable->CreateQueryPool(device,pCreateInfo,pAllocator,pQueryPool); 681 finishReadObject(my_data, device); 682 683 return result; 684 } 685 686 VKAPI_ATTR void VKAPI_CALL DestroyQueryPool( 687 VkDevice device, 688 VkQueryPool queryPool, 689 const VkAllocationCallbacks* pAllocator) 690 { 691 dispatch_key key = get_dispatch_key(device); 692 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 693 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 694 startReadObject(my_data, device); 695 startWriteObject(my_data, queryPool); 696 // Host access to queryPool must be externally synchronized 697 698 pTable->DestroyQueryPool(device,queryPool,pAllocator); 699 finishReadObject(my_data, device); 700 finishWriteObject(my_data, queryPool); 701 // Host access to queryPool must be externally synchronized 702 703 } 704 705 VKAPI_ATTR VkResult VKAPI_CALL GetQueryPoolResults( 706 VkDevice device, 707 VkQueryPool queryPool, 708 uint32_t firstQuery, 709 uint32_t queryCount, 710 size_t dataSize, 711 void* pData, 712 VkDeviceSize stride, 713 VkQueryResultFlags flags) 714 { 715 dispatch_key key = get_dispatch_key(device); 716 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 717 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 718 VkResult result; 719 startReadObject(my_data, device); 720 startReadObject(my_data, queryPool); 721 722 result = pTable->GetQueryPoolResults(device,queryPool,firstQuery,queryCount,dataSize,pData,stride,flags); 723 finishReadObject(my_data, device); 724 finishReadObject(my_data, queryPool); 725 726 return result; 727 } 728 729 VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer( 730 VkDevice device, 731 const VkBufferCreateInfo* pCreateInfo, 732 const VkAllocationCallbacks* pAllocator, 733 VkBuffer* pBuffer) 734 { 735 dispatch_key key = get_dispatch_key(device); 736 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 737 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 738 VkResult result; 739 startReadObject(my_data, device); 740 741 result = pTable->CreateBuffer(device,pCreateInfo,pAllocator,pBuffer); 742 finishReadObject(my_data, device); 743 744 return result; 745 } 746 747 VKAPI_ATTR void VKAPI_CALL DestroyBuffer( 748 VkDevice device, 749 VkBuffer buffer, 750 const VkAllocationCallbacks* pAllocator) 751 { 752 dispatch_key key = get_dispatch_key(device); 753 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 754 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 755 startReadObject(my_data, device); 756 startWriteObject(my_data, buffer); 757 // Host access to buffer must be externally synchronized 758 759 pTable->DestroyBuffer(device,buffer,pAllocator); 760 finishReadObject(my_data, device); 761 finishWriteObject(my_data, buffer); 762 // Host access to buffer must be externally synchronized 763 764 } 765 766 VKAPI_ATTR VkResult VKAPI_CALL CreateBufferView( 767 VkDevice device, 768 const VkBufferViewCreateInfo* pCreateInfo, 769 const VkAllocationCallbacks* pAllocator, 770 VkBufferView* pView) 771 { 772 dispatch_key key = get_dispatch_key(device); 773 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 774 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 775 VkResult result; 776 startReadObject(my_data, device); 777 778 result = pTable->CreateBufferView(device,pCreateInfo,pAllocator,pView); 779 finishReadObject(my_data, device); 780 781 return result; 782 } 783 784 VKAPI_ATTR void VKAPI_CALL DestroyBufferView( 785 VkDevice device, 786 VkBufferView bufferView, 787 const VkAllocationCallbacks* pAllocator) 788 { 789 dispatch_key key = get_dispatch_key(device); 790 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 791 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 792 startReadObject(my_data, device); 793 startWriteObject(my_data, bufferView); 794 // Host access to bufferView must be externally synchronized 795 796 pTable->DestroyBufferView(device,bufferView,pAllocator); 797 finishReadObject(my_data, device); 798 finishWriteObject(my_data, bufferView); 799 // Host access to bufferView must be externally synchronized 800 801 } 802 803 VKAPI_ATTR VkResult VKAPI_CALL CreateImage( 804 VkDevice device, 805 const VkImageCreateInfo* pCreateInfo, 806 const VkAllocationCallbacks* pAllocator, 807 VkImage* pImage) 808 { 809 dispatch_key key = get_dispatch_key(device); 810 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 811 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 812 VkResult result; 813 startReadObject(my_data, device); 814 815 result = pTable->CreateImage(device,pCreateInfo,pAllocator,pImage); 816 finishReadObject(my_data, device); 817 818 return result; 819 } 820 821 VKAPI_ATTR void VKAPI_CALL DestroyImage( 822 VkDevice device, 823 VkImage image, 824 const VkAllocationCallbacks* pAllocator) 825 { 826 dispatch_key key = get_dispatch_key(device); 827 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 828 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 829 startReadObject(my_data, device); 830 startWriteObject(my_data, image); 831 // Host access to image must be externally synchronized 832 833 pTable->DestroyImage(device,image,pAllocator); 834 finishReadObject(my_data, device); 835 finishWriteObject(my_data, image); 836 // Host access to image must be externally synchronized 837 838 } 839 840 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout( 841 VkDevice device, 842 VkImage image, 843 const VkImageSubresource* pSubresource, 844 VkSubresourceLayout* pLayout) 845 { 846 dispatch_key key = get_dispatch_key(device); 847 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 848 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 849 startReadObject(my_data, device); 850 startReadObject(my_data, image); 851 852 pTable->GetImageSubresourceLayout(device,image,pSubresource,pLayout); 853 finishReadObject(my_data, device); 854 finishReadObject(my_data, image); 855 856 } 857 858 VKAPI_ATTR VkResult VKAPI_CALL CreateImageView( 859 VkDevice device, 860 const VkImageViewCreateInfo* pCreateInfo, 861 const VkAllocationCallbacks* pAllocator, 862 VkImageView* pView) 863 { 864 dispatch_key key = get_dispatch_key(device); 865 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 866 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 867 VkResult result; 868 startReadObject(my_data, device); 869 870 result = pTable->CreateImageView(device,pCreateInfo,pAllocator,pView); 871 finishReadObject(my_data, device); 872 873 return result; 874 } 875 876 VKAPI_ATTR void VKAPI_CALL DestroyImageView( 877 VkDevice device, 878 VkImageView imageView, 879 const VkAllocationCallbacks* pAllocator) 880 { 881 dispatch_key key = get_dispatch_key(device); 882 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 883 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 884 startReadObject(my_data, device); 885 startWriteObject(my_data, imageView); 886 // Host access to imageView must be externally synchronized 887 888 pTable->DestroyImageView(device,imageView,pAllocator); 889 finishReadObject(my_data, device); 890 finishWriteObject(my_data, imageView); 891 // Host access to imageView must be externally synchronized 892 893 } 894 895 VKAPI_ATTR VkResult VKAPI_CALL CreateShaderModule( 896 VkDevice device, 897 const VkShaderModuleCreateInfo* pCreateInfo, 898 const VkAllocationCallbacks* pAllocator, 899 VkShaderModule* pShaderModule) 900 { 901 dispatch_key key = get_dispatch_key(device); 902 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 903 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 904 VkResult result; 905 startReadObject(my_data, device); 906 907 result = pTable->CreateShaderModule(device,pCreateInfo,pAllocator,pShaderModule); 908 finishReadObject(my_data, device); 909 910 return result; 911 } 912 913 VKAPI_ATTR void VKAPI_CALL DestroyShaderModule( 914 VkDevice device, 915 VkShaderModule shaderModule, 916 const VkAllocationCallbacks* pAllocator) 917 { 918 dispatch_key key = get_dispatch_key(device); 919 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 920 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 921 startReadObject(my_data, device); 922 startWriteObject(my_data, shaderModule); 923 // Host access to shaderModule must be externally synchronized 924 925 pTable->DestroyShaderModule(device,shaderModule,pAllocator); 926 finishReadObject(my_data, device); 927 finishWriteObject(my_data, shaderModule); 928 // Host access to shaderModule must be externally synchronized 929 930 } 931 932 VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineCache( 933 VkDevice device, 934 const VkPipelineCacheCreateInfo* pCreateInfo, 935 const VkAllocationCallbacks* pAllocator, 936 VkPipelineCache* pPipelineCache) 937 { 938 dispatch_key key = get_dispatch_key(device); 939 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 940 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 941 VkResult result; 942 startReadObject(my_data, device); 943 944 result = pTable->CreatePipelineCache(device,pCreateInfo,pAllocator,pPipelineCache); 945 finishReadObject(my_data, device); 946 947 return result; 948 } 949 950 VKAPI_ATTR void VKAPI_CALL DestroyPipelineCache( 951 VkDevice device, 952 VkPipelineCache pipelineCache, 953 const VkAllocationCallbacks* pAllocator) 954 { 955 dispatch_key key = get_dispatch_key(device); 956 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 957 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 958 startReadObject(my_data, device); 959 startWriteObject(my_data, pipelineCache); 960 // Host access to pipelineCache must be externally synchronized 961 962 pTable->DestroyPipelineCache(device,pipelineCache,pAllocator); 963 finishReadObject(my_data, device); 964 finishWriteObject(my_data, pipelineCache); 965 // Host access to pipelineCache must be externally synchronized 966 967 } 968 969 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineCacheData( 970 VkDevice device, 971 VkPipelineCache pipelineCache, 972 size_t* pDataSize, 973 void* pData) 974 { 975 dispatch_key key = get_dispatch_key(device); 976 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 977 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 978 VkResult result; 979 startReadObject(my_data, device); 980 startReadObject(my_data, pipelineCache); 981 982 result = pTable->GetPipelineCacheData(device,pipelineCache,pDataSize,pData); 983 finishReadObject(my_data, device); 984 finishReadObject(my_data, pipelineCache); 985 986 return result; 987 } 988 989 VKAPI_ATTR VkResult VKAPI_CALL MergePipelineCaches( 990 VkDevice device, 991 VkPipelineCache dstCache, 992 uint32_t srcCacheCount, 993 const VkPipelineCache* pSrcCaches) 994 { 995 dispatch_key key = get_dispatch_key(device); 996 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 997 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 998 VkResult result; 999 startReadObject(my_data, device); 1000 startWriteObject(my_data, dstCache); 1001 for (uint32_t index=0;index<srcCacheCount;index++) { 1002 startReadObject(my_data, pSrcCaches[index]); 1003 } 1004 // Host access to dstCache must be externally synchronized 1005 1006 result = pTable->MergePipelineCaches(device,dstCache,srcCacheCount,pSrcCaches); 1007 finishReadObject(my_data, device); 1008 finishWriteObject(my_data, dstCache); 1009 for (uint32_t index=0;index<srcCacheCount;index++) { 1010 finishReadObject(my_data, pSrcCaches[index]); 1011 } 1012 // Host access to dstCache must be externally synchronized 1013 1014 return result; 1015 } 1016 1017 VKAPI_ATTR VkResult VKAPI_CALL CreateGraphicsPipelines( 1018 VkDevice device, 1019 VkPipelineCache pipelineCache, 1020 uint32_t createInfoCount, 1021 const VkGraphicsPipelineCreateInfo* pCreateInfos, 1022 const VkAllocationCallbacks* pAllocator, 1023 VkPipeline* pPipelines) 1024 { 1025 dispatch_key key = get_dispatch_key(device); 1026 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1027 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1028 VkResult result; 1029 startReadObject(my_data, device); 1030 startReadObject(my_data, pipelineCache); 1031 1032 result = pTable->CreateGraphicsPipelines(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines); 1033 finishReadObject(my_data, device); 1034 finishReadObject(my_data, pipelineCache); 1035 1036 return result; 1037 } 1038 1039 VKAPI_ATTR VkResult VKAPI_CALL CreateComputePipelines( 1040 VkDevice device, 1041 VkPipelineCache pipelineCache, 1042 uint32_t createInfoCount, 1043 const VkComputePipelineCreateInfo* pCreateInfos, 1044 const VkAllocationCallbacks* pAllocator, 1045 VkPipeline* pPipelines) 1046 { 1047 dispatch_key key = get_dispatch_key(device); 1048 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1049 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1050 VkResult result; 1051 startReadObject(my_data, device); 1052 startReadObject(my_data, pipelineCache); 1053 1054 result = pTable->CreateComputePipelines(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines); 1055 finishReadObject(my_data, device); 1056 finishReadObject(my_data, pipelineCache); 1057 1058 return result; 1059 } 1060 1061 VKAPI_ATTR void VKAPI_CALL DestroyPipeline( 1062 VkDevice device, 1063 VkPipeline pipeline, 1064 const VkAllocationCallbacks* pAllocator) 1065 { 1066 dispatch_key key = get_dispatch_key(device); 1067 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1068 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1069 startReadObject(my_data, device); 1070 startWriteObject(my_data, pipeline); 1071 // Host access to pipeline must be externally synchronized 1072 1073 pTable->DestroyPipeline(device,pipeline,pAllocator); 1074 finishReadObject(my_data, device); 1075 finishWriteObject(my_data, pipeline); 1076 // Host access to pipeline must be externally synchronized 1077 1078 } 1079 1080 VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineLayout( 1081 VkDevice device, 1082 const VkPipelineLayoutCreateInfo* pCreateInfo, 1083 const VkAllocationCallbacks* pAllocator, 1084 VkPipelineLayout* pPipelineLayout) 1085 { 1086 dispatch_key key = get_dispatch_key(device); 1087 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1088 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1089 VkResult result; 1090 startReadObject(my_data, device); 1091 1092 result = pTable->CreatePipelineLayout(device,pCreateInfo,pAllocator,pPipelineLayout); 1093 finishReadObject(my_data, device); 1094 1095 return result; 1096 } 1097 1098 VKAPI_ATTR void VKAPI_CALL DestroyPipelineLayout( 1099 VkDevice device, 1100 VkPipelineLayout pipelineLayout, 1101 const VkAllocationCallbacks* pAllocator) 1102 { 1103 dispatch_key key = get_dispatch_key(device); 1104 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1105 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1106 startReadObject(my_data, device); 1107 startWriteObject(my_data, pipelineLayout); 1108 // Host access to pipelineLayout must be externally synchronized 1109 1110 pTable->DestroyPipelineLayout(device,pipelineLayout,pAllocator); 1111 finishReadObject(my_data, device); 1112 finishWriteObject(my_data, pipelineLayout); 1113 // Host access to pipelineLayout must be externally synchronized 1114 1115 } 1116 1117 VKAPI_ATTR VkResult VKAPI_CALL CreateSampler( 1118 VkDevice device, 1119 const VkSamplerCreateInfo* pCreateInfo, 1120 const VkAllocationCallbacks* pAllocator, 1121 VkSampler* pSampler) 1122 { 1123 dispatch_key key = get_dispatch_key(device); 1124 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1125 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1126 VkResult result; 1127 startReadObject(my_data, device); 1128 1129 result = pTable->CreateSampler(device,pCreateInfo,pAllocator,pSampler); 1130 finishReadObject(my_data, device); 1131 1132 return result; 1133 } 1134 1135 VKAPI_ATTR void VKAPI_CALL DestroySampler( 1136 VkDevice device, 1137 VkSampler sampler, 1138 const VkAllocationCallbacks* pAllocator) 1139 { 1140 dispatch_key key = get_dispatch_key(device); 1141 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1142 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1143 startReadObject(my_data, device); 1144 startWriteObject(my_data, sampler); 1145 // Host access to sampler must be externally synchronized 1146 1147 pTable->DestroySampler(device,sampler,pAllocator); 1148 finishReadObject(my_data, device); 1149 finishWriteObject(my_data, sampler); 1150 // Host access to sampler must be externally synchronized 1151 1152 } 1153 1154 VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorSetLayout( 1155 VkDevice device, 1156 const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 1157 const VkAllocationCallbacks* pAllocator, 1158 VkDescriptorSetLayout* pSetLayout) 1159 { 1160 dispatch_key key = get_dispatch_key(device); 1161 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1162 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1163 VkResult result; 1164 startReadObject(my_data, device); 1165 1166 result = pTable->CreateDescriptorSetLayout(device,pCreateInfo,pAllocator,pSetLayout); 1167 finishReadObject(my_data, device); 1168 1169 return result; 1170 } 1171 1172 VKAPI_ATTR void VKAPI_CALL DestroyDescriptorSetLayout( 1173 VkDevice device, 1174 VkDescriptorSetLayout descriptorSetLayout, 1175 const VkAllocationCallbacks* pAllocator) 1176 { 1177 dispatch_key key = get_dispatch_key(device); 1178 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1179 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1180 startReadObject(my_data, device); 1181 startWriteObject(my_data, descriptorSetLayout); 1182 // Host access to descriptorSetLayout must be externally synchronized 1183 1184 pTable->DestroyDescriptorSetLayout(device,descriptorSetLayout,pAllocator); 1185 finishReadObject(my_data, device); 1186 finishWriteObject(my_data, descriptorSetLayout); 1187 // Host access to descriptorSetLayout must be externally synchronized 1188 1189 } 1190 1191 VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorPool( 1192 VkDevice device, 1193 const VkDescriptorPoolCreateInfo* pCreateInfo, 1194 const VkAllocationCallbacks* pAllocator, 1195 VkDescriptorPool* pDescriptorPool) 1196 { 1197 dispatch_key key = get_dispatch_key(device); 1198 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1199 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1200 VkResult result; 1201 startReadObject(my_data, device); 1202 1203 result = pTable->CreateDescriptorPool(device,pCreateInfo,pAllocator,pDescriptorPool); 1204 finishReadObject(my_data, device); 1205 1206 return result; 1207 } 1208 1209 VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool( 1210 VkDevice device, 1211 VkDescriptorPool descriptorPool, 1212 const VkAllocationCallbacks* pAllocator) 1213 { 1214 dispatch_key key = get_dispatch_key(device); 1215 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1216 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1217 startReadObject(my_data, device); 1218 startWriteObject(my_data, descriptorPool); 1219 // Host access to descriptorPool must be externally synchronized 1220 1221 pTable->DestroyDescriptorPool(device,descriptorPool,pAllocator); 1222 finishReadObject(my_data, device); 1223 finishWriteObject(my_data, descriptorPool); 1224 // Host access to descriptorPool must be externally synchronized 1225 1226 } 1227 1228 VKAPI_ATTR VkResult VKAPI_CALL ResetDescriptorPool( 1229 VkDevice device, 1230 VkDescriptorPool descriptorPool, 1231 VkDescriptorPoolResetFlags flags) 1232 { 1233 dispatch_key key = get_dispatch_key(device); 1234 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1235 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1236 VkResult result; 1237 startReadObject(my_data, device); 1238 startWriteObject(my_data, descriptorPool); 1239 // Host access to descriptorPool must be externally synchronized 1240 // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses 1241 1242 result = pTable->ResetDescriptorPool(device,descriptorPool,flags); 1243 finishReadObject(my_data, device); 1244 finishWriteObject(my_data, descriptorPool); 1245 // Host access to descriptorPool must be externally synchronized 1246 // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses 1247 1248 return result; 1249 } 1250 1251 VKAPI_ATTR VkResult VKAPI_CALL AllocateDescriptorSets( 1252 VkDevice device, 1253 const VkDescriptorSetAllocateInfo* pAllocateInfo, 1254 VkDescriptorSet* pDescriptorSets) 1255 { 1256 dispatch_key key = get_dispatch_key(device); 1257 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1258 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1259 VkResult result; 1260 startReadObject(my_data, device); 1261 startWriteObject(my_data, pAllocateInfo->descriptorPool); 1262 // Host access to pAllocateInfo->descriptorPool must be externally synchronized 1263 1264 result = pTable->AllocateDescriptorSets(device,pAllocateInfo,pDescriptorSets); 1265 finishReadObject(my_data, device); 1266 finishWriteObject(my_data, pAllocateInfo->descriptorPool); 1267 // Host access to pAllocateInfo->descriptorPool must be externally synchronized 1268 1269 return result; 1270 } 1271 1272 VKAPI_ATTR VkResult VKAPI_CALL FreeDescriptorSets( 1273 VkDevice device, 1274 VkDescriptorPool descriptorPool, 1275 uint32_t descriptorSetCount, 1276 const VkDescriptorSet* pDescriptorSets) 1277 { 1278 dispatch_key key = get_dispatch_key(device); 1279 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1280 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1281 VkResult result; 1282 startReadObject(my_data, device); 1283 startWriteObject(my_data, descriptorPool); 1284 for (uint32_t index=0;index<descriptorSetCount;index++) { 1285 startWriteObject(my_data, pDescriptorSets[index]); 1286 } 1287 // Host access to descriptorPool must be externally synchronized 1288 // Host access to each member of pDescriptorSets must be externally synchronized 1289 1290 result = pTable->FreeDescriptorSets(device,descriptorPool,descriptorSetCount,pDescriptorSets); 1291 finishReadObject(my_data, device); 1292 finishWriteObject(my_data, descriptorPool); 1293 for (uint32_t index=0;index<descriptorSetCount;index++) { 1294 finishWriteObject(my_data, pDescriptorSets[index]); 1295 } 1296 // Host access to descriptorPool must be externally synchronized 1297 // Host access to each member of pDescriptorSets must be externally synchronized 1298 1299 return result; 1300 } 1301 1302 VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSets( 1303 VkDevice device, 1304 uint32_t descriptorWriteCount, 1305 const VkWriteDescriptorSet* pDescriptorWrites, 1306 uint32_t descriptorCopyCount, 1307 const VkCopyDescriptorSet* pDescriptorCopies) 1308 { 1309 dispatch_key key = get_dispatch_key(device); 1310 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1311 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1312 startReadObject(my_data, device); 1313 for (uint32_t index=0;index<descriptorWriteCount;index++) { 1314 startWriteObject(my_data, pDescriptorWrites[index].dstSet); 1315 } 1316 for (uint32_t index=0;index<descriptorCopyCount;index++) { 1317 startWriteObject(my_data, pDescriptorCopies[index].dstSet); 1318 } 1319 // Host access to pDescriptorWrites[].dstSet must be externally synchronized 1320 // Host access to pDescriptorCopies[].dstSet must be externally synchronized 1321 1322 pTable->UpdateDescriptorSets(device,descriptorWriteCount,pDescriptorWrites,descriptorCopyCount,pDescriptorCopies); 1323 finishReadObject(my_data, device); 1324 for (uint32_t index=0;index<descriptorWriteCount;index++) { 1325 finishWriteObject(my_data, pDescriptorWrites[index].dstSet); 1326 } 1327 for (uint32_t index=0;index<descriptorCopyCount;index++) { 1328 finishWriteObject(my_data, pDescriptorCopies[index].dstSet); 1329 } 1330 // Host access to pDescriptorWrites[].dstSet must be externally synchronized 1331 // Host access to pDescriptorCopies[].dstSet must be externally synchronized 1332 1333 } 1334 1335 VKAPI_ATTR VkResult VKAPI_CALL CreateFramebuffer( 1336 VkDevice device, 1337 const VkFramebufferCreateInfo* pCreateInfo, 1338 const VkAllocationCallbacks* pAllocator, 1339 VkFramebuffer* pFramebuffer) 1340 { 1341 dispatch_key key = get_dispatch_key(device); 1342 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1343 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1344 VkResult result; 1345 startReadObject(my_data, device); 1346 1347 result = pTable->CreateFramebuffer(device,pCreateInfo,pAllocator,pFramebuffer); 1348 finishReadObject(my_data, device); 1349 1350 return result; 1351 } 1352 1353 VKAPI_ATTR void VKAPI_CALL DestroyFramebuffer( 1354 VkDevice device, 1355 VkFramebuffer framebuffer, 1356 const VkAllocationCallbacks* pAllocator) 1357 { 1358 dispatch_key key = get_dispatch_key(device); 1359 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1360 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1361 startReadObject(my_data, device); 1362 startWriteObject(my_data, framebuffer); 1363 // Host access to framebuffer must be externally synchronized 1364 1365 pTable->DestroyFramebuffer(device,framebuffer,pAllocator); 1366 finishReadObject(my_data, device); 1367 finishWriteObject(my_data, framebuffer); 1368 // Host access to framebuffer must be externally synchronized 1369 1370 } 1371 1372 VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass( 1373 VkDevice device, 1374 const VkRenderPassCreateInfo* pCreateInfo, 1375 const VkAllocationCallbacks* pAllocator, 1376 VkRenderPass* pRenderPass) 1377 { 1378 dispatch_key key = get_dispatch_key(device); 1379 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1380 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1381 VkResult result; 1382 startReadObject(my_data, device); 1383 1384 result = pTable->CreateRenderPass(device,pCreateInfo,pAllocator,pRenderPass); 1385 finishReadObject(my_data, device); 1386 1387 return result; 1388 } 1389 1390 VKAPI_ATTR void VKAPI_CALL DestroyRenderPass( 1391 VkDevice device, 1392 VkRenderPass renderPass, 1393 const VkAllocationCallbacks* pAllocator) 1394 { 1395 dispatch_key key = get_dispatch_key(device); 1396 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1397 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1398 startReadObject(my_data, device); 1399 startWriteObject(my_data, renderPass); 1400 // Host access to renderPass must be externally synchronized 1401 1402 pTable->DestroyRenderPass(device,renderPass,pAllocator); 1403 finishReadObject(my_data, device); 1404 finishWriteObject(my_data, renderPass); 1405 // Host access to renderPass must be externally synchronized 1406 1407 } 1408 1409 VKAPI_ATTR void VKAPI_CALL GetRenderAreaGranularity( 1410 VkDevice device, 1411 VkRenderPass renderPass, 1412 VkExtent2D* pGranularity) 1413 { 1414 dispatch_key key = get_dispatch_key(device); 1415 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1416 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1417 startReadObject(my_data, device); 1418 startReadObject(my_data, renderPass); 1419 1420 pTable->GetRenderAreaGranularity(device,renderPass,pGranularity); 1421 finishReadObject(my_data, device); 1422 finishReadObject(my_data, renderPass); 1423 1424 } 1425 1426 VKAPI_ATTR VkResult VKAPI_CALL CreateCommandPool( 1427 VkDevice device, 1428 const VkCommandPoolCreateInfo* pCreateInfo, 1429 const VkAllocationCallbacks* pAllocator, 1430 VkCommandPool* pCommandPool) 1431 { 1432 dispatch_key key = get_dispatch_key(device); 1433 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1434 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1435 VkResult result; 1436 startReadObject(my_data, device); 1437 1438 result = pTable->CreateCommandPool(device,pCreateInfo,pAllocator,pCommandPool); 1439 finishReadObject(my_data, device); 1440 1441 return result; 1442 } 1443 1444 VKAPI_ATTR void VKAPI_CALL DestroyCommandPool( 1445 VkDevice device, 1446 VkCommandPool commandPool, 1447 const VkAllocationCallbacks* pAllocator) 1448 { 1449 dispatch_key key = get_dispatch_key(device); 1450 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1451 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1452 startReadObject(my_data, device); 1453 startWriteObject(my_data, commandPool); 1454 // Host access to commandPool must be externally synchronized 1455 1456 pTable->DestroyCommandPool(device,commandPool,pAllocator); 1457 finishReadObject(my_data, device); 1458 finishWriteObject(my_data, commandPool); 1459 // Host access to commandPool must be externally synchronized 1460 1461 } 1462 1463 VKAPI_ATTR VkResult VKAPI_CALL ResetCommandPool( 1464 VkDevice device, 1465 VkCommandPool commandPool, 1466 VkCommandPoolResetFlags flags) 1467 { 1468 dispatch_key key = get_dispatch_key(device); 1469 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1470 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1471 VkResult result; 1472 startReadObject(my_data, device); 1473 startWriteObject(my_data, commandPool); 1474 // Host access to commandPool must be externally synchronized 1475 1476 result = pTable->ResetCommandPool(device,commandPool,flags); 1477 finishReadObject(my_data, device); 1478 finishWriteObject(my_data, commandPool); 1479 // Host access to commandPool must be externally synchronized 1480 1481 return result; 1482 } 1483 1484 // declare only 1485 VKAPI_ATTR VkResult VKAPI_CALL AllocateCommandBuffers( 1486 VkDevice device, 1487 const VkCommandBufferAllocateInfo* pAllocateInfo, 1488 VkCommandBuffer* pCommandBuffers); 1489 1490 // declare only 1491 VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers( 1492 VkDevice device, 1493 VkCommandPool commandPool, 1494 uint32_t commandBufferCount, 1495 const VkCommandBuffer* pCommandBuffers); 1496 1497 VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer( 1498 VkCommandBuffer commandBuffer, 1499 const VkCommandBufferBeginInfo* pBeginInfo) 1500 { 1501 dispatch_key key = get_dispatch_key(commandBuffer); 1502 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1503 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1504 VkResult result; 1505 startWriteObject(my_data, commandBuffer); 1506 // Host access to commandBuffer must be externally synchronized 1507 1508 result = pTable->BeginCommandBuffer(commandBuffer,pBeginInfo); 1509 finishWriteObject(my_data, commandBuffer); 1510 // Host access to commandBuffer must be externally synchronized 1511 1512 return result; 1513 } 1514 1515 VKAPI_ATTR VkResult VKAPI_CALL EndCommandBuffer( 1516 VkCommandBuffer commandBuffer) 1517 { 1518 dispatch_key key = get_dispatch_key(commandBuffer); 1519 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1520 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1521 VkResult result; 1522 startWriteObject(my_data, commandBuffer); 1523 // Host access to commandBuffer must be externally synchronized 1524 1525 result = pTable->EndCommandBuffer(commandBuffer); 1526 finishWriteObject(my_data, commandBuffer); 1527 // Host access to commandBuffer must be externally synchronized 1528 1529 return result; 1530 } 1531 1532 VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer( 1533 VkCommandBuffer commandBuffer, 1534 VkCommandBufferResetFlags flags) 1535 { 1536 dispatch_key key = get_dispatch_key(commandBuffer); 1537 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1538 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1539 VkResult result; 1540 startWriteObject(my_data, commandBuffer); 1541 // Host access to commandBuffer must be externally synchronized 1542 1543 result = pTable->ResetCommandBuffer(commandBuffer,flags); 1544 finishWriteObject(my_data, commandBuffer); 1545 // Host access to commandBuffer must be externally synchronized 1546 1547 return result; 1548 } 1549 1550 VKAPI_ATTR void VKAPI_CALL CmdBindPipeline( 1551 VkCommandBuffer commandBuffer, 1552 VkPipelineBindPoint pipelineBindPoint, 1553 VkPipeline pipeline) 1554 { 1555 dispatch_key key = get_dispatch_key(commandBuffer); 1556 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1557 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1558 startWriteObject(my_data, commandBuffer); 1559 startReadObject(my_data, pipeline); 1560 // Host access to commandBuffer must be externally synchronized 1561 1562 pTable->CmdBindPipeline(commandBuffer,pipelineBindPoint,pipeline); 1563 finishWriteObject(my_data, commandBuffer); 1564 finishReadObject(my_data, pipeline); 1565 // Host access to commandBuffer must be externally synchronized 1566 1567 } 1568 1569 VKAPI_ATTR void VKAPI_CALL CmdSetViewport( 1570 VkCommandBuffer commandBuffer, 1571 uint32_t firstViewport, 1572 uint32_t viewportCount, 1573 const VkViewport* pViewports) 1574 { 1575 dispatch_key key = get_dispatch_key(commandBuffer); 1576 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1577 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1578 startWriteObject(my_data, commandBuffer); 1579 // Host access to commandBuffer must be externally synchronized 1580 1581 pTable->CmdSetViewport(commandBuffer,firstViewport,viewportCount,pViewports); 1582 finishWriteObject(my_data, commandBuffer); 1583 // Host access to commandBuffer must be externally synchronized 1584 1585 } 1586 1587 VKAPI_ATTR void VKAPI_CALL CmdSetScissor( 1588 VkCommandBuffer commandBuffer, 1589 uint32_t firstScissor, 1590 uint32_t scissorCount, 1591 const VkRect2D* pScissors) 1592 { 1593 dispatch_key key = get_dispatch_key(commandBuffer); 1594 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1595 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1596 startWriteObject(my_data, commandBuffer); 1597 // Host access to commandBuffer must be externally synchronized 1598 1599 pTable->CmdSetScissor(commandBuffer,firstScissor,scissorCount,pScissors); 1600 finishWriteObject(my_data, commandBuffer); 1601 // Host access to commandBuffer must be externally synchronized 1602 1603 } 1604 1605 VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth( 1606 VkCommandBuffer commandBuffer, 1607 float lineWidth) 1608 { 1609 dispatch_key key = get_dispatch_key(commandBuffer); 1610 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1611 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1612 startWriteObject(my_data, commandBuffer); 1613 // Host access to commandBuffer must be externally synchronized 1614 1615 pTable->CmdSetLineWidth(commandBuffer,lineWidth); 1616 finishWriteObject(my_data, commandBuffer); 1617 // Host access to commandBuffer must be externally synchronized 1618 1619 } 1620 1621 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias( 1622 VkCommandBuffer commandBuffer, 1623 float depthBiasConstantFactor, 1624 float depthBiasClamp, 1625 float depthBiasSlopeFactor) 1626 { 1627 dispatch_key key = get_dispatch_key(commandBuffer); 1628 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1629 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1630 startWriteObject(my_data, commandBuffer); 1631 // Host access to commandBuffer must be externally synchronized 1632 1633 pTable->CmdSetDepthBias(commandBuffer,depthBiasConstantFactor,depthBiasClamp,depthBiasSlopeFactor); 1634 finishWriteObject(my_data, commandBuffer); 1635 // Host access to commandBuffer must be externally synchronized 1636 1637 } 1638 1639 VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants( 1640 VkCommandBuffer commandBuffer, 1641 const float blendConstants[4]) 1642 { 1643 dispatch_key key = get_dispatch_key(commandBuffer); 1644 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1645 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1646 startWriteObject(my_data, commandBuffer); 1647 // Host access to commandBuffer must be externally synchronized 1648 1649 pTable->CmdSetBlendConstants(commandBuffer,blendConstants); 1650 finishWriteObject(my_data, commandBuffer); 1651 // Host access to commandBuffer must be externally synchronized 1652 1653 } 1654 1655 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds( 1656 VkCommandBuffer commandBuffer, 1657 float minDepthBounds, 1658 float maxDepthBounds) 1659 { 1660 dispatch_key key = get_dispatch_key(commandBuffer); 1661 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1662 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1663 startWriteObject(my_data, commandBuffer); 1664 // Host access to commandBuffer must be externally synchronized 1665 1666 pTable->CmdSetDepthBounds(commandBuffer,minDepthBounds,maxDepthBounds); 1667 finishWriteObject(my_data, commandBuffer); 1668 // Host access to commandBuffer must be externally synchronized 1669 1670 } 1671 1672 VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask( 1673 VkCommandBuffer commandBuffer, 1674 VkStencilFaceFlags faceMask, 1675 uint32_t compareMask) 1676 { 1677 dispatch_key key = get_dispatch_key(commandBuffer); 1678 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1679 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1680 startWriteObject(my_data, commandBuffer); 1681 // Host access to commandBuffer must be externally synchronized 1682 1683 pTable->CmdSetStencilCompareMask(commandBuffer,faceMask,compareMask); 1684 finishWriteObject(my_data, commandBuffer); 1685 // Host access to commandBuffer must be externally synchronized 1686 1687 } 1688 1689 VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask( 1690 VkCommandBuffer commandBuffer, 1691 VkStencilFaceFlags faceMask, 1692 uint32_t writeMask) 1693 { 1694 dispatch_key key = get_dispatch_key(commandBuffer); 1695 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1696 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1697 startWriteObject(my_data, commandBuffer); 1698 // Host access to commandBuffer must be externally synchronized 1699 1700 pTable->CmdSetStencilWriteMask(commandBuffer,faceMask,writeMask); 1701 finishWriteObject(my_data, commandBuffer); 1702 // Host access to commandBuffer must be externally synchronized 1703 1704 } 1705 1706 VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference( 1707 VkCommandBuffer commandBuffer, 1708 VkStencilFaceFlags faceMask, 1709 uint32_t reference) 1710 { 1711 dispatch_key key = get_dispatch_key(commandBuffer); 1712 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1713 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1714 startWriteObject(my_data, commandBuffer); 1715 // Host access to commandBuffer must be externally synchronized 1716 1717 pTable->CmdSetStencilReference(commandBuffer,faceMask,reference); 1718 finishWriteObject(my_data, commandBuffer); 1719 // Host access to commandBuffer must be externally synchronized 1720 1721 } 1722 1723 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets( 1724 VkCommandBuffer commandBuffer, 1725 VkPipelineBindPoint pipelineBindPoint, 1726 VkPipelineLayout layout, 1727 uint32_t firstSet, 1728 uint32_t descriptorSetCount, 1729 const VkDescriptorSet* pDescriptorSets, 1730 uint32_t dynamicOffsetCount, 1731 const uint32_t* pDynamicOffsets) 1732 { 1733 dispatch_key key = get_dispatch_key(commandBuffer); 1734 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1735 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1736 startWriteObject(my_data, commandBuffer); 1737 startReadObject(my_data, layout); 1738 // Host access to commandBuffer must be externally synchronized 1739 1740 pTable->CmdBindDescriptorSets(commandBuffer,pipelineBindPoint,layout,firstSet,descriptorSetCount,pDescriptorSets,dynamicOffsetCount,pDynamicOffsets); 1741 finishWriteObject(my_data, commandBuffer); 1742 finishReadObject(my_data, layout); 1743 // Host access to commandBuffer must be externally synchronized 1744 1745 } 1746 1747 VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer( 1748 VkCommandBuffer commandBuffer, 1749 VkBuffer buffer, 1750 VkDeviceSize offset, 1751 VkIndexType indexType) 1752 { 1753 dispatch_key key = get_dispatch_key(commandBuffer); 1754 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1755 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1756 startWriteObject(my_data, commandBuffer); 1757 startReadObject(my_data, buffer); 1758 // Host access to commandBuffer must be externally synchronized 1759 1760 pTable->CmdBindIndexBuffer(commandBuffer,buffer,offset,indexType); 1761 finishWriteObject(my_data, commandBuffer); 1762 finishReadObject(my_data, buffer); 1763 // Host access to commandBuffer must be externally synchronized 1764 1765 } 1766 1767 VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers( 1768 VkCommandBuffer commandBuffer, 1769 uint32_t firstBinding, 1770 uint32_t bindingCount, 1771 const VkBuffer* pBuffers, 1772 const VkDeviceSize* pOffsets) 1773 { 1774 dispatch_key key = get_dispatch_key(commandBuffer); 1775 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1776 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1777 startWriteObject(my_data, commandBuffer); 1778 for (uint32_t index=0;index<bindingCount;index++) { 1779 startReadObject(my_data, pBuffers[index]); 1780 } 1781 // Host access to commandBuffer must be externally synchronized 1782 1783 pTable->CmdBindVertexBuffers(commandBuffer,firstBinding,bindingCount,pBuffers,pOffsets); 1784 finishWriteObject(my_data, commandBuffer); 1785 for (uint32_t index=0;index<bindingCount;index++) { 1786 finishReadObject(my_data, pBuffers[index]); 1787 } 1788 // Host access to commandBuffer must be externally synchronized 1789 1790 } 1791 1792 VKAPI_ATTR void VKAPI_CALL CmdDraw( 1793 VkCommandBuffer commandBuffer, 1794 uint32_t vertexCount, 1795 uint32_t instanceCount, 1796 uint32_t firstVertex, 1797 uint32_t firstInstance) 1798 { 1799 dispatch_key key = get_dispatch_key(commandBuffer); 1800 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1801 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1802 startWriteObject(my_data, commandBuffer); 1803 // Host access to commandBuffer must be externally synchronized 1804 1805 pTable->CmdDraw(commandBuffer,vertexCount,instanceCount,firstVertex,firstInstance); 1806 finishWriteObject(my_data, commandBuffer); 1807 // Host access to commandBuffer must be externally synchronized 1808 1809 } 1810 1811 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed( 1812 VkCommandBuffer commandBuffer, 1813 uint32_t indexCount, 1814 uint32_t instanceCount, 1815 uint32_t firstIndex, 1816 int32_t vertexOffset, 1817 uint32_t firstInstance) 1818 { 1819 dispatch_key key = get_dispatch_key(commandBuffer); 1820 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1821 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1822 startWriteObject(my_data, commandBuffer); 1823 // Host access to commandBuffer must be externally synchronized 1824 1825 pTable->CmdDrawIndexed(commandBuffer,indexCount,instanceCount,firstIndex,vertexOffset,firstInstance); 1826 finishWriteObject(my_data, commandBuffer); 1827 // Host access to commandBuffer must be externally synchronized 1828 1829 } 1830 1831 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirect( 1832 VkCommandBuffer commandBuffer, 1833 VkBuffer buffer, 1834 VkDeviceSize offset, 1835 uint32_t drawCount, 1836 uint32_t stride) 1837 { 1838 dispatch_key key = get_dispatch_key(commandBuffer); 1839 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1840 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1841 startWriteObject(my_data, commandBuffer); 1842 startReadObject(my_data, buffer); 1843 // Host access to commandBuffer must be externally synchronized 1844 1845 pTable->CmdDrawIndirect(commandBuffer,buffer,offset,drawCount,stride); 1846 finishWriteObject(my_data, commandBuffer); 1847 finishReadObject(my_data, buffer); 1848 // Host access to commandBuffer must be externally synchronized 1849 1850 } 1851 1852 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirect( 1853 VkCommandBuffer commandBuffer, 1854 VkBuffer buffer, 1855 VkDeviceSize offset, 1856 uint32_t drawCount, 1857 uint32_t stride) 1858 { 1859 dispatch_key key = get_dispatch_key(commandBuffer); 1860 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1861 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1862 startWriteObject(my_data, commandBuffer); 1863 startReadObject(my_data, buffer); 1864 // Host access to commandBuffer must be externally synchronized 1865 1866 pTable->CmdDrawIndexedIndirect(commandBuffer,buffer,offset,drawCount,stride); 1867 finishWriteObject(my_data, commandBuffer); 1868 finishReadObject(my_data, buffer); 1869 // Host access to commandBuffer must be externally synchronized 1870 1871 } 1872 1873 VKAPI_ATTR void VKAPI_CALL CmdDispatch( 1874 VkCommandBuffer commandBuffer, 1875 uint32_t x, 1876 uint32_t y, 1877 uint32_t z) 1878 { 1879 dispatch_key key = get_dispatch_key(commandBuffer); 1880 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1881 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1882 startWriteObject(my_data, commandBuffer); 1883 // Host access to commandBuffer must be externally synchronized 1884 1885 pTable->CmdDispatch(commandBuffer,x,y,z); 1886 finishWriteObject(my_data, commandBuffer); 1887 // Host access to commandBuffer must be externally synchronized 1888 1889 } 1890 1891 VKAPI_ATTR void VKAPI_CALL CmdDispatchIndirect( 1892 VkCommandBuffer commandBuffer, 1893 VkBuffer buffer, 1894 VkDeviceSize offset) 1895 { 1896 dispatch_key key = get_dispatch_key(commandBuffer); 1897 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1898 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1899 startWriteObject(my_data, commandBuffer); 1900 startReadObject(my_data, buffer); 1901 // Host access to commandBuffer must be externally synchronized 1902 1903 pTable->CmdDispatchIndirect(commandBuffer,buffer,offset); 1904 finishWriteObject(my_data, commandBuffer); 1905 finishReadObject(my_data, buffer); 1906 // Host access to commandBuffer must be externally synchronized 1907 1908 } 1909 1910 VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer( 1911 VkCommandBuffer commandBuffer, 1912 VkBuffer srcBuffer, 1913 VkBuffer dstBuffer, 1914 uint32_t regionCount, 1915 const VkBufferCopy* pRegions) 1916 { 1917 dispatch_key key = get_dispatch_key(commandBuffer); 1918 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1919 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1920 startWriteObject(my_data, commandBuffer); 1921 startReadObject(my_data, srcBuffer); 1922 startReadObject(my_data, dstBuffer); 1923 // Host access to commandBuffer must be externally synchronized 1924 1925 pTable->CmdCopyBuffer(commandBuffer,srcBuffer,dstBuffer,regionCount,pRegions); 1926 finishWriteObject(my_data, commandBuffer); 1927 finishReadObject(my_data, srcBuffer); 1928 finishReadObject(my_data, dstBuffer); 1929 // Host access to commandBuffer must be externally synchronized 1930 1931 } 1932 1933 VKAPI_ATTR void VKAPI_CALL CmdCopyImage( 1934 VkCommandBuffer commandBuffer, 1935 VkImage srcImage, 1936 VkImageLayout srcImageLayout, 1937 VkImage dstImage, 1938 VkImageLayout dstImageLayout, 1939 uint32_t regionCount, 1940 const VkImageCopy* pRegions) 1941 { 1942 dispatch_key key = get_dispatch_key(commandBuffer); 1943 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1944 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1945 startWriteObject(my_data, commandBuffer); 1946 startReadObject(my_data, srcImage); 1947 startReadObject(my_data, dstImage); 1948 // Host access to commandBuffer must be externally synchronized 1949 1950 pTable->CmdCopyImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions); 1951 finishWriteObject(my_data, commandBuffer); 1952 finishReadObject(my_data, srcImage); 1953 finishReadObject(my_data, dstImage); 1954 // Host access to commandBuffer must be externally synchronized 1955 1956 } 1957 1958 VKAPI_ATTR void VKAPI_CALL CmdBlitImage( 1959 VkCommandBuffer commandBuffer, 1960 VkImage srcImage, 1961 VkImageLayout srcImageLayout, 1962 VkImage dstImage, 1963 VkImageLayout dstImageLayout, 1964 uint32_t regionCount, 1965 const VkImageBlit* pRegions, 1966 VkFilter filter) 1967 { 1968 dispatch_key key = get_dispatch_key(commandBuffer); 1969 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1970 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1971 startWriteObject(my_data, commandBuffer); 1972 startReadObject(my_data, srcImage); 1973 startReadObject(my_data, dstImage); 1974 // Host access to commandBuffer must be externally synchronized 1975 1976 pTable->CmdBlitImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions,filter); 1977 finishWriteObject(my_data, commandBuffer); 1978 finishReadObject(my_data, srcImage); 1979 finishReadObject(my_data, dstImage); 1980 // Host access to commandBuffer must be externally synchronized 1981 1982 } 1983 1984 VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage( 1985 VkCommandBuffer commandBuffer, 1986 VkBuffer srcBuffer, 1987 VkImage dstImage, 1988 VkImageLayout dstImageLayout, 1989 uint32_t regionCount, 1990 const VkBufferImageCopy* pRegions) 1991 { 1992 dispatch_key key = get_dispatch_key(commandBuffer); 1993 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 1994 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 1995 startWriteObject(my_data, commandBuffer); 1996 startReadObject(my_data, srcBuffer); 1997 startReadObject(my_data, dstImage); 1998 // Host access to commandBuffer must be externally synchronized 1999 2000 pTable->CmdCopyBufferToImage(commandBuffer,srcBuffer,dstImage,dstImageLayout,regionCount,pRegions); 2001 finishWriteObject(my_data, commandBuffer); 2002 finishReadObject(my_data, srcBuffer); 2003 finishReadObject(my_data, dstImage); 2004 // Host access to commandBuffer must be externally synchronized 2005 2006 } 2007 2008 VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer( 2009 VkCommandBuffer commandBuffer, 2010 VkImage srcImage, 2011 VkImageLayout srcImageLayout, 2012 VkBuffer dstBuffer, 2013 uint32_t regionCount, 2014 const VkBufferImageCopy* pRegions) 2015 { 2016 dispatch_key key = get_dispatch_key(commandBuffer); 2017 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2018 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2019 startWriteObject(my_data, commandBuffer); 2020 startReadObject(my_data, srcImage); 2021 startReadObject(my_data, dstBuffer); 2022 // Host access to commandBuffer must be externally synchronized 2023 2024 pTable->CmdCopyImageToBuffer(commandBuffer,srcImage,srcImageLayout,dstBuffer,regionCount,pRegions); 2025 finishWriteObject(my_data, commandBuffer); 2026 finishReadObject(my_data, srcImage); 2027 finishReadObject(my_data, dstBuffer); 2028 // Host access to commandBuffer must be externally synchronized 2029 2030 } 2031 2032 VKAPI_ATTR void VKAPI_CALL CmdUpdateBuffer( 2033 VkCommandBuffer commandBuffer, 2034 VkBuffer dstBuffer, 2035 VkDeviceSize dstOffset, 2036 VkDeviceSize dataSize, 2037 const uint32_t* pData) 2038 { 2039 dispatch_key key = get_dispatch_key(commandBuffer); 2040 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2041 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2042 startWriteObject(my_data, commandBuffer); 2043 startReadObject(my_data, dstBuffer); 2044 // Host access to commandBuffer must be externally synchronized 2045 2046 pTable->CmdUpdateBuffer(commandBuffer,dstBuffer,dstOffset,dataSize,pData); 2047 finishWriteObject(my_data, commandBuffer); 2048 finishReadObject(my_data, dstBuffer); 2049 // Host access to commandBuffer must be externally synchronized 2050 2051 } 2052 2053 VKAPI_ATTR void VKAPI_CALL CmdFillBuffer( 2054 VkCommandBuffer commandBuffer, 2055 VkBuffer dstBuffer, 2056 VkDeviceSize dstOffset, 2057 VkDeviceSize size, 2058 uint32_t data) 2059 { 2060 dispatch_key key = get_dispatch_key(commandBuffer); 2061 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2062 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2063 startWriteObject(my_data, commandBuffer); 2064 startReadObject(my_data, dstBuffer); 2065 // Host access to commandBuffer must be externally synchronized 2066 2067 pTable->CmdFillBuffer(commandBuffer,dstBuffer,dstOffset,size,data); 2068 finishWriteObject(my_data, commandBuffer); 2069 finishReadObject(my_data, dstBuffer); 2070 // Host access to commandBuffer must be externally synchronized 2071 2072 } 2073 2074 VKAPI_ATTR void VKAPI_CALL CmdClearColorImage( 2075 VkCommandBuffer commandBuffer, 2076 VkImage image, 2077 VkImageLayout imageLayout, 2078 const VkClearColorValue* pColor, 2079 uint32_t rangeCount, 2080 const VkImageSubresourceRange* pRanges) 2081 { 2082 dispatch_key key = get_dispatch_key(commandBuffer); 2083 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2084 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2085 startWriteObject(my_data, commandBuffer); 2086 startReadObject(my_data, image); 2087 // Host access to commandBuffer must be externally synchronized 2088 2089 pTable->CmdClearColorImage(commandBuffer,image,imageLayout,pColor,rangeCount,pRanges); 2090 finishWriteObject(my_data, commandBuffer); 2091 finishReadObject(my_data, image); 2092 // Host access to commandBuffer must be externally synchronized 2093 2094 } 2095 2096 VKAPI_ATTR void VKAPI_CALL CmdClearDepthStencilImage( 2097 VkCommandBuffer commandBuffer, 2098 VkImage image, 2099 VkImageLayout imageLayout, 2100 const VkClearDepthStencilValue* pDepthStencil, 2101 uint32_t rangeCount, 2102 const VkImageSubresourceRange* pRanges) 2103 { 2104 dispatch_key key = get_dispatch_key(commandBuffer); 2105 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2106 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2107 startWriteObject(my_data, commandBuffer); 2108 startReadObject(my_data, image); 2109 // Host access to commandBuffer must be externally synchronized 2110 2111 pTable->CmdClearDepthStencilImage(commandBuffer,image,imageLayout,pDepthStencil,rangeCount,pRanges); 2112 finishWriteObject(my_data, commandBuffer); 2113 finishReadObject(my_data, image); 2114 // Host access to commandBuffer must be externally synchronized 2115 2116 } 2117 2118 VKAPI_ATTR void VKAPI_CALL CmdClearAttachments( 2119 VkCommandBuffer commandBuffer, 2120 uint32_t attachmentCount, 2121 const VkClearAttachment* pAttachments, 2122 uint32_t rectCount, 2123 const VkClearRect* pRects) 2124 { 2125 dispatch_key key = get_dispatch_key(commandBuffer); 2126 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2127 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2128 startWriteObject(my_data, commandBuffer); 2129 // Host access to commandBuffer must be externally synchronized 2130 2131 pTable->CmdClearAttachments(commandBuffer,attachmentCount,pAttachments,rectCount,pRects); 2132 finishWriteObject(my_data, commandBuffer); 2133 // Host access to commandBuffer must be externally synchronized 2134 2135 } 2136 2137 VKAPI_ATTR void VKAPI_CALL CmdResolveImage( 2138 VkCommandBuffer commandBuffer, 2139 VkImage srcImage, 2140 VkImageLayout srcImageLayout, 2141 VkImage dstImage, 2142 VkImageLayout dstImageLayout, 2143 uint32_t regionCount, 2144 const VkImageResolve* pRegions) 2145 { 2146 dispatch_key key = get_dispatch_key(commandBuffer); 2147 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2148 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2149 startWriteObject(my_data, commandBuffer); 2150 startReadObject(my_data, srcImage); 2151 startReadObject(my_data, dstImage); 2152 // Host access to commandBuffer must be externally synchronized 2153 2154 pTable->CmdResolveImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions); 2155 finishWriteObject(my_data, commandBuffer); 2156 finishReadObject(my_data, srcImage); 2157 finishReadObject(my_data, dstImage); 2158 // Host access to commandBuffer must be externally synchronized 2159 2160 } 2161 2162 VKAPI_ATTR void VKAPI_CALL CmdSetEvent( 2163 VkCommandBuffer commandBuffer, 2164 VkEvent event, 2165 VkPipelineStageFlags stageMask) 2166 { 2167 dispatch_key key = get_dispatch_key(commandBuffer); 2168 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2169 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2170 startWriteObject(my_data, commandBuffer); 2171 startReadObject(my_data, event); 2172 // Host access to commandBuffer must be externally synchronized 2173 2174 pTable->CmdSetEvent(commandBuffer,event,stageMask); 2175 finishWriteObject(my_data, commandBuffer); 2176 finishReadObject(my_data, event); 2177 // Host access to commandBuffer must be externally synchronized 2178 2179 } 2180 2181 VKAPI_ATTR void VKAPI_CALL CmdResetEvent( 2182 VkCommandBuffer commandBuffer, 2183 VkEvent event, 2184 VkPipelineStageFlags stageMask) 2185 { 2186 dispatch_key key = get_dispatch_key(commandBuffer); 2187 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2188 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2189 startWriteObject(my_data, commandBuffer); 2190 startReadObject(my_data, event); 2191 // Host access to commandBuffer must be externally synchronized 2192 2193 pTable->CmdResetEvent(commandBuffer,event,stageMask); 2194 finishWriteObject(my_data, commandBuffer); 2195 finishReadObject(my_data, event); 2196 // Host access to commandBuffer must be externally synchronized 2197 2198 } 2199 2200 VKAPI_ATTR void VKAPI_CALL CmdWaitEvents( 2201 VkCommandBuffer commandBuffer, 2202 uint32_t eventCount, 2203 const VkEvent* pEvents, 2204 VkPipelineStageFlags srcStageMask, 2205 VkPipelineStageFlags dstStageMask, 2206 uint32_t memoryBarrierCount, 2207 const VkMemoryBarrier* pMemoryBarriers, 2208 uint32_t bufferMemoryBarrierCount, 2209 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 2210 uint32_t imageMemoryBarrierCount, 2211 const VkImageMemoryBarrier* pImageMemoryBarriers) 2212 { 2213 dispatch_key key = get_dispatch_key(commandBuffer); 2214 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2215 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2216 startWriteObject(my_data, commandBuffer); 2217 for (uint32_t index=0;index<eventCount;index++) { 2218 startReadObject(my_data, pEvents[index]); 2219 } 2220 // Host access to commandBuffer must be externally synchronized 2221 2222 pTable->CmdWaitEvents(commandBuffer,eventCount,pEvents,srcStageMask,dstStageMask,memoryBarrierCount,pMemoryBarriers,bufferMemoryBarrierCount,pBufferMemoryBarriers,imageMemoryBarrierCount,pImageMemoryBarriers); 2223 finishWriteObject(my_data, commandBuffer); 2224 for (uint32_t index=0;index<eventCount;index++) { 2225 finishReadObject(my_data, pEvents[index]); 2226 } 2227 // Host access to commandBuffer must be externally synchronized 2228 2229 } 2230 2231 VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier( 2232 VkCommandBuffer commandBuffer, 2233 VkPipelineStageFlags srcStageMask, 2234 VkPipelineStageFlags dstStageMask, 2235 VkDependencyFlags dependencyFlags, 2236 uint32_t memoryBarrierCount, 2237 const VkMemoryBarrier* pMemoryBarriers, 2238 uint32_t bufferMemoryBarrierCount, 2239 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 2240 uint32_t imageMemoryBarrierCount, 2241 const VkImageMemoryBarrier* pImageMemoryBarriers) 2242 { 2243 dispatch_key key = get_dispatch_key(commandBuffer); 2244 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2245 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2246 startWriteObject(my_data, commandBuffer); 2247 // Host access to commandBuffer must be externally synchronized 2248 2249 pTable->CmdPipelineBarrier(commandBuffer,srcStageMask,dstStageMask,dependencyFlags,memoryBarrierCount,pMemoryBarriers,bufferMemoryBarrierCount,pBufferMemoryBarriers,imageMemoryBarrierCount,pImageMemoryBarriers); 2250 finishWriteObject(my_data, commandBuffer); 2251 // Host access to commandBuffer must be externally synchronized 2252 2253 } 2254 2255 VKAPI_ATTR void VKAPI_CALL CmdBeginQuery( 2256 VkCommandBuffer commandBuffer, 2257 VkQueryPool queryPool, 2258 uint32_t query, 2259 VkQueryControlFlags flags) 2260 { 2261 dispatch_key key = get_dispatch_key(commandBuffer); 2262 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2263 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2264 startWriteObject(my_data, commandBuffer); 2265 startReadObject(my_data, queryPool); 2266 // Host access to commandBuffer must be externally synchronized 2267 2268 pTable->CmdBeginQuery(commandBuffer,queryPool,query,flags); 2269 finishWriteObject(my_data, commandBuffer); 2270 finishReadObject(my_data, queryPool); 2271 // Host access to commandBuffer must be externally synchronized 2272 2273 } 2274 2275 VKAPI_ATTR void VKAPI_CALL CmdEndQuery( 2276 VkCommandBuffer commandBuffer, 2277 VkQueryPool queryPool, 2278 uint32_t query) 2279 { 2280 dispatch_key key = get_dispatch_key(commandBuffer); 2281 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2282 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2283 startWriteObject(my_data, commandBuffer); 2284 startReadObject(my_data, queryPool); 2285 // Host access to commandBuffer must be externally synchronized 2286 2287 pTable->CmdEndQuery(commandBuffer,queryPool,query); 2288 finishWriteObject(my_data, commandBuffer); 2289 finishReadObject(my_data, queryPool); 2290 // Host access to commandBuffer must be externally synchronized 2291 2292 } 2293 2294 VKAPI_ATTR void VKAPI_CALL CmdResetQueryPool( 2295 VkCommandBuffer commandBuffer, 2296 VkQueryPool queryPool, 2297 uint32_t firstQuery, 2298 uint32_t queryCount) 2299 { 2300 dispatch_key key = get_dispatch_key(commandBuffer); 2301 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2302 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2303 startWriteObject(my_data, commandBuffer); 2304 startReadObject(my_data, queryPool); 2305 // Host access to commandBuffer must be externally synchronized 2306 2307 pTable->CmdResetQueryPool(commandBuffer,queryPool,firstQuery,queryCount); 2308 finishWriteObject(my_data, commandBuffer); 2309 finishReadObject(my_data, queryPool); 2310 // Host access to commandBuffer must be externally synchronized 2311 2312 } 2313 2314 VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp( 2315 VkCommandBuffer commandBuffer, 2316 VkPipelineStageFlagBits pipelineStage, 2317 VkQueryPool queryPool, 2318 uint32_t query) 2319 { 2320 dispatch_key key = get_dispatch_key(commandBuffer); 2321 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2322 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2323 startWriteObject(my_data, commandBuffer); 2324 startReadObject(my_data, queryPool); 2325 // Host access to commandBuffer must be externally synchronized 2326 2327 pTable->CmdWriteTimestamp(commandBuffer,pipelineStage,queryPool,query); 2328 finishWriteObject(my_data, commandBuffer); 2329 finishReadObject(my_data, queryPool); 2330 // Host access to commandBuffer must be externally synchronized 2331 2332 } 2333 2334 VKAPI_ATTR void VKAPI_CALL CmdCopyQueryPoolResults( 2335 VkCommandBuffer commandBuffer, 2336 VkQueryPool queryPool, 2337 uint32_t firstQuery, 2338 uint32_t queryCount, 2339 VkBuffer dstBuffer, 2340 VkDeviceSize dstOffset, 2341 VkDeviceSize stride, 2342 VkQueryResultFlags flags) 2343 { 2344 dispatch_key key = get_dispatch_key(commandBuffer); 2345 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2346 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2347 startWriteObject(my_data, commandBuffer); 2348 startReadObject(my_data, queryPool); 2349 startReadObject(my_data, dstBuffer); 2350 // Host access to commandBuffer must be externally synchronized 2351 2352 pTable->CmdCopyQueryPoolResults(commandBuffer,queryPool,firstQuery,queryCount,dstBuffer,dstOffset,stride,flags); 2353 finishWriteObject(my_data, commandBuffer); 2354 finishReadObject(my_data, queryPool); 2355 finishReadObject(my_data, dstBuffer); 2356 // Host access to commandBuffer must be externally synchronized 2357 2358 } 2359 2360 VKAPI_ATTR void VKAPI_CALL CmdPushConstants( 2361 VkCommandBuffer commandBuffer, 2362 VkPipelineLayout layout, 2363 VkShaderStageFlags stageFlags, 2364 uint32_t offset, 2365 uint32_t size, 2366 const void* pValues) 2367 { 2368 dispatch_key key = get_dispatch_key(commandBuffer); 2369 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2370 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2371 startWriteObject(my_data, commandBuffer); 2372 startReadObject(my_data, layout); 2373 // Host access to commandBuffer must be externally synchronized 2374 2375 pTable->CmdPushConstants(commandBuffer,layout,stageFlags,offset,size,pValues); 2376 finishWriteObject(my_data, commandBuffer); 2377 finishReadObject(my_data, layout); 2378 // Host access to commandBuffer must be externally synchronized 2379 2380 } 2381 2382 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass( 2383 VkCommandBuffer commandBuffer, 2384 const VkRenderPassBeginInfo* pRenderPassBegin, 2385 VkSubpassContents contents) 2386 { 2387 dispatch_key key = get_dispatch_key(commandBuffer); 2388 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2389 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2390 startWriteObject(my_data, commandBuffer); 2391 // Host access to commandBuffer must be externally synchronized 2392 2393 pTable->CmdBeginRenderPass(commandBuffer,pRenderPassBegin,contents); 2394 finishWriteObject(my_data, commandBuffer); 2395 // Host access to commandBuffer must be externally synchronized 2396 2397 } 2398 2399 VKAPI_ATTR void VKAPI_CALL CmdNextSubpass( 2400 VkCommandBuffer commandBuffer, 2401 VkSubpassContents contents) 2402 { 2403 dispatch_key key = get_dispatch_key(commandBuffer); 2404 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2405 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2406 startWriteObject(my_data, commandBuffer); 2407 // Host access to commandBuffer must be externally synchronized 2408 2409 pTable->CmdNextSubpass(commandBuffer,contents); 2410 finishWriteObject(my_data, commandBuffer); 2411 // Host access to commandBuffer must be externally synchronized 2412 2413 } 2414 2415 VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass( 2416 VkCommandBuffer commandBuffer) 2417 { 2418 dispatch_key key = get_dispatch_key(commandBuffer); 2419 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2420 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2421 startWriteObject(my_data, commandBuffer); 2422 // Host access to commandBuffer must be externally synchronized 2423 2424 pTable->CmdEndRenderPass(commandBuffer); 2425 finishWriteObject(my_data, commandBuffer); 2426 // Host access to commandBuffer must be externally synchronized 2427 2428 } 2429 2430 VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands( 2431 VkCommandBuffer commandBuffer, 2432 uint32_t commandBufferCount, 2433 const VkCommandBuffer* pCommandBuffers) 2434 { 2435 dispatch_key key = get_dispatch_key(commandBuffer); 2436 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2437 VkLayerDispatchTable *pTable = my_data->device_dispatch_table; 2438 startWriteObject(my_data, commandBuffer); 2439 for (uint32_t index=0;index<commandBufferCount;index++) { 2440 startReadObject(my_data, pCommandBuffers[index]); 2441 } 2442 // Host access to commandBuffer must be externally synchronized 2443 2444 pTable->CmdExecuteCommands(commandBuffer,commandBufferCount,pCommandBuffers); 2445 finishWriteObject(my_data, commandBuffer); 2446 for (uint32_t index=0;index<commandBufferCount;index++) { 2447 finishReadObject(my_data, pCommandBuffers[index]); 2448 } 2449 // Host access to commandBuffer must be externally synchronized 2450 2451 } 2452 2453 // TODO - not wrapping KHR function vkDestroySurfaceKHR 2454 // TODO - not wrapping KHR function vkGetPhysicalDeviceSurfaceSupportKHR 2455 // TODO - not wrapping KHR function vkGetPhysicalDeviceSurfaceCapabilitiesKHR 2456 // TODO - not wrapping KHR function vkGetPhysicalDeviceSurfaceFormatsKHR 2457 // TODO - not wrapping KHR function vkGetPhysicalDeviceSurfacePresentModesKHR 2458 2459 // TODO - not wrapping KHR function vkCreateSwapchainKHR 2460 // TODO - not wrapping KHR function vkDestroySwapchainKHR 2461 // TODO - not wrapping KHR function vkGetSwapchainImagesKHR 2462 // TODO - not wrapping KHR function vkAcquireNextImageKHR 2463 // TODO - not wrapping KHR function vkQueuePresentKHR 2464 2465 // TODO - not wrapping KHR function vkGetPhysicalDeviceDisplayPropertiesKHR 2466 // TODO - not wrapping KHR function vkGetPhysicalDeviceDisplayPlanePropertiesKHR 2467 // TODO - not wrapping KHR function vkGetDisplayPlaneSupportedDisplaysKHR 2468 // TODO - not wrapping KHR function vkGetDisplayModePropertiesKHR 2469 // TODO - not wrapping KHR function vkCreateDisplayModeKHR 2470 // TODO - not wrapping KHR function vkGetDisplayPlaneCapabilitiesKHR 2471 // TODO - not wrapping KHR function vkCreateDisplayPlaneSurfaceKHR 2472 2473 // TODO - not wrapping KHR function vkCreateSharedSwapchainsKHR 2474 2475 #ifdef VK_USE_PLATFORM_XLIB_KHR 2476 // TODO - not wrapping KHR function vkCreateXlibSurfaceKHR 2477 // TODO - not wrapping KHR function vkGetPhysicalDeviceXlibPresentationSupportKHR 2478 #endif /* VK_USE_PLATFORM_XLIB_KHR */ 2479 2480 #ifdef VK_USE_PLATFORM_XCB_KHR 2481 // TODO - not wrapping KHR function vkCreateXcbSurfaceKHR 2482 // TODO - not wrapping KHR function vkGetPhysicalDeviceXcbPresentationSupportKHR 2483 #endif /* VK_USE_PLATFORM_XCB_KHR */ 2484 2485 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 2486 // TODO - not wrapping KHR function vkCreateWaylandSurfaceKHR 2487 // TODO - not wrapping KHR function vkGetPhysicalDeviceWaylandPresentationSupportKHR 2488 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */ 2489 2490 #ifdef VK_USE_PLATFORM_MIR_KHR 2491 // TODO - not wrapping KHR function vkCreateMirSurfaceKHR 2492 // TODO - not wrapping KHR function vkGetPhysicalDeviceMirPresentationSupportKHR 2493 #endif /* VK_USE_PLATFORM_MIR_KHR */ 2494 2495 #ifdef VK_USE_PLATFORM_ANDROID_KHR 2496 // TODO - not wrapping KHR function vkCreateAndroidSurfaceKHR 2497 #endif /* VK_USE_PLATFORM_ANDROID_KHR */ 2498 2499 #ifdef VK_USE_PLATFORM_WIN32_KHR 2500 // TODO - not wrapping KHR function vkCreateWin32SurfaceKHR 2501 // TODO - not wrapping KHR function vkGetPhysicalDeviceWin32PresentationSupportKHR 2502 #endif /* VK_USE_PLATFORM_WIN32_KHR */ 2503 2504 2505 2506 // declare only 2507 VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT( 2508 VkInstance instance, 2509 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, 2510 const VkAllocationCallbacks* pAllocator, 2511 VkDebugReportCallbackEXT* pCallback); 2512 2513 // declare only 2514 VKAPI_ATTR void VKAPI_CALL DestroyDebugReportCallbackEXT( 2515 VkInstance instance, 2516 VkDebugReportCallbackEXT callback, 2517 const VkAllocationCallbacks* pAllocator); 2518 2519 VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT( 2520 VkInstance instance, 2521 VkDebugReportFlagsEXT flags, 2522 VkDebugReportObjectTypeEXT objectType, 2523 uint64_t object, 2524 size_t location, 2525 int32_t messageCode, 2526 const char* pLayerPrefix, 2527 const char* pMessage) 2528 { 2529 dispatch_key key = get_dispatch_key(instance); 2530 layer_data *my_data = get_my_data_ptr(key, layer_data_map); 2531 VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table; 2532 startReadObject(my_data, instance); 2533 2534 pTable->DebugReportMessageEXT(instance,flags,objectType,object,location,messageCode,pLayerPrefix,pMessage); 2535 finishReadObject(my_data, instance); 2536 2537 } 2538 2539 2540 2541 2542 // TODO - not wrapping EXT function vkDebugMarkerSetObjectTagEXT 2543 // TODO - not wrapping EXT function vkDebugMarkerSetObjectNameEXT 2544 // TODO - not wrapping EXT function vkCmdDebugMarkerBeginEXT 2545 // TODO - not wrapping EXT function vkCmdDebugMarkerEndEXT 2546 // TODO - not wrapping EXT function vkCmdDebugMarkerInsertEXT 2547 2548 // intercepts 2549 struct { const char* name; PFN_vkVoidFunction pFunc;} procmap[] = { 2550 {"vkCreateInstance", reinterpret_cast<PFN_vkVoidFunction>(CreateInstance)}, 2551 {"vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(DestroyInstance)}, 2552 {"vkEnumeratePhysicalDevices", reinterpret_cast<PFN_vkVoidFunction>(EnumeratePhysicalDevices)}, 2553 {"vkGetInstanceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(GetInstanceProcAddr)}, 2554 {"vkGetDeviceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(GetDeviceProcAddr)}, 2555 {"vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(CreateDevice)}, 2556 {"vkDestroyDevice", reinterpret_cast<PFN_vkVoidFunction>(DestroyDevice)}, 2557 {"vkGetDeviceQueue", reinterpret_cast<PFN_vkVoidFunction>(GetDeviceQueue)}, 2558 {"vkQueueSubmit", reinterpret_cast<PFN_vkVoidFunction>(QueueSubmit)}, 2559 {"vkQueueWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(QueueWaitIdle)}, 2560 {"vkDeviceWaitIdle", reinterpret_cast<PFN_vkVoidFunction>(DeviceWaitIdle)}, 2561 {"vkAllocateMemory", reinterpret_cast<PFN_vkVoidFunction>(AllocateMemory)}, 2562 {"vkFreeMemory", reinterpret_cast<PFN_vkVoidFunction>(FreeMemory)}, 2563 {"vkMapMemory", reinterpret_cast<PFN_vkVoidFunction>(MapMemory)}, 2564 {"vkUnmapMemory", reinterpret_cast<PFN_vkVoidFunction>(UnmapMemory)}, 2565 {"vkFlushMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(FlushMappedMemoryRanges)}, 2566 {"vkInvalidateMappedMemoryRanges", reinterpret_cast<PFN_vkVoidFunction>(InvalidateMappedMemoryRanges)}, 2567 {"vkGetDeviceMemoryCommitment", reinterpret_cast<PFN_vkVoidFunction>(GetDeviceMemoryCommitment)}, 2568 {"vkBindBufferMemory", reinterpret_cast<PFN_vkVoidFunction>(BindBufferMemory)}, 2569 {"vkBindImageMemory", reinterpret_cast<PFN_vkVoidFunction>(BindImageMemory)}, 2570 {"vkGetBufferMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(GetBufferMemoryRequirements)}, 2571 {"vkGetImageMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(GetImageMemoryRequirements)}, 2572 {"vkGetImageSparseMemoryRequirements", reinterpret_cast<PFN_vkVoidFunction>(GetImageSparseMemoryRequirements)}, 2573 {"vkQueueBindSparse", reinterpret_cast<PFN_vkVoidFunction>(QueueBindSparse)}, 2574 {"vkCreateFence", reinterpret_cast<PFN_vkVoidFunction>(CreateFence)}, 2575 {"vkDestroyFence", reinterpret_cast<PFN_vkVoidFunction>(DestroyFence)}, 2576 {"vkResetFences", reinterpret_cast<PFN_vkVoidFunction>(ResetFences)}, 2577 {"vkGetFenceStatus", reinterpret_cast<PFN_vkVoidFunction>(GetFenceStatus)}, 2578 {"vkWaitForFences", reinterpret_cast<PFN_vkVoidFunction>(WaitForFences)}, 2579 {"vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(CreateSemaphore)}, 2580 {"vkDestroySemaphore", reinterpret_cast<PFN_vkVoidFunction>(DestroySemaphore)}, 2581 {"vkCreateEvent", reinterpret_cast<PFN_vkVoidFunction>(CreateEvent)}, 2582 {"vkDestroyEvent", reinterpret_cast<PFN_vkVoidFunction>(DestroyEvent)}, 2583 {"vkGetEventStatus", reinterpret_cast<PFN_vkVoidFunction>(GetEventStatus)}, 2584 {"vkSetEvent", reinterpret_cast<PFN_vkVoidFunction>(SetEvent)}, 2585 {"vkResetEvent", reinterpret_cast<PFN_vkVoidFunction>(ResetEvent)}, 2586 {"vkCreateQueryPool", reinterpret_cast<PFN_vkVoidFunction>(CreateQueryPool)}, 2587 {"vkDestroyQueryPool", reinterpret_cast<PFN_vkVoidFunction>(DestroyQueryPool)}, 2588 {"vkGetQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(GetQueryPoolResults)}, 2589 {"vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(CreateBuffer)}, 2590 {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(DestroyBuffer)}, 2591 {"vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(CreateBufferView)}, 2592 {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(DestroyBufferView)}, 2593 {"vkCreateImage", reinterpret_cast<PFN_vkVoidFunction>(CreateImage)}, 2594 {"vkDestroyImage", reinterpret_cast<PFN_vkVoidFunction>(DestroyImage)}, 2595 {"vkGetImageSubresourceLayout", reinterpret_cast<PFN_vkVoidFunction>(GetImageSubresourceLayout)}, 2596 {"vkCreateImageView", reinterpret_cast<PFN_vkVoidFunction>(CreateImageView)}, 2597 {"vkDestroyImageView", reinterpret_cast<PFN_vkVoidFunction>(DestroyImageView)}, 2598 {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(CreateShaderModule)}, 2599 {"vkDestroyShaderModule", reinterpret_cast<PFN_vkVoidFunction>(DestroyShaderModule)}, 2600 {"vkCreatePipelineCache", reinterpret_cast<PFN_vkVoidFunction>(CreatePipelineCache)}, 2601 {"vkDestroyPipelineCache", reinterpret_cast<PFN_vkVoidFunction>(DestroyPipelineCache)}, 2602 {"vkGetPipelineCacheData", reinterpret_cast<PFN_vkVoidFunction>(GetPipelineCacheData)}, 2603 {"vkMergePipelineCaches", reinterpret_cast<PFN_vkVoidFunction>(MergePipelineCaches)}, 2604 {"vkCreateGraphicsPipelines", reinterpret_cast<PFN_vkVoidFunction>(CreateGraphicsPipelines)}, 2605 {"vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(CreateComputePipelines)}, 2606 {"vkDestroyPipeline", reinterpret_cast<PFN_vkVoidFunction>(DestroyPipeline)}, 2607 {"vkCreatePipelineLayout", reinterpret_cast<PFN_vkVoidFunction>(CreatePipelineLayout)}, 2608 {"vkDestroyPipelineLayout", reinterpret_cast<PFN_vkVoidFunction>(DestroyPipelineLayout)}, 2609 {"vkCreateSampler", reinterpret_cast<PFN_vkVoidFunction>(CreateSampler)}, 2610 {"vkDestroySampler", reinterpret_cast<PFN_vkVoidFunction>(DestroySampler)}, 2611 {"vkCreateDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(CreateDescriptorSetLayout)}, 2612 {"vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(DestroyDescriptorSetLayout)}, 2613 {"vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(CreateDescriptorPool)}, 2614 {"vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(DestroyDescriptorPool)}, 2615 {"vkResetDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(ResetDescriptorPool)}, 2616 {"vkAllocateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(AllocateDescriptorSets)}, 2617 {"vkFreeDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(FreeDescriptorSets)}, 2618 {"vkUpdateDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(UpdateDescriptorSets)}, 2619 {"vkCreateFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(CreateFramebuffer)}, 2620 {"vkDestroyFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(DestroyFramebuffer)}, 2621 {"vkCreateRenderPass", reinterpret_cast<PFN_vkVoidFunction>(CreateRenderPass)}, 2622 {"vkDestroyRenderPass", reinterpret_cast<PFN_vkVoidFunction>(DestroyRenderPass)}, 2623 {"vkGetRenderAreaGranularity", reinterpret_cast<PFN_vkVoidFunction>(GetRenderAreaGranularity)}, 2624 {"vkCreateCommandPool", reinterpret_cast<PFN_vkVoidFunction>(CreateCommandPool)}, 2625 {"vkDestroyCommandPool", reinterpret_cast<PFN_vkVoidFunction>(DestroyCommandPool)}, 2626 {"vkResetCommandPool", reinterpret_cast<PFN_vkVoidFunction>(ResetCommandPool)}, 2627 {"vkAllocateCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(AllocateCommandBuffers)}, 2628 {"vkFreeCommandBuffers", reinterpret_cast<PFN_vkVoidFunction>(FreeCommandBuffers)}, 2629 {"vkBeginCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(BeginCommandBuffer)}, 2630 {"vkEndCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(EndCommandBuffer)}, 2631 {"vkResetCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(ResetCommandBuffer)}, 2632 {"vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(CmdBindPipeline)}, 2633 {"vkCmdSetViewport", reinterpret_cast<PFN_vkVoidFunction>(CmdSetViewport)}, 2634 {"vkCmdSetScissor", reinterpret_cast<PFN_vkVoidFunction>(CmdSetScissor)}, 2635 {"vkCmdSetLineWidth", reinterpret_cast<PFN_vkVoidFunction>(CmdSetLineWidth)}, 2636 {"vkCmdSetDepthBias", reinterpret_cast<PFN_vkVoidFunction>(CmdSetDepthBias)}, 2637 {"vkCmdSetBlendConstants", reinterpret_cast<PFN_vkVoidFunction>(CmdSetBlendConstants)}, 2638 {"vkCmdSetDepthBounds", reinterpret_cast<PFN_vkVoidFunction>(CmdSetDepthBounds)}, 2639 {"vkCmdSetStencilCompareMask", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilCompareMask)}, 2640 {"vkCmdSetStencilWriteMask", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilWriteMask)}, 2641 {"vkCmdSetStencilReference", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilReference)}, 2642 {"vkCmdBindDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDescriptorSets)}, 2643 {"vkCmdBindIndexBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdBindIndexBuffer)}, 2644 {"vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(CmdBindVertexBuffers)}, 2645 {"vkCmdDraw", reinterpret_cast<PFN_vkVoidFunction>(CmdDraw)}, 2646 {"vkCmdDrawIndexed", reinterpret_cast<PFN_vkVoidFunction>(CmdDrawIndexed)}, 2647 {"vkCmdDrawIndirect", reinterpret_cast<PFN_vkVoidFunction>(CmdDrawIndirect)}, 2648 {"vkCmdDrawIndexedIndirect", reinterpret_cast<PFN_vkVoidFunction>(CmdDrawIndexedIndirect)}, 2649 {"vkCmdDispatch", reinterpret_cast<PFN_vkVoidFunction>(CmdDispatch)}, 2650 {"vkCmdDispatchIndirect", reinterpret_cast<PFN_vkVoidFunction>(CmdDispatchIndirect)}, 2651 {"vkCmdCopyBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdCopyBuffer)}, 2652 {"vkCmdCopyImage", reinterpret_cast<PFN_vkVoidFunction>(CmdCopyImage)}, 2653 {"vkCmdBlitImage", reinterpret_cast<PFN_vkVoidFunction>(CmdBlitImage)}, 2654 {"vkCmdCopyBufferToImage", reinterpret_cast<PFN_vkVoidFunction>(CmdCopyBufferToImage)}, 2655 {"vkCmdCopyImageToBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdCopyImageToBuffer)}, 2656 {"vkCmdUpdateBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdUpdateBuffer)}, 2657 {"vkCmdFillBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdFillBuffer)}, 2658 {"vkCmdClearColorImage", reinterpret_cast<PFN_vkVoidFunction>(CmdClearColorImage)}, 2659 {"vkCmdClearDepthStencilImage", reinterpret_cast<PFN_vkVoidFunction>(CmdClearDepthStencilImage)}, 2660 {"vkCmdClearAttachments", reinterpret_cast<PFN_vkVoidFunction>(CmdClearAttachments)}, 2661 {"vkCmdResolveImage", reinterpret_cast<PFN_vkVoidFunction>(CmdResolveImage)}, 2662 {"vkCmdSetEvent", reinterpret_cast<PFN_vkVoidFunction>(CmdSetEvent)}, 2663 {"vkCmdResetEvent", reinterpret_cast<PFN_vkVoidFunction>(CmdResetEvent)}, 2664 {"vkCmdWaitEvents", reinterpret_cast<PFN_vkVoidFunction>(CmdWaitEvents)}, 2665 {"vkCmdPipelineBarrier", reinterpret_cast<PFN_vkVoidFunction>(CmdPipelineBarrier)}, 2666 {"vkCmdBeginQuery", reinterpret_cast<PFN_vkVoidFunction>(CmdBeginQuery)}, 2667 {"vkCmdEndQuery", reinterpret_cast<PFN_vkVoidFunction>(CmdEndQuery)}, 2668 {"vkCmdResetQueryPool", reinterpret_cast<PFN_vkVoidFunction>(CmdResetQueryPool)}, 2669 {"vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(CmdWriteTimestamp)}, 2670 {"vkCmdCopyQueryPoolResults", reinterpret_cast<PFN_vkVoidFunction>(CmdCopyQueryPoolResults)}, 2671 {"vkCmdPushConstants", reinterpret_cast<PFN_vkVoidFunction>(CmdPushConstants)}, 2672 {"vkCmdBeginRenderPass", reinterpret_cast<PFN_vkVoidFunction>(CmdBeginRenderPass)}, 2673 {"vkCmdNextSubpass", reinterpret_cast<PFN_vkVoidFunction>(CmdNextSubpass)}, 2674 {"vkCmdEndRenderPass", reinterpret_cast<PFN_vkVoidFunction>(CmdEndRenderPass)}, 2675 {"vkCmdExecuteCommands", reinterpret_cast<PFN_vkVoidFunction>(CmdExecuteCommands)}, 2676 {"vkCreateDebugReportCallbackEXT", reinterpret_cast<PFN_vkVoidFunction>(CreateDebugReportCallbackEXT)}, 2677 {"vkDestroyDebugReportCallbackEXT", reinterpret_cast<PFN_vkVoidFunction>(DestroyDebugReportCallbackEXT)}, 2678 {"vkDebugReportMessageEXT", reinterpret_cast<PFN_vkVoidFunction>(DebugReportMessageEXT)}, 2679 }; 2680 2681 2682 } // namespace threading 2683 2684 #endif 2685