blob: 81eb5daa738bcc43059589c5b79c0732c7655b9d [file] [log] [blame]
Mike Schuchardt440d4642019-06-20 17:14:57 -07001
2// This file is ***GENERATED***. Do Not Edit.
Petr Kraus6e6ff3e2019-08-09 18:28:13 +02003// See thread_safety_generator.py for modifications.
Mike Schuchardt440d4642019-06-20 17:14:57 -07004
5/* Copyright (c) 2015-2019 The Khronos Group Inc.
6 * Copyright (c) 2015-2019 Valve Corporation
7 * Copyright (c) 2015-2019 LunarG, Inc.
8 * Copyright (c) 2015-2019 Google Inc.
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 *
22 * Author: Mark Lobodzinski <mark@lunarg.com>
23 */
24#include "chassis.h"
25#include "thread_safety.h"
26
27
28void ThreadSafety::PreCallRecordAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo,
29 VkCommandBuffer *pCommandBuffers) {
30 StartReadObject(device);
31 StartWriteObject(pAllocateInfo->commandPool);
32}
33
34void ThreadSafety::PostCallRecordAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo,
35 VkCommandBuffer *pCommandBuffers, VkResult result) {
36 FinishReadObject(device);
37 FinishWriteObject(pAllocateInfo->commandPool);
38
39 // Record mapping from command buffer to command pool
40 if(pCommandBuffers) {
41 std::lock_guard<std::mutex> lock(command_pool_lock);
42 for (uint32_t index = 0; index < pAllocateInfo->commandBufferCount; index++) {
43 command_pool_map[pCommandBuffers[index]] = pAllocateInfo->commandPool;
44 }
45 }
46}
47
48void ThreadSafety::PreCallRecordAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo,
49 VkDescriptorSet *pDescriptorSets) {
50 StartReadObject(device);
51 StartWriteObject(pAllocateInfo->descriptorPool);
52 // Host access to pAllocateInfo::descriptorPool must be externally synchronized
53}
54
55void ThreadSafety::PostCallRecordAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo,
56 VkDescriptorSet *pDescriptorSets, VkResult result) {
57 FinishReadObject(device);
58 FinishWriteObject(pAllocateInfo->descriptorPool);
59 // Host access to pAllocateInfo::descriptorPool must be externally synchronized
60}
61
62void ThreadSafety::PreCallRecordFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount,
63 const VkCommandBuffer *pCommandBuffers) {
64 const bool lockCommandPool = false; // pool is already directly locked
65 StartReadObject(device);
66 StartWriteObject(commandPool);
67 if(pCommandBuffers) {
68 // Even though we're immediately "finishing" below, we still are testing for concurrency with any call in process
69 // so this isn't a no-op
70 for (uint32_t index = 0; index < commandBufferCount; index++) {
71 StartWriteObject(pCommandBuffers[index], lockCommandPool);
72 }
73 // The driver may immediately reuse command buffers in another thread.
74 // These updates need to be done before calling down to the driver.
75 for (uint32_t index = 0; index < commandBufferCount; index++) {
76 FinishWriteObject(pCommandBuffers[index], lockCommandPool);
77 }
78 // Holding the lock for the shortest time while we update the map
79 std::lock_guard<std::mutex> lock(command_pool_lock);
80 for (uint32_t index = 0; index < commandBufferCount; index++) {
81 command_pool_map.erase(pCommandBuffers[index]);
82 }
83 }
84}
85
86void ThreadSafety::PostCallRecordFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount,
87 const VkCommandBuffer *pCommandBuffers) {
88 FinishReadObject(device);
89 FinishWriteObject(commandPool);
90}
91
92void ThreadSafety::PreCallRecordResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) {
93 StartReadObject(device);
94 StartWriteObject(commandPool);
95 // Check for any uses of non-externally sync'd command buffers (for example from vkCmdExecuteCommands)
96 c_VkCommandPoolContents.StartWrite(commandPool);
97 // Host access to commandPool must be externally synchronized
98}
99
100void ThreadSafety::PostCallRecordResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags, VkResult result) {
101 FinishReadObject(device);
102 FinishWriteObject(commandPool);
103 c_VkCommandPoolContents.FinishWrite(commandPool);
104 // Host access to commandPool must be externally synchronized
105}
106
107void ThreadSafety::PreCallRecordDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) {
108 StartReadObject(device);
109 StartWriteObject(commandPool);
110 // Check for any uses of non-externally sync'd command buffers (for example from vkCmdExecuteCommands)
111 c_VkCommandPoolContents.StartWrite(commandPool);
112 // Host access to commandPool must be externally synchronized
113}
114
115void ThreadSafety::PostCallRecordDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) {
116 FinishReadObject(device);
117 FinishWriteObject(commandPool);
118 c_VkCommandPoolContents.FinishWrite(commandPool);
119}
120
121// GetSwapchainImages can return a non-zero count with a NULL pSwapchainImages pointer. Let's avoid crashes by ignoring
122// pSwapchainImages.
123void ThreadSafety::PreCallRecordGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount,
124 VkImage *pSwapchainImages) {
125 StartReadObject(device);
126 StartReadObject(swapchain);
127}
128
129void ThreadSafety::PostCallRecordGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount,
130 VkImage *pSwapchainImages, VkResult result) {
131 FinishReadObject(device);
132 FinishReadObject(swapchain);
133}
134
135
136
137void ThreadSafety::PreCallRecordDestroyInstance(
138 VkInstance instance,
139 const VkAllocationCallbacks* pAllocator) {
140 StartWriteObject(instance);
141 // Host access to instance must be externally synchronized
142}
143
144void ThreadSafety::PostCallRecordDestroyInstance(
145 VkInstance instance,
146 const VkAllocationCallbacks* pAllocator) {
147 FinishWriteObject(instance);
148 // Host access to instance must be externally synchronized
149}
150
151void ThreadSafety::PreCallRecordEnumeratePhysicalDevices(
152 VkInstance instance,
153 uint32_t* pPhysicalDeviceCount,
154 VkPhysicalDevice* pPhysicalDevices) {
155 StartReadObject(instance);
156}
157
158void ThreadSafety::PostCallRecordEnumeratePhysicalDevices(
159 VkInstance instance,
160 uint32_t* pPhysicalDeviceCount,
161 VkPhysicalDevice* pPhysicalDevices,
162 VkResult result) {
163 FinishReadObject(instance);
164}
165
166void ThreadSafety::PreCallRecordGetInstanceProcAddr(
167 VkInstance instance,
168 const char* pName) {
169 StartReadObject(instance);
170}
171
172void ThreadSafety::PostCallRecordGetInstanceProcAddr(
173 VkInstance instance,
174 const char* pName) {
175 FinishReadObject(instance);
176}
177
178void ThreadSafety::PreCallRecordGetDeviceProcAddr(
179 VkDevice device,
180 const char* pName) {
181 StartReadObject(device);
182}
183
184void ThreadSafety::PostCallRecordGetDeviceProcAddr(
185 VkDevice device,
186 const char* pName) {
187 FinishReadObject(device);
188}
189
190void ThreadSafety::PreCallRecordDestroyDevice(
191 VkDevice device,
192 const VkAllocationCallbacks* pAllocator) {
193 StartWriteObject(device);
194 // Host access to device must be externally synchronized
195}
196
197void ThreadSafety::PostCallRecordDestroyDevice(
198 VkDevice device,
199 const VkAllocationCallbacks* pAllocator) {
200 FinishWriteObject(device);
201 // Host access to device must be externally synchronized
202}
203
204void ThreadSafety::PreCallRecordGetDeviceQueue(
205 VkDevice device,
206 uint32_t queueFamilyIndex,
207 uint32_t queueIndex,
208 VkQueue* pQueue) {
209 StartReadObject(device);
210}
211
212void ThreadSafety::PostCallRecordGetDeviceQueue(
213 VkDevice device,
214 uint32_t queueFamilyIndex,
215 uint32_t queueIndex,
216 VkQueue* pQueue) {
217 FinishReadObject(device);
218}
219
220void ThreadSafety::PreCallRecordQueueSubmit(
221 VkQueue queue,
222 uint32_t submitCount,
223 const VkSubmitInfo* pSubmits,
224 VkFence fence) {
225 StartWriteObject(queue);
226 StartWriteObject(fence);
227 // Host access to queue must be externally synchronized
228 // Host access to fence must be externally synchronized
229}
230
231void ThreadSafety::PostCallRecordQueueSubmit(
232 VkQueue queue,
233 uint32_t submitCount,
234 const VkSubmitInfo* pSubmits,
235 VkFence fence,
236 VkResult result) {
237 FinishWriteObject(queue);
238 FinishWriteObject(fence);
239 // Host access to queue must be externally synchronized
240 // Host access to fence must be externally synchronized
241}
242
243void ThreadSafety::PreCallRecordQueueWaitIdle(
244 VkQueue queue) {
245 StartWriteObject(queue);
246 // Host access to queue must be externally synchronized
247}
248
249void ThreadSafety::PostCallRecordQueueWaitIdle(
250 VkQueue queue,
251 VkResult result) {
252 FinishWriteObject(queue);
253 // Host access to queue must be externally synchronized
254}
255
256void ThreadSafety::PreCallRecordDeviceWaitIdle(
257 VkDevice device) {
258 StartReadObject(device);
259 // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses
260}
261
262void ThreadSafety::PostCallRecordDeviceWaitIdle(
263 VkDevice device,
264 VkResult result) {
265 FinishReadObject(device);
266 // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses
267}
268
269void ThreadSafety::PreCallRecordAllocateMemory(
270 VkDevice device,
271 const VkMemoryAllocateInfo* pAllocateInfo,
272 const VkAllocationCallbacks* pAllocator,
273 VkDeviceMemory* pMemory) {
274 StartReadObject(device);
275}
276
277void ThreadSafety::PostCallRecordAllocateMemory(
278 VkDevice device,
279 const VkMemoryAllocateInfo* pAllocateInfo,
280 const VkAllocationCallbacks* pAllocator,
281 VkDeviceMemory* pMemory,
282 VkResult result) {
283 FinishReadObject(device);
284}
285
286void ThreadSafety::PreCallRecordFreeMemory(
287 VkDevice device,
288 VkDeviceMemory memory,
289 const VkAllocationCallbacks* pAllocator) {
290 StartReadObject(device);
291 StartWriteObject(memory);
292 // Host access to memory must be externally synchronized
293}
294
295void ThreadSafety::PostCallRecordFreeMemory(
296 VkDevice device,
297 VkDeviceMemory memory,
298 const VkAllocationCallbacks* pAllocator) {
299 FinishReadObject(device);
300 FinishWriteObject(memory);
301 // Host access to memory must be externally synchronized
302}
303
304void ThreadSafety::PreCallRecordMapMemory(
305 VkDevice device,
306 VkDeviceMemory memory,
307 VkDeviceSize offset,
308 VkDeviceSize size,
309 VkMemoryMapFlags flags,
310 void** ppData) {
311 StartReadObject(device);
312 StartWriteObject(memory);
313 // Host access to memory must be externally synchronized
314}
315
316void ThreadSafety::PostCallRecordMapMemory(
317 VkDevice device,
318 VkDeviceMemory memory,
319 VkDeviceSize offset,
320 VkDeviceSize size,
321 VkMemoryMapFlags flags,
322 void** ppData,
323 VkResult result) {
324 FinishReadObject(device);
325 FinishWriteObject(memory);
326 // Host access to memory must be externally synchronized
327}
328
329void ThreadSafety::PreCallRecordUnmapMemory(
330 VkDevice device,
331 VkDeviceMemory memory) {
332 StartReadObject(device);
333 StartWriteObject(memory);
334 // Host access to memory must be externally synchronized
335}
336
337void ThreadSafety::PostCallRecordUnmapMemory(
338 VkDevice device,
339 VkDeviceMemory memory) {
340 FinishReadObject(device);
341 FinishWriteObject(memory);
342 // Host access to memory must be externally synchronized
343}
344
345void ThreadSafety::PreCallRecordFlushMappedMemoryRanges(
346 VkDevice device,
347 uint32_t memoryRangeCount,
348 const VkMappedMemoryRange* pMemoryRanges) {
349 StartReadObject(device);
350}
351
352void ThreadSafety::PostCallRecordFlushMappedMemoryRanges(
353 VkDevice device,
354 uint32_t memoryRangeCount,
355 const VkMappedMemoryRange* pMemoryRanges,
356 VkResult result) {
357 FinishReadObject(device);
358}
359
360void ThreadSafety::PreCallRecordInvalidateMappedMemoryRanges(
361 VkDevice device,
362 uint32_t memoryRangeCount,
363 const VkMappedMemoryRange* pMemoryRanges) {
364 StartReadObject(device);
365}
366
367void ThreadSafety::PostCallRecordInvalidateMappedMemoryRanges(
368 VkDevice device,
369 uint32_t memoryRangeCount,
370 const VkMappedMemoryRange* pMemoryRanges,
371 VkResult result) {
372 FinishReadObject(device);
373}
374
375void ThreadSafety::PreCallRecordGetDeviceMemoryCommitment(
376 VkDevice device,
377 VkDeviceMemory memory,
378 VkDeviceSize* pCommittedMemoryInBytes) {
379 StartReadObject(device);
380 StartReadObject(memory);
381}
382
383void ThreadSafety::PostCallRecordGetDeviceMemoryCommitment(
384 VkDevice device,
385 VkDeviceMemory memory,
386 VkDeviceSize* pCommittedMemoryInBytes) {
387 FinishReadObject(device);
388 FinishReadObject(memory);
389}
390
391void ThreadSafety::PreCallRecordBindBufferMemory(
392 VkDevice device,
393 VkBuffer buffer,
394 VkDeviceMemory memory,
395 VkDeviceSize memoryOffset) {
396 StartReadObject(device);
397 StartWriteObject(buffer);
398 StartReadObject(memory);
399 // Host access to buffer must be externally synchronized
400}
401
402void ThreadSafety::PostCallRecordBindBufferMemory(
403 VkDevice device,
404 VkBuffer buffer,
405 VkDeviceMemory memory,
406 VkDeviceSize memoryOffset,
407 VkResult result) {
408 FinishReadObject(device);
409 FinishWriteObject(buffer);
410 FinishReadObject(memory);
411 // Host access to buffer must be externally synchronized
412}
413
414void ThreadSafety::PreCallRecordBindImageMemory(
415 VkDevice device,
416 VkImage image,
417 VkDeviceMemory memory,
418 VkDeviceSize memoryOffset) {
419 StartReadObject(device);
420 StartWriteObject(image);
421 StartReadObject(memory);
422 // Host access to image must be externally synchronized
423}
424
425void ThreadSafety::PostCallRecordBindImageMemory(
426 VkDevice device,
427 VkImage image,
428 VkDeviceMemory memory,
429 VkDeviceSize memoryOffset,
430 VkResult result) {
431 FinishReadObject(device);
432 FinishWriteObject(image);
433 FinishReadObject(memory);
434 // Host access to image must be externally synchronized
435}
436
437void ThreadSafety::PreCallRecordGetBufferMemoryRequirements(
438 VkDevice device,
439 VkBuffer buffer,
440 VkMemoryRequirements* pMemoryRequirements) {
441 StartReadObject(device);
442 StartReadObject(buffer);
443}
444
445void ThreadSafety::PostCallRecordGetBufferMemoryRequirements(
446 VkDevice device,
447 VkBuffer buffer,
448 VkMemoryRequirements* pMemoryRequirements) {
449 FinishReadObject(device);
450 FinishReadObject(buffer);
451}
452
453void ThreadSafety::PreCallRecordGetImageMemoryRequirements(
454 VkDevice device,
455 VkImage image,
456 VkMemoryRequirements* pMemoryRequirements) {
457 StartReadObject(device);
458 StartReadObject(image);
459}
460
461void ThreadSafety::PostCallRecordGetImageMemoryRequirements(
462 VkDevice device,
463 VkImage image,
464 VkMemoryRequirements* pMemoryRequirements) {
465 FinishReadObject(device);
466 FinishReadObject(image);
467}
468
469void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements(
470 VkDevice device,
471 VkImage image,
472 uint32_t* pSparseMemoryRequirementCount,
473 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
474 StartReadObject(device);
475 StartReadObject(image);
476}
477
478void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements(
479 VkDevice device,
480 VkImage image,
481 uint32_t* pSparseMemoryRequirementCount,
482 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
483 FinishReadObject(device);
484 FinishReadObject(image);
485}
486
487void ThreadSafety::PreCallRecordQueueBindSparse(
488 VkQueue queue,
489 uint32_t bindInfoCount,
490 const VkBindSparseInfo* pBindInfo,
491 VkFence fence) {
492 StartWriteObject(queue);
493 if (pBindInfo) {
494 for (uint32_t index=0; index < bindInfoCount; index++) {
495 if (pBindInfo[index].pBufferBinds) {
496 for (uint32_t index2=0; index2 < pBindInfo[index].bufferBindCount; index2++) {
497 StartWriteObject(pBindInfo[index].pBufferBinds[index2].buffer);
498 }
499 }
500 if (pBindInfo[index].pImageOpaqueBinds) {
501 for (uint32_t index2=0; index2 < pBindInfo[index].imageOpaqueBindCount; index2++) {
502 StartWriteObject(pBindInfo[index].pImageOpaqueBinds[index2].image);
503 }
504 }
505 if (pBindInfo[index].pImageBinds) {
506 for (uint32_t index2=0; index2 < pBindInfo[index].imageBindCount; index2++) {
507 StartWriteObject(pBindInfo[index].pImageBinds[index2].image);
508 }
509 }
510 }
511 }
512 StartWriteObject(fence);
513 // Host access to queue must be externally synchronized
514 // Host access to pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized
515 // Host access to fence must be externally synchronized
516}
517
518void ThreadSafety::PostCallRecordQueueBindSparse(
519 VkQueue queue,
520 uint32_t bindInfoCount,
521 const VkBindSparseInfo* pBindInfo,
522 VkFence fence,
523 VkResult result) {
524 FinishWriteObject(queue);
525 if (pBindInfo) {
526 for (uint32_t index=0; index < bindInfoCount; index++) {
527 if (pBindInfo[index].pBufferBinds) {
528 for (uint32_t index2=0; index2 < pBindInfo[index].bufferBindCount; index2++) {
529 FinishWriteObject(pBindInfo[index].pBufferBinds[index2].buffer);
530 }
531 }
532 if (pBindInfo[index].pImageOpaqueBinds) {
533 for (uint32_t index2=0; index2 < pBindInfo[index].imageOpaqueBindCount; index2++) {
534 FinishWriteObject(pBindInfo[index].pImageOpaqueBinds[index2].image);
535 }
536 }
537 if (pBindInfo[index].pImageBinds) {
538 for (uint32_t index2=0; index2 < pBindInfo[index].imageBindCount; index2++) {
539 FinishWriteObject(pBindInfo[index].pImageBinds[index2].image);
540 }
541 }
542 }
543 }
544 FinishWriteObject(fence);
545 // Host access to queue must be externally synchronized
546 // Host access to pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized
547 // Host access to fence must be externally synchronized
548}
549
550void ThreadSafety::PreCallRecordCreateFence(
551 VkDevice device,
552 const VkFenceCreateInfo* pCreateInfo,
553 const VkAllocationCallbacks* pAllocator,
554 VkFence* pFence) {
555 StartReadObject(device);
556}
557
558void ThreadSafety::PostCallRecordCreateFence(
559 VkDevice device,
560 const VkFenceCreateInfo* pCreateInfo,
561 const VkAllocationCallbacks* pAllocator,
562 VkFence* pFence,
563 VkResult result) {
564 FinishReadObject(device);
565}
566
567void ThreadSafety::PreCallRecordDestroyFence(
568 VkDevice device,
569 VkFence fence,
570 const VkAllocationCallbacks* pAllocator) {
571 StartReadObject(device);
572 StartWriteObject(fence);
573 // Host access to fence must be externally synchronized
574}
575
576void ThreadSafety::PostCallRecordDestroyFence(
577 VkDevice device,
578 VkFence fence,
579 const VkAllocationCallbacks* pAllocator) {
580 FinishReadObject(device);
581 FinishWriteObject(fence);
582 // Host access to fence must be externally synchronized
583}
584
585void ThreadSafety::PreCallRecordResetFences(
586 VkDevice device,
587 uint32_t fenceCount,
588 const VkFence* pFences) {
589 StartReadObject(device);
590 if (pFences) {
591 for (uint32_t index=0; index < fenceCount; index++) {
592 StartWriteObject(pFences[index]);
593 }
594 }
595 // Host access to each member of pFences must be externally synchronized
596}
597
598void ThreadSafety::PostCallRecordResetFences(
599 VkDevice device,
600 uint32_t fenceCount,
601 const VkFence* pFences,
602 VkResult result) {
603 FinishReadObject(device);
604 if (pFences) {
605 for (uint32_t index=0; index < fenceCount; index++) {
606 FinishWriteObject(pFences[index]);
607 }
608 }
609 // Host access to each member of pFences must be externally synchronized
610}
611
612void ThreadSafety::PreCallRecordGetFenceStatus(
613 VkDevice device,
614 VkFence fence) {
615 StartReadObject(device);
616 StartReadObject(fence);
617}
618
619void ThreadSafety::PostCallRecordGetFenceStatus(
620 VkDevice device,
621 VkFence fence,
622 VkResult result) {
623 FinishReadObject(device);
624 FinishReadObject(fence);
625}
626
627void ThreadSafety::PreCallRecordWaitForFences(
628 VkDevice device,
629 uint32_t fenceCount,
630 const VkFence* pFences,
631 VkBool32 waitAll,
632 uint64_t timeout) {
633 StartReadObject(device);
634 if (pFences) {
635 for (uint32_t index = 0; index < fenceCount; index++) {
636 StartReadObject(pFences[index]);
637 }
638 }
639}
640
641void ThreadSafety::PostCallRecordWaitForFences(
642 VkDevice device,
643 uint32_t fenceCount,
644 const VkFence* pFences,
645 VkBool32 waitAll,
646 uint64_t timeout,
647 VkResult result) {
648 FinishReadObject(device);
649 if (pFences) {
650 for (uint32_t index = 0; index < fenceCount; index++) {
651 FinishReadObject(pFences[index]);
652 }
653 }
654}
655
656void ThreadSafety::PreCallRecordCreateSemaphore(
657 VkDevice device,
658 const VkSemaphoreCreateInfo* pCreateInfo,
659 const VkAllocationCallbacks* pAllocator,
660 VkSemaphore* pSemaphore) {
661 StartReadObject(device);
662}
663
664void ThreadSafety::PostCallRecordCreateSemaphore(
665 VkDevice device,
666 const VkSemaphoreCreateInfo* pCreateInfo,
667 const VkAllocationCallbacks* pAllocator,
668 VkSemaphore* pSemaphore,
669 VkResult result) {
670 FinishReadObject(device);
671}
672
673void ThreadSafety::PreCallRecordDestroySemaphore(
674 VkDevice device,
675 VkSemaphore semaphore,
676 const VkAllocationCallbacks* pAllocator) {
677 StartReadObject(device);
678 StartWriteObject(semaphore);
679 // Host access to semaphore must be externally synchronized
680}
681
682void ThreadSafety::PostCallRecordDestroySemaphore(
683 VkDevice device,
684 VkSemaphore semaphore,
685 const VkAllocationCallbacks* pAllocator) {
686 FinishReadObject(device);
687 FinishWriteObject(semaphore);
688 // Host access to semaphore must be externally synchronized
689}
690
691void ThreadSafety::PreCallRecordCreateEvent(
692 VkDevice device,
693 const VkEventCreateInfo* pCreateInfo,
694 const VkAllocationCallbacks* pAllocator,
695 VkEvent* pEvent) {
696 StartReadObject(device);
697}
698
699void ThreadSafety::PostCallRecordCreateEvent(
700 VkDevice device,
701 const VkEventCreateInfo* pCreateInfo,
702 const VkAllocationCallbacks* pAllocator,
703 VkEvent* pEvent,
704 VkResult result) {
705 FinishReadObject(device);
706}
707
708void ThreadSafety::PreCallRecordDestroyEvent(
709 VkDevice device,
710 VkEvent event,
711 const VkAllocationCallbacks* pAllocator) {
712 StartReadObject(device);
713 StartWriteObject(event);
714 // Host access to event must be externally synchronized
715}
716
717void ThreadSafety::PostCallRecordDestroyEvent(
718 VkDevice device,
719 VkEvent event,
720 const VkAllocationCallbacks* pAllocator) {
721 FinishReadObject(device);
722 FinishWriteObject(event);
723 // Host access to event must be externally synchronized
724}
725
726void ThreadSafety::PreCallRecordGetEventStatus(
727 VkDevice device,
728 VkEvent event) {
729 StartReadObject(device);
730 StartReadObject(event);
731}
732
733void ThreadSafety::PostCallRecordGetEventStatus(
734 VkDevice device,
735 VkEvent event,
736 VkResult result) {
737 FinishReadObject(device);
738 FinishReadObject(event);
739}
740
741void ThreadSafety::PreCallRecordSetEvent(
742 VkDevice device,
743 VkEvent event) {
744 StartReadObject(device);
745 StartWriteObject(event);
746 // Host access to event must be externally synchronized
747}
748
749void ThreadSafety::PostCallRecordSetEvent(
750 VkDevice device,
751 VkEvent event,
752 VkResult result) {
753 FinishReadObject(device);
754 FinishWriteObject(event);
755 // Host access to event must be externally synchronized
756}
757
758void ThreadSafety::PreCallRecordResetEvent(
759 VkDevice device,
760 VkEvent event) {
761 StartReadObject(device);
762 StartWriteObject(event);
763 // Host access to event must be externally synchronized
764}
765
766void ThreadSafety::PostCallRecordResetEvent(
767 VkDevice device,
768 VkEvent event,
769 VkResult result) {
770 FinishReadObject(device);
771 FinishWriteObject(event);
772 // Host access to event must be externally synchronized
773}
774
775void ThreadSafety::PreCallRecordCreateQueryPool(
776 VkDevice device,
777 const VkQueryPoolCreateInfo* pCreateInfo,
778 const VkAllocationCallbacks* pAllocator,
779 VkQueryPool* pQueryPool) {
780 StartReadObject(device);
781}
782
783void ThreadSafety::PostCallRecordCreateQueryPool(
784 VkDevice device,
785 const VkQueryPoolCreateInfo* pCreateInfo,
786 const VkAllocationCallbacks* pAllocator,
787 VkQueryPool* pQueryPool,
788 VkResult result) {
789 FinishReadObject(device);
790}
791
792void ThreadSafety::PreCallRecordDestroyQueryPool(
793 VkDevice device,
794 VkQueryPool queryPool,
795 const VkAllocationCallbacks* pAllocator) {
796 StartReadObject(device);
797 StartWriteObject(queryPool);
798 // Host access to queryPool must be externally synchronized
799}
800
801void ThreadSafety::PostCallRecordDestroyQueryPool(
802 VkDevice device,
803 VkQueryPool queryPool,
804 const VkAllocationCallbacks* pAllocator) {
805 FinishReadObject(device);
806 FinishWriteObject(queryPool);
807 // Host access to queryPool must be externally synchronized
808}
809
810void ThreadSafety::PreCallRecordGetQueryPoolResults(
811 VkDevice device,
812 VkQueryPool queryPool,
813 uint32_t firstQuery,
814 uint32_t queryCount,
815 size_t dataSize,
816 void* pData,
817 VkDeviceSize stride,
818 VkQueryResultFlags flags) {
819 StartReadObject(device);
820 StartReadObject(queryPool);
821}
822
823void ThreadSafety::PostCallRecordGetQueryPoolResults(
824 VkDevice device,
825 VkQueryPool queryPool,
826 uint32_t firstQuery,
827 uint32_t queryCount,
828 size_t dataSize,
829 void* pData,
830 VkDeviceSize stride,
831 VkQueryResultFlags flags,
832 VkResult result) {
833 FinishReadObject(device);
834 FinishReadObject(queryPool);
835}
836
837void ThreadSafety::PreCallRecordCreateBuffer(
838 VkDevice device,
839 const VkBufferCreateInfo* pCreateInfo,
840 const VkAllocationCallbacks* pAllocator,
841 VkBuffer* pBuffer) {
842 StartReadObject(device);
843}
844
845void ThreadSafety::PostCallRecordCreateBuffer(
846 VkDevice device,
847 const VkBufferCreateInfo* pCreateInfo,
848 const VkAllocationCallbacks* pAllocator,
849 VkBuffer* pBuffer,
850 VkResult result) {
851 FinishReadObject(device);
852}
853
854void ThreadSafety::PreCallRecordDestroyBuffer(
855 VkDevice device,
856 VkBuffer buffer,
857 const VkAllocationCallbacks* pAllocator) {
858 StartReadObject(device);
859 StartWriteObject(buffer);
860 // Host access to buffer must be externally synchronized
861}
862
863void ThreadSafety::PostCallRecordDestroyBuffer(
864 VkDevice device,
865 VkBuffer buffer,
866 const VkAllocationCallbacks* pAllocator) {
867 FinishReadObject(device);
868 FinishWriteObject(buffer);
869 // Host access to buffer must be externally synchronized
870}
871
872void ThreadSafety::PreCallRecordCreateBufferView(
873 VkDevice device,
874 const VkBufferViewCreateInfo* pCreateInfo,
875 const VkAllocationCallbacks* pAllocator,
876 VkBufferView* pView) {
877 StartReadObject(device);
878}
879
880void ThreadSafety::PostCallRecordCreateBufferView(
881 VkDevice device,
882 const VkBufferViewCreateInfo* pCreateInfo,
883 const VkAllocationCallbacks* pAllocator,
884 VkBufferView* pView,
885 VkResult result) {
886 FinishReadObject(device);
887}
888
889void ThreadSafety::PreCallRecordDestroyBufferView(
890 VkDevice device,
891 VkBufferView bufferView,
892 const VkAllocationCallbacks* pAllocator) {
893 StartReadObject(device);
894 StartWriteObject(bufferView);
895 // Host access to bufferView must be externally synchronized
896}
897
898void ThreadSafety::PostCallRecordDestroyBufferView(
899 VkDevice device,
900 VkBufferView bufferView,
901 const VkAllocationCallbacks* pAllocator) {
902 FinishReadObject(device);
903 FinishWriteObject(bufferView);
904 // Host access to bufferView must be externally synchronized
905}
906
907void ThreadSafety::PreCallRecordCreateImage(
908 VkDevice device,
909 const VkImageCreateInfo* pCreateInfo,
910 const VkAllocationCallbacks* pAllocator,
911 VkImage* pImage) {
912 StartReadObject(device);
913}
914
915void ThreadSafety::PostCallRecordCreateImage(
916 VkDevice device,
917 const VkImageCreateInfo* pCreateInfo,
918 const VkAllocationCallbacks* pAllocator,
919 VkImage* pImage,
920 VkResult result) {
921 FinishReadObject(device);
922}
923
924void ThreadSafety::PreCallRecordDestroyImage(
925 VkDevice device,
926 VkImage image,
927 const VkAllocationCallbacks* pAllocator) {
928 StartReadObject(device);
929 StartWriteObject(image);
930 // Host access to image must be externally synchronized
931}
932
933void ThreadSafety::PostCallRecordDestroyImage(
934 VkDevice device,
935 VkImage image,
936 const VkAllocationCallbacks* pAllocator) {
937 FinishReadObject(device);
938 FinishWriteObject(image);
939 // Host access to image must be externally synchronized
940}
941
942void ThreadSafety::PreCallRecordGetImageSubresourceLayout(
943 VkDevice device,
944 VkImage image,
945 const VkImageSubresource* pSubresource,
946 VkSubresourceLayout* pLayout) {
947 StartReadObject(device);
948 StartReadObject(image);
949}
950
951void ThreadSafety::PostCallRecordGetImageSubresourceLayout(
952 VkDevice device,
953 VkImage image,
954 const VkImageSubresource* pSubresource,
955 VkSubresourceLayout* pLayout) {
956 FinishReadObject(device);
957 FinishReadObject(image);
958}
959
960void ThreadSafety::PreCallRecordCreateImageView(
961 VkDevice device,
962 const VkImageViewCreateInfo* pCreateInfo,
963 const VkAllocationCallbacks* pAllocator,
964 VkImageView* pView) {
965 StartReadObject(device);
966}
967
968void ThreadSafety::PostCallRecordCreateImageView(
969 VkDevice device,
970 const VkImageViewCreateInfo* pCreateInfo,
971 const VkAllocationCallbacks* pAllocator,
972 VkImageView* pView,
973 VkResult result) {
974 FinishReadObject(device);
975}
976
977void ThreadSafety::PreCallRecordDestroyImageView(
978 VkDevice device,
979 VkImageView imageView,
980 const VkAllocationCallbacks* pAllocator) {
981 StartReadObject(device);
982 StartWriteObject(imageView);
983 // Host access to imageView must be externally synchronized
984}
985
986void ThreadSafety::PostCallRecordDestroyImageView(
987 VkDevice device,
988 VkImageView imageView,
989 const VkAllocationCallbacks* pAllocator) {
990 FinishReadObject(device);
991 FinishWriteObject(imageView);
992 // Host access to imageView must be externally synchronized
993}
994
995void ThreadSafety::PreCallRecordCreateShaderModule(
996 VkDevice device,
997 const VkShaderModuleCreateInfo* pCreateInfo,
998 const VkAllocationCallbacks* pAllocator,
999 VkShaderModule* pShaderModule) {
1000 StartReadObject(device);
1001}
1002
1003void ThreadSafety::PostCallRecordCreateShaderModule(
1004 VkDevice device,
1005 const VkShaderModuleCreateInfo* pCreateInfo,
1006 const VkAllocationCallbacks* pAllocator,
1007 VkShaderModule* pShaderModule,
1008 VkResult result) {
1009 FinishReadObject(device);
1010}
1011
1012void ThreadSafety::PreCallRecordDestroyShaderModule(
1013 VkDevice device,
1014 VkShaderModule shaderModule,
1015 const VkAllocationCallbacks* pAllocator) {
1016 StartReadObject(device);
1017 StartWriteObject(shaderModule);
1018 // Host access to shaderModule must be externally synchronized
1019}
1020
1021void ThreadSafety::PostCallRecordDestroyShaderModule(
1022 VkDevice device,
1023 VkShaderModule shaderModule,
1024 const VkAllocationCallbacks* pAllocator) {
1025 FinishReadObject(device);
1026 FinishWriteObject(shaderModule);
1027 // Host access to shaderModule must be externally synchronized
1028}
1029
1030void ThreadSafety::PreCallRecordCreatePipelineCache(
1031 VkDevice device,
1032 const VkPipelineCacheCreateInfo* pCreateInfo,
1033 const VkAllocationCallbacks* pAllocator,
1034 VkPipelineCache* pPipelineCache) {
1035 StartReadObject(device);
1036}
1037
1038void ThreadSafety::PostCallRecordCreatePipelineCache(
1039 VkDevice device,
1040 const VkPipelineCacheCreateInfo* pCreateInfo,
1041 const VkAllocationCallbacks* pAllocator,
1042 VkPipelineCache* pPipelineCache,
1043 VkResult result) {
1044 FinishReadObject(device);
1045}
1046
1047void ThreadSafety::PreCallRecordDestroyPipelineCache(
1048 VkDevice device,
1049 VkPipelineCache pipelineCache,
1050 const VkAllocationCallbacks* pAllocator) {
1051 StartReadObject(device);
1052 StartWriteObject(pipelineCache);
1053 // Host access to pipelineCache must be externally synchronized
1054}
1055
1056void ThreadSafety::PostCallRecordDestroyPipelineCache(
1057 VkDevice device,
1058 VkPipelineCache pipelineCache,
1059 const VkAllocationCallbacks* pAllocator) {
1060 FinishReadObject(device);
1061 FinishWriteObject(pipelineCache);
1062 // Host access to pipelineCache must be externally synchronized
1063}
1064
1065void ThreadSafety::PreCallRecordGetPipelineCacheData(
1066 VkDevice device,
1067 VkPipelineCache pipelineCache,
1068 size_t* pDataSize,
1069 void* pData) {
1070 StartReadObject(device);
1071 StartReadObject(pipelineCache);
1072}
1073
1074void ThreadSafety::PostCallRecordGetPipelineCacheData(
1075 VkDevice device,
1076 VkPipelineCache pipelineCache,
1077 size_t* pDataSize,
1078 void* pData,
1079 VkResult result) {
1080 FinishReadObject(device);
1081 FinishReadObject(pipelineCache);
1082}
1083
1084void ThreadSafety::PreCallRecordMergePipelineCaches(
1085 VkDevice device,
1086 VkPipelineCache dstCache,
1087 uint32_t srcCacheCount,
1088 const VkPipelineCache* pSrcCaches) {
1089 StartReadObject(device);
1090 StartWriteObject(dstCache);
1091 if (pSrcCaches) {
1092 for (uint32_t index = 0; index < srcCacheCount; index++) {
1093 StartReadObject(pSrcCaches[index]);
1094 }
1095 }
1096 // Host access to dstCache must be externally synchronized
1097}
1098
1099void ThreadSafety::PostCallRecordMergePipelineCaches(
1100 VkDevice device,
1101 VkPipelineCache dstCache,
1102 uint32_t srcCacheCount,
1103 const VkPipelineCache* pSrcCaches,
1104 VkResult result) {
1105 FinishReadObject(device);
1106 FinishWriteObject(dstCache);
1107 if (pSrcCaches) {
1108 for (uint32_t index = 0; index < srcCacheCount; index++) {
1109 FinishReadObject(pSrcCaches[index]);
1110 }
1111 }
1112 // Host access to dstCache must be externally synchronized
1113}
1114
1115void ThreadSafety::PreCallRecordCreateGraphicsPipelines(
1116 VkDevice device,
1117 VkPipelineCache pipelineCache,
1118 uint32_t createInfoCount,
1119 const VkGraphicsPipelineCreateInfo* pCreateInfos,
1120 const VkAllocationCallbacks* pAllocator,
1121 VkPipeline* pPipelines) {
1122 StartReadObject(device);
1123 StartReadObject(pipelineCache);
1124}
1125
1126void ThreadSafety::PostCallRecordCreateGraphicsPipelines(
1127 VkDevice device,
1128 VkPipelineCache pipelineCache,
1129 uint32_t createInfoCount,
1130 const VkGraphicsPipelineCreateInfo* pCreateInfos,
1131 const VkAllocationCallbacks* pAllocator,
1132 VkPipeline* pPipelines,
1133 VkResult result) {
1134 FinishReadObject(device);
1135 FinishReadObject(pipelineCache);
1136}
1137
1138void ThreadSafety::PreCallRecordCreateComputePipelines(
1139 VkDevice device,
1140 VkPipelineCache pipelineCache,
1141 uint32_t createInfoCount,
1142 const VkComputePipelineCreateInfo* pCreateInfos,
1143 const VkAllocationCallbacks* pAllocator,
1144 VkPipeline* pPipelines) {
1145 StartReadObject(device);
1146 StartReadObject(pipelineCache);
1147}
1148
1149void ThreadSafety::PostCallRecordCreateComputePipelines(
1150 VkDevice device,
1151 VkPipelineCache pipelineCache,
1152 uint32_t createInfoCount,
1153 const VkComputePipelineCreateInfo* pCreateInfos,
1154 const VkAllocationCallbacks* pAllocator,
1155 VkPipeline* pPipelines,
1156 VkResult result) {
1157 FinishReadObject(device);
1158 FinishReadObject(pipelineCache);
1159}
1160
1161void ThreadSafety::PreCallRecordDestroyPipeline(
1162 VkDevice device,
1163 VkPipeline pipeline,
1164 const VkAllocationCallbacks* pAllocator) {
1165 StartReadObject(device);
1166 StartWriteObject(pipeline);
1167 // Host access to pipeline must be externally synchronized
1168}
1169
1170void ThreadSafety::PostCallRecordDestroyPipeline(
1171 VkDevice device,
1172 VkPipeline pipeline,
1173 const VkAllocationCallbacks* pAllocator) {
1174 FinishReadObject(device);
1175 FinishWriteObject(pipeline);
1176 // Host access to pipeline must be externally synchronized
1177}
1178
1179void ThreadSafety::PreCallRecordCreatePipelineLayout(
1180 VkDevice device,
1181 const VkPipelineLayoutCreateInfo* pCreateInfo,
1182 const VkAllocationCallbacks* pAllocator,
1183 VkPipelineLayout* pPipelineLayout) {
1184 StartReadObject(device);
1185}
1186
1187void ThreadSafety::PostCallRecordCreatePipelineLayout(
1188 VkDevice device,
1189 const VkPipelineLayoutCreateInfo* pCreateInfo,
1190 const VkAllocationCallbacks* pAllocator,
1191 VkPipelineLayout* pPipelineLayout,
1192 VkResult result) {
1193 FinishReadObject(device);
1194}
1195
1196void ThreadSafety::PreCallRecordDestroyPipelineLayout(
1197 VkDevice device,
1198 VkPipelineLayout pipelineLayout,
1199 const VkAllocationCallbacks* pAllocator) {
1200 StartReadObject(device);
1201 StartWriteObject(pipelineLayout);
1202 // Host access to pipelineLayout must be externally synchronized
1203}
1204
1205void ThreadSafety::PostCallRecordDestroyPipelineLayout(
1206 VkDevice device,
1207 VkPipelineLayout pipelineLayout,
1208 const VkAllocationCallbacks* pAllocator) {
1209 FinishReadObject(device);
1210 FinishWriteObject(pipelineLayout);
1211 // Host access to pipelineLayout must be externally synchronized
1212}
1213
1214void ThreadSafety::PreCallRecordCreateSampler(
1215 VkDevice device,
1216 const VkSamplerCreateInfo* pCreateInfo,
1217 const VkAllocationCallbacks* pAllocator,
1218 VkSampler* pSampler) {
1219 StartReadObject(device);
1220}
1221
1222void ThreadSafety::PostCallRecordCreateSampler(
1223 VkDevice device,
1224 const VkSamplerCreateInfo* pCreateInfo,
1225 const VkAllocationCallbacks* pAllocator,
1226 VkSampler* pSampler,
1227 VkResult result) {
1228 FinishReadObject(device);
1229}
1230
1231void ThreadSafety::PreCallRecordDestroySampler(
1232 VkDevice device,
1233 VkSampler sampler,
1234 const VkAllocationCallbacks* pAllocator) {
1235 StartReadObject(device);
1236 StartWriteObject(sampler);
1237 // Host access to sampler must be externally synchronized
1238}
1239
1240void ThreadSafety::PostCallRecordDestroySampler(
1241 VkDevice device,
1242 VkSampler sampler,
1243 const VkAllocationCallbacks* pAllocator) {
1244 FinishReadObject(device);
1245 FinishWriteObject(sampler);
1246 // Host access to sampler must be externally synchronized
1247}
1248
1249void ThreadSafety::PreCallRecordCreateDescriptorSetLayout(
1250 VkDevice device,
1251 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1252 const VkAllocationCallbacks* pAllocator,
1253 VkDescriptorSetLayout* pSetLayout) {
1254 StartReadObject(device);
1255}
1256
1257void ThreadSafety::PostCallRecordCreateDescriptorSetLayout(
1258 VkDevice device,
1259 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1260 const VkAllocationCallbacks* pAllocator,
1261 VkDescriptorSetLayout* pSetLayout,
1262 VkResult result) {
1263 FinishReadObject(device);
1264}
1265
1266void ThreadSafety::PreCallRecordDestroyDescriptorSetLayout(
1267 VkDevice device,
1268 VkDescriptorSetLayout descriptorSetLayout,
1269 const VkAllocationCallbacks* pAllocator) {
1270 StartReadObject(device);
1271 StartWriteObject(descriptorSetLayout);
1272 // Host access to descriptorSetLayout must be externally synchronized
1273}
1274
1275void ThreadSafety::PostCallRecordDestroyDescriptorSetLayout(
1276 VkDevice device,
1277 VkDescriptorSetLayout descriptorSetLayout,
1278 const VkAllocationCallbacks* pAllocator) {
1279 FinishReadObject(device);
1280 FinishWriteObject(descriptorSetLayout);
1281 // Host access to descriptorSetLayout must be externally synchronized
1282}
1283
1284void ThreadSafety::PreCallRecordCreateDescriptorPool(
1285 VkDevice device,
1286 const VkDescriptorPoolCreateInfo* pCreateInfo,
1287 const VkAllocationCallbacks* pAllocator,
1288 VkDescriptorPool* pDescriptorPool) {
1289 StartReadObject(device);
1290}
1291
1292void ThreadSafety::PostCallRecordCreateDescriptorPool(
1293 VkDevice device,
1294 const VkDescriptorPoolCreateInfo* pCreateInfo,
1295 const VkAllocationCallbacks* pAllocator,
1296 VkDescriptorPool* pDescriptorPool,
1297 VkResult result) {
1298 FinishReadObject(device);
1299}
1300
1301void ThreadSafety::PreCallRecordDestroyDescriptorPool(
1302 VkDevice device,
1303 VkDescriptorPool descriptorPool,
1304 const VkAllocationCallbacks* pAllocator) {
1305 StartReadObject(device);
1306 StartWriteObject(descriptorPool);
1307 // Host access to descriptorPool must be externally synchronized
1308}
1309
1310void ThreadSafety::PostCallRecordDestroyDescriptorPool(
1311 VkDevice device,
1312 VkDescriptorPool descriptorPool,
1313 const VkAllocationCallbacks* pAllocator) {
1314 FinishReadObject(device);
1315 FinishWriteObject(descriptorPool);
1316 // Host access to descriptorPool must be externally synchronized
1317}
1318
1319void ThreadSafety::PreCallRecordResetDescriptorPool(
1320 VkDevice device,
1321 VkDescriptorPool descriptorPool,
1322 VkDescriptorPoolResetFlags flags) {
1323 StartReadObject(device);
1324 StartWriteObject(descriptorPool);
1325 // Host access to descriptorPool must be externally synchronized
1326 // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses
1327}
1328
1329void ThreadSafety::PostCallRecordResetDescriptorPool(
1330 VkDevice device,
1331 VkDescriptorPool descriptorPool,
1332 VkDescriptorPoolResetFlags flags,
1333 VkResult result) {
1334 FinishReadObject(device);
1335 FinishWriteObject(descriptorPool);
1336 // Host access to descriptorPool must be externally synchronized
1337 // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses
1338}
1339
1340void ThreadSafety::PreCallRecordFreeDescriptorSets(
1341 VkDevice device,
1342 VkDescriptorPool descriptorPool,
1343 uint32_t descriptorSetCount,
1344 const VkDescriptorSet* pDescriptorSets) {
1345 StartReadObject(device);
1346 StartWriteObject(descriptorPool);
1347 if (pDescriptorSets) {
1348 for (uint32_t index=0; index < descriptorSetCount; index++) {
1349 StartWriteObject(pDescriptorSets[index]);
1350 }
1351 }
1352 // Host access to descriptorPool must be externally synchronized
1353 // Host access to each member of pDescriptorSets must be externally synchronized
1354}
1355
1356void ThreadSafety::PostCallRecordFreeDescriptorSets(
1357 VkDevice device,
1358 VkDescriptorPool descriptorPool,
1359 uint32_t descriptorSetCount,
1360 const VkDescriptorSet* pDescriptorSets,
1361 VkResult result) {
1362 FinishReadObject(device);
1363 FinishWriteObject(descriptorPool);
1364 if (pDescriptorSets) {
1365 for (uint32_t index=0; index < descriptorSetCount; index++) {
1366 FinishWriteObject(pDescriptorSets[index]);
1367 }
1368 }
1369 // Host access to descriptorPool must be externally synchronized
1370 // Host access to each member of pDescriptorSets must be externally synchronized
1371}
1372
1373void ThreadSafety::PreCallRecordUpdateDescriptorSets(
1374 VkDevice device,
1375 uint32_t descriptorWriteCount,
1376 const VkWriteDescriptorSet* pDescriptorWrites,
1377 uint32_t descriptorCopyCount,
1378 const VkCopyDescriptorSet* pDescriptorCopies) {
1379 StartReadObject(device);
1380 if (pDescriptorWrites) {
1381 for (uint32_t index=0; index < descriptorWriteCount; index++) {
1382 StartWriteObject(pDescriptorWrites[index].dstSet);
1383 }
1384 }
1385 if (pDescriptorCopies) {
1386 for (uint32_t index=0; index < descriptorCopyCount; index++) {
1387 StartWriteObject(pDescriptorCopies[index].dstSet);
1388 }
1389 }
1390 // Host access to pDescriptorWrites[].dstSet must be externally synchronized
1391 // Host access to pDescriptorCopies[].dstSet must be externally synchronized
1392}
1393
1394void ThreadSafety::PostCallRecordUpdateDescriptorSets(
1395 VkDevice device,
1396 uint32_t descriptorWriteCount,
1397 const VkWriteDescriptorSet* pDescriptorWrites,
1398 uint32_t descriptorCopyCount,
1399 const VkCopyDescriptorSet* pDescriptorCopies) {
1400 FinishReadObject(device);
1401 if (pDescriptorWrites) {
1402 for (uint32_t index=0; index < descriptorWriteCount; index++) {
1403 FinishWriteObject(pDescriptorWrites[index].dstSet);
1404 }
1405 }
1406 if (pDescriptorCopies) {
1407 for (uint32_t index=0; index < descriptorCopyCount; index++) {
1408 FinishWriteObject(pDescriptorCopies[index].dstSet);
1409 }
1410 }
1411 // Host access to pDescriptorWrites[].dstSet must be externally synchronized
1412 // Host access to pDescriptorCopies[].dstSet must be externally synchronized
1413}
1414
1415void ThreadSafety::PreCallRecordCreateFramebuffer(
1416 VkDevice device,
1417 const VkFramebufferCreateInfo* pCreateInfo,
1418 const VkAllocationCallbacks* pAllocator,
1419 VkFramebuffer* pFramebuffer) {
1420 StartReadObject(device);
1421}
1422
1423void ThreadSafety::PostCallRecordCreateFramebuffer(
1424 VkDevice device,
1425 const VkFramebufferCreateInfo* pCreateInfo,
1426 const VkAllocationCallbacks* pAllocator,
1427 VkFramebuffer* pFramebuffer,
1428 VkResult result) {
1429 FinishReadObject(device);
1430}
1431
1432void ThreadSafety::PreCallRecordDestroyFramebuffer(
1433 VkDevice device,
1434 VkFramebuffer framebuffer,
1435 const VkAllocationCallbacks* pAllocator) {
1436 StartReadObject(device);
1437 StartWriteObject(framebuffer);
1438 // Host access to framebuffer must be externally synchronized
1439}
1440
1441void ThreadSafety::PostCallRecordDestroyFramebuffer(
1442 VkDevice device,
1443 VkFramebuffer framebuffer,
1444 const VkAllocationCallbacks* pAllocator) {
1445 FinishReadObject(device);
1446 FinishWriteObject(framebuffer);
1447 // Host access to framebuffer must be externally synchronized
1448}
1449
1450void ThreadSafety::PreCallRecordCreateRenderPass(
1451 VkDevice device,
1452 const VkRenderPassCreateInfo* pCreateInfo,
1453 const VkAllocationCallbacks* pAllocator,
1454 VkRenderPass* pRenderPass) {
1455 StartReadObject(device);
1456}
1457
1458void ThreadSafety::PostCallRecordCreateRenderPass(
1459 VkDevice device,
1460 const VkRenderPassCreateInfo* pCreateInfo,
1461 const VkAllocationCallbacks* pAllocator,
1462 VkRenderPass* pRenderPass,
1463 VkResult result) {
1464 FinishReadObject(device);
1465}
1466
1467void ThreadSafety::PreCallRecordDestroyRenderPass(
1468 VkDevice device,
1469 VkRenderPass renderPass,
1470 const VkAllocationCallbacks* pAllocator) {
1471 StartReadObject(device);
1472 StartWriteObject(renderPass);
1473 // Host access to renderPass must be externally synchronized
1474}
1475
1476void ThreadSafety::PostCallRecordDestroyRenderPass(
1477 VkDevice device,
1478 VkRenderPass renderPass,
1479 const VkAllocationCallbacks* pAllocator) {
1480 FinishReadObject(device);
1481 FinishWriteObject(renderPass);
1482 // Host access to renderPass must be externally synchronized
1483}
1484
1485void ThreadSafety::PreCallRecordGetRenderAreaGranularity(
1486 VkDevice device,
1487 VkRenderPass renderPass,
1488 VkExtent2D* pGranularity) {
1489 StartReadObject(device);
1490 StartReadObject(renderPass);
1491}
1492
1493void ThreadSafety::PostCallRecordGetRenderAreaGranularity(
1494 VkDevice device,
1495 VkRenderPass renderPass,
1496 VkExtent2D* pGranularity) {
1497 FinishReadObject(device);
1498 FinishReadObject(renderPass);
1499}
1500
1501void ThreadSafety::PreCallRecordCreateCommandPool(
1502 VkDevice device,
1503 const VkCommandPoolCreateInfo* pCreateInfo,
1504 const VkAllocationCallbacks* pAllocator,
1505 VkCommandPool* pCommandPool) {
1506 StartReadObject(device);
1507}
1508
1509void ThreadSafety::PostCallRecordCreateCommandPool(
1510 VkDevice device,
1511 const VkCommandPoolCreateInfo* pCreateInfo,
1512 const VkAllocationCallbacks* pAllocator,
1513 VkCommandPool* pCommandPool,
1514 VkResult result) {
1515 FinishReadObject(device);
1516}
1517
1518void ThreadSafety::PreCallRecordBeginCommandBuffer(
1519 VkCommandBuffer commandBuffer,
1520 const VkCommandBufferBeginInfo* pBeginInfo) {
1521 StartWriteObject(commandBuffer);
1522 // Host access to commandBuffer must be externally synchronized
1523 // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses
1524}
1525
1526void ThreadSafety::PostCallRecordBeginCommandBuffer(
1527 VkCommandBuffer commandBuffer,
1528 const VkCommandBufferBeginInfo* pBeginInfo,
1529 VkResult result) {
1530 FinishWriteObject(commandBuffer);
1531 // Host access to commandBuffer must be externally synchronized
1532 // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses
1533}
1534
1535void ThreadSafety::PreCallRecordEndCommandBuffer(
1536 VkCommandBuffer commandBuffer) {
1537 StartWriteObject(commandBuffer);
1538 // Host access to commandBuffer must be externally synchronized
1539 // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses
1540}
1541
1542void ThreadSafety::PostCallRecordEndCommandBuffer(
1543 VkCommandBuffer commandBuffer,
1544 VkResult result) {
1545 FinishWriteObject(commandBuffer);
1546 // Host access to commandBuffer must be externally synchronized
1547 // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses
1548}
1549
1550void ThreadSafety::PreCallRecordResetCommandBuffer(
1551 VkCommandBuffer commandBuffer,
1552 VkCommandBufferResetFlags flags) {
1553 StartWriteObject(commandBuffer);
1554 // Host access to commandBuffer must be externally synchronized
1555}
1556
1557void ThreadSafety::PostCallRecordResetCommandBuffer(
1558 VkCommandBuffer commandBuffer,
1559 VkCommandBufferResetFlags flags,
1560 VkResult result) {
1561 FinishWriteObject(commandBuffer);
1562 // Host access to commandBuffer must be externally synchronized
1563}
1564
1565void ThreadSafety::PreCallRecordCmdBindPipeline(
1566 VkCommandBuffer commandBuffer,
1567 VkPipelineBindPoint pipelineBindPoint,
1568 VkPipeline pipeline) {
1569 StartWriteObject(commandBuffer);
1570 StartReadObject(pipeline);
1571 // Host access to commandBuffer must be externally synchronized
1572}
1573
1574void ThreadSafety::PostCallRecordCmdBindPipeline(
1575 VkCommandBuffer commandBuffer,
1576 VkPipelineBindPoint pipelineBindPoint,
1577 VkPipeline pipeline) {
1578 FinishWriteObject(commandBuffer);
1579 FinishReadObject(pipeline);
1580 // Host access to commandBuffer must be externally synchronized
1581}
1582
1583void ThreadSafety::PreCallRecordCmdSetViewport(
1584 VkCommandBuffer commandBuffer,
1585 uint32_t firstViewport,
1586 uint32_t viewportCount,
1587 const VkViewport* pViewports) {
1588 StartWriteObject(commandBuffer);
1589 // Host access to commandBuffer must be externally synchronized
1590}
1591
1592void ThreadSafety::PostCallRecordCmdSetViewport(
1593 VkCommandBuffer commandBuffer,
1594 uint32_t firstViewport,
1595 uint32_t viewportCount,
1596 const VkViewport* pViewports) {
1597 FinishWriteObject(commandBuffer);
1598 // Host access to commandBuffer must be externally synchronized
1599}
1600
1601void ThreadSafety::PreCallRecordCmdSetScissor(
1602 VkCommandBuffer commandBuffer,
1603 uint32_t firstScissor,
1604 uint32_t scissorCount,
1605 const VkRect2D* pScissors) {
1606 StartWriteObject(commandBuffer);
1607 // Host access to commandBuffer must be externally synchronized
1608}
1609
1610void ThreadSafety::PostCallRecordCmdSetScissor(
1611 VkCommandBuffer commandBuffer,
1612 uint32_t firstScissor,
1613 uint32_t scissorCount,
1614 const VkRect2D* pScissors) {
1615 FinishWriteObject(commandBuffer);
1616 // Host access to commandBuffer must be externally synchronized
1617}
1618
1619void ThreadSafety::PreCallRecordCmdSetLineWidth(
1620 VkCommandBuffer commandBuffer,
1621 float lineWidth) {
1622 StartWriteObject(commandBuffer);
1623 // Host access to commandBuffer must be externally synchronized
1624}
1625
1626void ThreadSafety::PostCallRecordCmdSetLineWidth(
1627 VkCommandBuffer commandBuffer,
1628 float lineWidth) {
1629 FinishWriteObject(commandBuffer);
1630 // Host access to commandBuffer must be externally synchronized
1631}
1632
1633void ThreadSafety::PreCallRecordCmdSetDepthBias(
1634 VkCommandBuffer commandBuffer,
1635 float depthBiasConstantFactor,
1636 float depthBiasClamp,
1637 float depthBiasSlopeFactor) {
1638 StartWriteObject(commandBuffer);
1639 // Host access to commandBuffer must be externally synchronized
1640}
1641
1642void ThreadSafety::PostCallRecordCmdSetDepthBias(
1643 VkCommandBuffer commandBuffer,
1644 float depthBiasConstantFactor,
1645 float depthBiasClamp,
1646 float depthBiasSlopeFactor) {
1647 FinishWriteObject(commandBuffer);
1648 // Host access to commandBuffer must be externally synchronized
1649}
1650
1651void ThreadSafety::PreCallRecordCmdSetBlendConstants(
1652 VkCommandBuffer commandBuffer,
1653 const float blendConstants[4]) {
1654 StartWriteObject(commandBuffer);
1655 // Host access to commandBuffer must be externally synchronized
1656}
1657
1658void ThreadSafety::PostCallRecordCmdSetBlendConstants(
1659 VkCommandBuffer commandBuffer,
1660 const float blendConstants[4]) {
1661 FinishWriteObject(commandBuffer);
1662 // Host access to commandBuffer must be externally synchronized
1663}
1664
1665void ThreadSafety::PreCallRecordCmdSetDepthBounds(
1666 VkCommandBuffer commandBuffer,
1667 float minDepthBounds,
1668 float maxDepthBounds) {
1669 StartWriteObject(commandBuffer);
1670 // Host access to commandBuffer must be externally synchronized
1671}
1672
1673void ThreadSafety::PostCallRecordCmdSetDepthBounds(
1674 VkCommandBuffer commandBuffer,
1675 float minDepthBounds,
1676 float maxDepthBounds) {
1677 FinishWriteObject(commandBuffer);
1678 // Host access to commandBuffer must be externally synchronized
1679}
1680
1681void ThreadSafety::PreCallRecordCmdSetStencilCompareMask(
1682 VkCommandBuffer commandBuffer,
1683 VkStencilFaceFlags faceMask,
1684 uint32_t compareMask) {
1685 StartWriteObject(commandBuffer);
1686 // Host access to commandBuffer must be externally synchronized
1687}
1688
1689void ThreadSafety::PostCallRecordCmdSetStencilCompareMask(
1690 VkCommandBuffer commandBuffer,
1691 VkStencilFaceFlags faceMask,
1692 uint32_t compareMask) {
1693 FinishWriteObject(commandBuffer);
1694 // Host access to commandBuffer must be externally synchronized
1695}
1696
1697void ThreadSafety::PreCallRecordCmdSetStencilWriteMask(
1698 VkCommandBuffer commandBuffer,
1699 VkStencilFaceFlags faceMask,
1700 uint32_t writeMask) {
1701 StartWriteObject(commandBuffer);
1702 // Host access to commandBuffer must be externally synchronized
1703}
1704
1705void ThreadSafety::PostCallRecordCmdSetStencilWriteMask(
1706 VkCommandBuffer commandBuffer,
1707 VkStencilFaceFlags faceMask,
1708 uint32_t writeMask) {
1709 FinishWriteObject(commandBuffer);
1710 // Host access to commandBuffer must be externally synchronized
1711}
1712
1713void ThreadSafety::PreCallRecordCmdSetStencilReference(
1714 VkCommandBuffer commandBuffer,
1715 VkStencilFaceFlags faceMask,
1716 uint32_t reference) {
1717 StartWriteObject(commandBuffer);
1718 // Host access to commandBuffer must be externally synchronized
1719}
1720
1721void ThreadSafety::PostCallRecordCmdSetStencilReference(
1722 VkCommandBuffer commandBuffer,
1723 VkStencilFaceFlags faceMask,
1724 uint32_t reference) {
1725 FinishWriteObject(commandBuffer);
1726 // Host access to commandBuffer must be externally synchronized
1727}
1728
1729void ThreadSafety::PreCallRecordCmdBindDescriptorSets(
1730 VkCommandBuffer commandBuffer,
1731 VkPipelineBindPoint pipelineBindPoint,
1732 VkPipelineLayout layout,
1733 uint32_t firstSet,
1734 uint32_t descriptorSetCount,
1735 const VkDescriptorSet* pDescriptorSets,
1736 uint32_t dynamicOffsetCount,
1737 const uint32_t* pDynamicOffsets) {
1738 StartWriteObject(commandBuffer);
1739 StartReadObject(layout);
1740 if (pDescriptorSets) {
1741 for (uint32_t index = 0; index < descriptorSetCount; index++) {
1742 StartReadObject(pDescriptorSets[index]);
1743 }
1744 }
1745 // Host access to commandBuffer must be externally synchronized
1746}
1747
1748void ThreadSafety::PostCallRecordCmdBindDescriptorSets(
1749 VkCommandBuffer commandBuffer,
1750 VkPipelineBindPoint pipelineBindPoint,
1751 VkPipelineLayout layout,
1752 uint32_t firstSet,
1753 uint32_t descriptorSetCount,
1754 const VkDescriptorSet* pDescriptorSets,
1755 uint32_t dynamicOffsetCount,
1756 const uint32_t* pDynamicOffsets) {
1757 FinishWriteObject(commandBuffer);
1758 FinishReadObject(layout);
1759 if (pDescriptorSets) {
1760 for (uint32_t index = 0; index < descriptorSetCount; index++) {
1761 FinishReadObject(pDescriptorSets[index]);
1762 }
1763 }
1764 // Host access to commandBuffer must be externally synchronized
1765}
1766
1767void ThreadSafety::PreCallRecordCmdBindIndexBuffer(
1768 VkCommandBuffer commandBuffer,
1769 VkBuffer buffer,
1770 VkDeviceSize offset,
1771 VkIndexType indexType) {
1772 StartWriteObject(commandBuffer);
1773 StartReadObject(buffer);
1774 // Host access to commandBuffer must be externally synchronized
1775}
1776
1777void ThreadSafety::PostCallRecordCmdBindIndexBuffer(
1778 VkCommandBuffer commandBuffer,
1779 VkBuffer buffer,
1780 VkDeviceSize offset,
1781 VkIndexType indexType) {
1782 FinishWriteObject(commandBuffer);
1783 FinishReadObject(buffer);
1784 // Host access to commandBuffer must be externally synchronized
1785}
1786
1787void ThreadSafety::PreCallRecordCmdBindVertexBuffers(
1788 VkCommandBuffer commandBuffer,
1789 uint32_t firstBinding,
1790 uint32_t bindingCount,
1791 const VkBuffer* pBuffers,
1792 const VkDeviceSize* pOffsets) {
1793 StartWriteObject(commandBuffer);
1794 if (pBuffers) {
1795 for (uint32_t index = 0; index < bindingCount; index++) {
1796 StartReadObject(pBuffers[index]);
1797 }
1798 }
1799 // Host access to commandBuffer must be externally synchronized
1800}
1801
1802void ThreadSafety::PostCallRecordCmdBindVertexBuffers(
1803 VkCommandBuffer commandBuffer,
1804 uint32_t firstBinding,
1805 uint32_t bindingCount,
1806 const VkBuffer* pBuffers,
1807 const VkDeviceSize* pOffsets) {
1808 FinishWriteObject(commandBuffer);
1809 if (pBuffers) {
1810 for (uint32_t index = 0; index < bindingCount; index++) {
1811 FinishReadObject(pBuffers[index]);
1812 }
1813 }
1814 // Host access to commandBuffer must be externally synchronized
1815}
1816
1817void ThreadSafety::PreCallRecordCmdDraw(
1818 VkCommandBuffer commandBuffer,
1819 uint32_t vertexCount,
1820 uint32_t instanceCount,
1821 uint32_t firstVertex,
1822 uint32_t firstInstance) {
1823 StartWriteObject(commandBuffer);
1824 // Host access to commandBuffer must be externally synchronized
1825}
1826
1827void ThreadSafety::PostCallRecordCmdDraw(
1828 VkCommandBuffer commandBuffer,
1829 uint32_t vertexCount,
1830 uint32_t instanceCount,
1831 uint32_t firstVertex,
1832 uint32_t firstInstance) {
1833 FinishWriteObject(commandBuffer);
1834 // Host access to commandBuffer must be externally synchronized
1835}
1836
1837void ThreadSafety::PreCallRecordCmdDrawIndexed(
1838 VkCommandBuffer commandBuffer,
1839 uint32_t indexCount,
1840 uint32_t instanceCount,
1841 uint32_t firstIndex,
1842 int32_t vertexOffset,
1843 uint32_t firstInstance) {
1844 StartWriteObject(commandBuffer);
1845 // Host access to commandBuffer must be externally synchronized
1846}
1847
1848void ThreadSafety::PostCallRecordCmdDrawIndexed(
1849 VkCommandBuffer commandBuffer,
1850 uint32_t indexCount,
1851 uint32_t instanceCount,
1852 uint32_t firstIndex,
1853 int32_t vertexOffset,
1854 uint32_t firstInstance) {
1855 FinishWriteObject(commandBuffer);
1856 // Host access to commandBuffer must be externally synchronized
1857}
1858
1859void ThreadSafety::PreCallRecordCmdDrawIndirect(
1860 VkCommandBuffer commandBuffer,
1861 VkBuffer buffer,
1862 VkDeviceSize offset,
1863 uint32_t drawCount,
1864 uint32_t stride) {
1865 StartWriteObject(commandBuffer);
1866 StartReadObject(buffer);
1867 // Host access to commandBuffer must be externally synchronized
1868}
1869
1870void ThreadSafety::PostCallRecordCmdDrawIndirect(
1871 VkCommandBuffer commandBuffer,
1872 VkBuffer buffer,
1873 VkDeviceSize offset,
1874 uint32_t drawCount,
1875 uint32_t stride) {
1876 FinishWriteObject(commandBuffer);
1877 FinishReadObject(buffer);
1878 // Host access to commandBuffer must be externally synchronized
1879}
1880
1881void ThreadSafety::PreCallRecordCmdDrawIndexedIndirect(
1882 VkCommandBuffer commandBuffer,
1883 VkBuffer buffer,
1884 VkDeviceSize offset,
1885 uint32_t drawCount,
1886 uint32_t stride) {
1887 StartWriteObject(commandBuffer);
1888 StartReadObject(buffer);
1889 // Host access to commandBuffer must be externally synchronized
1890}
1891
1892void ThreadSafety::PostCallRecordCmdDrawIndexedIndirect(
1893 VkCommandBuffer commandBuffer,
1894 VkBuffer buffer,
1895 VkDeviceSize offset,
1896 uint32_t drawCount,
1897 uint32_t stride) {
1898 FinishWriteObject(commandBuffer);
1899 FinishReadObject(buffer);
1900 // Host access to commandBuffer must be externally synchronized
1901}
1902
1903void ThreadSafety::PreCallRecordCmdDispatch(
1904 VkCommandBuffer commandBuffer,
1905 uint32_t groupCountX,
1906 uint32_t groupCountY,
1907 uint32_t groupCountZ) {
1908 StartWriteObject(commandBuffer);
1909 // Host access to commandBuffer must be externally synchronized
1910}
1911
1912void ThreadSafety::PostCallRecordCmdDispatch(
1913 VkCommandBuffer commandBuffer,
1914 uint32_t groupCountX,
1915 uint32_t groupCountY,
1916 uint32_t groupCountZ) {
1917 FinishWriteObject(commandBuffer);
1918 // Host access to commandBuffer must be externally synchronized
1919}
1920
1921void ThreadSafety::PreCallRecordCmdDispatchIndirect(
1922 VkCommandBuffer commandBuffer,
1923 VkBuffer buffer,
1924 VkDeviceSize offset) {
1925 StartWriteObject(commandBuffer);
1926 StartReadObject(buffer);
1927 // Host access to commandBuffer must be externally synchronized
1928}
1929
1930void ThreadSafety::PostCallRecordCmdDispatchIndirect(
1931 VkCommandBuffer commandBuffer,
1932 VkBuffer buffer,
1933 VkDeviceSize offset) {
1934 FinishWriteObject(commandBuffer);
1935 FinishReadObject(buffer);
1936 // Host access to commandBuffer must be externally synchronized
1937}
1938
1939void ThreadSafety::PreCallRecordCmdCopyBuffer(
1940 VkCommandBuffer commandBuffer,
1941 VkBuffer srcBuffer,
1942 VkBuffer dstBuffer,
1943 uint32_t regionCount,
1944 const VkBufferCopy* pRegions) {
1945 StartWriteObject(commandBuffer);
1946 StartReadObject(srcBuffer);
1947 StartReadObject(dstBuffer);
1948 // Host access to commandBuffer must be externally synchronized
1949}
1950
1951void ThreadSafety::PostCallRecordCmdCopyBuffer(
1952 VkCommandBuffer commandBuffer,
1953 VkBuffer srcBuffer,
1954 VkBuffer dstBuffer,
1955 uint32_t regionCount,
1956 const VkBufferCopy* pRegions) {
1957 FinishWriteObject(commandBuffer);
1958 FinishReadObject(srcBuffer);
1959 FinishReadObject(dstBuffer);
1960 // Host access to commandBuffer must be externally synchronized
1961}
1962
1963void ThreadSafety::PreCallRecordCmdCopyImage(
1964 VkCommandBuffer commandBuffer,
1965 VkImage srcImage,
1966 VkImageLayout srcImageLayout,
1967 VkImage dstImage,
1968 VkImageLayout dstImageLayout,
1969 uint32_t regionCount,
1970 const VkImageCopy* pRegions) {
1971 StartWriteObject(commandBuffer);
1972 StartReadObject(srcImage);
1973 StartReadObject(dstImage);
1974 // Host access to commandBuffer must be externally synchronized
1975}
1976
1977void ThreadSafety::PostCallRecordCmdCopyImage(
1978 VkCommandBuffer commandBuffer,
1979 VkImage srcImage,
1980 VkImageLayout srcImageLayout,
1981 VkImage dstImage,
1982 VkImageLayout dstImageLayout,
1983 uint32_t regionCount,
1984 const VkImageCopy* pRegions) {
1985 FinishWriteObject(commandBuffer);
1986 FinishReadObject(srcImage);
1987 FinishReadObject(dstImage);
1988 // Host access to commandBuffer must be externally synchronized
1989}
1990
1991void ThreadSafety::PreCallRecordCmdBlitImage(
1992 VkCommandBuffer commandBuffer,
1993 VkImage srcImage,
1994 VkImageLayout srcImageLayout,
1995 VkImage dstImage,
1996 VkImageLayout dstImageLayout,
1997 uint32_t regionCount,
1998 const VkImageBlit* pRegions,
1999 VkFilter filter) {
2000 StartWriteObject(commandBuffer);
2001 StartReadObject(srcImage);
2002 StartReadObject(dstImage);
2003 // Host access to commandBuffer must be externally synchronized
2004}
2005
2006void ThreadSafety::PostCallRecordCmdBlitImage(
2007 VkCommandBuffer commandBuffer,
2008 VkImage srcImage,
2009 VkImageLayout srcImageLayout,
2010 VkImage dstImage,
2011 VkImageLayout dstImageLayout,
2012 uint32_t regionCount,
2013 const VkImageBlit* pRegions,
2014 VkFilter filter) {
2015 FinishWriteObject(commandBuffer);
2016 FinishReadObject(srcImage);
2017 FinishReadObject(dstImage);
2018 // Host access to commandBuffer must be externally synchronized
2019}
2020
2021void ThreadSafety::PreCallRecordCmdCopyBufferToImage(
2022 VkCommandBuffer commandBuffer,
2023 VkBuffer srcBuffer,
2024 VkImage dstImage,
2025 VkImageLayout dstImageLayout,
2026 uint32_t regionCount,
2027 const VkBufferImageCopy* pRegions) {
2028 StartWriteObject(commandBuffer);
2029 StartReadObject(srcBuffer);
2030 StartReadObject(dstImage);
2031 // Host access to commandBuffer must be externally synchronized
2032}
2033
2034void ThreadSafety::PostCallRecordCmdCopyBufferToImage(
2035 VkCommandBuffer commandBuffer,
2036 VkBuffer srcBuffer,
2037 VkImage dstImage,
2038 VkImageLayout dstImageLayout,
2039 uint32_t regionCount,
2040 const VkBufferImageCopy* pRegions) {
2041 FinishWriteObject(commandBuffer);
2042 FinishReadObject(srcBuffer);
2043 FinishReadObject(dstImage);
2044 // Host access to commandBuffer must be externally synchronized
2045}
2046
2047void ThreadSafety::PreCallRecordCmdCopyImageToBuffer(
2048 VkCommandBuffer commandBuffer,
2049 VkImage srcImage,
2050 VkImageLayout srcImageLayout,
2051 VkBuffer dstBuffer,
2052 uint32_t regionCount,
2053 const VkBufferImageCopy* pRegions) {
2054 StartWriteObject(commandBuffer);
2055 StartReadObject(srcImage);
2056 StartReadObject(dstBuffer);
2057 // Host access to commandBuffer must be externally synchronized
2058}
2059
2060void ThreadSafety::PostCallRecordCmdCopyImageToBuffer(
2061 VkCommandBuffer commandBuffer,
2062 VkImage srcImage,
2063 VkImageLayout srcImageLayout,
2064 VkBuffer dstBuffer,
2065 uint32_t regionCount,
2066 const VkBufferImageCopy* pRegions) {
2067 FinishWriteObject(commandBuffer);
2068 FinishReadObject(srcImage);
2069 FinishReadObject(dstBuffer);
2070 // Host access to commandBuffer must be externally synchronized
2071}
2072
2073void ThreadSafety::PreCallRecordCmdUpdateBuffer(
2074 VkCommandBuffer commandBuffer,
2075 VkBuffer dstBuffer,
2076 VkDeviceSize dstOffset,
2077 VkDeviceSize dataSize,
2078 const void* pData) {
2079 StartWriteObject(commandBuffer);
2080 StartReadObject(dstBuffer);
2081 // Host access to commandBuffer must be externally synchronized
2082}
2083
2084void ThreadSafety::PostCallRecordCmdUpdateBuffer(
2085 VkCommandBuffer commandBuffer,
2086 VkBuffer dstBuffer,
2087 VkDeviceSize dstOffset,
2088 VkDeviceSize dataSize,
2089 const void* pData) {
2090 FinishWriteObject(commandBuffer);
2091 FinishReadObject(dstBuffer);
2092 // Host access to commandBuffer must be externally synchronized
2093}
2094
2095void ThreadSafety::PreCallRecordCmdFillBuffer(
2096 VkCommandBuffer commandBuffer,
2097 VkBuffer dstBuffer,
2098 VkDeviceSize dstOffset,
2099 VkDeviceSize size,
2100 uint32_t data) {
2101 StartWriteObject(commandBuffer);
2102 StartReadObject(dstBuffer);
2103 // Host access to commandBuffer must be externally synchronized
2104}
2105
2106void ThreadSafety::PostCallRecordCmdFillBuffer(
2107 VkCommandBuffer commandBuffer,
2108 VkBuffer dstBuffer,
2109 VkDeviceSize dstOffset,
2110 VkDeviceSize size,
2111 uint32_t data) {
2112 FinishWriteObject(commandBuffer);
2113 FinishReadObject(dstBuffer);
2114 // Host access to commandBuffer must be externally synchronized
2115}
2116
2117void ThreadSafety::PreCallRecordCmdClearColorImage(
2118 VkCommandBuffer commandBuffer,
2119 VkImage image,
2120 VkImageLayout imageLayout,
2121 const VkClearColorValue* pColor,
2122 uint32_t rangeCount,
2123 const VkImageSubresourceRange* pRanges) {
2124 StartWriteObject(commandBuffer);
2125 StartReadObject(image);
2126 // Host access to commandBuffer must be externally synchronized
2127}
2128
2129void ThreadSafety::PostCallRecordCmdClearColorImage(
2130 VkCommandBuffer commandBuffer,
2131 VkImage image,
2132 VkImageLayout imageLayout,
2133 const VkClearColorValue* pColor,
2134 uint32_t rangeCount,
2135 const VkImageSubresourceRange* pRanges) {
2136 FinishWriteObject(commandBuffer);
2137 FinishReadObject(image);
2138 // Host access to commandBuffer must be externally synchronized
2139}
2140
2141void ThreadSafety::PreCallRecordCmdClearDepthStencilImage(
2142 VkCommandBuffer commandBuffer,
2143 VkImage image,
2144 VkImageLayout imageLayout,
2145 const VkClearDepthStencilValue* pDepthStencil,
2146 uint32_t rangeCount,
2147 const VkImageSubresourceRange* pRanges) {
2148 StartWriteObject(commandBuffer);
2149 StartReadObject(image);
2150 // Host access to commandBuffer must be externally synchronized
2151}
2152
2153void ThreadSafety::PostCallRecordCmdClearDepthStencilImage(
2154 VkCommandBuffer commandBuffer,
2155 VkImage image,
2156 VkImageLayout imageLayout,
2157 const VkClearDepthStencilValue* pDepthStencil,
2158 uint32_t rangeCount,
2159 const VkImageSubresourceRange* pRanges) {
2160 FinishWriteObject(commandBuffer);
2161 FinishReadObject(image);
2162 // Host access to commandBuffer must be externally synchronized
2163}
2164
2165void ThreadSafety::PreCallRecordCmdClearAttachments(
2166 VkCommandBuffer commandBuffer,
2167 uint32_t attachmentCount,
2168 const VkClearAttachment* pAttachments,
2169 uint32_t rectCount,
2170 const VkClearRect* pRects) {
2171 StartWriteObject(commandBuffer);
2172 // Host access to commandBuffer must be externally synchronized
2173}
2174
2175void ThreadSafety::PostCallRecordCmdClearAttachments(
2176 VkCommandBuffer commandBuffer,
2177 uint32_t attachmentCount,
2178 const VkClearAttachment* pAttachments,
2179 uint32_t rectCount,
2180 const VkClearRect* pRects) {
2181 FinishWriteObject(commandBuffer);
2182 // Host access to commandBuffer must be externally synchronized
2183}
2184
2185void ThreadSafety::PreCallRecordCmdResolveImage(
2186 VkCommandBuffer commandBuffer,
2187 VkImage srcImage,
2188 VkImageLayout srcImageLayout,
2189 VkImage dstImage,
2190 VkImageLayout dstImageLayout,
2191 uint32_t regionCount,
2192 const VkImageResolve* pRegions) {
2193 StartWriteObject(commandBuffer);
2194 StartReadObject(srcImage);
2195 StartReadObject(dstImage);
2196 // Host access to commandBuffer must be externally synchronized
2197}
2198
2199void ThreadSafety::PostCallRecordCmdResolveImage(
2200 VkCommandBuffer commandBuffer,
2201 VkImage srcImage,
2202 VkImageLayout srcImageLayout,
2203 VkImage dstImage,
2204 VkImageLayout dstImageLayout,
2205 uint32_t regionCount,
2206 const VkImageResolve* pRegions) {
2207 FinishWriteObject(commandBuffer);
2208 FinishReadObject(srcImage);
2209 FinishReadObject(dstImage);
2210 // Host access to commandBuffer must be externally synchronized
2211}
2212
2213void ThreadSafety::PreCallRecordCmdSetEvent(
2214 VkCommandBuffer commandBuffer,
2215 VkEvent event,
2216 VkPipelineStageFlags stageMask) {
2217 StartWriteObject(commandBuffer);
2218 StartReadObject(event);
2219 // Host access to commandBuffer must be externally synchronized
2220}
2221
2222void ThreadSafety::PostCallRecordCmdSetEvent(
2223 VkCommandBuffer commandBuffer,
2224 VkEvent event,
2225 VkPipelineStageFlags stageMask) {
2226 FinishWriteObject(commandBuffer);
2227 FinishReadObject(event);
2228 // Host access to commandBuffer must be externally synchronized
2229}
2230
2231void ThreadSafety::PreCallRecordCmdResetEvent(
2232 VkCommandBuffer commandBuffer,
2233 VkEvent event,
2234 VkPipelineStageFlags stageMask) {
2235 StartWriteObject(commandBuffer);
2236 StartReadObject(event);
2237 // Host access to commandBuffer must be externally synchronized
2238}
2239
2240void ThreadSafety::PostCallRecordCmdResetEvent(
2241 VkCommandBuffer commandBuffer,
2242 VkEvent event,
2243 VkPipelineStageFlags stageMask) {
2244 FinishWriteObject(commandBuffer);
2245 FinishReadObject(event);
2246 // Host access to commandBuffer must be externally synchronized
2247}
2248
2249void ThreadSafety::PreCallRecordCmdWaitEvents(
2250 VkCommandBuffer commandBuffer,
2251 uint32_t eventCount,
2252 const VkEvent* pEvents,
2253 VkPipelineStageFlags srcStageMask,
2254 VkPipelineStageFlags dstStageMask,
2255 uint32_t memoryBarrierCount,
2256 const VkMemoryBarrier* pMemoryBarriers,
2257 uint32_t bufferMemoryBarrierCount,
2258 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
2259 uint32_t imageMemoryBarrierCount,
2260 const VkImageMemoryBarrier* pImageMemoryBarriers) {
2261 StartWriteObject(commandBuffer);
2262 if (pEvents) {
2263 for (uint32_t index = 0; index < eventCount; index++) {
2264 StartReadObject(pEvents[index]);
2265 }
2266 }
2267 // Host access to commandBuffer must be externally synchronized
2268}
2269
2270void ThreadSafety::PostCallRecordCmdWaitEvents(
2271 VkCommandBuffer commandBuffer,
2272 uint32_t eventCount,
2273 const VkEvent* pEvents,
2274 VkPipelineStageFlags srcStageMask,
2275 VkPipelineStageFlags dstStageMask,
2276 uint32_t memoryBarrierCount,
2277 const VkMemoryBarrier* pMemoryBarriers,
2278 uint32_t bufferMemoryBarrierCount,
2279 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
2280 uint32_t imageMemoryBarrierCount,
2281 const VkImageMemoryBarrier* pImageMemoryBarriers) {
2282 FinishWriteObject(commandBuffer);
2283 if (pEvents) {
2284 for (uint32_t index = 0; index < eventCount; index++) {
2285 FinishReadObject(pEvents[index]);
2286 }
2287 }
2288 // Host access to commandBuffer must be externally synchronized
2289}
2290
2291void ThreadSafety::PreCallRecordCmdPipelineBarrier(
2292 VkCommandBuffer commandBuffer,
2293 VkPipelineStageFlags srcStageMask,
2294 VkPipelineStageFlags dstStageMask,
2295 VkDependencyFlags dependencyFlags,
2296 uint32_t memoryBarrierCount,
2297 const VkMemoryBarrier* pMemoryBarriers,
2298 uint32_t bufferMemoryBarrierCount,
2299 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
2300 uint32_t imageMemoryBarrierCount,
2301 const VkImageMemoryBarrier* pImageMemoryBarriers) {
2302 StartWriteObject(commandBuffer);
2303 // Host access to commandBuffer must be externally synchronized
2304}
2305
2306void ThreadSafety::PostCallRecordCmdPipelineBarrier(
2307 VkCommandBuffer commandBuffer,
2308 VkPipelineStageFlags srcStageMask,
2309 VkPipelineStageFlags dstStageMask,
2310 VkDependencyFlags dependencyFlags,
2311 uint32_t memoryBarrierCount,
2312 const VkMemoryBarrier* pMemoryBarriers,
2313 uint32_t bufferMemoryBarrierCount,
2314 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
2315 uint32_t imageMemoryBarrierCount,
2316 const VkImageMemoryBarrier* pImageMemoryBarriers) {
2317 FinishWriteObject(commandBuffer);
2318 // Host access to commandBuffer must be externally synchronized
2319}
2320
2321void ThreadSafety::PreCallRecordCmdBeginQuery(
2322 VkCommandBuffer commandBuffer,
2323 VkQueryPool queryPool,
2324 uint32_t query,
2325 VkQueryControlFlags flags) {
2326 StartWriteObject(commandBuffer);
2327 StartReadObject(queryPool);
2328 // Host access to commandBuffer must be externally synchronized
2329}
2330
2331void ThreadSafety::PostCallRecordCmdBeginQuery(
2332 VkCommandBuffer commandBuffer,
2333 VkQueryPool queryPool,
2334 uint32_t query,
2335 VkQueryControlFlags flags) {
2336 FinishWriteObject(commandBuffer);
2337 FinishReadObject(queryPool);
2338 // Host access to commandBuffer must be externally synchronized
2339}
2340
2341void ThreadSafety::PreCallRecordCmdEndQuery(
2342 VkCommandBuffer commandBuffer,
2343 VkQueryPool queryPool,
2344 uint32_t query) {
2345 StartWriteObject(commandBuffer);
2346 StartReadObject(queryPool);
2347 // Host access to commandBuffer must be externally synchronized
2348}
2349
2350void ThreadSafety::PostCallRecordCmdEndQuery(
2351 VkCommandBuffer commandBuffer,
2352 VkQueryPool queryPool,
2353 uint32_t query) {
2354 FinishWriteObject(commandBuffer);
2355 FinishReadObject(queryPool);
2356 // Host access to commandBuffer must be externally synchronized
2357}
2358
2359void ThreadSafety::PreCallRecordCmdResetQueryPool(
2360 VkCommandBuffer commandBuffer,
2361 VkQueryPool queryPool,
2362 uint32_t firstQuery,
2363 uint32_t queryCount) {
2364 StartWriteObject(commandBuffer);
2365 StartReadObject(queryPool);
2366 // Host access to commandBuffer must be externally synchronized
2367}
2368
2369void ThreadSafety::PostCallRecordCmdResetQueryPool(
2370 VkCommandBuffer commandBuffer,
2371 VkQueryPool queryPool,
2372 uint32_t firstQuery,
2373 uint32_t queryCount) {
2374 FinishWriteObject(commandBuffer);
2375 FinishReadObject(queryPool);
2376 // Host access to commandBuffer must be externally synchronized
2377}
2378
2379void ThreadSafety::PreCallRecordCmdWriteTimestamp(
2380 VkCommandBuffer commandBuffer,
2381 VkPipelineStageFlagBits pipelineStage,
2382 VkQueryPool queryPool,
2383 uint32_t query) {
2384 StartWriteObject(commandBuffer);
2385 StartReadObject(queryPool);
2386 // Host access to commandBuffer must be externally synchronized
2387}
2388
2389void ThreadSafety::PostCallRecordCmdWriteTimestamp(
2390 VkCommandBuffer commandBuffer,
2391 VkPipelineStageFlagBits pipelineStage,
2392 VkQueryPool queryPool,
2393 uint32_t query) {
2394 FinishWriteObject(commandBuffer);
2395 FinishReadObject(queryPool);
2396 // Host access to commandBuffer must be externally synchronized
2397}
2398
2399void ThreadSafety::PreCallRecordCmdCopyQueryPoolResults(
2400 VkCommandBuffer commandBuffer,
2401 VkQueryPool queryPool,
2402 uint32_t firstQuery,
2403 uint32_t queryCount,
2404 VkBuffer dstBuffer,
2405 VkDeviceSize dstOffset,
2406 VkDeviceSize stride,
2407 VkQueryResultFlags flags) {
2408 StartWriteObject(commandBuffer);
2409 StartReadObject(queryPool);
2410 StartReadObject(dstBuffer);
2411 // Host access to commandBuffer must be externally synchronized
2412}
2413
2414void ThreadSafety::PostCallRecordCmdCopyQueryPoolResults(
2415 VkCommandBuffer commandBuffer,
2416 VkQueryPool queryPool,
2417 uint32_t firstQuery,
2418 uint32_t queryCount,
2419 VkBuffer dstBuffer,
2420 VkDeviceSize dstOffset,
2421 VkDeviceSize stride,
2422 VkQueryResultFlags flags) {
2423 FinishWriteObject(commandBuffer);
2424 FinishReadObject(queryPool);
2425 FinishReadObject(dstBuffer);
2426 // Host access to commandBuffer must be externally synchronized
2427}
2428
2429void ThreadSafety::PreCallRecordCmdPushConstants(
2430 VkCommandBuffer commandBuffer,
2431 VkPipelineLayout layout,
2432 VkShaderStageFlags stageFlags,
2433 uint32_t offset,
2434 uint32_t size,
2435 const void* pValues) {
2436 StartWriteObject(commandBuffer);
2437 StartReadObject(layout);
2438 // Host access to commandBuffer must be externally synchronized
2439}
2440
2441void ThreadSafety::PostCallRecordCmdPushConstants(
2442 VkCommandBuffer commandBuffer,
2443 VkPipelineLayout layout,
2444 VkShaderStageFlags stageFlags,
2445 uint32_t offset,
2446 uint32_t size,
2447 const void* pValues) {
2448 FinishWriteObject(commandBuffer);
2449 FinishReadObject(layout);
2450 // Host access to commandBuffer must be externally synchronized
2451}
2452
2453void ThreadSafety::PreCallRecordCmdBeginRenderPass(
2454 VkCommandBuffer commandBuffer,
2455 const VkRenderPassBeginInfo* pRenderPassBegin,
2456 VkSubpassContents contents) {
2457 StartWriteObject(commandBuffer);
2458 // Host access to commandBuffer must be externally synchronized
2459}
2460
2461void ThreadSafety::PostCallRecordCmdBeginRenderPass(
2462 VkCommandBuffer commandBuffer,
2463 const VkRenderPassBeginInfo* pRenderPassBegin,
2464 VkSubpassContents contents) {
2465 FinishWriteObject(commandBuffer);
2466 // Host access to commandBuffer must be externally synchronized
2467}
2468
2469void ThreadSafety::PreCallRecordCmdNextSubpass(
2470 VkCommandBuffer commandBuffer,
2471 VkSubpassContents contents) {
2472 StartWriteObject(commandBuffer);
2473 // Host access to commandBuffer must be externally synchronized
2474}
2475
2476void ThreadSafety::PostCallRecordCmdNextSubpass(
2477 VkCommandBuffer commandBuffer,
2478 VkSubpassContents contents) {
2479 FinishWriteObject(commandBuffer);
2480 // Host access to commandBuffer must be externally synchronized
2481}
2482
2483void ThreadSafety::PreCallRecordCmdEndRenderPass(
2484 VkCommandBuffer commandBuffer) {
2485 StartWriteObject(commandBuffer);
2486 // Host access to commandBuffer must be externally synchronized
2487}
2488
2489void ThreadSafety::PostCallRecordCmdEndRenderPass(
2490 VkCommandBuffer commandBuffer) {
2491 FinishWriteObject(commandBuffer);
2492 // Host access to commandBuffer must be externally synchronized
2493}
2494
2495void ThreadSafety::PreCallRecordCmdExecuteCommands(
2496 VkCommandBuffer commandBuffer,
2497 uint32_t commandBufferCount,
2498 const VkCommandBuffer* pCommandBuffers) {
2499 StartWriteObject(commandBuffer);
2500 if (pCommandBuffers) {
2501 for (uint32_t index = 0; index < commandBufferCount; index++) {
2502 StartReadObject(pCommandBuffers[index]);
2503 }
2504 }
2505 // Host access to commandBuffer must be externally synchronized
2506}
2507
2508void ThreadSafety::PostCallRecordCmdExecuteCommands(
2509 VkCommandBuffer commandBuffer,
2510 uint32_t commandBufferCount,
2511 const VkCommandBuffer* pCommandBuffers) {
2512 FinishWriteObject(commandBuffer);
2513 if (pCommandBuffers) {
2514 for (uint32_t index = 0; index < commandBufferCount; index++) {
2515 FinishReadObject(pCommandBuffers[index]);
2516 }
2517 }
2518 // Host access to commandBuffer must be externally synchronized
2519}
2520
2521void ThreadSafety::PreCallRecordBindBufferMemory2(
2522 VkDevice device,
2523 uint32_t bindInfoCount,
2524 const VkBindBufferMemoryInfo* pBindInfos) {
2525 StartReadObject(device);
2526}
2527
2528void ThreadSafety::PostCallRecordBindBufferMemory2(
2529 VkDevice device,
2530 uint32_t bindInfoCount,
2531 const VkBindBufferMemoryInfo* pBindInfos,
2532 VkResult result) {
2533 FinishReadObject(device);
2534}
2535
2536void ThreadSafety::PreCallRecordBindImageMemory2(
2537 VkDevice device,
2538 uint32_t bindInfoCount,
2539 const VkBindImageMemoryInfo* pBindInfos) {
2540 StartReadObject(device);
2541}
2542
2543void ThreadSafety::PostCallRecordBindImageMemory2(
2544 VkDevice device,
2545 uint32_t bindInfoCount,
2546 const VkBindImageMemoryInfo* pBindInfos,
2547 VkResult result) {
2548 FinishReadObject(device);
2549}
2550
2551void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeatures(
2552 VkDevice device,
2553 uint32_t heapIndex,
2554 uint32_t localDeviceIndex,
2555 uint32_t remoteDeviceIndex,
2556 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
2557 StartReadObject(device);
2558}
2559
2560void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeatures(
2561 VkDevice device,
2562 uint32_t heapIndex,
2563 uint32_t localDeviceIndex,
2564 uint32_t remoteDeviceIndex,
2565 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
2566 FinishReadObject(device);
2567}
2568
2569void ThreadSafety::PreCallRecordCmdSetDeviceMask(
2570 VkCommandBuffer commandBuffer,
2571 uint32_t deviceMask) {
2572 StartWriteObject(commandBuffer);
2573 // Host access to commandBuffer must be externally synchronized
2574}
2575
2576void ThreadSafety::PostCallRecordCmdSetDeviceMask(
2577 VkCommandBuffer commandBuffer,
2578 uint32_t deviceMask) {
2579 FinishWriteObject(commandBuffer);
2580 // Host access to commandBuffer must be externally synchronized
2581}
2582
2583void ThreadSafety::PreCallRecordCmdDispatchBase(
2584 VkCommandBuffer commandBuffer,
2585 uint32_t baseGroupX,
2586 uint32_t baseGroupY,
2587 uint32_t baseGroupZ,
2588 uint32_t groupCountX,
2589 uint32_t groupCountY,
2590 uint32_t groupCountZ) {
2591 StartWriteObject(commandBuffer);
2592 // Host access to commandBuffer must be externally synchronized
2593}
2594
2595void ThreadSafety::PostCallRecordCmdDispatchBase(
2596 VkCommandBuffer commandBuffer,
2597 uint32_t baseGroupX,
2598 uint32_t baseGroupY,
2599 uint32_t baseGroupZ,
2600 uint32_t groupCountX,
2601 uint32_t groupCountY,
2602 uint32_t groupCountZ) {
2603 FinishWriteObject(commandBuffer);
2604 // Host access to commandBuffer must be externally synchronized
2605}
2606
2607void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroups(
2608 VkInstance instance,
2609 uint32_t* pPhysicalDeviceGroupCount,
2610 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
2611 StartReadObject(instance);
2612}
2613
2614void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroups(
2615 VkInstance instance,
2616 uint32_t* pPhysicalDeviceGroupCount,
2617 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties,
2618 VkResult result) {
2619 FinishReadObject(instance);
2620}
2621
2622void ThreadSafety::PreCallRecordGetImageMemoryRequirements2(
2623 VkDevice device,
2624 const VkImageMemoryRequirementsInfo2* pInfo,
2625 VkMemoryRequirements2* pMemoryRequirements) {
2626 StartReadObject(device);
2627}
2628
2629void ThreadSafety::PostCallRecordGetImageMemoryRequirements2(
2630 VkDevice device,
2631 const VkImageMemoryRequirementsInfo2* pInfo,
2632 VkMemoryRequirements2* pMemoryRequirements) {
2633 FinishReadObject(device);
2634}
2635
2636void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2(
2637 VkDevice device,
2638 const VkBufferMemoryRequirementsInfo2* pInfo,
2639 VkMemoryRequirements2* pMemoryRequirements) {
2640 StartReadObject(device);
2641}
2642
2643void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2(
2644 VkDevice device,
2645 const VkBufferMemoryRequirementsInfo2* pInfo,
2646 VkMemoryRequirements2* pMemoryRequirements) {
2647 FinishReadObject(device);
2648}
2649
2650void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2(
2651 VkDevice device,
2652 const VkImageSparseMemoryRequirementsInfo2* pInfo,
2653 uint32_t* pSparseMemoryRequirementCount,
2654 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
2655 StartReadObject(device);
2656}
2657
2658void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2(
2659 VkDevice device,
2660 const VkImageSparseMemoryRequirementsInfo2* pInfo,
2661 uint32_t* pSparseMemoryRequirementCount,
2662 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
2663 FinishReadObject(device);
2664}
2665
2666void ThreadSafety::PreCallRecordTrimCommandPool(
2667 VkDevice device,
2668 VkCommandPool commandPool,
2669 VkCommandPoolTrimFlags flags) {
2670 StartReadObject(device);
2671 StartWriteObject(commandPool);
2672 // Host access to commandPool must be externally synchronized
2673}
2674
2675void ThreadSafety::PostCallRecordTrimCommandPool(
2676 VkDevice device,
2677 VkCommandPool commandPool,
2678 VkCommandPoolTrimFlags flags) {
2679 FinishReadObject(device);
2680 FinishWriteObject(commandPool);
2681 // Host access to commandPool must be externally synchronized
2682}
2683
2684void ThreadSafety::PreCallRecordGetDeviceQueue2(
2685 VkDevice device,
2686 const VkDeviceQueueInfo2* pQueueInfo,
2687 VkQueue* pQueue) {
2688 StartReadObject(device);
2689}
2690
2691void ThreadSafety::PostCallRecordGetDeviceQueue2(
2692 VkDevice device,
2693 const VkDeviceQueueInfo2* pQueueInfo,
2694 VkQueue* pQueue) {
2695 FinishReadObject(device);
2696}
2697
2698void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversion(
2699 VkDevice device,
2700 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
2701 const VkAllocationCallbacks* pAllocator,
2702 VkSamplerYcbcrConversion* pYcbcrConversion) {
2703 StartReadObject(device);
2704}
2705
2706void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversion(
2707 VkDevice device,
2708 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
2709 const VkAllocationCallbacks* pAllocator,
2710 VkSamplerYcbcrConversion* pYcbcrConversion,
2711 VkResult result) {
2712 FinishReadObject(device);
2713}
2714
2715void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversion(
2716 VkDevice device,
2717 VkSamplerYcbcrConversion ycbcrConversion,
2718 const VkAllocationCallbacks* pAllocator) {
2719 StartReadObject(device);
2720 StartWriteObject(ycbcrConversion);
2721 // Host access to ycbcrConversion must be externally synchronized
2722}
2723
2724void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversion(
2725 VkDevice device,
2726 VkSamplerYcbcrConversion ycbcrConversion,
2727 const VkAllocationCallbacks* pAllocator) {
2728 FinishReadObject(device);
2729 FinishWriteObject(ycbcrConversion);
2730 // Host access to ycbcrConversion must be externally synchronized
2731}
2732
2733void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplate(
2734 VkDevice device,
2735 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2736 const VkAllocationCallbacks* pAllocator,
2737 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
2738 StartReadObject(device);
2739}
2740
2741void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplate(
2742 VkDevice device,
2743 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2744 const VkAllocationCallbacks* pAllocator,
2745 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate,
2746 VkResult result) {
2747 FinishReadObject(device);
2748}
2749
2750void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplate(
2751 VkDevice device,
2752 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2753 const VkAllocationCallbacks* pAllocator) {
2754 StartReadObject(device);
2755 StartWriteObject(descriptorUpdateTemplate);
2756 // Host access to descriptorUpdateTemplate must be externally synchronized
2757}
2758
2759void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplate(
2760 VkDevice device,
2761 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2762 const VkAllocationCallbacks* pAllocator) {
2763 FinishReadObject(device);
2764 FinishWriteObject(descriptorUpdateTemplate);
2765 // Host access to descriptorUpdateTemplate must be externally synchronized
2766}
2767
2768void ThreadSafety::PreCallRecordUpdateDescriptorSetWithTemplate(
2769 VkDevice device,
2770 VkDescriptorSet descriptorSet,
2771 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2772 const void* pData) {
2773 StartReadObject(device);
2774 StartWriteObject(descriptorSet);
2775 StartReadObject(descriptorUpdateTemplate);
2776 // Host access to descriptorSet must be externally synchronized
2777}
2778
2779void ThreadSafety::PostCallRecordUpdateDescriptorSetWithTemplate(
2780 VkDevice device,
2781 VkDescriptorSet descriptorSet,
2782 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2783 const void* pData) {
2784 FinishReadObject(device);
2785 FinishWriteObject(descriptorSet);
2786 FinishReadObject(descriptorUpdateTemplate);
2787 // Host access to descriptorSet must be externally synchronized
2788}
2789
2790void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupport(
2791 VkDevice device,
2792 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2793 VkDescriptorSetLayoutSupport* pSupport) {
2794 StartReadObject(device);
2795}
2796
2797void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupport(
2798 VkDevice device,
2799 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2800 VkDescriptorSetLayoutSupport* pSupport) {
2801 FinishReadObject(device);
2802}
2803
2804void ThreadSafety::PreCallRecordDestroySurfaceKHR(
2805 VkInstance instance,
2806 VkSurfaceKHR surface,
2807 const VkAllocationCallbacks* pAllocator) {
2808 StartReadObject(instance);
2809 StartWriteObject(surface);
2810 // Host access to surface must be externally synchronized
2811}
2812
2813void ThreadSafety::PostCallRecordDestroySurfaceKHR(
2814 VkInstance instance,
2815 VkSurfaceKHR surface,
2816 const VkAllocationCallbacks* pAllocator) {
2817 FinishReadObject(instance);
2818 FinishWriteObject(surface);
2819 // Host access to surface must be externally synchronized
2820}
2821
2822void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceSupportKHR(
2823 VkPhysicalDevice physicalDevice,
2824 uint32_t queueFamilyIndex,
2825 VkSurfaceKHR surface,
2826 VkBool32* pSupported) {
2827 StartReadObject(surface);
2828}
2829
2830void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceSupportKHR(
2831 VkPhysicalDevice physicalDevice,
2832 uint32_t queueFamilyIndex,
2833 VkSurfaceKHR surface,
2834 VkBool32* pSupported,
2835 VkResult result) {
2836 FinishReadObject(surface);
2837}
2838
2839void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(
2840 VkPhysicalDevice physicalDevice,
2841 VkSurfaceKHR surface,
2842 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
2843 StartReadObject(surface);
2844}
2845
2846void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(
2847 VkPhysicalDevice physicalDevice,
2848 VkSurfaceKHR surface,
2849 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities,
2850 VkResult result) {
2851 FinishReadObject(surface);
2852}
2853
2854void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceFormatsKHR(
2855 VkPhysicalDevice physicalDevice,
2856 VkSurfaceKHR surface,
2857 uint32_t* pSurfaceFormatCount,
2858 VkSurfaceFormatKHR* pSurfaceFormats) {
2859 StartReadObject(surface);
2860}
2861
2862void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceFormatsKHR(
2863 VkPhysicalDevice physicalDevice,
2864 VkSurfaceKHR surface,
2865 uint32_t* pSurfaceFormatCount,
2866 VkSurfaceFormatKHR* pSurfaceFormats,
2867 VkResult result) {
2868 FinishReadObject(surface);
2869}
2870
2871void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfacePresentModesKHR(
2872 VkPhysicalDevice physicalDevice,
2873 VkSurfaceKHR surface,
2874 uint32_t* pPresentModeCount,
2875 VkPresentModeKHR* pPresentModes) {
2876 StartReadObject(surface);
2877}
2878
2879void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfacePresentModesKHR(
2880 VkPhysicalDevice physicalDevice,
2881 VkSurfaceKHR surface,
2882 uint32_t* pPresentModeCount,
2883 VkPresentModeKHR* pPresentModes,
2884 VkResult result) {
2885 FinishReadObject(surface);
2886}
2887
2888void ThreadSafety::PreCallRecordCreateSwapchainKHR(
2889 VkDevice device,
2890 const VkSwapchainCreateInfoKHR* pCreateInfo,
2891 const VkAllocationCallbacks* pAllocator,
2892 VkSwapchainKHR* pSwapchain) {
2893 StartReadObject(device);
2894 StartWriteObject(pCreateInfo->surface);
2895 StartWriteObject(pCreateInfo->oldSwapchain);
2896 // Host access to pCreateInfo.surface,pCreateInfo.oldSwapchain must be externally synchronized
2897}
2898
2899void ThreadSafety::PostCallRecordCreateSwapchainKHR(
2900 VkDevice device,
2901 const VkSwapchainCreateInfoKHR* pCreateInfo,
2902 const VkAllocationCallbacks* pAllocator,
2903 VkSwapchainKHR* pSwapchain,
2904 VkResult result) {
2905 FinishReadObject(device);
2906 FinishWriteObject(pCreateInfo->surface);
2907 FinishWriteObject(pCreateInfo->oldSwapchain);
2908 // Host access to pCreateInfo.surface,pCreateInfo.oldSwapchain must be externally synchronized
2909}
2910
2911void ThreadSafety::PreCallRecordDestroySwapchainKHR(
2912 VkDevice device,
2913 VkSwapchainKHR swapchain,
2914 const VkAllocationCallbacks* pAllocator) {
2915 StartReadObject(device);
2916 StartWriteObject(swapchain);
2917 // Host access to swapchain must be externally synchronized
2918}
2919
2920void ThreadSafety::PostCallRecordDestroySwapchainKHR(
2921 VkDevice device,
2922 VkSwapchainKHR swapchain,
2923 const VkAllocationCallbacks* pAllocator) {
2924 FinishReadObject(device);
2925 FinishWriteObject(swapchain);
2926 // Host access to swapchain must be externally synchronized
2927}
2928
2929void ThreadSafety::PreCallRecordAcquireNextImageKHR(
2930 VkDevice device,
2931 VkSwapchainKHR swapchain,
2932 uint64_t timeout,
2933 VkSemaphore semaphore,
2934 VkFence fence,
2935 uint32_t* pImageIndex) {
2936 StartReadObject(device);
2937 StartWriteObject(swapchain);
2938 StartWriteObject(semaphore);
2939 StartWriteObject(fence);
2940 // Host access to swapchain must be externally synchronized
2941 // Host access to semaphore must be externally synchronized
2942 // Host access to fence must be externally synchronized
2943}
2944
2945void ThreadSafety::PostCallRecordAcquireNextImageKHR(
2946 VkDevice device,
2947 VkSwapchainKHR swapchain,
2948 uint64_t timeout,
2949 VkSemaphore semaphore,
2950 VkFence fence,
2951 uint32_t* pImageIndex,
2952 VkResult result) {
2953 FinishReadObject(device);
2954 FinishWriteObject(swapchain);
2955 FinishWriteObject(semaphore);
2956 FinishWriteObject(fence);
2957 // Host access to swapchain must be externally synchronized
2958 // Host access to semaphore must be externally synchronized
2959 // Host access to fence must be externally synchronized
2960}
2961
2962void ThreadSafety::PreCallRecordGetDeviceGroupPresentCapabilitiesKHR(
2963 VkDevice device,
2964 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
2965 StartReadObject(device);
2966}
2967
2968void ThreadSafety::PostCallRecordGetDeviceGroupPresentCapabilitiesKHR(
2969 VkDevice device,
2970 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities,
2971 VkResult result) {
2972 FinishReadObject(device);
2973}
2974
2975void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModesKHR(
2976 VkDevice device,
2977 VkSurfaceKHR surface,
2978 VkDeviceGroupPresentModeFlagsKHR* pModes) {
2979 StartReadObject(device);
2980 StartWriteObject(surface);
2981 // Host access to surface must be externally synchronized
2982}
2983
2984void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModesKHR(
2985 VkDevice device,
2986 VkSurfaceKHR surface,
2987 VkDeviceGroupPresentModeFlagsKHR* pModes,
2988 VkResult result) {
2989 FinishReadObject(device);
2990 FinishWriteObject(surface);
2991 // Host access to surface must be externally synchronized
2992}
2993
2994void ThreadSafety::PreCallRecordGetPhysicalDevicePresentRectanglesKHR(
2995 VkPhysicalDevice physicalDevice,
2996 VkSurfaceKHR surface,
2997 uint32_t* pRectCount,
2998 VkRect2D* pRects) {
2999 StartWriteObject(surface);
3000 // Host access to surface must be externally synchronized
3001}
3002
3003void ThreadSafety::PostCallRecordGetPhysicalDevicePresentRectanglesKHR(
3004 VkPhysicalDevice physicalDevice,
3005 VkSurfaceKHR surface,
3006 uint32_t* pRectCount,
3007 VkRect2D* pRects,
3008 VkResult result) {
3009 FinishWriteObject(surface);
3010 // Host access to surface must be externally synchronized
3011}
3012
3013void ThreadSafety::PreCallRecordAcquireNextImage2KHR(
3014 VkDevice device,
3015 const VkAcquireNextImageInfoKHR* pAcquireInfo,
3016 uint32_t* pImageIndex) {
3017 StartReadObject(device);
3018}
3019
3020void ThreadSafety::PostCallRecordAcquireNextImage2KHR(
3021 VkDevice device,
3022 const VkAcquireNextImageInfoKHR* pAcquireInfo,
3023 uint32_t* pImageIndex,
3024 VkResult result) {
3025 FinishReadObject(device);
3026}
3027
3028void ThreadSafety::PreCallRecordGetDisplayPlaneSupportedDisplaysKHR(
3029 VkPhysicalDevice physicalDevice,
3030 uint32_t planeIndex,
3031 uint32_t* pDisplayCount,
3032 VkDisplayKHR* pDisplays) {
3033 if (pDisplays) {
3034 for (uint32_t index = 0; index < *pDisplayCount; index++) {
3035 StartReadObject(pDisplays[index]);
3036 }
3037 }
3038}
3039
3040void ThreadSafety::PostCallRecordGetDisplayPlaneSupportedDisplaysKHR(
3041 VkPhysicalDevice physicalDevice,
3042 uint32_t planeIndex,
3043 uint32_t* pDisplayCount,
3044 VkDisplayKHR* pDisplays,
3045 VkResult result) {
3046 if (pDisplays) {
3047 for (uint32_t index = 0; index < *pDisplayCount; index++) {
3048 FinishReadObject(pDisplays[index]);
3049 }
3050 }
3051}
3052
3053void ThreadSafety::PreCallRecordGetDisplayModePropertiesKHR(
3054 VkPhysicalDevice physicalDevice,
3055 VkDisplayKHR display,
3056 uint32_t* pPropertyCount,
3057 VkDisplayModePropertiesKHR* pProperties) {
3058 StartReadObject(display);
3059}
3060
3061void ThreadSafety::PostCallRecordGetDisplayModePropertiesKHR(
3062 VkPhysicalDevice physicalDevice,
3063 VkDisplayKHR display,
3064 uint32_t* pPropertyCount,
3065 VkDisplayModePropertiesKHR* pProperties,
3066 VkResult result) {
3067 FinishReadObject(display);
3068}
3069
3070void ThreadSafety::PreCallRecordCreateDisplayModeKHR(
3071 VkPhysicalDevice physicalDevice,
3072 VkDisplayKHR display,
3073 const VkDisplayModeCreateInfoKHR* pCreateInfo,
3074 const VkAllocationCallbacks* pAllocator,
3075 VkDisplayModeKHR* pMode) {
3076 StartWriteObject(display);
3077 // Host access to display must be externally synchronized
3078}
3079
3080void ThreadSafety::PostCallRecordCreateDisplayModeKHR(
3081 VkPhysicalDevice physicalDevice,
3082 VkDisplayKHR display,
3083 const VkDisplayModeCreateInfoKHR* pCreateInfo,
3084 const VkAllocationCallbacks* pAllocator,
3085 VkDisplayModeKHR* pMode,
3086 VkResult result) {
3087 FinishWriteObject(display);
3088 // Host access to display must be externally synchronized
3089}
3090
3091void ThreadSafety::PreCallRecordGetDisplayPlaneCapabilitiesKHR(
3092 VkPhysicalDevice physicalDevice,
3093 VkDisplayModeKHR mode,
3094 uint32_t planeIndex,
3095 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
3096 StartWriteObject(mode);
3097 // Host access to mode must be externally synchronized
3098}
3099
3100void ThreadSafety::PostCallRecordGetDisplayPlaneCapabilitiesKHR(
3101 VkPhysicalDevice physicalDevice,
3102 VkDisplayModeKHR mode,
3103 uint32_t planeIndex,
3104 VkDisplayPlaneCapabilitiesKHR* pCapabilities,
3105 VkResult result) {
3106 FinishWriteObject(mode);
3107 // Host access to mode must be externally synchronized
3108}
3109
3110void ThreadSafety::PreCallRecordCreateDisplayPlaneSurfaceKHR(
3111 VkInstance instance,
3112 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
3113 const VkAllocationCallbacks* pAllocator,
3114 VkSurfaceKHR* pSurface) {
3115 StartReadObject(instance);
3116}
3117
3118void ThreadSafety::PostCallRecordCreateDisplayPlaneSurfaceKHR(
3119 VkInstance instance,
3120 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
3121 const VkAllocationCallbacks* pAllocator,
3122 VkSurfaceKHR* pSurface,
3123 VkResult result) {
3124 FinishReadObject(instance);
3125}
3126
3127void ThreadSafety::PreCallRecordCreateSharedSwapchainsKHR(
3128 VkDevice device,
3129 uint32_t swapchainCount,
3130 const VkSwapchainCreateInfoKHR* pCreateInfos,
3131 const VkAllocationCallbacks* pAllocator,
3132 VkSwapchainKHR* pSwapchains) {
3133 StartReadObject(device);
3134 if (pCreateInfos) {
3135 for (uint32_t index=0; index < swapchainCount; index++) {
3136 StartWriteObject(pCreateInfos[index].surface);
3137 StartWriteObject(pCreateInfos[index].oldSwapchain);
3138 }
3139 }
3140 if (pSwapchains) {
3141 for (uint32_t index = 0; index < swapchainCount; index++) {
3142 StartReadObject(pSwapchains[index]);
3143 }
3144 }
3145 // Host access to pCreateInfos[].surface,pCreateInfos[].oldSwapchain must be externally synchronized
3146}
3147
3148void ThreadSafety::PostCallRecordCreateSharedSwapchainsKHR(
3149 VkDevice device,
3150 uint32_t swapchainCount,
3151 const VkSwapchainCreateInfoKHR* pCreateInfos,
3152 const VkAllocationCallbacks* pAllocator,
3153 VkSwapchainKHR* pSwapchains,
3154 VkResult result) {
3155 FinishReadObject(device);
3156 if (pCreateInfos) {
3157 for (uint32_t index=0; index < swapchainCount; index++) {
3158 FinishWriteObject(pCreateInfos[index].surface);
3159 FinishWriteObject(pCreateInfos[index].oldSwapchain);
3160 }
3161 }
3162 if (pSwapchains) {
3163 for (uint32_t index = 0; index < swapchainCount; index++) {
3164 FinishReadObject(pSwapchains[index]);
3165 }
3166 }
3167 // Host access to pCreateInfos[].surface,pCreateInfos[].oldSwapchain must be externally synchronized
3168}
3169
3170#ifdef VK_USE_PLATFORM_XLIB_KHR
3171
3172void ThreadSafety::PreCallRecordCreateXlibSurfaceKHR(
3173 VkInstance instance,
3174 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
3175 const VkAllocationCallbacks* pAllocator,
3176 VkSurfaceKHR* pSurface) {
3177 StartReadObject(instance);
3178}
3179
3180void ThreadSafety::PostCallRecordCreateXlibSurfaceKHR(
3181 VkInstance instance,
3182 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
3183 const VkAllocationCallbacks* pAllocator,
3184 VkSurfaceKHR* pSurface,
3185 VkResult result) {
3186 FinishReadObject(instance);
3187}
3188#endif // VK_USE_PLATFORM_XLIB_KHR
3189
3190#ifdef VK_USE_PLATFORM_XCB_KHR
3191
3192void ThreadSafety::PreCallRecordCreateXcbSurfaceKHR(
3193 VkInstance instance,
3194 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
3195 const VkAllocationCallbacks* pAllocator,
3196 VkSurfaceKHR* pSurface) {
3197 StartReadObject(instance);
3198}
3199
3200void ThreadSafety::PostCallRecordCreateXcbSurfaceKHR(
3201 VkInstance instance,
3202 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
3203 const VkAllocationCallbacks* pAllocator,
3204 VkSurfaceKHR* pSurface,
3205 VkResult result) {
3206 FinishReadObject(instance);
3207}
3208#endif // VK_USE_PLATFORM_XCB_KHR
3209
3210#ifdef VK_USE_PLATFORM_WAYLAND_KHR
3211
3212void ThreadSafety::PreCallRecordCreateWaylandSurfaceKHR(
3213 VkInstance instance,
3214 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
3215 const VkAllocationCallbacks* pAllocator,
3216 VkSurfaceKHR* pSurface) {
3217 StartReadObject(instance);
3218}
3219
3220void ThreadSafety::PostCallRecordCreateWaylandSurfaceKHR(
3221 VkInstance instance,
3222 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
3223 const VkAllocationCallbacks* pAllocator,
3224 VkSurfaceKHR* pSurface,
3225 VkResult result) {
3226 FinishReadObject(instance);
3227}
3228#endif // VK_USE_PLATFORM_WAYLAND_KHR
3229
3230#ifdef VK_USE_PLATFORM_ANDROID_KHR
3231
3232void ThreadSafety::PreCallRecordCreateAndroidSurfaceKHR(
3233 VkInstance instance,
3234 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
3235 const VkAllocationCallbacks* pAllocator,
3236 VkSurfaceKHR* pSurface) {
3237 StartReadObject(instance);
3238}
3239
3240void ThreadSafety::PostCallRecordCreateAndroidSurfaceKHR(
3241 VkInstance instance,
3242 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
3243 const VkAllocationCallbacks* pAllocator,
3244 VkSurfaceKHR* pSurface,
3245 VkResult result) {
3246 FinishReadObject(instance);
3247}
3248#endif // VK_USE_PLATFORM_ANDROID_KHR
3249
3250#ifdef VK_USE_PLATFORM_WIN32_KHR
3251
3252void ThreadSafety::PreCallRecordCreateWin32SurfaceKHR(
3253 VkInstance instance,
3254 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
3255 const VkAllocationCallbacks* pAllocator,
3256 VkSurfaceKHR* pSurface) {
3257 StartReadObject(instance);
3258}
3259
3260void ThreadSafety::PostCallRecordCreateWin32SurfaceKHR(
3261 VkInstance instance,
3262 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
3263 const VkAllocationCallbacks* pAllocator,
3264 VkSurfaceKHR* pSurface,
3265 VkResult result) {
3266 FinishReadObject(instance);
3267}
3268#endif // VK_USE_PLATFORM_WIN32_KHR
3269
3270void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(
3271 VkDevice device,
3272 uint32_t heapIndex,
3273 uint32_t localDeviceIndex,
3274 uint32_t remoteDeviceIndex,
3275 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
3276 StartReadObject(device);
3277}
3278
3279void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(
3280 VkDevice device,
3281 uint32_t heapIndex,
3282 uint32_t localDeviceIndex,
3283 uint32_t remoteDeviceIndex,
3284 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
3285 FinishReadObject(device);
3286}
3287
3288void ThreadSafety::PreCallRecordCmdSetDeviceMaskKHR(
3289 VkCommandBuffer commandBuffer,
3290 uint32_t deviceMask) {
3291 StartWriteObject(commandBuffer);
3292 // Host access to commandBuffer must be externally synchronized
3293}
3294
3295void ThreadSafety::PostCallRecordCmdSetDeviceMaskKHR(
3296 VkCommandBuffer commandBuffer,
3297 uint32_t deviceMask) {
3298 FinishWriteObject(commandBuffer);
3299 // Host access to commandBuffer must be externally synchronized
3300}
3301
3302void ThreadSafety::PreCallRecordCmdDispatchBaseKHR(
3303 VkCommandBuffer commandBuffer,
3304 uint32_t baseGroupX,
3305 uint32_t baseGroupY,
3306 uint32_t baseGroupZ,
3307 uint32_t groupCountX,
3308 uint32_t groupCountY,
3309 uint32_t groupCountZ) {
3310 StartWriteObject(commandBuffer);
3311 // Host access to commandBuffer must be externally synchronized
3312}
3313
3314void ThreadSafety::PostCallRecordCmdDispatchBaseKHR(
3315 VkCommandBuffer commandBuffer,
3316 uint32_t baseGroupX,
3317 uint32_t baseGroupY,
3318 uint32_t baseGroupZ,
3319 uint32_t groupCountX,
3320 uint32_t groupCountY,
3321 uint32_t groupCountZ) {
3322 FinishWriteObject(commandBuffer);
3323 // Host access to commandBuffer must be externally synchronized
3324}
3325
3326void ThreadSafety::PreCallRecordTrimCommandPoolKHR(
3327 VkDevice device,
3328 VkCommandPool commandPool,
3329 VkCommandPoolTrimFlags flags) {
3330 StartReadObject(device);
3331 StartWriteObject(commandPool);
3332 // Host access to commandPool must be externally synchronized
3333}
3334
3335void ThreadSafety::PostCallRecordTrimCommandPoolKHR(
3336 VkDevice device,
3337 VkCommandPool commandPool,
3338 VkCommandPoolTrimFlags flags) {
3339 FinishReadObject(device);
3340 FinishWriteObject(commandPool);
3341 // Host access to commandPool must be externally synchronized
3342}
3343
3344void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroupsKHR(
3345 VkInstance instance,
3346 uint32_t* pPhysicalDeviceGroupCount,
3347 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
3348 StartReadObject(instance);
3349}
3350
3351void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroupsKHR(
3352 VkInstance instance,
3353 uint32_t* pPhysicalDeviceGroupCount,
3354 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties,
3355 VkResult result) {
3356 FinishReadObject(instance);
3357}
3358
3359#ifdef VK_USE_PLATFORM_WIN32_KHR
3360
3361void ThreadSafety::PreCallRecordGetMemoryWin32HandleKHR(
3362 VkDevice device,
3363 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3364 HANDLE* pHandle) {
3365 StartReadObject(device);
3366}
3367
3368void ThreadSafety::PostCallRecordGetMemoryWin32HandleKHR(
3369 VkDevice device,
3370 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3371 HANDLE* pHandle,
3372 VkResult result) {
3373 FinishReadObject(device);
3374}
3375
3376void ThreadSafety::PreCallRecordGetMemoryWin32HandlePropertiesKHR(
3377 VkDevice device,
3378 VkExternalMemoryHandleTypeFlagBits handleType,
3379 HANDLE handle,
3380 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
3381 StartReadObject(device);
3382}
3383
3384void ThreadSafety::PostCallRecordGetMemoryWin32HandlePropertiesKHR(
3385 VkDevice device,
3386 VkExternalMemoryHandleTypeFlagBits handleType,
3387 HANDLE handle,
3388 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties,
3389 VkResult result) {
3390 FinishReadObject(device);
3391}
3392#endif // VK_USE_PLATFORM_WIN32_KHR
3393
3394void ThreadSafety::PreCallRecordGetMemoryFdKHR(
3395 VkDevice device,
3396 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3397 int* pFd) {
3398 StartReadObject(device);
3399}
3400
3401void ThreadSafety::PostCallRecordGetMemoryFdKHR(
3402 VkDevice device,
3403 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3404 int* pFd,
3405 VkResult result) {
3406 FinishReadObject(device);
3407}
3408
3409void ThreadSafety::PreCallRecordGetMemoryFdPropertiesKHR(
3410 VkDevice device,
3411 VkExternalMemoryHandleTypeFlagBits handleType,
3412 int fd,
3413 VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
3414 StartReadObject(device);
3415}
3416
3417void ThreadSafety::PostCallRecordGetMemoryFdPropertiesKHR(
3418 VkDevice device,
3419 VkExternalMemoryHandleTypeFlagBits handleType,
3420 int fd,
3421 VkMemoryFdPropertiesKHR* pMemoryFdProperties,
3422 VkResult result) {
3423 FinishReadObject(device);
3424}
3425
3426#ifdef VK_USE_PLATFORM_WIN32_KHR
3427#endif // VK_USE_PLATFORM_WIN32_KHR
3428
3429#ifdef VK_USE_PLATFORM_WIN32_KHR
3430
3431void ThreadSafety::PreCallRecordImportSemaphoreWin32HandleKHR(
3432 VkDevice device,
3433 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
3434 StartReadObject(device);
3435}
3436
3437void ThreadSafety::PostCallRecordImportSemaphoreWin32HandleKHR(
3438 VkDevice device,
3439 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo,
3440 VkResult result) {
3441 FinishReadObject(device);
3442}
3443
3444void ThreadSafety::PreCallRecordGetSemaphoreWin32HandleKHR(
3445 VkDevice device,
3446 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3447 HANDLE* pHandle) {
3448 StartReadObject(device);
3449}
3450
3451void ThreadSafety::PostCallRecordGetSemaphoreWin32HandleKHR(
3452 VkDevice device,
3453 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3454 HANDLE* pHandle,
3455 VkResult result) {
3456 FinishReadObject(device);
3457}
3458#endif // VK_USE_PLATFORM_WIN32_KHR
3459
3460void ThreadSafety::PreCallRecordImportSemaphoreFdKHR(
3461 VkDevice device,
3462 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
3463 StartReadObject(device);
3464}
3465
3466void ThreadSafety::PostCallRecordImportSemaphoreFdKHR(
3467 VkDevice device,
3468 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo,
3469 VkResult result) {
3470 FinishReadObject(device);
3471}
3472
3473void ThreadSafety::PreCallRecordGetSemaphoreFdKHR(
3474 VkDevice device,
3475 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3476 int* pFd) {
3477 StartReadObject(device);
3478}
3479
3480void ThreadSafety::PostCallRecordGetSemaphoreFdKHR(
3481 VkDevice device,
3482 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3483 int* pFd,
3484 VkResult result) {
3485 FinishReadObject(device);
3486}
3487
3488void ThreadSafety::PreCallRecordCmdPushDescriptorSetKHR(
3489 VkCommandBuffer commandBuffer,
3490 VkPipelineBindPoint pipelineBindPoint,
3491 VkPipelineLayout layout,
3492 uint32_t set,
3493 uint32_t descriptorWriteCount,
3494 const VkWriteDescriptorSet* pDescriptorWrites) {
3495 StartWriteObject(commandBuffer);
3496 StartReadObject(layout);
3497 // Host access to commandBuffer must be externally synchronized
3498}
3499
3500void ThreadSafety::PostCallRecordCmdPushDescriptorSetKHR(
3501 VkCommandBuffer commandBuffer,
3502 VkPipelineBindPoint pipelineBindPoint,
3503 VkPipelineLayout layout,
3504 uint32_t set,
3505 uint32_t descriptorWriteCount,
3506 const VkWriteDescriptorSet* pDescriptorWrites) {
3507 FinishWriteObject(commandBuffer);
3508 FinishReadObject(layout);
3509 // Host access to commandBuffer must be externally synchronized
3510}
3511
3512void ThreadSafety::PreCallRecordCmdPushDescriptorSetWithTemplateKHR(
3513 VkCommandBuffer commandBuffer,
3514 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3515 VkPipelineLayout layout,
3516 uint32_t set,
3517 const void* pData) {
3518 StartWriteObject(commandBuffer);
3519 StartReadObject(descriptorUpdateTemplate);
3520 StartReadObject(layout);
3521 // Host access to commandBuffer must be externally synchronized
3522}
3523
3524void ThreadSafety::PostCallRecordCmdPushDescriptorSetWithTemplateKHR(
3525 VkCommandBuffer commandBuffer,
3526 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3527 VkPipelineLayout layout,
3528 uint32_t set,
3529 const void* pData) {
3530 FinishWriteObject(commandBuffer);
3531 FinishReadObject(descriptorUpdateTemplate);
3532 FinishReadObject(layout);
3533 // Host access to commandBuffer must be externally synchronized
3534}
3535
3536void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplateKHR(
3537 VkDevice device,
3538 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3539 const VkAllocationCallbacks* pAllocator,
3540 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
3541 StartReadObject(device);
3542}
3543
3544void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplateKHR(
3545 VkDevice device,
3546 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3547 const VkAllocationCallbacks* pAllocator,
3548 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate,
3549 VkResult result) {
3550 FinishReadObject(device);
3551}
3552
3553void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplateKHR(
3554 VkDevice device,
3555 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3556 const VkAllocationCallbacks* pAllocator) {
3557 StartReadObject(device);
3558 StartWriteObject(descriptorUpdateTemplate);
3559 // Host access to descriptorUpdateTemplate must be externally synchronized
3560}
3561
3562void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplateKHR(
3563 VkDevice device,
3564 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3565 const VkAllocationCallbacks* pAllocator) {
3566 FinishReadObject(device);
3567 FinishWriteObject(descriptorUpdateTemplate);
3568 // Host access to descriptorUpdateTemplate must be externally synchronized
3569}
3570
3571void ThreadSafety::PreCallRecordUpdateDescriptorSetWithTemplateKHR(
3572 VkDevice device,
3573 VkDescriptorSet descriptorSet,
3574 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3575 const void* pData) {
3576 StartReadObject(device);
3577 StartWriteObject(descriptorSet);
3578 StartReadObject(descriptorUpdateTemplate);
3579 // Host access to descriptorSet must be externally synchronized
3580}
3581
3582void ThreadSafety::PostCallRecordUpdateDescriptorSetWithTemplateKHR(
3583 VkDevice device,
3584 VkDescriptorSet descriptorSet,
3585 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3586 const void* pData) {
3587 FinishReadObject(device);
3588 FinishWriteObject(descriptorSet);
3589 FinishReadObject(descriptorUpdateTemplate);
3590 // Host access to descriptorSet must be externally synchronized
3591}
3592
3593void ThreadSafety::PreCallRecordCreateRenderPass2KHR(
3594 VkDevice device,
3595 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3596 const VkAllocationCallbacks* pAllocator,
3597 VkRenderPass* pRenderPass) {
3598 StartReadObject(device);
3599}
3600
3601void ThreadSafety::PostCallRecordCreateRenderPass2KHR(
3602 VkDevice device,
3603 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3604 const VkAllocationCallbacks* pAllocator,
3605 VkRenderPass* pRenderPass,
3606 VkResult result) {
3607 FinishReadObject(device);
3608}
3609
3610void ThreadSafety::PreCallRecordCmdBeginRenderPass2KHR(
3611 VkCommandBuffer commandBuffer,
3612 const VkRenderPassBeginInfo* pRenderPassBegin,
3613 const VkSubpassBeginInfoKHR* pSubpassBeginInfo) {
3614 StartWriteObject(commandBuffer);
3615 // Host access to commandBuffer must be externally synchronized
3616}
3617
3618void ThreadSafety::PostCallRecordCmdBeginRenderPass2KHR(
3619 VkCommandBuffer commandBuffer,
3620 const VkRenderPassBeginInfo* pRenderPassBegin,
3621 const VkSubpassBeginInfoKHR* pSubpassBeginInfo) {
3622 FinishWriteObject(commandBuffer);
3623 // Host access to commandBuffer must be externally synchronized
3624}
3625
3626void ThreadSafety::PreCallRecordCmdNextSubpass2KHR(
3627 VkCommandBuffer commandBuffer,
3628 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3629 const VkSubpassEndInfoKHR* pSubpassEndInfo) {
3630 StartWriteObject(commandBuffer);
3631 // Host access to commandBuffer must be externally synchronized
3632}
3633
3634void ThreadSafety::PostCallRecordCmdNextSubpass2KHR(
3635 VkCommandBuffer commandBuffer,
3636 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3637 const VkSubpassEndInfoKHR* pSubpassEndInfo) {
3638 FinishWriteObject(commandBuffer);
3639 // Host access to commandBuffer must be externally synchronized
3640}
3641
3642void ThreadSafety::PreCallRecordCmdEndRenderPass2KHR(
3643 VkCommandBuffer commandBuffer,
3644 const VkSubpassEndInfoKHR* pSubpassEndInfo) {
3645 StartWriteObject(commandBuffer);
3646 // Host access to commandBuffer must be externally synchronized
3647}
3648
3649void ThreadSafety::PostCallRecordCmdEndRenderPass2KHR(
3650 VkCommandBuffer commandBuffer,
3651 const VkSubpassEndInfoKHR* pSubpassEndInfo) {
3652 FinishWriteObject(commandBuffer);
3653 // Host access to commandBuffer must be externally synchronized
3654}
3655
3656void ThreadSafety::PreCallRecordGetSwapchainStatusKHR(
3657 VkDevice device,
3658 VkSwapchainKHR swapchain) {
3659 StartReadObject(device);
3660 StartWriteObject(swapchain);
3661 // Host access to swapchain must be externally synchronized
3662}
3663
3664void ThreadSafety::PostCallRecordGetSwapchainStatusKHR(
3665 VkDevice device,
3666 VkSwapchainKHR swapchain,
3667 VkResult result) {
3668 FinishReadObject(device);
3669 FinishWriteObject(swapchain);
3670 // Host access to swapchain must be externally synchronized
3671}
3672
3673#ifdef VK_USE_PLATFORM_WIN32_KHR
3674
3675void ThreadSafety::PreCallRecordImportFenceWin32HandleKHR(
3676 VkDevice device,
3677 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
3678 StartReadObject(device);
3679}
3680
3681void ThreadSafety::PostCallRecordImportFenceWin32HandleKHR(
3682 VkDevice device,
3683 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo,
3684 VkResult result) {
3685 FinishReadObject(device);
3686}
3687
3688void ThreadSafety::PreCallRecordGetFenceWin32HandleKHR(
3689 VkDevice device,
3690 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3691 HANDLE* pHandle) {
3692 StartReadObject(device);
3693}
3694
3695void ThreadSafety::PostCallRecordGetFenceWin32HandleKHR(
3696 VkDevice device,
3697 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3698 HANDLE* pHandle,
3699 VkResult result) {
3700 FinishReadObject(device);
3701}
3702#endif // VK_USE_PLATFORM_WIN32_KHR
3703
3704void ThreadSafety::PreCallRecordImportFenceFdKHR(
3705 VkDevice device,
3706 const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
3707 StartReadObject(device);
3708}
3709
3710void ThreadSafety::PostCallRecordImportFenceFdKHR(
3711 VkDevice device,
3712 const VkImportFenceFdInfoKHR* pImportFenceFdInfo,
3713 VkResult result) {
3714 FinishReadObject(device);
3715}
3716
3717void ThreadSafety::PreCallRecordGetFenceFdKHR(
3718 VkDevice device,
3719 const VkFenceGetFdInfoKHR* pGetFdInfo,
3720 int* pFd) {
3721 StartReadObject(device);
3722}
3723
3724void ThreadSafety::PostCallRecordGetFenceFdKHR(
3725 VkDevice device,
3726 const VkFenceGetFdInfoKHR* pGetFdInfo,
3727 int* pFd,
3728 VkResult result) {
3729 FinishReadObject(device);
3730}
3731
3732void ThreadSafety::PreCallRecordGetDisplayModeProperties2KHR(
3733 VkPhysicalDevice physicalDevice,
3734 VkDisplayKHR display,
3735 uint32_t* pPropertyCount,
3736 VkDisplayModeProperties2KHR* pProperties) {
3737 StartReadObject(display);
3738}
3739
3740void ThreadSafety::PostCallRecordGetDisplayModeProperties2KHR(
3741 VkPhysicalDevice physicalDevice,
3742 VkDisplayKHR display,
3743 uint32_t* pPropertyCount,
3744 VkDisplayModeProperties2KHR* pProperties,
3745 VkResult result) {
3746 FinishReadObject(display);
3747}
3748
3749void ThreadSafety::PreCallRecordGetImageMemoryRequirements2KHR(
3750 VkDevice device,
3751 const VkImageMemoryRequirementsInfo2* pInfo,
3752 VkMemoryRequirements2* pMemoryRequirements) {
3753 StartReadObject(device);
3754}
3755
3756void ThreadSafety::PostCallRecordGetImageMemoryRequirements2KHR(
3757 VkDevice device,
3758 const VkImageMemoryRequirementsInfo2* pInfo,
3759 VkMemoryRequirements2* pMemoryRequirements) {
3760 FinishReadObject(device);
3761}
3762
3763void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2KHR(
3764 VkDevice device,
3765 const VkBufferMemoryRequirementsInfo2* pInfo,
3766 VkMemoryRequirements2* pMemoryRequirements) {
3767 StartReadObject(device);
3768}
3769
3770void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2KHR(
3771 VkDevice device,
3772 const VkBufferMemoryRequirementsInfo2* pInfo,
3773 VkMemoryRequirements2* pMemoryRequirements) {
3774 FinishReadObject(device);
3775}
3776
3777void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2KHR(
3778 VkDevice device,
3779 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3780 uint32_t* pSparseMemoryRequirementCount,
3781 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3782 StartReadObject(device);
3783}
3784
3785void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2KHR(
3786 VkDevice device,
3787 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3788 uint32_t* pSparseMemoryRequirementCount,
3789 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3790 FinishReadObject(device);
3791}
3792
3793void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversionKHR(
3794 VkDevice device,
3795 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3796 const VkAllocationCallbacks* pAllocator,
3797 VkSamplerYcbcrConversion* pYcbcrConversion) {
3798 StartReadObject(device);
3799}
3800
3801void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversionKHR(
3802 VkDevice device,
3803 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3804 const VkAllocationCallbacks* pAllocator,
3805 VkSamplerYcbcrConversion* pYcbcrConversion,
3806 VkResult result) {
3807 FinishReadObject(device);
3808}
3809
3810void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversionKHR(
3811 VkDevice device,
3812 VkSamplerYcbcrConversion ycbcrConversion,
3813 const VkAllocationCallbacks* pAllocator) {
3814 StartReadObject(device);
3815 StartWriteObject(ycbcrConversion);
3816 // Host access to ycbcrConversion must be externally synchronized
3817}
3818
3819void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversionKHR(
3820 VkDevice device,
3821 VkSamplerYcbcrConversion ycbcrConversion,
3822 const VkAllocationCallbacks* pAllocator) {
3823 FinishReadObject(device);
3824 FinishWriteObject(ycbcrConversion);
3825 // Host access to ycbcrConversion must be externally synchronized
3826}
3827
3828void ThreadSafety::PreCallRecordBindBufferMemory2KHR(
3829 VkDevice device,
3830 uint32_t bindInfoCount,
3831 const VkBindBufferMemoryInfo* pBindInfos) {
3832 StartReadObject(device);
3833}
3834
3835void ThreadSafety::PostCallRecordBindBufferMemory2KHR(
3836 VkDevice device,
3837 uint32_t bindInfoCount,
3838 const VkBindBufferMemoryInfo* pBindInfos,
3839 VkResult result) {
3840 FinishReadObject(device);
3841}
3842
3843void ThreadSafety::PreCallRecordBindImageMemory2KHR(
3844 VkDevice device,
3845 uint32_t bindInfoCount,
3846 const VkBindImageMemoryInfo* pBindInfos) {
3847 StartReadObject(device);
3848}
3849
3850void ThreadSafety::PostCallRecordBindImageMemory2KHR(
3851 VkDevice device,
3852 uint32_t bindInfoCount,
3853 const VkBindImageMemoryInfo* pBindInfos,
3854 VkResult result) {
3855 FinishReadObject(device);
3856}
3857
3858void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupportKHR(
3859 VkDevice device,
3860 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3861 VkDescriptorSetLayoutSupport* pSupport) {
3862 StartReadObject(device);
3863}
3864
3865void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupportKHR(
3866 VkDevice device,
3867 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3868 VkDescriptorSetLayoutSupport* pSupport) {
3869 FinishReadObject(device);
3870}
3871
3872void ThreadSafety::PreCallRecordCmdDrawIndirectCountKHR(
3873 VkCommandBuffer commandBuffer,
3874 VkBuffer buffer,
3875 VkDeviceSize offset,
3876 VkBuffer countBuffer,
3877 VkDeviceSize countBufferOffset,
3878 uint32_t maxDrawCount,
3879 uint32_t stride) {
3880 StartWriteObject(commandBuffer);
3881 StartReadObject(buffer);
3882 StartReadObject(countBuffer);
3883 // Host access to commandBuffer must be externally synchronized
3884}
3885
3886void ThreadSafety::PostCallRecordCmdDrawIndirectCountKHR(
3887 VkCommandBuffer commandBuffer,
3888 VkBuffer buffer,
3889 VkDeviceSize offset,
3890 VkBuffer countBuffer,
3891 VkDeviceSize countBufferOffset,
3892 uint32_t maxDrawCount,
3893 uint32_t stride) {
3894 FinishWriteObject(commandBuffer);
3895 FinishReadObject(buffer);
3896 FinishReadObject(countBuffer);
3897 // Host access to commandBuffer must be externally synchronized
3898}
3899
3900void ThreadSafety::PreCallRecordCmdDrawIndexedIndirectCountKHR(
3901 VkCommandBuffer commandBuffer,
3902 VkBuffer buffer,
3903 VkDeviceSize offset,
3904 VkBuffer countBuffer,
3905 VkDeviceSize countBufferOffset,
3906 uint32_t maxDrawCount,
3907 uint32_t stride) {
3908 StartWriteObject(commandBuffer);
3909 StartReadObject(buffer);
3910 StartReadObject(countBuffer);
3911 // Host access to commandBuffer must be externally synchronized
3912}
3913
3914void ThreadSafety::PostCallRecordCmdDrawIndexedIndirectCountKHR(
3915 VkCommandBuffer commandBuffer,
3916 VkBuffer buffer,
3917 VkDeviceSize offset,
3918 VkBuffer countBuffer,
3919 VkDeviceSize countBufferOffset,
3920 uint32_t maxDrawCount,
3921 uint32_t stride) {
3922 FinishWriteObject(commandBuffer);
3923 FinishReadObject(buffer);
3924 FinishReadObject(countBuffer);
3925 // Host access to commandBuffer must be externally synchronized
3926}
3927
3928void ThreadSafety::PreCallRecordCreateDebugReportCallbackEXT(
3929 VkInstance instance,
3930 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3931 const VkAllocationCallbacks* pAllocator,
3932 VkDebugReportCallbackEXT* pCallback) {
3933 StartReadObject(instance);
3934}
3935
3936void ThreadSafety::PostCallRecordCreateDebugReportCallbackEXT(
3937 VkInstance instance,
3938 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3939 const VkAllocationCallbacks* pAllocator,
3940 VkDebugReportCallbackEXT* pCallback,
3941 VkResult result) {
3942 FinishReadObject(instance);
3943}
3944
3945void ThreadSafety::PreCallRecordDestroyDebugReportCallbackEXT(
3946 VkInstance instance,
3947 VkDebugReportCallbackEXT callback,
3948 const VkAllocationCallbacks* pAllocator) {
3949 StartReadObject(instance);
3950 StartWriteObject(callback);
3951 // Host access to callback must be externally synchronized
3952}
3953
3954void ThreadSafety::PostCallRecordDestroyDebugReportCallbackEXT(
3955 VkInstance instance,
3956 VkDebugReportCallbackEXT callback,
3957 const VkAllocationCallbacks* pAllocator) {
3958 FinishReadObject(instance);
3959 FinishWriteObject(callback);
3960 // Host access to callback must be externally synchronized
3961}
3962
3963void ThreadSafety::PreCallRecordDebugReportMessageEXT(
3964 VkInstance instance,
3965 VkDebugReportFlagsEXT flags,
3966 VkDebugReportObjectTypeEXT objectType,
3967 uint64_t object,
3968 size_t location,
3969 int32_t messageCode,
3970 const char* pLayerPrefix,
3971 const char* pMessage) {
3972 StartReadObject(instance);
3973}
3974
3975void ThreadSafety::PostCallRecordDebugReportMessageEXT(
3976 VkInstance instance,
3977 VkDebugReportFlagsEXT flags,
3978 VkDebugReportObjectTypeEXT objectType,
3979 uint64_t object,
3980 size_t location,
3981 int32_t messageCode,
3982 const char* pLayerPrefix,
3983 const char* pMessage) {
3984 FinishReadObject(instance);
3985}
3986// TODO - not wrapping EXT function vkDebugMarkerSetObjectTagEXT
3987// TODO - not wrapping EXT function vkDebugMarkerSetObjectNameEXT
3988// TODO - not wrapping EXT function vkCmdDebugMarkerBeginEXT
3989// TODO - not wrapping EXT function vkCmdDebugMarkerEndEXT
3990// TODO - not wrapping EXT function vkCmdDebugMarkerInsertEXT
3991
3992void ThreadSafety::PreCallRecordCmdBindTransformFeedbackBuffersEXT(
3993 VkCommandBuffer commandBuffer,
3994 uint32_t firstBinding,
3995 uint32_t bindingCount,
3996 const VkBuffer* pBuffers,
3997 const VkDeviceSize* pOffsets,
3998 const VkDeviceSize* pSizes) {
3999 StartWriteObject(commandBuffer);
4000 if (pBuffers) {
4001 for (uint32_t index = 0; index < bindingCount; index++) {
4002 StartReadObject(pBuffers[index]);
4003 }
4004 }
4005 // Host access to commandBuffer must be externally synchronized
4006}
4007
4008void ThreadSafety::PostCallRecordCmdBindTransformFeedbackBuffersEXT(
4009 VkCommandBuffer commandBuffer,
4010 uint32_t firstBinding,
4011 uint32_t bindingCount,
4012 const VkBuffer* pBuffers,
4013 const VkDeviceSize* pOffsets,
4014 const VkDeviceSize* pSizes) {
4015 FinishWriteObject(commandBuffer);
4016 if (pBuffers) {
4017 for (uint32_t index = 0; index < bindingCount; index++) {
4018 FinishReadObject(pBuffers[index]);
4019 }
4020 }
4021 // Host access to commandBuffer must be externally synchronized
4022}
4023
4024void ThreadSafety::PreCallRecordCmdBeginTransformFeedbackEXT(
4025 VkCommandBuffer commandBuffer,
4026 uint32_t firstCounterBuffer,
4027 uint32_t counterBufferCount,
4028 const VkBuffer* pCounterBuffers,
4029 const VkDeviceSize* pCounterBufferOffsets) {
4030 StartWriteObject(commandBuffer);
4031 if (pCounterBuffers) {
4032 for (uint32_t index = 0; index < counterBufferCount; index++) {
4033 StartReadObject(pCounterBuffers[index]);
4034 }
4035 }
4036 // Host access to commandBuffer must be externally synchronized
4037}
4038
4039void ThreadSafety::PostCallRecordCmdBeginTransformFeedbackEXT(
4040 VkCommandBuffer commandBuffer,
4041 uint32_t firstCounterBuffer,
4042 uint32_t counterBufferCount,
4043 const VkBuffer* pCounterBuffers,
4044 const VkDeviceSize* pCounterBufferOffsets) {
4045 FinishWriteObject(commandBuffer);
4046 if (pCounterBuffers) {
4047 for (uint32_t index = 0; index < counterBufferCount; index++) {
4048 FinishReadObject(pCounterBuffers[index]);
4049 }
4050 }
4051 // Host access to commandBuffer must be externally synchronized
4052}
4053
4054void ThreadSafety::PreCallRecordCmdEndTransformFeedbackEXT(
4055 VkCommandBuffer commandBuffer,
4056 uint32_t firstCounterBuffer,
4057 uint32_t counterBufferCount,
4058 const VkBuffer* pCounterBuffers,
4059 const VkDeviceSize* pCounterBufferOffsets) {
4060 StartWriteObject(commandBuffer);
4061 if (pCounterBuffers) {
4062 for (uint32_t index = 0; index < counterBufferCount; index++) {
4063 StartReadObject(pCounterBuffers[index]);
4064 }
4065 }
4066 // Host access to commandBuffer must be externally synchronized
4067}
4068
4069void ThreadSafety::PostCallRecordCmdEndTransformFeedbackEXT(
4070 VkCommandBuffer commandBuffer,
4071 uint32_t firstCounterBuffer,
4072 uint32_t counterBufferCount,
4073 const VkBuffer* pCounterBuffers,
4074 const VkDeviceSize* pCounterBufferOffsets) {
4075 FinishWriteObject(commandBuffer);
4076 if (pCounterBuffers) {
4077 for (uint32_t index = 0; index < counterBufferCount; index++) {
4078 FinishReadObject(pCounterBuffers[index]);
4079 }
4080 }
4081 // Host access to commandBuffer must be externally synchronized
4082}
4083
4084void ThreadSafety::PreCallRecordCmdBeginQueryIndexedEXT(
4085 VkCommandBuffer commandBuffer,
4086 VkQueryPool queryPool,
4087 uint32_t query,
4088 VkQueryControlFlags flags,
4089 uint32_t index) {
4090 StartWriteObject(commandBuffer);
4091 StartReadObject(queryPool);
4092 // Host access to commandBuffer must be externally synchronized
4093}
4094
4095void ThreadSafety::PostCallRecordCmdBeginQueryIndexedEXT(
4096 VkCommandBuffer commandBuffer,
4097 VkQueryPool queryPool,
4098 uint32_t query,
4099 VkQueryControlFlags flags,
4100 uint32_t index) {
4101 FinishWriteObject(commandBuffer);
4102 FinishReadObject(queryPool);
4103 // Host access to commandBuffer must be externally synchronized
4104}
4105
4106void ThreadSafety::PreCallRecordCmdEndQueryIndexedEXT(
4107 VkCommandBuffer commandBuffer,
4108 VkQueryPool queryPool,
4109 uint32_t query,
4110 uint32_t index) {
4111 StartWriteObject(commandBuffer);
4112 StartReadObject(queryPool);
4113 // Host access to commandBuffer must be externally synchronized
4114}
4115
4116void ThreadSafety::PostCallRecordCmdEndQueryIndexedEXT(
4117 VkCommandBuffer commandBuffer,
4118 VkQueryPool queryPool,
4119 uint32_t query,
4120 uint32_t index) {
4121 FinishWriteObject(commandBuffer);
4122 FinishReadObject(queryPool);
4123 // Host access to commandBuffer must be externally synchronized
4124}
4125
4126void ThreadSafety::PreCallRecordCmdDrawIndirectByteCountEXT(
4127 VkCommandBuffer commandBuffer,
4128 uint32_t instanceCount,
4129 uint32_t firstInstance,
4130 VkBuffer counterBuffer,
4131 VkDeviceSize counterBufferOffset,
4132 uint32_t counterOffset,
4133 uint32_t vertexStride) {
4134 StartWriteObject(commandBuffer);
4135 StartReadObject(counterBuffer);
4136 // Host access to commandBuffer must be externally synchronized
4137}
4138
4139void ThreadSafety::PostCallRecordCmdDrawIndirectByteCountEXT(
4140 VkCommandBuffer commandBuffer,
4141 uint32_t instanceCount,
4142 uint32_t firstInstance,
4143 VkBuffer counterBuffer,
4144 VkDeviceSize counterBufferOffset,
4145 uint32_t counterOffset,
4146 uint32_t vertexStride) {
4147 FinishWriteObject(commandBuffer);
4148 FinishReadObject(counterBuffer);
4149 // Host access to commandBuffer must be externally synchronized
4150}
4151
4152void ThreadSafety::PreCallRecordGetImageViewHandleNVX(
4153 VkDevice device,
4154 const VkImageViewHandleInfoNVX* pInfo) {
4155 StartReadObject(device);
4156}
4157
4158void ThreadSafety::PostCallRecordGetImageViewHandleNVX(
4159 VkDevice device,
4160 const VkImageViewHandleInfoNVX* pInfo) {
4161 FinishReadObject(device);
4162}
4163
4164void ThreadSafety::PreCallRecordCmdDrawIndirectCountAMD(
4165 VkCommandBuffer commandBuffer,
4166 VkBuffer buffer,
4167 VkDeviceSize offset,
4168 VkBuffer countBuffer,
4169 VkDeviceSize countBufferOffset,
4170 uint32_t maxDrawCount,
4171 uint32_t stride) {
4172 StartWriteObject(commandBuffer);
4173 StartReadObject(buffer);
4174 StartReadObject(countBuffer);
4175 // Host access to commandBuffer must be externally synchronized
4176}
4177
4178void ThreadSafety::PostCallRecordCmdDrawIndirectCountAMD(
4179 VkCommandBuffer commandBuffer,
4180 VkBuffer buffer,
4181 VkDeviceSize offset,
4182 VkBuffer countBuffer,
4183 VkDeviceSize countBufferOffset,
4184 uint32_t maxDrawCount,
4185 uint32_t stride) {
4186 FinishWriteObject(commandBuffer);
4187 FinishReadObject(buffer);
4188 FinishReadObject(countBuffer);
4189 // Host access to commandBuffer must be externally synchronized
4190}
4191
4192void ThreadSafety::PreCallRecordCmdDrawIndexedIndirectCountAMD(
4193 VkCommandBuffer commandBuffer,
4194 VkBuffer buffer,
4195 VkDeviceSize offset,
4196 VkBuffer countBuffer,
4197 VkDeviceSize countBufferOffset,
4198 uint32_t maxDrawCount,
4199 uint32_t stride) {
4200 StartWriteObject(commandBuffer);
4201 StartReadObject(buffer);
4202 StartReadObject(countBuffer);
4203 // Host access to commandBuffer must be externally synchronized
4204}
4205
4206void ThreadSafety::PostCallRecordCmdDrawIndexedIndirectCountAMD(
4207 VkCommandBuffer commandBuffer,
4208 VkBuffer buffer,
4209 VkDeviceSize offset,
4210 VkBuffer countBuffer,
4211 VkDeviceSize countBufferOffset,
4212 uint32_t maxDrawCount,
4213 uint32_t stride) {
4214 FinishWriteObject(commandBuffer);
4215 FinishReadObject(buffer);
4216 FinishReadObject(countBuffer);
4217 // Host access to commandBuffer must be externally synchronized
4218}
4219
4220void ThreadSafety::PreCallRecordGetShaderInfoAMD(
4221 VkDevice device,
4222 VkPipeline pipeline,
4223 VkShaderStageFlagBits shaderStage,
4224 VkShaderInfoTypeAMD infoType,
4225 size_t* pInfoSize,
4226 void* pInfo) {
4227 StartReadObject(device);
4228 StartReadObject(pipeline);
4229}
4230
4231void ThreadSafety::PostCallRecordGetShaderInfoAMD(
4232 VkDevice device,
4233 VkPipeline pipeline,
4234 VkShaderStageFlagBits shaderStage,
4235 VkShaderInfoTypeAMD infoType,
4236 size_t* pInfoSize,
4237 void* pInfo,
4238 VkResult result) {
4239 FinishReadObject(device);
4240 FinishReadObject(pipeline);
4241}
4242
4243#ifdef VK_USE_PLATFORM_GGP
4244
4245void ThreadSafety::PreCallRecordCreateStreamDescriptorSurfaceGGP(
4246 VkInstance instance,
4247 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4248 const VkAllocationCallbacks* pAllocator,
4249 VkSurfaceKHR* pSurface) {
4250 StartReadObject(instance);
4251}
4252
4253void ThreadSafety::PostCallRecordCreateStreamDescriptorSurfaceGGP(
4254 VkInstance instance,
4255 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4256 const VkAllocationCallbacks* pAllocator,
4257 VkSurfaceKHR* pSurface,
4258 VkResult result) {
4259 FinishReadObject(instance);
4260}
4261#endif // VK_USE_PLATFORM_GGP
4262
4263#ifdef VK_USE_PLATFORM_WIN32_KHR
4264
4265void ThreadSafety::PreCallRecordGetMemoryWin32HandleNV(
4266 VkDevice device,
4267 VkDeviceMemory memory,
4268 VkExternalMemoryHandleTypeFlagsNV handleType,
4269 HANDLE* pHandle) {
4270 StartReadObject(device);
4271 StartReadObject(memory);
4272}
4273
4274void ThreadSafety::PostCallRecordGetMemoryWin32HandleNV(
4275 VkDevice device,
4276 VkDeviceMemory memory,
4277 VkExternalMemoryHandleTypeFlagsNV handleType,
4278 HANDLE* pHandle,
4279 VkResult result) {
4280 FinishReadObject(device);
4281 FinishReadObject(memory);
4282}
4283#endif // VK_USE_PLATFORM_WIN32_KHR
4284
4285#ifdef VK_USE_PLATFORM_WIN32_KHR
4286#endif // VK_USE_PLATFORM_WIN32_KHR
4287
4288#ifdef VK_USE_PLATFORM_VI_NN
4289
4290void ThreadSafety::PreCallRecordCreateViSurfaceNN(
4291 VkInstance instance,
4292 const VkViSurfaceCreateInfoNN* pCreateInfo,
4293 const VkAllocationCallbacks* pAllocator,
4294 VkSurfaceKHR* pSurface) {
4295 StartReadObject(instance);
4296}
4297
4298void ThreadSafety::PostCallRecordCreateViSurfaceNN(
4299 VkInstance instance,
4300 const VkViSurfaceCreateInfoNN* pCreateInfo,
4301 const VkAllocationCallbacks* pAllocator,
4302 VkSurfaceKHR* pSurface,
4303 VkResult result) {
4304 FinishReadObject(instance);
4305}
4306#endif // VK_USE_PLATFORM_VI_NN
4307
4308void ThreadSafety::PreCallRecordCmdBeginConditionalRenderingEXT(
4309 VkCommandBuffer commandBuffer,
4310 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
4311 StartWriteObject(commandBuffer);
4312 // Host access to commandBuffer must be externally synchronized
4313}
4314
4315void ThreadSafety::PostCallRecordCmdBeginConditionalRenderingEXT(
4316 VkCommandBuffer commandBuffer,
4317 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
4318 FinishWriteObject(commandBuffer);
4319 // Host access to commandBuffer must be externally synchronized
4320}
4321
4322void ThreadSafety::PreCallRecordCmdEndConditionalRenderingEXT(
4323 VkCommandBuffer commandBuffer) {
4324 StartWriteObject(commandBuffer);
4325 // Host access to commandBuffer must be externally synchronized
4326}
4327
4328void ThreadSafety::PostCallRecordCmdEndConditionalRenderingEXT(
4329 VkCommandBuffer commandBuffer) {
4330 FinishWriteObject(commandBuffer);
4331 // Host access to commandBuffer must be externally synchronized
4332}
4333
4334void ThreadSafety::PreCallRecordCmdProcessCommandsNVX(
4335 VkCommandBuffer commandBuffer,
4336 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
4337 StartWriteObject(commandBuffer);
4338 // Host access to commandBuffer must be externally synchronized
4339}
4340
4341void ThreadSafety::PostCallRecordCmdProcessCommandsNVX(
4342 VkCommandBuffer commandBuffer,
4343 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
4344 FinishWriteObject(commandBuffer);
4345 // Host access to commandBuffer must be externally synchronized
4346}
4347
4348void ThreadSafety::PreCallRecordCmdReserveSpaceForCommandsNVX(
4349 VkCommandBuffer commandBuffer,
4350 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
4351 StartWriteObject(commandBuffer);
4352 // Host access to commandBuffer must be externally synchronized
4353}
4354
4355void ThreadSafety::PostCallRecordCmdReserveSpaceForCommandsNVX(
4356 VkCommandBuffer commandBuffer,
4357 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
4358 FinishWriteObject(commandBuffer);
4359 // Host access to commandBuffer must be externally synchronized
4360}
4361
4362void ThreadSafety::PreCallRecordCreateIndirectCommandsLayoutNVX(
4363 VkDevice device,
4364 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4365 const VkAllocationCallbacks* pAllocator,
4366 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
4367 StartReadObject(device);
4368}
4369
4370void ThreadSafety::PostCallRecordCreateIndirectCommandsLayoutNVX(
4371 VkDevice device,
4372 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4373 const VkAllocationCallbacks* pAllocator,
4374 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout,
4375 VkResult result) {
4376 FinishReadObject(device);
4377}
4378
4379void ThreadSafety::PreCallRecordDestroyIndirectCommandsLayoutNVX(
4380 VkDevice device,
4381 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4382 const VkAllocationCallbacks* pAllocator) {
4383 StartReadObject(device);
4384 StartReadObject(indirectCommandsLayout);
4385}
4386
4387void ThreadSafety::PostCallRecordDestroyIndirectCommandsLayoutNVX(
4388 VkDevice device,
4389 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4390 const VkAllocationCallbacks* pAllocator) {
4391 FinishReadObject(device);
4392 FinishReadObject(indirectCommandsLayout);
4393}
4394
4395void ThreadSafety::PreCallRecordCreateObjectTableNVX(
4396 VkDevice device,
4397 const VkObjectTableCreateInfoNVX* pCreateInfo,
4398 const VkAllocationCallbacks* pAllocator,
4399 VkObjectTableNVX* pObjectTable) {
4400 StartReadObject(device);
4401}
4402
4403void ThreadSafety::PostCallRecordCreateObjectTableNVX(
4404 VkDevice device,
4405 const VkObjectTableCreateInfoNVX* pCreateInfo,
4406 const VkAllocationCallbacks* pAllocator,
4407 VkObjectTableNVX* pObjectTable,
4408 VkResult result) {
4409 FinishReadObject(device);
4410}
4411
4412void ThreadSafety::PreCallRecordDestroyObjectTableNVX(
4413 VkDevice device,
4414 VkObjectTableNVX objectTable,
4415 const VkAllocationCallbacks* pAllocator) {
4416 StartReadObject(device);
4417 StartWriteObject(objectTable);
4418 // Host access to objectTable must be externally synchronized
4419}
4420
4421void ThreadSafety::PostCallRecordDestroyObjectTableNVX(
4422 VkDevice device,
4423 VkObjectTableNVX objectTable,
4424 const VkAllocationCallbacks* pAllocator) {
4425 FinishReadObject(device);
4426 FinishWriteObject(objectTable);
4427 // Host access to objectTable must be externally synchronized
4428}
4429
4430void ThreadSafety::PreCallRecordRegisterObjectsNVX(
4431 VkDevice device,
4432 VkObjectTableNVX objectTable,
4433 uint32_t objectCount,
4434 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4435 const uint32_t* pObjectIndices) {
4436 StartReadObject(device);
4437 StartWriteObject(objectTable);
4438 // Host access to objectTable must be externally synchronized
4439}
4440
4441void ThreadSafety::PostCallRecordRegisterObjectsNVX(
4442 VkDevice device,
4443 VkObjectTableNVX objectTable,
4444 uint32_t objectCount,
4445 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4446 const uint32_t* pObjectIndices,
4447 VkResult result) {
4448 FinishReadObject(device);
4449 FinishWriteObject(objectTable);
4450 // Host access to objectTable must be externally synchronized
4451}
4452
4453void ThreadSafety::PreCallRecordUnregisterObjectsNVX(
4454 VkDevice device,
4455 VkObjectTableNVX objectTable,
4456 uint32_t objectCount,
4457 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4458 const uint32_t* pObjectIndices) {
4459 StartReadObject(device);
4460 StartWriteObject(objectTable);
4461 // Host access to objectTable must be externally synchronized
4462}
4463
4464void ThreadSafety::PostCallRecordUnregisterObjectsNVX(
4465 VkDevice device,
4466 VkObjectTableNVX objectTable,
4467 uint32_t objectCount,
4468 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4469 const uint32_t* pObjectIndices,
4470 VkResult result) {
4471 FinishReadObject(device);
4472 FinishWriteObject(objectTable);
4473 // Host access to objectTable must be externally synchronized
4474}
4475
4476void ThreadSafety::PreCallRecordCmdSetViewportWScalingNV(
4477 VkCommandBuffer commandBuffer,
4478 uint32_t firstViewport,
4479 uint32_t viewportCount,
4480 const VkViewportWScalingNV* pViewportWScalings) {
4481 StartWriteObject(commandBuffer);
4482 // Host access to commandBuffer must be externally synchronized
4483}
4484
4485void ThreadSafety::PostCallRecordCmdSetViewportWScalingNV(
4486 VkCommandBuffer commandBuffer,
4487 uint32_t firstViewport,
4488 uint32_t viewportCount,
4489 const VkViewportWScalingNV* pViewportWScalings) {
4490 FinishWriteObject(commandBuffer);
4491 // Host access to commandBuffer must be externally synchronized
4492}
4493
4494void ThreadSafety::PreCallRecordReleaseDisplayEXT(
4495 VkPhysicalDevice physicalDevice,
4496 VkDisplayKHR display) {
4497 StartReadObject(display);
4498}
4499
4500void ThreadSafety::PostCallRecordReleaseDisplayEXT(
4501 VkPhysicalDevice physicalDevice,
4502 VkDisplayKHR display,
4503 VkResult result) {
4504 FinishReadObject(display);
4505}
4506
4507#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
4508
4509void ThreadSafety::PreCallRecordAcquireXlibDisplayEXT(
4510 VkPhysicalDevice physicalDevice,
4511 Display* dpy,
4512 VkDisplayKHR display) {
4513 StartReadObject(display);
4514}
4515
4516void ThreadSafety::PostCallRecordAcquireXlibDisplayEXT(
4517 VkPhysicalDevice physicalDevice,
4518 Display* dpy,
4519 VkDisplayKHR display,
4520 VkResult result) {
4521 FinishReadObject(display);
4522}
4523#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
4524
4525void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(
4526 VkPhysicalDevice physicalDevice,
4527 VkSurfaceKHR surface,
4528 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
4529 StartReadObject(surface);
4530}
4531
4532void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(
4533 VkPhysicalDevice physicalDevice,
4534 VkSurfaceKHR surface,
4535 VkSurfaceCapabilities2EXT* pSurfaceCapabilities,
4536 VkResult result) {
4537 FinishReadObject(surface);
4538}
4539
4540void ThreadSafety::PreCallRecordDisplayPowerControlEXT(
4541 VkDevice device,
4542 VkDisplayKHR display,
4543 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
4544 StartReadObject(device);
4545 StartReadObject(display);
4546}
4547
4548void ThreadSafety::PostCallRecordDisplayPowerControlEXT(
4549 VkDevice device,
4550 VkDisplayKHR display,
4551 const VkDisplayPowerInfoEXT* pDisplayPowerInfo,
4552 VkResult result) {
4553 FinishReadObject(device);
4554 FinishReadObject(display);
4555}
4556
4557void ThreadSafety::PreCallRecordRegisterDeviceEventEXT(
4558 VkDevice device,
4559 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4560 const VkAllocationCallbacks* pAllocator,
4561 VkFence* pFence) {
4562 StartReadObject(device);
4563}
4564
4565void ThreadSafety::PostCallRecordRegisterDeviceEventEXT(
4566 VkDevice device,
4567 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4568 const VkAllocationCallbacks* pAllocator,
4569 VkFence* pFence,
4570 VkResult result) {
4571 FinishReadObject(device);
4572}
4573
4574void ThreadSafety::PreCallRecordRegisterDisplayEventEXT(
4575 VkDevice device,
4576 VkDisplayKHR display,
4577 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4578 const VkAllocationCallbacks* pAllocator,
4579 VkFence* pFence) {
4580 StartReadObject(device);
4581 StartReadObject(display);
4582}
4583
4584void ThreadSafety::PostCallRecordRegisterDisplayEventEXT(
4585 VkDevice device,
4586 VkDisplayKHR display,
4587 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4588 const VkAllocationCallbacks* pAllocator,
4589 VkFence* pFence,
4590 VkResult result) {
4591 FinishReadObject(device);
4592 FinishReadObject(display);
4593}
4594
4595void ThreadSafety::PreCallRecordGetSwapchainCounterEXT(
4596 VkDevice device,
4597 VkSwapchainKHR swapchain,
4598 VkSurfaceCounterFlagBitsEXT counter,
4599 uint64_t* pCounterValue) {
4600 StartReadObject(device);
4601 StartReadObject(swapchain);
4602}
4603
4604void ThreadSafety::PostCallRecordGetSwapchainCounterEXT(
4605 VkDevice device,
4606 VkSwapchainKHR swapchain,
4607 VkSurfaceCounterFlagBitsEXT counter,
4608 uint64_t* pCounterValue,
4609 VkResult result) {
4610 FinishReadObject(device);
4611 FinishReadObject(swapchain);
4612}
4613
4614void ThreadSafety::PreCallRecordGetRefreshCycleDurationGOOGLE(
4615 VkDevice device,
4616 VkSwapchainKHR swapchain,
4617 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
4618 StartReadObject(device);
4619 StartWriteObject(swapchain);
4620 // Host access to swapchain must be externally synchronized
4621}
4622
4623void ThreadSafety::PostCallRecordGetRefreshCycleDurationGOOGLE(
4624 VkDevice device,
4625 VkSwapchainKHR swapchain,
4626 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties,
4627 VkResult result) {
4628 FinishReadObject(device);
4629 FinishWriteObject(swapchain);
4630 // Host access to swapchain must be externally synchronized
4631}
4632
4633void ThreadSafety::PreCallRecordGetPastPresentationTimingGOOGLE(
4634 VkDevice device,
4635 VkSwapchainKHR swapchain,
4636 uint32_t* pPresentationTimingCount,
4637 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
4638 StartReadObject(device);
4639 StartWriteObject(swapchain);
4640 // Host access to swapchain must be externally synchronized
4641}
4642
4643void ThreadSafety::PostCallRecordGetPastPresentationTimingGOOGLE(
4644 VkDevice device,
4645 VkSwapchainKHR swapchain,
4646 uint32_t* pPresentationTimingCount,
4647 VkPastPresentationTimingGOOGLE* pPresentationTimings,
4648 VkResult result) {
4649 FinishReadObject(device);
4650 FinishWriteObject(swapchain);
4651 // Host access to swapchain must be externally synchronized
4652}
4653
4654void ThreadSafety::PreCallRecordCmdSetDiscardRectangleEXT(
4655 VkCommandBuffer commandBuffer,
4656 uint32_t firstDiscardRectangle,
4657 uint32_t discardRectangleCount,
4658 const VkRect2D* pDiscardRectangles) {
4659 StartWriteObject(commandBuffer);
4660 // Host access to commandBuffer must be externally synchronized
4661}
4662
4663void ThreadSafety::PostCallRecordCmdSetDiscardRectangleEXT(
4664 VkCommandBuffer commandBuffer,
4665 uint32_t firstDiscardRectangle,
4666 uint32_t discardRectangleCount,
4667 const VkRect2D* pDiscardRectangles) {
4668 FinishWriteObject(commandBuffer);
4669 // Host access to commandBuffer must be externally synchronized
4670}
4671
4672void ThreadSafety::PreCallRecordSetHdrMetadataEXT(
4673 VkDevice device,
4674 uint32_t swapchainCount,
4675 const VkSwapchainKHR* pSwapchains,
4676 const VkHdrMetadataEXT* pMetadata) {
4677 StartReadObject(device);
4678 if (pSwapchains) {
4679 for (uint32_t index = 0; index < swapchainCount; index++) {
4680 StartReadObject(pSwapchains[index]);
4681 }
4682 }
4683}
4684
4685void ThreadSafety::PostCallRecordSetHdrMetadataEXT(
4686 VkDevice device,
4687 uint32_t swapchainCount,
4688 const VkSwapchainKHR* pSwapchains,
4689 const VkHdrMetadataEXT* pMetadata) {
4690 FinishReadObject(device);
4691 if (pSwapchains) {
4692 for (uint32_t index = 0; index < swapchainCount; index++) {
4693 FinishReadObject(pSwapchains[index]);
4694 }
4695 }
4696}
4697
4698#ifdef VK_USE_PLATFORM_IOS_MVK
4699
4700void ThreadSafety::PreCallRecordCreateIOSSurfaceMVK(
4701 VkInstance instance,
4702 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4703 const VkAllocationCallbacks* pAllocator,
4704 VkSurfaceKHR* pSurface) {
4705 StartReadObject(instance);
4706}
4707
4708void ThreadSafety::PostCallRecordCreateIOSSurfaceMVK(
4709 VkInstance instance,
4710 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4711 const VkAllocationCallbacks* pAllocator,
4712 VkSurfaceKHR* pSurface,
4713 VkResult result) {
4714 FinishReadObject(instance);
4715}
4716#endif // VK_USE_PLATFORM_IOS_MVK
4717
4718#ifdef VK_USE_PLATFORM_MACOS_MVK
4719
4720void ThreadSafety::PreCallRecordCreateMacOSSurfaceMVK(
4721 VkInstance instance,
4722 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4723 const VkAllocationCallbacks* pAllocator,
4724 VkSurfaceKHR* pSurface) {
4725 StartReadObject(instance);
4726}
4727
4728void ThreadSafety::PostCallRecordCreateMacOSSurfaceMVK(
4729 VkInstance instance,
4730 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4731 const VkAllocationCallbacks* pAllocator,
4732 VkSurfaceKHR* pSurface,
4733 VkResult result) {
4734 FinishReadObject(instance);
4735}
4736#endif // VK_USE_PLATFORM_MACOS_MVK
4737// TODO - not wrapping EXT function vkSetDebugUtilsObjectNameEXT
4738// TODO - not wrapping EXT function vkSetDebugUtilsObjectTagEXT
4739
4740void ThreadSafety::PreCallRecordQueueBeginDebugUtilsLabelEXT(
4741 VkQueue queue,
4742 const VkDebugUtilsLabelEXT* pLabelInfo) {
4743 StartReadObject(queue);
4744}
4745
4746void ThreadSafety::PostCallRecordQueueBeginDebugUtilsLabelEXT(
4747 VkQueue queue,
4748 const VkDebugUtilsLabelEXT* pLabelInfo) {
4749 FinishReadObject(queue);
4750}
4751
4752void ThreadSafety::PreCallRecordQueueEndDebugUtilsLabelEXT(
4753 VkQueue queue) {
4754 StartReadObject(queue);
4755}
4756
4757void ThreadSafety::PostCallRecordQueueEndDebugUtilsLabelEXT(
4758 VkQueue queue) {
4759 FinishReadObject(queue);
4760}
4761
4762void ThreadSafety::PreCallRecordQueueInsertDebugUtilsLabelEXT(
4763 VkQueue queue,
4764 const VkDebugUtilsLabelEXT* pLabelInfo) {
4765 StartReadObject(queue);
4766}
4767
4768void ThreadSafety::PostCallRecordQueueInsertDebugUtilsLabelEXT(
4769 VkQueue queue,
4770 const VkDebugUtilsLabelEXT* pLabelInfo) {
4771 FinishReadObject(queue);
4772}
4773
4774void ThreadSafety::PreCallRecordCmdBeginDebugUtilsLabelEXT(
4775 VkCommandBuffer commandBuffer,
4776 const VkDebugUtilsLabelEXT* pLabelInfo) {
4777 StartReadObject(commandBuffer);
4778}
4779
4780void ThreadSafety::PostCallRecordCmdBeginDebugUtilsLabelEXT(
4781 VkCommandBuffer commandBuffer,
4782 const VkDebugUtilsLabelEXT* pLabelInfo) {
4783 FinishReadObject(commandBuffer);
4784}
4785
4786void ThreadSafety::PreCallRecordCmdEndDebugUtilsLabelEXT(
4787 VkCommandBuffer commandBuffer) {
4788 StartReadObject(commandBuffer);
4789}
4790
4791void ThreadSafety::PostCallRecordCmdEndDebugUtilsLabelEXT(
4792 VkCommandBuffer commandBuffer) {
4793 FinishReadObject(commandBuffer);
4794}
4795
4796void ThreadSafety::PreCallRecordCmdInsertDebugUtilsLabelEXT(
4797 VkCommandBuffer commandBuffer,
4798 const VkDebugUtilsLabelEXT* pLabelInfo) {
4799 StartReadObject(commandBuffer);
4800}
4801
4802void ThreadSafety::PostCallRecordCmdInsertDebugUtilsLabelEXT(
4803 VkCommandBuffer commandBuffer,
4804 const VkDebugUtilsLabelEXT* pLabelInfo) {
4805 FinishReadObject(commandBuffer);
4806}
4807
4808void ThreadSafety::PreCallRecordCreateDebugUtilsMessengerEXT(
4809 VkInstance instance,
4810 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4811 const VkAllocationCallbacks* pAllocator,
4812 VkDebugUtilsMessengerEXT* pMessenger) {
4813 StartReadObject(instance);
4814}
4815
4816void ThreadSafety::PostCallRecordCreateDebugUtilsMessengerEXT(
4817 VkInstance instance,
4818 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4819 const VkAllocationCallbacks* pAllocator,
4820 VkDebugUtilsMessengerEXT* pMessenger,
4821 VkResult result) {
4822 FinishReadObject(instance);
4823}
4824
4825void ThreadSafety::PreCallRecordDestroyDebugUtilsMessengerEXT(
4826 VkInstance instance,
4827 VkDebugUtilsMessengerEXT messenger,
4828 const VkAllocationCallbacks* pAllocator) {
4829 StartReadObject(instance);
4830 StartWriteObject(messenger);
4831 // Host access to messenger must be externally synchronized
4832}
4833
4834void ThreadSafety::PostCallRecordDestroyDebugUtilsMessengerEXT(
4835 VkInstance instance,
4836 VkDebugUtilsMessengerEXT messenger,
4837 const VkAllocationCallbacks* pAllocator) {
4838 FinishReadObject(instance);
4839 FinishWriteObject(messenger);
4840 // Host access to messenger must be externally synchronized
4841}
4842
4843void ThreadSafety::PreCallRecordSubmitDebugUtilsMessageEXT(
4844 VkInstance instance,
4845 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4846 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4847 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
4848 StartReadObject(instance);
4849}
4850
4851void ThreadSafety::PostCallRecordSubmitDebugUtilsMessageEXT(
4852 VkInstance instance,
4853 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4854 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4855 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
4856 FinishReadObject(instance);
4857}
4858
4859#ifdef VK_USE_PLATFORM_ANDROID_KHR
4860
4861void ThreadSafety::PreCallRecordGetAndroidHardwareBufferPropertiesANDROID(
4862 VkDevice device,
4863 const struct AHardwareBuffer* buffer,
4864 VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
4865 StartReadObject(device);
4866}
4867
4868void ThreadSafety::PostCallRecordGetAndroidHardwareBufferPropertiesANDROID(
4869 VkDevice device,
4870 const struct AHardwareBuffer* buffer,
4871 VkAndroidHardwareBufferPropertiesANDROID* pProperties,
4872 VkResult result) {
4873 FinishReadObject(device);
4874}
4875
4876void ThreadSafety::PreCallRecordGetMemoryAndroidHardwareBufferANDROID(
4877 VkDevice device,
4878 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4879 struct AHardwareBuffer** pBuffer) {
4880 StartReadObject(device);
4881}
4882
4883void ThreadSafety::PostCallRecordGetMemoryAndroidHardwareBufferANDROID(
4884 VkDevice device,
4885 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4886 struct AHardwareBuffer** pBuffer,
4887 VkResult result) {
4888 FinishReadObject(device);
4889}
4890#endif // VK_USE_PLATFORM_ANDROID_KHR
4891
4892void ThreadSafety::PreCallRecordCmdSetSampleLocationsEXT(
4893 VkCommandBuffer commandBuffer,
4894 const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
4895 StartWriteObject(commandBuffer);
4896 // Host access to commandBuffer must be externally synchronized
4897}
4898
4899void ThreadSafety::PostCallRecordCmdSetSampleLocationsEXT(
4900 VkCommandBuffer commandBuffer,
4901 const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
4902 FinishWriteObject(commandBuffer);
4903 // Host access to commandBuffer must be externally synchronized
4904}
4905
4906void ThreadSafety::PreCallRecordGetImageDrmFormatModifierPropertiesEXT(
4907 VkDevice device,
4908 VkImage image,
4909 VkImageDrmFormatModifierPropertiesEXT* pProperties) {
4910 StartReadObject(device);
4911 StartReadObject(image);
4912}
4913
4914void ThreadSafety::PostCallRecordGetImageDrmFormatModifierPropertiesEXT(
4915 VkDevice device,
4916 VkImage image,
4917 VkImageDrmFormatModifierPropertiesEXT* pProperties,
4918 VkResult result) {
4919 FinishReadObject(device);
4920 FinishReadObject(image);
4921}
4922
4923void ThreadSafety::PreCallRecordCreateValidationCacheEXT(
4924 VkDevice device,
4925 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4926 const VkAllocationCallbacks* pAllocator,
4927 VkValidationCacheEXT* pValidationCache) {
4928 StartReadObject(device);
4929}
4930
4931void ThreadSafety::PostCallRecordCreateValidationCacheEXT(
4932 VkDevice device,
4933 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4934 const VkAllocationCallbacks* pAllocator,
4935 VkValidationCacheEXT* pValidationCache,
4936 VkResult result) {
4937 FinishReadObject(device);
4938}
4939
4940void ThreadSafety::PreCallRecordDestroyValidationCacheEXT(
4941 VkDevice device,
4942 VkValidationCacheEXT validationCache,
4943 const VkAllocationCallbacks* pAllocator) {
4944 StartReadObject(device);
4945 StartWriteObject(validationCache);
4946 // Host access to validationCache must be externally synchronized
4947}
4948
4949void ThreadSafety::PostCallRecordDestroyValidationCacheEXT(
4950 VkDevice device,
4951 VkValidationCacheEXT validationCache,
4952 const VkAllocationCallbacks* pAllocator) {
4953 FinishReadObject(device);
4954 FinishWriteObject(validationCache);
4955 // Host access to validationCache must be externally synchronized
4956}
4957
4958void ThreadSafety::PreCallRecordMergeValidationCachesEXT(
4959 VkDevice device,
4960 VkValidationCacheEXT dstCache,
4961 uint32_t srcCacheCount,
4962 const VkValidationCacheEXT* pSrcCaches) {
4963 StartReadObject(device);
4964 StartWriteObject(dstCache);
4965 if (pSrcCaches) {
4966 for (uint32_t index = 0; index < srcCacheCount; index++) {
4967 StartReadObject(pSrcCaches[index]);
4968 }
4969 }
4970 // Host access to dstCache must be externally synchronized
4971}
4972
4973void ThreadSafety::PostCallRecordMergeValidationCachesEXT(
4974 VkDevice device,
4975 VkValidationCacheEXT dstCache,
4976 uint32_t srcCacheCount,
4977 const VkValidationCacheEXT* pSrcCaches,
4978 VkResult result) {
4979 FinishReadObject(device);
4980 FinishWriteObject(dstCache);
4981 if (pSrcCaches) {
4982 for (uint32_t index = 0; index < srcCacheCount; index++) {
4983 FinishReadObject(pSrcCaches[index]);
4984 }
4985 }
4986 // Host access to dstCache must be externally synchronized
4987}
4988
4989void ThreadSafety::PreCallRecordGetValidationCacheDataEXT(
4990 VkDevice device,
4991 VkValidationCacheEXT validationCache,
4992 size_t* pDataSize,
4993 void* pData) {
4994 StartReadObject(device);
4995 StartReadObject(validationCache);
4996}
4997
4998void ThreadSafety::PostCallRecordGetValidationCacheDataEXT(
4999 VkDevice device,
5000 VkValidationCacheEXT validationCache,
5001 size_t* pDataSize,
5002 void* pData,
5003 VkResult result) {
5004 FinishReadObject(device);
5005 FinishReadObject(validationCache);
5006}
5007
5008void ThreadSafety::PreCallRecordCmdBindShadingRateImageNV(
5009 VkCommandBuffer commandBuffer,
5010 VkImageView imageView,
5011 VkImageLayout imageLayout) {
5012 StartWriteObject(commandBuffer);
5013 StartReadObject(imageView);
5014 // Host access to commandBuffer must be externally synchronized
5015}
5016
5017void ThreadSafety::PostCallRecordCmdBindShadingRateImageNV(
5018 VkCommandBuffer commandBuffer,
5019 VkImageView imageView,
5020 VkImageLayout imageLayout) {
5021 FinishWriteObject(commandBuffer);
5022 FinishReadObject(imageView);
5023 // Host access to commandBuffer must be externally synchronized
5024}
5025
5026void ThreadSafety::PreCallRecordCmdSetViewportShadingRatePaletteNV(
5027 VkCommandBuffer commandBuffer,
5028 uint32_t firstViewport,
5029 uint32_t viewportCount,
5030 const VkShadingRatePaletteNV* pShadingRatePalettes) {
5031 StartWriteObject(commandBuffer);
5032 // Host access to commandBuffer must be externally synchronized
5033}
5034
5035void ThreadSafety::PostCallRecordCmdSetViewportShadingRatePaletteNV(
5036 VkCommandBuffer commandBuffer,
5037 uint32_t firstViewport,
5038 uint32_t viewportCount,
5039 const VkShadingRatePaletteNV* pShadingRatePalettes) {
5040 FinishWriteObject(commandBuffer);
5041 // Host access to commandBuffer must be externally synchronized
5042}
5043
5044void ThreadSafety::PreCallRecordCmdSetCoarseSampleOrderNV(
5045 VkCommandBuffer commandBuffer,
5046 VkCoarseSampleOrderTypeNV sampleOrderType,
5047 uint32_t customSampleOrderCount,
5048 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
5049 StartWriteObject(commandBuffer);
5050 // Host access to commandBuffer must be externally synchronized
5051}
5052
5053void ThreadSafety::PostCallRecordCmdSetCoarseSampleOrderNV(
5054 VkCommandBuffer commandBuffer,
5055 VkCoarseSampleOrderTypeNV sampleOrderType,
5056 uint32_t customSampleOrderCount,
5057 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
5058 FinishWriteObject(commandBuffer);
5059 // Host access to commandBuffer must be externally synchronized
5060}
5061
5062void ThreadSafety::PreCallRecordCreateAccelerationStructureNV(
5063 VkDevice device,
5064 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5065 const VkAllocationCallbacks* pAllocator,
5066 VkAccelerationStructureNV* pAccelerationStructure) {
5067 StartReadObject(device);
5068}
5069
5070void ThreadSafety::PostCallRecordCreateAccelerationStructureNV(
5071 VkDevice device,
5072 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5073 const VkAllocationCallbacks* pAllocator,
5074 VkAccelerationStructureNV* pAccelerationStructure,
5075 VkResult result) {
5076 FinishReadObject(device);
5077}
5078
5079void ThreadSafety::PreCallRecordDestroyAccelerationStructureNV(
5080 VkDevice device,
5081 VkAccelerationStructureNV accelerationStructure,
5082 const VkAllocationCallbacks* pAllocator) {
5083 StartReadObject(device);
5084 StartReadObject(accelerationStructure);
5085}
5086
5087void ThreadSafety::PostCallRecordDestroyAccelerationStructureNV(
5088 VkDevice device,
5089 VkAccelerationStructureNV accelerationStructure,
5090 const VkAllocationCallbacks* pAllocator) {
5091 FinishReadObject(device);
5092 FinishReadObject(accelerationStructure);
5093}
5094
5095void ThreadSafety::PreCallRecordGetAccelerationStructureMemoryRequirementsNV(
5096 VkDevice device,
5097 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5098 VkMemoryRequirements2KHR* pMemoryRequirements) {
5099 StartReadObject(device);
5100}
5101
5102void ThreadSafety::PostCallRecordGetAccelerationStructureMemoryRequirementsNV(
5103 VkDevice device,
5104 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5105 VkMemoryRequirements2KHR* pMemoryRequirements) {
5106 FinishReadObject(device);
5107}
5108
5109void ThreadSafety::PreCallRecordBindAccelerationStructureMemoryNV(
5110 VkDevice device,
5111 uint32_t bindInfoCount,
5112 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
5113 StartReadObject(device);
5114}
5115
5116void ThreadSafety::PostCallRecordBindAccelerationStructureMemoryNV(
5117 VkDevice device,
5118 uint32_t bindInfoCount,
5119 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
5120 VkResult result) {
5121 FinishReadObject(device);
5122}
5123
5124void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureNV(
5125 VkCommandBuffer commandBuffer,
5126 const VkAccelerationStructureInfoNV* pInfo,
5127 VkBuffer instanceData,
5128 VkDeviceSize instanceOffset,
5129 VkBool32 update,
5130 VkAccelerationStructureNV dst,
5131 VkAccelerationStructureNV src,
5132 VkBuffer scratch,
5133 VkDeviceSize scratchOffset) {
5134 StartReadObject(commandBuffer);
5135 StartReadObject(instanceData);
5136 StartReadObject(dst);
5137 StartReadObject(src);
5138 StartReadObject(scratch);
5139}
5140
5141void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureNV(
5142 VkCommandBuffer commandBuffer,
5143 const VkAccelerationStructureInfoNV* pInfo,
5144 VkBuffer instanceData,
5145 VkDeviceSize instanceOffset,
5146 VkBool32 update,
5147 VkAccelerationStructureNV dst,
5148 VkAccelerationStructureNV src,
5149 VkBuffer scratch,
5150 VkDeviceSize scratchOffset) {
5151 FinishReadObject(commandBuffer);
5152 FinishReadObject(instanceData);
5153 FinishReadObject(dst);
5154 FinishReadObject(src);
5155 FinishReadObject(scratch);
5156}
5157
5158void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureNV(
5159 VkCommandBuffer commandBuffer,
5160 VkAccelerationStructureNV dst,
5161 VkAccelerationStructureNV src,
5162 VkCopyAccelerationStructureModeNV mode) {
5163 StartReadObject(commandBuffer);
5164 StartReadObject(dst);
5165 StartReadObject(src);
5166}
5167
5168void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureNV(
5169 VkCommandBuffer commandBuffer,
5170 VkAccelerationStructureNV dst,
5171 VkAccelerationStructureNV src,
5172 VkCopyAccelerationStructureModeNV mode) {
5173 FinishReadObject(commandBuffer);
5174 FinishReadObject(dst);
5175 FinishReadObject(src);
5176}
5177
5178void ThreadSafety::PreCallRecordCmdTraceRaysNV(
5179 VkCommandBuffer commandBuffer,
5180 VkBuffer raygenShaderBindingTableBuffer,
5181 VkDeviceSize raygenShaderBindingOffset,
5182 VkBuffer missShaderBindingTableBuffer,
5183 VkDeviceSize missShaderBindingOffset,
5184 VkDeviceSize missShaderBindingStride,
5185 VkBuffer hitShaderBindingTableBuffer,
5186 VkDeviceSize hitShaderBindingOffset,
5187 VkDeviceSize hitShaderBindingStride,
5188 VkBuffer callableShaderBindingTableBuffer,
5189 VkDeviceSize callableShaderBindingOffset,
5190 VkDeviceSize callableShaderBindingStride,
5191 uint32_t width,
5192 uint32_t height,
5193 uint32_t depth) {
5194 StartReadObject(commandBuffer);
5195 StartReadObject(raygenShaderBindingTableBuffer);
5196 StartReadObject(missShaderBindingTableBuffer);
5197 StartReadObject(hitShaderBindingTableBuffer);
5198 StartReadObject(callableShaderBindingTableBuffer);
5199}
5200
5201void ThreadSafety::PostCallRecordCmdTraceRaysNV(
5202 VkCommandBuffer commandBuffer,
5203 VkBuffer raygenShaderBindingTableBuffer,
5204 VkDeviceSize raygenShaderBindingOffset,
5205 VkBuffer missShaderBindingTableBuffer,
5206 VkDeviceSize missShaderBindingOffset,
5207 VkDeviceSize missShaderBindingStride,
5208 VkBuffer hitShaderBindingTableBuffer,
5209 VkDeviceSize hitShaderBindingOffset,
5210 VkDeviceSize hitShaderBindingStride,
5211 VkBuffer callableShaderBindingTableBuffer,
5212 VkDeviceSize callableShaderBindingOffset,
5213 VkDeviceSize callableShaderBindingStride,
5214 uint32_t width,
5215 uint32_t height,
5216 uint32_t depth) {
5217 FinishReadObject(commandBuffer);
5218 FinishReadObject(raygenShaderBindingTableBuffer);
5219 FinishReadObject(missShaderBindingTableBuffer);
5220 FinishReadObject(hitShaderBindingTableBuffer);
5221 FinishReadObject(callableShaderBindingTableBuffer);
5222}
5223
5224void ThreadSafety::PreCallRecordCreateRayTracingPipelinesNV(
5225 VkDevice device,
5226 VkPipelineCache pipelineCache,
5227 uint32_t createInfoCount,
5228 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5229 const VkAllocationCallbacks* pAllocator,
5230 VkPipeline* pPipelines) {
5231 StartReadObject(device);
5232 StartReadObject(pipelineCache);
5233}
5234
5235void ThreadSafety::PostCallRecordCreateRayTracingPipelinesNV(
5236 VkDevice device,
5237 VkPipelineCache pipelineCache,
5238 uint32_t createInfoCount,
5239 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5240 const VkAllocationCallbacks* pAllocator,
5241 VkPipeline* pPipelines,
5242 VkResult result) {
5243 FinishReadObject(device);
5244 FinishReadObject(pipelineCache);
5245}
5246
5247void ThreadSafety::PreCallRecordGetRayTracingShaderGroupHandlesNV(
5248 VkDevice device,
5249 VkPipeline pipeline,
5250 uint32_t firstGroup,
5251 uint32_t groupCount,
5252 size_t dataSize,
5253 void* pData) {
5254 StartReadObject(device);
5255 StartReadObject(pipeline);
5256}
5257
5258void ThreadSafety::PostCallRecordGetRayTracingShaderGroupHandlesNV(
5259 VkDevice device,
5260 VkPipeline pipeline,
5261 uint32_t firstGroup,
5262 uint32_t groupCount,
5263 size_t dataSize,
5264 void* pData,
5265 VkResult result) {
5266 FinishReadObject(device);
5267 FinishReadObject(pipeline);
5268}
5269
5270void ThreadSafety::PreCallRecordGetAccelerationStructureHandleNV(
5271 VkDevice device,
5272 VkAccelerationStructureNV accelerationStructure,
5273 size_t dataSize,
5274 void* pData) {
5275 StartReadObject(device);
5276 StartReadObject(accelerationStructure);
5277}
5278
5279void ThreadSafety::PostCallRecordGetAccelerationStructureHandleNV(
5280 VkDevice device,
5281 VkAccelerationStructureNV accelerationStructure,
5282 size_t dataSize,
5283 void* pData,
5284 VkResult result) {
5285 FinishReadObject(device);
5286 FinishReadObject(accelerationStructure);
5287}
5288
5289void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesNV(
5290 VkCommandBuffer commandBuffer,
5291 uint32_t accelerationStructureCount,
5292 const VkAccelerationStructureNV* pAccelerationStructures,
5293 VkQueryType queryType,
5294 VkQueryPool queryPool,
5295 uint32_t firstQuery) {
5296 StartReadObject(commandBuffer);
5297 if (pAccelerationStructures) {
5298 for (uint32_t index = 0; index < accelerationStructureCount; index++) {
5299 StartReadObject(pAccelerationStructures[index]);
5300 }
5301 }
5302 StartReadObject(queryPool);
5303}
5304
5305void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesNV(
5306 VkCommandBuffer commandBuffer,
5307 uint32_t accelerationStructureCount,
5308 const VkAccelerationStructureNV* pAccelerationStructures,
5309 VkQueryType queryType,
5310 VkQueryPool queryPool,
5311 uint32_t firstQuery) {
5312 FinishReadObject(commandBuffer);
5313 if (pAccelerationStructures) {
5314 for (uint32_t index = 0; index < accelerationStructureCount; index++) {
5315 FinishReadObject(pAccelerationStructures[index]);
5316 }
5317 }
5318 FinishReadObject(queryPool);
5319}
5320
5321void ThreadSafety::PreCallRecordCompileDeferredNV(
5322 VkDevice device,
5323 VkPipeline pipeline,
5324 uint32_t shader) {
5325 StartReadObject(device);
5326 StartReadObject(pipeline);
5327}
5328
5329void ThreadSafety::PostCallRecordCompileDeferredNV(
5330 VkDevice device,
5331 VkPipeline pipeline,
5332 uint32_t shader,
5333 VkResult result) {
5334 FinishReadObject(device);
5335 FinishReadObject(pipeline);
5336}
5337
5338void ThreadSafety::PreCallRecordGetMemoryHostPointerPropertiesEXT(
5339 VkDevice device,
5340 VkExternalMemoryHandleTypeFlagBits handleType,
5341 const void* pHostPointer,
5342 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
5343 StartReadObject(device);
5344}
5345
5346void ThreadSafety::PostCallRecordGetMemoryHostPointerPropertiesEXT(
5347 VkDevice device,
5348 VkExternalMemoryHandleTypeFlagBits handleType,
5349 const void* pHostPointer,
5350 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties,
5351 VkResult result) {
5352 FinishReadObject(device);
5353}
5354
5355void ThreadSafety::PreCallRecordCmdWriteBufferMarkerAMD(
5356 VkCommandBuffer commandBuffer,
5357 VkPipelineStageFlagBits pipelineStage,
5358 VkBuffer dstBuffer,
5359 VkDeviceSize dstOffset,
5360 uint32_t marker) {
5361 StartWriteObject(commandBuffer);
5362 StartReadObject(dstBuffer);
5363 // Host access to commandBuffer must be externally synchronized
5364}
5365
5366void ThreadSafety::PostCallRecordCmdWriteBufferMarkerAMD(
5367 VkCommandBuffer commandBuffer,
5368 VkPipelineStageFlagBits pipelineStage,
5369 VkBuffer dstBuffer,
5370 VkDeviceSize dstOffset,
5371 uint32_t marker) {
5372 FinishWriteObject(commandBuffer);
5373 FinishReadObject(dstBuffer);
5374 // Host access to commandBuffer must be externally synchronized
5375}
5376
5377void ThreadSafety::PreCallRecordGetCalibratedTimestampsEXT(
5378 VkDevice device,
5379 uint32_t timestampCount,
5380 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
5381 uint64_t* pTimestamps,
5382 uint64_t* pMaxDeviation) {
5383 StartReadObject(device);
5384}
5385
5386void ThreadSafety::PostCallRecordGetCalibratedTimestampsEXT(
5387 VkDevice device,
5388 uint32_t timestampCount,
5389 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
5390 uint64_t* pTimestamps,
5391 uint64_t* pMaxDeviation,
5392 VkResult result) {
5393 FinishReadObject(device);
5394}
5395
5396#ifdef VK_USE_PLATFORM_GGP
5397#endif // VK_USE_PLATFORM_GGP
5398
5399void ThreadSafety::PreCallRecordCmdDrawMeshTasksNV(
5400 VkCommandBuffer commandBuffer,
5401 uint32_t taskCount,
5402 uint32_t firstTask) {
5403 StartWriteObject(commandBuffer);
5404 // Host access to commandBuffer must be externally synchronized
5405}
5406
5407void ThreadSafety::PostCallRecordCmdDrawMeshTasksNV(
5408 VkCommandBuffer commandBuffer,
5409 uint32_t taskCount,
5410 uint32_t firstTask) {
5411 FinishWriteObject(commandBuffer);
5412 // Host access to commandBuffer must be externally synchronized
5413}
5414
5415void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectNV(
5416 VkCommandBuffer commandBuffer,
5417 VkBuffer buffer,
5418 VkDeviceSize offset,
5419 uint32_t drawCount,
5420 uint32_t stride) {
5421 StartWriteObject(commandBuffer);
5422 StartReadObject(buffer);
5423 // Host access to commandBuffer must be externally synchronized
5424}
5425
5426void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectNV(
5427 VkCommandBuffer commandBuffer,
5428 VkBuffer buffer,
5429 VkDeviceSize offset,
5430 uint32_t drawCount,
5431 uint32_t stride) {
5432 FinishWriteObject(commandBuffer);
5433 FinishReadObject(buffer);
5434 // Host access to commandBuffer must be externally synchronized
5435}
5436
5437void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectCountNV(
5438 VkCommandBuffer commandBuffer,
5439 VkBuffer buffer,
5440 VkDeviceSize offset,
5441 VkBuffer countBuffer,
5442 VkDeviceSize countBufferOffset,
5443 uint32_t maxDrawCount,
5444 uint32_t stride) {
5445 StartWriteObject(commandBuffer);
5446 StartReadObject(buffer);
5447 StartReadObject(countBuffer);
5448 // Host access to commandBuffer must be externally synchronized
5449}
5450
5451void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectCountNV(
5452 VkCommandBuffer commandBuffer,
5453 VkBuffer buffer,
5454 VkDeviceSize offset,
5455 VkBuffer countBuffer,
5456 VkDeviceSize countBufferOffset,
5457 uint32_t maxDrawCount,
5458 uint32_t stride) {
5459 FinishWriteObject(commandBuffer);
5460 FinishReadObject(buffer);
5461 FinishReadObject(countBuffer);
5462 // Host access to commandBuffer must be externally synchronized
5463}
5464
5465void ThreadSafety::PreCallRecordCmdSetExclusiveScissorNV(
5466 VkCommandBuffer commandBuffer,
5467 uint32_t firstExclusiveScissor,
5468 uint32_t exclusiveScissorCount,
5469 const VkRect2D* pExclusiveScissors) {
5470 StartWriteObject(commandBuffer);
5471 // Host access to commandBuffer must be externally synchronized
5472}
5473
5474void ThreadSafety::PostCallRecordCmdSetExclusiveScissorNV(
5475 VkCommandBuffer commandBuffer,
5476 uint32_t firstExclusiveScissor,
5477 uint32_t exclusiveScissorCount,
5478 const VkRect2D* pExclusiveScissors) {
5479 FinishWriteObject(commandBuffer);
5480 // Host access to commandBuffer must be externally synchronized
5481}
5482
5483void ThreadSafety::PreCallRecordCmdSetCheckpointNV(
5484 VkCommandBuffer commandBuffer,
5485 const void* pCheckpointMarker) {
5486 StartReadObject(commandBuffer);
5487}
5488
5489void ThreadSafety::PostCallRecordCmdSetCheckpointNV(
5490 VkCommandBuffer commandBuffer,
5491 const void* pCheckpointMarker) {
5492 FinishReadObject(commandBuffer);
5493}
5494
5495void ThreadSafety::PreCallRecordGetQueueCheckpointDataNV(
5496 VkQueue queue,
5497 uint32_t* pCheckpointDataCount,
5498 VkCheckpointDataNV* pCheckpointData) {
5499 StartReadObject(queue);
5500}
5501
5502void ThreadSafety::PostCallRecordGetQueueCheckpointDataNV(
5503 VkQueue queue,
5504 uint32_t* pCheckpointDataCount,
5505 VkCheckpointDataNV* pCheckpointData) {
5506 FinishReadObject(queue);
5507}
5508
5509void ThreadSafety::PreCallRecordInitializePerformanceApiINTEL(
5510 VkDevice device,
5511 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) {
5512 StartReadObject(device);
5513}
5514
5515void ThreadSafety::PostCallRecordInitializePerformanceApiINTEL(
5516 VkDevice device,
5517 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo,
5518 VkResult result) {
5519 FinishReadObject(device);
5520}
5521
5522void ThreadSafety::PreCallRecordUninitializePerformanceApiINTEL(
5523 VkDevice device) {
5524 StartReadObject(device);
5525}
5526
5527void ThreadSafety::PostCallRecordUninitializePerformanceApiINTEL(
5528 VkDevice device) {
5529 FinishReadObject(device);
5530}
5531
5532void ThreadSafety::PreCallRecordCmdSetPerformanceMarkerINTEL(
5533 VkCommandBuffer commandBuffer,
5534 const VkPerformanceMarkerInfoINTEL* pMarkerInfo) {
5535 StartReadObject(commandBuffer);
5536}
5537
5538void ThreadSafety::PostCallRecordCmdSetPerformanceMarkerINTEL(
5539 VkCommandBuffer commandBuffer,
5540 const VkPerformanceMarkerInfoINTEL* pMarkerInfo,
5541 VkResult result) {
5542 FinishReadObject(commandBuffer);
5543}
5544
5545void ThreadSafety::PreCallRecordCmdSetPerformanceStreamMarkerINTEL(
5546 VkCommandBuffer commandBuffer,
5547 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) {
5548 StartReadObject(commandBuffer);
5549}
5550
5551void ThreadSafety::PostCallRecordCmdSetPerformanceStreamMarkerINTEL(
5552 VkCommandBuffer commandBuffer,
5553 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo,
5554 VkResult result) {
5555 FinishReadObject(commandBuffer);
5556}
5557
5558void ThreadSafety::PreCallRecordCmdSetPerformanceOverrideINTEL(
5559 VkCommandBuffer commandBuffer,
5560 const VkPerformanceOverrideInfoINTEL* pOverrideInfo) {
5561 StartReadObject(commandBuffer);
5562}
5563
5564void ThreadSafety::PostCallRecordCmdSetPerformanceOverrideINTEL(
5565 VkCommandBuffer commandBuffer,
5566 const VkPerformanceOverrideInfoINTEL* pOverrideInfo,
5567 VkResult result) {
5568 FinishReadObject(commandBuffer);
5569}
5570
5571void ThreadSafety::PreCallRecordAcquirePerformanceConfigurationINTEL(
5572 VkDevice device,
5573 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
5574 VkPerformanceConfigurationINTEL* pConfiguration) {
5575 StartReadObject(device);
5576}
5577
5578void ThreadSafety::PostCallRecordAcquirePerformanceConfigurationINTEL(
5579 VkDevice device,
5580 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
5581 VkPerformanceConfigurationINTEL* pConfiguration,
5582 VkResult result) {
5583 FinishReadObject(device);
5584}
5585
5586void ThreadSafety::PreCallRecordReleasePerformanceConfigurationINTEL(
5587 VkDevice device,
5588 VkPerformanceConfigurationINTEL configuration) {
5589 StartReadObject(device);
5590 StartReadObject(configuration);
5591}
5592
5593void ThreadSafety::PostCallRecordReleasePerformanceConfigurationINTEL(
5594 VkDevice device,
5595 VkPerformanceConfigurationINTEL configuration,
5596 VkResult result) {
5597 FinishReadObject(device);
5598 FinishReadObject(configuration);
5599}
5600
5601void ThreadSafety::PreCallRecordQueueSetPerformanceConfigurationINTEL(
5602 VkQueue queue,
5603 VkPerformanceConfigurationINTEL configuration) {
5604 StartReadObject(queue);
5605 StartReadObject(configuration);
5606}
5607
5608void ThreadSafety::PostCallRecordQueueSetPerformanceConfigurationINTEL(
5609 VkQueue queue,
5610 VkPerformanceConfigurationINTEL configuration,
5611 VkResult result) {
5612 FinishReadObject(queue);
5613 FinishReadObject(configuration);
5614}
5615
5616void ThreadSafety::PreCallRecordGetPerformanceParameterINTEL(
5617 VkDevice device,
5618 VkPerformanceParameterTypeINTEL parameter,
5619 VkPerformanceValueINTEL* pValue) {
5620 StartReadObject(device);
5621}
5622
5623void ThreadSafety::PostCallRecordGetPerformanceParameterINTEL(
5624 VkDevice device,
5625 VkPerformanceParameterTypeINTEL parameter,
5626 VkPerformanceValueINTEL* pValue,
5627 VkResult result) {
5628 FinishReadObject(device);
5629}
5630
5631void ThreadSafety::PreCallRecordSetLocalDimmingAMD(
5632 VkDevice device,
5633 VkSwapchainKHR swapChain,
5634 VkBool32 localDimmingEnable) {
5635 StartReadObject(device);
5636 StartReadObject(swapChain);
5637}
5638
5639void ThreadSafety::PostCallRecordSetLocalDimmingAMD(
5640 VkDevice device,
5641 VkSwapchainKHR swapChain,
5642 VkBool32 localDimmingEnable) {
5643 FinishReadObject(device);
5644 FinishReadObject(swapChain);
5645}
5646
5647#ifdef VK_USE_PLATFORM_FUCHSIA
5648
5649void ThreadSafety::PreCallRecordCreateImagePipeSurfaceFUCHSIA(
5650 VkInstance instance,
5651 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
5652 const VkAllocationCallbacks* pAllocator,
5653 VkSurfaceKHR* pSurface) {
5654 StartReadObject(instance);
5655}
5656
5657void ThreadSafety::PostCallRecordCreateImagePipeSurfaceFUCHSIA(
5658 VkInstance instance,
5659 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
5660 const VkAllocationCallbacks* pAllocator,
5661 VkSurfaceKHR* pSurface,
5662 VkResult result) {
5663 FinishReadObject(instance);
5664}
5665#endif // VK_USE_PLATFORM_FUCHSIA
5666
5667#ifdef VK_USE_PLATFORM_METAL_EXT
5668
5669void ThreadSafety::PreCallRecordCreateMetalSurfaceEXT(
5670 VkInstance instance,
5671 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
5672 const VkAllocationCallbacks* pAllocator,
5673 VkSurfaceKHR* pSurface) {
5674 StartReadObject(instance);
5675}
5676
5677void ThreadSafety::PostCallRecordCreateMetalSurfaceEXT(
5678 VkInstance instance,
5679 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
5680 const VkAllocationCallbacks* pAllocator,
5681 VkSurfaceKHR* pSurface,
5682 VkResult result) {
5683 FinishReadObject(instance);
5684}
5685#endif // VK_USE_PLATFORM_METAL_EXT
5686
5687void ThreadSafety::PreCallRecordGetBufferDeviceAddressEXT(
5688 VkDevice device,
5689 const VkBufferDeviceAddressInfoEXT* pInfo) {
5690 StartReadObject(device);
5691}
5692
5693void ThreadSafety::PostCallRecordGetBufferDeviceAddressEXT(
5694 VkDevice device,
5695 const VkBufferDeviceAddressInfoEXT* pInfo) {
5696 FinishReadObject(device);
5697}
5698
5699#ifdef VK_USE_PLATFORM_WIN32_KHR
5700
5701void ThreadSafety::PreCallRecordAcquireFullScreenExclusiveModeEXT(
5702 VkDevice device,
5703 VkSwapchainKHR swapchain) {
5704 StartReadObject(device);
5705 StartReadObject(swapchain);
5706}
5707
5708void ThreadSafety::PostCallRecordAcquireFullScreenExclusiveModeEXT(
5709 VkDevice device,
5710 VkSwapchainKHR swapchain,
5711 VkResult result) {
5712 FinishReadObject(device);
5713 FinishReadObject(swapchain);
5714}
5715
5716void ThreadSafety::PreCallRecordReleaseFullScreenExclusiveModeEXT(
5717 VkDevice device,
5718 VkSwapchainKHR swapchain) {
5719 StartReadObject(device);
5720 StartReadObject(swapchain);
5721}
5722
5723void ThreadSafety::PostCallRecordReleaseFullScreenExclusiveModeEXT(
5724 VkDevice device,
5725 VkSwapchainKHR swapchain,
5726 VkResult result) {
5727 FinishReadObject(device);
5728 FinishReadObject(swapchain);
5729}
5730
5731void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModes2EXT(
5732 VkDevice device,
5733 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5734 VkDeviceGroupPresentModeFlagsKHR* pModes) {
5735 StartReadObject(device);
5736}
5737
5738void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModes2EXT(
5739 VkDevice device,
5740 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5741 VkDeviceGroupPresentModeFlagsKHR* pModes,
5742 VkResult result) {
5743 FinishReadObject(device);
5744}
5745#endif // VK_USE_PLATFORM_WIN32_KHR
5746
5747void ThreadSafety::PreCallRecordCreateHeadlessSurfaceEXT(
5748 VkInstance instance,
5749 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
5750 const VkAllocationCallbacks* pAllocator,
5751 VkSurfaceKHR* pSurface) {
5752 StartReadObject(instance);
5753}
5754
5755void ThreadSafety::PostCallRecordCreateHeadlessSurfaceEXT(
5756 VkInstance instance,
5757 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
5758 const VkAllocationCallbacks* pAllocator,
5759 VkSurfaceKHR* pSurface,
5760 VkResult result) {
5761 FinishReadObject(instance);
5762}
5763
5764void ThreadSafety::PreCallRecordResetQueryPoolEXT(
5765 VkDevice device,
5766 VkQueryPool queryPool,
5767 uint32_t firstQuery,
5768 uint32_t queryCount) {
5769 StartReadObject(device);
5770 StartReadObject(queryPool);
5771}
5772
5773void ThreadSafety::PostCallRecordResetQueryPoolEXT(
5774 VkDevice device,
5775 VkQueryPool queryPool,
5776 uint32_t firstQuery,
5777 uint32_t queryCount) {
5778 FinishReadObject(device);
5779 FinishReadObject(queryPool);
5780}