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