| // This file is ***GENERATED***. Do Not Edit. | |
| // See thread_safety_generator.py for modifications. | |
| /* Copyright (c) 2015-2019 The Khronos Group Inc. | |
| * Copyright (c) 2015-2019 Valve Corporation | |
| * Copyright (c) 2015-2019 LunarG, Inc. | |
| * Copyright (c) 2015-2019 Google Inc. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| * Author: Mark Lobodzinski <mark@lunarg.com> | |
| */ | |
| #include "chassis.h" | |
| #include "thread_safety.h" | |
| void ThreadSafety::PreCallRecordAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, | |
| VkCommandBuffer *pCommandBuffers) { | |
| StartReadObject(device); | |
| StartWriteObject(pAllocateInfo->commandPool); | |
| } | |
| void ThreadSafety::PostCallRecordAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, | |
| VkCommandBuffer *pCommandBuffers, VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pAllocateInfo->commandPool); | |
| // Record mapping from command buffer to command pool | |
| if(pCommandBuffers) { | |
| for (uint32_t index = 0; index < pAllocateInfo->commandBufferCount; index++) { | |
| auto &bucket = GetBucket(pCommandBuffers[index]); | |
| std::lock_guard<std::mutex> lock(bucket.command_pool_lock); | |
| bucket.command_pool_map[pCommandBuffers[index]] = pAllocateInfo->commandPool; | |
| } | |
| } | |
| } | |
| void ThreadSafety::PreCallRecordAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo, | |
| VkDescriptorSet *pDescriptorSets) { | |
| StartReadObject(device); | |
| StartWriteObject(pAllocateInfo->descriptorPool); | |
| // Host access to pAllocateInfo::descriptorPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo, | |
| VkDescriptorSet *pDescriptorSets, VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pAllocateInfo->descriptorPool); | |
| // Host access to pAllocateInfo::descriptorPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, | |
| const VkCommandBuffer *pCommandBuffers) { | |
| const bool lockCommandPool = false; // pool is already directly locked | |
| StartReadObject(device); | |
| StartWriteObject(commandPool); | |
| if(pCommandBuffers) { | |
| // Even though we're immediately "finishing" below, we still are testing for concurrency with any call in process | |
| // so this isn't a no-op | |
| for (uint32_t index = 0; index < commandBufferCount; index++) { | |
| StartWriteObject(pCommandBuffers[index], lockCommandPool); | |
| } | |
| // The driver may immediately reuse command buffers in another thread. | |
| // These updates need to be done before calling down to the driver. | |
| for (uint32_t index = 0; index < commandBufferCount; index++) { | |
| FinishWriteObject(pCommandBuffers[index], lockCommandPool); | |
| } | |
| // Holding the lock for the shortest time while we update the map | |
| for (uint32_t index = 0; index < commandBufferCount; index++) { | |
| auto &bucket = GetBucket(pCommandBuffers[index]); | |
| std::lock_guard<std::mutex> lock(bucket.command_pool_lock); | |
| bucket.command_pool_map.erase(pCommandBuffers[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PostCallRecordFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, | |
| const VkCommandBuffer *pCommandBuffers) { | |
| FinishReadObject(device); | |
| FinishWriteObject(commandPool); | |
| } | |
| void ThreadSafety::PreCallRecordResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) { | |
| StartReadObject(device); | |
| StartWriteObject(commandPool); | |
| // Check for any uses of non-externally sync'd command buffers (for example from vkCmdExecuteCommands) | |
| c_VkCommandPoolContents.StartWrite(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags, VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(commandPool); | |
| c_VkCommandPoolContents.FinishWrite(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(commandPool); | |
| // Check for any uses of non-externally sync'd command buffers (for example from vkCmdExecuteCommands) | |
| c_VkCommandPoolContents.StartWrite(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(commandPool); | |
| c_VkCommandPoolContents.FinishWrite(commandPool); | |
| } | |
| // GetSwapchainImages can return a non-zero count with a NULL pSwapchainImages pointer. Let's avoid crashes by ignoring | |
| // pSwapchainImages. | |
| void ThreadSafety::PreCallRecordGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount, | |
| VkImage *pSwapchainImages) { | |
| StartReadObject(device); | |
| StartReadObject(swapchain); | |
| } | |
| void ThreadSafety::PostCallRecordGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount, | |
| VkImage *pSwapchainImages, VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(swapchain); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyInstance( | |
| VkInstance instance, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartWriteObject(instance); | |
| // Host access to instance must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyInstance( | |
| VkInstance instance, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishWriteObject(instance); | |
| // Host access to instance must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordEnumeratePhysicalDevices( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceCount, | |
| VkPhysicalDevice* pPhysicalDevices) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordEnumeratePhysicalDevices( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceCount, | |
| VkPhysicalDevice* pPhysicalDevices, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordGetInstanceProcAddr( | |
| VkInstance instance, | |
| const char* pName) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordGetInstanceProcAddr( | |
| VkInstance instance, | |
| const char* pName) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceProcAddr( | |
| VkDevice device, | |
| const char* pName) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceProcAddr( | |
| VkDevice device, | |
| const char* pName) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDevice( | |
| VkDevice device, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartWriteObject(device); | |
| // Host access to device must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDevice( | |
| VkDevice device, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishWriteObject(device); | |
| // Host access to device must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceQueue( | |
| VkDevice device, | |
| uint32_t queueFamilyIndex, | |
| uint32_t queueIndex, | |
| VkQueue* pQueue) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceQueue( | |
| VkDevice device, | |
| uint32_t queueFamilyIndex, | |
| uint32_t queueIndex, | |
| VkQueue* pQueue) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordQueueSubmit( | |
| VkQueue queue, | |
| uint32_t submitCount, | |
| const VkSubmitInfo* pSubmits, | |
| VkFence fence) { | |
| StartWriteObject(queue); | |
| StartWriteObject(fence); | |
| // Host access to queue must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordQueueSubmit( | |
| VkQueue queue, | |
| uint32_t submitCount, | |
| const VkSubmitInfo* pSubmits, | |
| VkFence fence, | |
| VkResult result) { | |
| FinishWriteObject(queue); | |
| FinishWriteObject(fence); | |
| // Host access to queue must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordQueueWaitIdle( | |
| VkQueue queue) { | |
| StartWriteObject(queue); | |
| // Host access to queue must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordQueueWaitIdle( | |
| VkQueue queue, | |
| VkResult result) { | |
| FinishWriteObject(queue); | |
| // Host access to queue must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordDeviceWaitIdle( | |
| VkDevice device) { | |
| StartReadObject(device); | |
| // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PostCallRecordDeviceWaitIdle( | |
| VkDevice device, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| // all sname:VkQueue objects created from pname:device must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PreCallRecordAllocateMemory( | |
| VkDevice device, | |
| const VkMemoryAllocateInfo* pAllocateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDeviceMemory* pMemory) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordAllocateMemory( | |
| VkDevice device, | |
| const VkMemoryAllocateInfo* pAllocateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDeviceMemory* pMemory, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordFreeMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordFreeMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordMapMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkDeviceSize offset, | |
| VkDeviceSize size, | |
| VkMemoryMapFlags flags, | |
| void** ppData) { | |
| StartReadObject(device); | |
| StartWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordMapMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkDeviceSize offset, | |
| VkDeviceSize size, | |
| VkMemoryMapFlags flags, | |
| void** ppData, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordUnmapMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory) { | |
| StartReadObject(device); | |
| StartWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordUnmapMemory( | |
| VkDevice device, | |
| VkDeviceMemory memory) { | |
| FinishReadObject(device); | |
| FinishWriteObject(memory); | |
| // Host access to memory must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordFlushMappedMemoryRanges( | |
| VkDevice device, | |
| uint32_t memoryRangeCount, | |
| const VkMappedMemoryRange* pMemoryRanges) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordFlushMappedMemoryRanges( | |
| VkDevice device, | |
| uint32_t memoryRangeCount, | |
| const VkMappedMemoryRange* pMemoryRanges, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordInvalidateMappedMemoryRanges( | |
| VkDevice device, | |
| uint32_t memoryRangeCount, | |
| const VkMappedMemoryRange* pMemoryRanges) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordInvalidateMappedMemoryRanges( | |
| VkDevice device, | |
| uint32_t memoryRangeCount, | |
| const VkMappedMemoryRange* pMemoryRanges, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceMemoryCommitment( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkDeviceSize* pCommittedMemoryInBytes) { | |
| StartReadObject(device); | |
| StartReadObject(memory); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceMemoryCommitment( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkDeviceSize* pCommittedMemoryInBytes) { | |
| FinishReadObject(device); | |
| FinishReadObject(memory); | |
| } | |
| void ThreadSafety::PreCallRecordBindBufferMemory( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| VkDeviceMemory memory, | |
| VkDeviceSize memoryOffset) { | |
| StartReadObject(device); | |
| StartWriteObject(buffer); | |
| StartReadObject(memory); | |
| // Host access to buffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordBindBufferMemory( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| VkDeviceMemory memory, | |
| VkDeviceSize memoryOffset, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(buffer); | |
| FinishReadObject(memory); | |
| // Host access to buffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordBindImageMemory( | |
| VkDevice device, | |
| VkImage image, | |
| VkDeviceMemory memory, | |
| VkDeviceSize memoryOffset) { | |
| StartReadObject(device); | |
| StartWriteObject(image); | |
| StartReadObject(memory); | |
| // Host access to image must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordBindImageMemory( | |
| VkDevice device, | |
| VkImage image, | |
| VkDeviceMemory memory, | |
| VkDeviceSize memoryOffset, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(image); | |
| FinishReadObject(memory); | |
| // Host access to image must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetBufferMemoryRequirements( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| VkMemoryRequirements* pMemoryRequirements) { | |
| StartReadObject(device); | |
| StartReadObject(buffer); | |
| } | |
| void ThreadSafety::PostCallRecordGetBufferMemoryRequirements( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| VkMemoryRequirements* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| FinishReadObject(buffer); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageMemoryRequirements( | |
| VkDevice device, | |
| VkImage image, | |
| VkMemoryRequirements* pMemoryRequirements) { | |
| StartReadObject(device); | |
| StartReadObject(image); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageMemoryRequirements( | |
| VkDevice device, | |
| VkImage image, | |
| VkMemoryRequirements* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| FinishReadObject(image); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements( | |
| VkDevice device, | |
| VkImage image, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { | |
| StartReadObject(device); | |
| StartReadObject(image); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements( | |
| VkDevice device, | |
| VkImage image, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { | |
| FinishReadObject(device); | |
| FinishReadObject(image); | |
| } | |
| void ThreadSafety::PreCallRecordQueueBindSparse( | |
| VkQueue queue, | |
| uint32_t bindInfoCount, | |
| const VkBindSparseInfo* pBindInfo, | |
| VkFence fence) { | |
| StartWriteObject(queue); | |
| if (pBindInfo) { | |
| for (uint32_t index=0; index < bindInfoCount; index++) { | |
| if (pBindInfo[index].pBufferBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].bufferBindCount; index2++) { | |
| StartWriteObject(pBindInfo[index].pBufferBinds[index2].buffer); | |
| } | |
| } | |
| if (pBindInfo[index].pImageOpaqueBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].imageOpaqueBindCount; index2++) { | |
| StartWriteObject(pBindInfo[index].pImageOpaqueBinds[index2].image); | |
| } | |
| } | |
| if (pBindInfo[index].pImageBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].imageBindCount; index2++) { | |
| StartWriteObject(pBindInfo[index].pImageBinds[index2].image); | |
| } | |
| } | |
| } | |
| } | |
| StartWriteObject(fence); | |
| // Host access to queue must be externally synchronized | |
| // Host access to pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordQueueBindSparse( | |
| VkQueue queue, | |
| uint32_t bindInfoCount, | |
| const VkBindSparseInfo* pBindInfo, | |
| VkFence fence, | |
| VkResult result) { | |
| FinishWriteObject(queue); | |
| if (pBindInfo) { | |
| for (uint32_t index=0; index < bindInfoCount; index++) { | |
| if (pBindInfo[index].pBufferBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].bufferBindCount; index2++) { | |
| FinishWriteObject(pBindInfo[index].pBufferBinds[index2].buffer); | |
| } | |
| } | |
| if (pBindInfo[index].pImageOpaqueBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].imageOpaqueBindCount; index2++) { | |
| FinishWriteObject(pBindInfo[index].pImageOpaqueBinds[index2].image); | |
| } | |
| } | |
| if (pBindInfo[index].pImageBinds) { | |
| for (uint32_t index2=0; index2 < pBindInfo[index].imageBindCount; index2++) { | |
| FinishWriteObject(pBindInfo[index].pImageBinds[index2].image); | |
| } | |
| } | |
| } | |
| } | |
| FinishWriteObject(fence); | |
| // Host access to queue must be externally synchronized | |
| // Host access to pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateFence( | |
| VkDevice device, | |
| const VkFenceCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateFence( | |
| VkDevice device, | |
| const VkFenceCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyFence( | |
| VkDevice device, | |
| VkFence fence, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(fence); | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyFence( | |
| VkDevice device, | |
| VkFence fence, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(fence); | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordResetFences( | |
| VkDevice device, | |
| uint32_t fenceCount, | |
| const VkFence* pFences) { | |
| StartReadObject(device); | |
| if (pFences) { | |
| for (uint32_t index=0; index < fenceCount; index++) { | |
| StartWriteObject(pFences[index]); | |
| } | |
| } | |
| // Host access to each member of pFences must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordResetFences( | |
| VkDevice device, | |
| uint32_t fenceCount, | |
| const VkFence* pFences, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| if (pFences) { | |
| for (uint32_t index=0; index < fenceCount; index++) { | |
| FinishWriteObject(pFences[index]); | |
| } | |
| } | |
| // Host access to each member of pFences must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetFenceStatus( | |
| VkDevice device, | |
| VkFence fence) { | |
| StartReadObject(device); | |
| StartReadObject(fence); | |
| } | |
| void ThreadSafety::PostCallRecordGetFenceStatus( | |
| VkDevice device, | |
| VkFence fence, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(fence); | |
| } | |
| void ThreadSafety::PreCallRecordWaitForFences( | |
| VkDevice device, | |
| uint32_t fenceCount, | |
| const VkFence* pFences, | |
| VkBool32 waitAll, | |
| uint64_t timeout) { | |
| StartReadObject(device); | |
| if (pFences) { | |
| for (uint32_t index = 0; index < fenceCount; index++) { | |
| StartReadObject(pFences[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PostCallRecordWaitForFences( | |
| VkDevice device, | |
| uint32_t fenceCount, | |
| const VkFence* pFences, | |
| VkBool32 waitAll, | |
| uint64_t timeout, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| if (pFences) { | |
| for (uint32_t index = 0; index < fenceCount; index++) { | |
| FinishReadObject(pFences[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PreCallRecordCreateSemaphore( | |
| VkDevice device, | |
| const VkSemaphoreCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSemaphore* pSemaphore) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateSemaphore( | |
| VkDevice device, | |
| const VkSemaphoreCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSemaphore* pSemaphore, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroySemaphore( | |
| VkDevice device, | |
| VkSemaphore semaphore, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(semaphore); | |
| // Host access to semaphore must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySemaphore( | |
| VkDevice device, | |
| VkSemaphore semaphore, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(semaphore); | |
| // Host access to semaphore must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateEvent( | |
| VkDevice device, | |
| const VkEventCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkEvent* pEvent) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateEvent( | |
| VkDevice device, | |
| const VkEventCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkEvent* pEvent, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyEvent( | |
| VkDevice device, | |
| VkEvent event, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyEvent( | |
| VkDevice device, | |
| VkEvent event, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetEventStatus( | |
| VkDevice device, | |
| VkEvent event) { | |
| StartReadObject(device); | |
| StartReadObject(event); | |
| } | |
| void ThreadSafety::PostCallRecordGetEventStatus( | |
| VkDevice device, | |
| VkEvent event, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(event); | |
| } | |
| void ThreadSafety::PreCallRecordSetEvent( | |
| VkDevice device, | |
| VkEvent event) { | |
| StartReadObject(device); | |
| StartWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordSetEvent( | |
| VkDevice device, | |
| VkEvent event, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordResetEvent( | |
| VkDevice device, | |
| VkEvent event) { | |
| StartReadObject(device); | |
| StartWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordResetEvent( | |
| VkDevice device, | |
| VkEvent event, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(event); | |
| // Host access to event must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateQueryPool( | |
| VkDevice device, | |
| const VkQueryPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkQueryPool* pQueryPool) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateQueryPool( | |
| VkDevice device, | |
| const VkQueryPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkQueryPool* pQueryPool, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyQueryPool( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(queryPool); | |
| // Host access to queryPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyQueryPool( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(queryPool); | |
| // Host access to queryPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetQueryPoolResults( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount, | |
| size_t dataSize, | |
| void* pData, | |
| VkDeviceSize stride, | |
| VkQueryResultFlags flags) { | |
| StartReadObject(device); | |
| StartReadObject(queryPool); | |
| } | |
| void ThreadSafety::PostCallRecordGetQueryPoolResults( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount, | |
| size_t dataSize, | |
| void* pData, | |
| VkDeviceSize stride, | |
| VkQueryResultFlags flags, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(queryPool); | |
| } | |
| void ThreadSafety::PreCallRecordCreateBuffer( | |
| VkDevice device, | |
| const VkBufferCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkBuffer* pBuffer) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateBuffer( | |
| VkDevice device, | |
| const VkBufferCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkBuffer* pBuffer, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyBuffer( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(buffer); | |
| // Host access to buffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyBuffer( | |
| VkDevice device, | |
| VkBuffer buffer, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(buffer); | |
| // Host access to buffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateBufferView( | |
| VkDevice device, | |
| const VkBufferViewCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkBufferView* pView) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateBufferView( | |
| VkDevice device, | |
| const VkBufferViewCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkBufferView* pView, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyBufferView( | |
| VkDevice device, | |
| VkBufferView bufferView, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(bufferView); | |
| // Host access to bufferView must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyBufferView( | |
| VkDevice device, | |
| VkBufferView bufferView, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(bufferView); | |
| // Host access to bufferView must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateImage( | |
| VkDevice device, | |
| const VkImageCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkImage* pImage) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateImage( | |
| VkDevice device, | |
| const VkImageCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkImage* pImage, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyImage( | |
| VkDevice device, | |
| VkImage image, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(image); | |
| // Host access to image must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyImage( | |
| VkDevice device, | |
| VkImage image, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(image); | |
| // Host access to image must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetImageSubresourceLayout( | |
| VkDevice device, | |
| VkImage image, | |
| const VkImageSubresource* pSubresource, | |
| VkSubresourceLayout* pLayout) { | |
| StartReadObject(device); | |
| StartReadObject(image); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageSubresourceLayout( | |
| VkDevice device, | |
| VkImage image, | |
| const VkImageSubresource* pSubresource, | |
| VkSubresourceLayout* pLayout) { | |
| FinishReadObject(device); | |
| FinishReadObject(image); | |
| } | |
| void ThreadSafety::PreCallRecordCreateImageView( | |
| VkDevice device, | |
| const VkImageViewCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkImageView* pView) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateImageView( | |
| VkDevice device, | |
| const VkImageViewCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkImageView* pView, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyImageView( | |
| VkDevice device, | |
| VkImageView imageView, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(imageView); | |
| // Host access to imageView must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyImageView( | |
| VkDevice device, | |
| VkImageView imageView, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(imageView); | |
| // Host access to imageView must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateShaderModule( | |
| VkDevice device, | |
| const VkShaderModuleCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkShaderModule* pShaderModule) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateShaderModule( | |
| VkDevice device, | |
| const VkShaderModuleCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkShaderModule* pShaderModule, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyShaderModule( | |
| VkDevice device, | |
| VkShaderModule shaderModule, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(shaderModule); | |
| // Host access to shaderModule must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyShaderModule( | |
| VkDevice device, | |
| VkShaderModule shaderModule, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(shaderModule); | |
| // Host access to shaderModule must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreatePipelineCache( | |
| VkDevice device, | |
| const VkPipelineCacheCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipelineCache* pPipelineCache) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreatePipelineCache( | |
| VkDevice device, | |
| const VkPipelineCacheCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipelineCache* pPipelineCache, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyPipelineCache( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(pipelineCache); | |
| // Host access to pipelineCache must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyPipelineCache( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pipelineCache); | |
| // Host access to pipelineCache must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetPipelineCacheData( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| size_t* pDataSize, | |
| void* pData) { | |
| StartReadObject(device); | |
| StartReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PostCallRecordGetPipelineCacheData( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| size_t* pDataSize, | |
| void* pData, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PreCallRecordMergePipelineCaches( | |
| VkDevice device, | |
| VkPipelineCache dstCache, | |
| uint32_t srcCacheCount, | |
| const VkPipelineCache* pSrcCaches) { | |
| StartReadObject(device); | |
| StartWriteObject(dstCache); | |
| if (pSrcCaches) { | |
| for (uint32_t index = 0; index < srcCacheCount; index++) { | |
| StartReadObject(pSrcCaches[index]); | |
| } | |
| } | |
| // Host access to dstCache must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordMergePipelineCaches( | |
| VkDevice device, | |
| VkPipelineCache dstCache, | |
| uint32_t srcCacheCount, | |
| const VkPipelineCache* pSrcCaches, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(dstCache); | |
| if (pSrcCaches) { | |
| for (uint32_t index = 0; index < srcCacheCount; index++) { | |
| FinishReadObject(pSrcCaches[index]); | |
| } | |
| } | |
| // Host access to dstCache must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateGraphicsPipelines( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkGraphicsPipelineCreateInfo* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines) { | |
| StartReadObject(device); | |
| StartReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PostCallRecordCreateGraphicsPipelines( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkGraphicsPipelineCreateInfo* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PreCallRecordCreateComputePipelines( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkComputePipelineCreateInfo* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines) { | |
| StartReadObject(device); | |
| StartReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PostCallRecordCreateComputePipelines( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkComputePipelineCreateInfo* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyPipeline( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(pipeline); | |
| // Host access to pipeline must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyPipeline( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pipeline); | |
| // Host access to pipeline must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreatePipelineLayout( | |
| VkDevice device, | |
| const VkPipelineLayoutCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipelineLayout* pPipelineLayout) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreatePipelineLayout( | |
| VkDevice device, | |
| const VkPipelineLayoutCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipelineLayout* pPipelineLayout, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyPipelineLayout( | |
| VkDevice device, | |
| VkPipelineLayout pipelineLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(pipelineLayout); | |
| // Host access to pipelineLayout must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyPipelineLayout( | |
| VkDevice device, | |
| VkPipelineLayout pipelineLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pipelineLayout); | |
| // Host access to pipelineLayout must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateSampler( | |
| VkDevice device, | |
| const VkSamplerCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSampler* pSampler) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateSampler( | |
| VkDevice device, | |
| const VkSamplerCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSampler* pSampler, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroySampler( | |
| VkDevice device, | |
| VkSampler sampler, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(sampler); | |
| // Host access to sampler must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySampler( | |
| VkDevice device, | |
| VkSampler sampler, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(sampler); | |
| // Host access to sampler must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateDescriptorSetLayout( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorSetLayout* pSetLayout) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDescriptorSetLayout( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorSetLayout* pSetLayout, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDescriptorSetLayout( | |
| VkDevice device, | |
| VkDescriptorSetLayout descriptorSetLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorSetLayout); | |
| // Host access to descriptorSetLayout must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDescriptorSetLayout( | |
| VkDevice device, | |
| VkDescriptorSetLayout descriptorSetLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorSetLayout); | |
| // Host access to descriptorSetLayout must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateDescriptorPool( | |
| VkDevice device, | |
| const VkDescriptorPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorPool* pDescriptorPool) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDescriptorPool( | |
| VkDevice device, | |
| const VkDescriptorPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorPool* pDescriptorPool, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDescriptorPool( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorPool); | |
| // Host access to descriptorPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDescriptorPool( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorPool); | |
| // Host access to descriptorPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordResetDescriptorPool( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| VkDescriptorPoolResetFlags flags) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorPool); | |
| // Host access to descriptorPool must be externally synchronized | |
| // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PostCallRecordResetDescriptorPool( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| VkDescriptorPoolResetFlags flags, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorPool); | |
| // Host access to descriptorPool must be externally synchronized | |
| // any sname:VkDescriptorSet objects allocated from pname:descriptorPool must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PreCallRecordFreeDescriptorSets( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| uint32_t descriptorSetCount, | |
| const VkDescriptorSet* pDescriptorSets) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorPool); | |
| if (pDescriptorSets) { | |
| for (uint32_t index=0; index < descriptorSetCount; index++) { | |
| StartWriteObject(pDescriptorSets[index]); | |
| } | |
| } | |
| // Host access to descriptorPool must be externally synchronized | |
| // Host access to each member of pDescriptorSets must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordFreeDescriptorSets( | |
| VkDevice device, | |
| VkDescriptorPool descriptorPool, | |
| uint32_t descriptorSetCount, | |
| const VkDescriptorSet* pDescriptorSets, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorPool); | |
| if (pDescriptorSets) { | |
| for (uint32_t index=0; index < descriptorSetCount; index++) { | |
| FinishWriteObject(pDescriptorSets[index]); | |
| } | |
| } | |
| // Host access to descriptorPool must be externally synchronized | |
| // Host access to each member of pDescriptorSets must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordUpdateDescriptorSets( | |
| VkDevice device, | |
| uint32_t descriptorWriteCount, | |
| const VkWriteDescriptorSet* pDescriptorWrites, | |
| uint32_t descriptorCopyCount, | |
| const VkCopyDescriptorSet* pDescriptorCopies) { | |
| StartReadObject(device); | |
| if (pDescriptorWrites) { | |
| for (uint32_t index=0; index < descriptorWriteCount; index++) { | |
| StartWriteObject(pDescriptorWrites[index].dstSet); | |
| } | |
| } | |
| if (pDescriptorCopies) { | |
| for (uint32_t index=0; index < descriptorCopyCount; index++) { | |
| StartWriteObject(pDescriptorCopies[index].dstSet); | |
| } | |
| } | |
| // Host access to pDescriptorWrites[].dstSet must be externally synchronized | |
| // Host access to pDescriptorCopies[].dstSet must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordUpdateDescriptorSets( | |
| VkDevice device, | |
| uint32_t descriptorWriteCount, | |
| const VkWriteDescriptorSet* pDescriptorWrites, | |
| uint32_t descriptorCopyCount, | |
| const VkCopyDescriptorSet* pDescriptorCopies) { | |
| FinishReadObject(device); | |
| if (pDescriptorWrites) { | |
| for (uint32_t index=0; index < descriptorWriteCount; index++) { | |
| FinishWriteObject(pDescriptorWrites[index].dstSet); | |
| } | |
| } | |
| if (pDescriptorCopies) { | |
| for (uint32_t index=0; index < descriptorCopyCount; index++) { | |
| FinishWriteObject(pDescriptorCopies[index].dstSet); | |
| } | |
| } | |
| // Host access to pDescriptorWrites[].dstSet must be externally synchronized | |
| // Host access to pDescriptorCopies[].dstSet must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateFramebuffer( | |
| VkDevice device, | |
| const VkFramebufferCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFramebuffer* pFramebuffer) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateFramebuffer( | |
| VkDevice device, | |
| const VkFramebufferCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFramebuffer* pFramebuffer, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyFramebuffer( | |
| VkDevice device, | |
| VkFramebuffer framebuffer, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(framebuffer); | |
| // Host access to framebuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyFramebuffer( | |
| VkDevice device, | |
| VkFramebuffer framebuffer, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(framebuffer); | |
| // Host access to framebuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateRenderPass( | |
| VkDevice device, | |
| const VkRenderPassCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkRenderPass* pRenderPass) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateRenderPass( | |
| VkDevice device, | |
| const VkRenderPassCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkRenderPass* pRenderPass, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyRenderPass( | |
| VkDevice device, | |
| VkRenderPass renderPass, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(renderPass); | |
| // Host access to renderPass must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyRenderPass( | |
| VkDevice device, | |
| VkRenderPass renderPass, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(renderPass); | |
| // Host access to renderPass must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetRenderAreaGranularity( | |
| VkDevice device, | |
| VkRenderPass renderPass, | |
| VkExtent2D* pGranularity) { | |
| StartReadObject(device); | |
| StartReadObject(renderPass); | |
| } | |
| void ThreadSafety::PostCallRecordGetRenderAreaGranularity( | |
| VkDevice device, | |
| VkRenderPass renderPass, | |
| VkExtent2D* pGranularity) { | |
| FinishReadObject(device); | |
| FinishReadObject(renderPass); | |
| } | |
| void ThreadSafety::PreCallRecordCreateCommandPool( | |
| VkDevice device, | |
| const VkCommandPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkCommandPool* pCommandPool) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateCommandPool( | |
| VkDevice device, | |
| const VkCommandPoolCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkCommandPool* pCommandPool, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordBeginCommandBuffer( | |
| VkCommandBuffer commandBuffer, | |
| const VkCommandBufferBeginInfo* pBeginInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PostCallRecordBeginCommandBuffer( | |
| VkCommandBuffer commandBuffer, | |
| const VkCommandBufferBeginInfo* pBeginInfo, | |
| VkResult result) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PreCallRecordEndCommandBuffer( | |
| VkCommandBuffer commandBuffer) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PostCallRecordEndCommandBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkResult result) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| // the sname:VkCommandPool that pname:commandBuffer was allocated from must be externally synchronized between host accesses | |
| } | |
| void ThreadSafety::PreCallRecordResetCommandBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkCommandBufferResetFlags flags) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordResetCommandBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkCommandBufferResetFlags flags, | |
| VkResult result) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBindPipeline( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipeline pipeline) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(pipeline); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindPipeline( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipeline pipeline) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(pipeline); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetViewport( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkViewport* pViewports) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetViewport( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkViewport* pViewports) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetScissor( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstScissor, | |
| uint32_t scissorCount, | |
| const VkRect2D* pScissors) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetScissor( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstScissor, | |
| uint32_t scissorCount, | |
| const VkRect2D* pScissors) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetLineWidth( | |
| VkCommandBuffer commandBuffer, | |
| float lineWidth) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetLineWidth( | |
| VkCommandBuffer commandBuffer, | |
| float lineWidth) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetDepthBias( | |
| VkCommandBuffer commandBuffer, | |
| float depthBiasConstantFactor, | |
| float depthBiasClamp, | |
| float depthBiasSlopeFactor) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetDepthBias( | |
| VkCommandBuffer commandBuffer, | |
| float depthBiasConstantFactor, | |
| float depthBiasClamp, | |
| float depthBiasSlopeFactor) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetBlendConstants( | |
| VkCommandBuffer commandBuffer, | |
| const float blendConstants[4]) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetBlendConstants( | |
| VkCommandBuffer commandBuffer, | |
| const float blendConstants[4]) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetDepthBounds( | |
| VkCommandBuffer commandBuffer, | |
| float minDepthBounds, | |
| float maxDepthBounds) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetDepthBounds( | |
| VkCommandBuffer commandBuffer, | |
| float minDepthBounds, | |
| float maxDepthBounds) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetStencilCompareMask( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t compareMask) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetStencilCompareMask( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t compareMask) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetStencilWriteMask( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t writeMask) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetStencilWriteMask( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t writeMask) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetStencilReference( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t reference) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetStencilReference( | |
| VkCommandBuffer commandBuffer, | |
| VkStencilFaceFlags faceMask, | |
| uint32_t reference) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBindDescriptorSets( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipelineLayout layout, | |
| uint32_t firstSet, | |
| uint32_t descriptorSetCount, | |
| const VkDescriptorSet* pDescriptorSets, | |
| uint32_t dynamicOffsetCount, | |
| const uint32_t* pDynamicOffsets) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(layout); | |
| if (pDescriptorSets) { | |
| for (uint32_t index = 0; index < descriptorSetCount; index++) { | |
| StartReadObject(pDescriptorSets[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindDescriptorSets( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipelineLayout layout, | |
| uint32_t firstSet, | |
| uint32_t descriptorSetCount, | |
| const VkDescriptorSet* pDescriptorSets, | |
| uint32_t dynamicOffsetCount, | |
| const uint32_t* pDynamicOffsets) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(layout); | |
| if (pDescriptorSets) { | |
| for (uint32_t index = 0; index < descriptorSetCount; index++) { | |
| FinishReadObject(pDescriptorSets[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBindIndexBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkIndexType indexType) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindIndexBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkIndexType indexType) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBindVertexBuffers( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstBinding, | |
| uint32_t bindingCount, | |
| const VkBuffer* pBuffers, | |
| const VkDeviceSize* pOffsets) { | |
| StartWriteObject(commandBuffer); | |
| if (pBuffers) { | |
| for (uint32_t index = 0; index < bindingCount; index++) { | |
| StartReadObject(pBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindVertexBuffers( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstBinding, | |
| uint32_t bindingCount, | |
| const VkBuffer* pBuffers, | |
| const VkDeviceSize* pOffsets) { | |
| FinishWriteObject(commandBuffer); | |
| if (pBuffers) { | |
| for (uint32_t index = 0; index < bindingCount; index++) { | |
| FinishReadObject(pBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDraw( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t vertexCount, | |
| uint32_t instanceCount, | |
| uint32_t firstVertex, | |
| uint32_t firstInstance) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDraw( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t vertexCount, | |
| uint32_t instanceCount, | |
| uint32_t firstVertex, | |
| uint32_t firstInstance) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndexed( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t indexCount, | |
| uint32_t instanceCount, | |
| uint32_t firstIndex, | |
| int32_t vertexOffset, | |
| uint32_t firstInstance) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndexed( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t indexCount, | |
| uint32_t instanceCount, | |
| uint32_t firstIndex, | |
| int32_t vertexOffset, | |
| uint32_t firstInstance) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndexedIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndexedIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDispatch( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDispatch( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDispatchIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDispatchIndirect( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer srcBuffer, | |
| VkBuffer dstBuffer, | |
| uint32_t regionCount, | |
| const VkBufferCopy* pRegions) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcBuffer); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer srcBuffer, | |
| VkBuffer dstBuffer, | |
| uint32_t regionCount, | |
| const VkBufferCopy* pRegions) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcBuffer); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageCopy* pRegions) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcImage); | |
| StartReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageCopy* pRegions) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcImage); | |
| FinishReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBlitImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageBlit* pRegions, | |
| VkFilter filter) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcImage); | |
| StartReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBlitImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageBlit* pRegions, | |
| VkFilter filter) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcImage); | |
| FinishReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyBufferToImage( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer srcBuffer, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkBufferImageCopy* pRegions) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcBuffer); | |
| StartReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyBufferToImage( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer srcBuffer, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkBufferImageCopy* pRegions) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcBuffer); | |
| FinishReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyImageToBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkBuffer dstBuffer, | |
| uint32_t regionCount, | |
| const VkBufferImageCopy* pRegions) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcImage); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyImageToBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkBuffer dstBuffer, | |
| uint32_t regionCount, | |
| const VkBufferImageCopy* pRegions) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcImage); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdUpdateBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize dataSize, | |
| const void* pData) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdUpdateBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize dataSize, | |
| const void* pData) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdFillBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize size, | |
| uint32_t data) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdFillBuffer( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize size, | |
| uint32_t data) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdClearColorImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage image, | |
| VkImageLayout imageLayout, | |
| const VkClearColorValue* pColor, | |
| uint32_t rangeCount, | |
| const VkImageSubresourceRange* pRanges) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(image); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdClearColorImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage image, | |
| VkImageLayout imageLayout, | |
| const VkClearColorValue* pColor, | |
| uint32_t rangeCount, | |
| const VkImageSubresourceRange* pRanges) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(image); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdClearDepthStencilImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage image, | |
| VkImageLayout imageLayout, | |
| const VkClearDepthStencilValue* pDepthStencil, | |
| uint32_t rangeCount, | |
| const VkImageSubresourceRange* pRanges) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(image); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdClearDepthStencilImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage image, | |
| VkImageLayout imageLayout, | |
| const VkClearDepthStencilValue* pDepthStencil, | |
| uint32_t rangeCount, | |
| const VkImageSubresourceRange* pRanges) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(image); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdClearAttachments( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t attachmentCount, | |
| const VkClearAttachment* pAttachments, | |
| uint32_t rectCount, | |
| const VkClearRect* pRects) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdClearAttachments( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t attachmentCount, | |
| const VkClearAttachment* pAttachments, | |
| uint32_t rectCount, | |
| const VkClearRect* pRects) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdResolveImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageResolve* pRegions) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(srcImage); | |
| StartReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdResolveImage( | |
| VkCommandBuffer commandBuffer, | |
| VkImage srcImage, | |
| VkImageLayout srcImageLayout, | |
| VkImage dstImage, | |
| VkImageLayout dstImageLayout, | |
| uint32_t regionCount, | |
| const VkImageResolve* pRegions) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(srcImage); | |
| FinishReadObject(dstImage); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetEvent( | |
| VkCommandBuffer commandBuffer, | |
| VkEvent event, | |
| VkPipelineStageFlags stageMask) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(event); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetEvent( | |
| VkCommandBuffer commandBuffer, | |
| VkEvent event, | |
| VkPipelineStageFlags stageMask) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(event); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdResetEvent( | |
| VkCommandBuffer commandBuffer, | |
| VkEvent event, | |
| VkPipelineStageFlags stageMask) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(event); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdResetEvent( | |
| VkCommandBuffer commandBuffer, | |
| VkEvent event, | |
| VkPipelineStageFlags stageMask) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(event); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::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) { | |
| StartWriteObject(commandBuffer); | |
| if (pEvents) { | |
| for (uint32_t index = 0; index < eventCount; index++) { | |
| StartReadObject(pEvents[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::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) { | |
| FinishWriteObject(commandBuffer); | |
| if (pEvents) { | |
| for (uint32_t index = 0; index < eventCount; index++) { | |
| FinishReadObject(pEvents[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::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) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::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) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginQuery( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| VkQueryControlFlags flags) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginQuery( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| VkQueryControlFlags flags) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndQuery( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndQuery( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdResetQueryPool( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdResetQueryPool( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdWriteTimestamp( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineStageFlagBits pipelineStage, | |
| VkQueryPool queryPool, | |
| uint32_t query) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdWriteTimestamp( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineStageFlagBits pipelineStage, | |
| VkQueryPool queryPool, | |
| uint32_t query) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyQueryPoolResults( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize stride, | |
| VkQueryResultFlags flags) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyQueryPoolResults( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| VkDeviceSize stride, | |
| VkQueryResultFlags flags) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdPushConstants( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineLayout layout, | |
| VkShaderStageFlags stageFlags, | |
| uint32_t offset, | |
| uint32_t size, | |
| const void* pValues) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdPushConstants( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineLayout layout, | |
| VkShaderStageFlags stageFlags, | |
| uint32_t offset, | |
| uint32_t size, | |
| const void* pValues) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginRenderPass( | |
| VkCommandBuffer commandBuffer, | |
| const VkRenderPassBeginInfo* pRenderPassBegin, | |
| VkSubpassContents contents) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginRenderPass( | |
| VkCommandBuffer commandBuffer, | |
| const VkRenderPassBeginInfo* pRenderPassBegin, | |
| VkSubpassContents contents) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdNextSubpass( | |
| VkCommandBuffer commandBuffer, | |
| VkSubpassContents contents) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdNextSubpass( | |
| VkCommandBuffer commandBuffer, | |
| VkSubpassContents contents) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndRenderPass( | |
| VkCommandBuffer commandBuffer) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndRenderPass( | |
| VkCommandBuffer commandBuffer) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdExecuteCommands( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t commandBufferCount, | |
| const VkCommandBuffer* pCommandBuffers) { | |
| StartWriteObject(commandBuffer); | |
| if (pCommandBuffers) { | |
| for (uint32_t index = 0; index < commandBufferCount; index++) { | |
| StartReadObject(pCommandBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdExecuteCommands( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t commandBufferCount, | |
| const VkCommandBuffer* pCommandBuffers) { | |
| FinishWriteObject(commandBuffer); | |
| if (pCommandBuffers) { | |
| for (uint32_t index = 0; index < commandBufferCount; index++) { | |
| FinishReadObject(pCommandBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordBindBufferMemory2( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindBufferMemoryInfo* pBindInfos) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordBindBufferMemory2( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindBufferMemoryInfo* pBindInfos, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordBindImageMemory2( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindImageMemoryInfo* pBindInfos) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordBindImageMemory2( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindImageMemoryInfo* pBindInfos, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeatures( | |
| VkDevice device, | |
| uint32_t heapIndex, | |
| uint32_t localDeviceIndex, | |
| uint32_t remoteDeviceIndex, | |
| VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeatures( | |
| VkDevice device, | |
| uint32_t heapIndex, | |
| uint32_t localDeviceIndex, | |
| uint32_t remoteDeviceIndex, | |
| VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetDeviceMask( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t deviceMask) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetDeviceMask( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t deviceMask) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDispatchBase( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t baseGroupX, | |
| uint32_t baseGroupY, | |
| uint32_t baseGroupZ, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDispatchBase( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t baseGroupX, | |
| uint32_t baseGroupY, | |
| uint32_t baseGroupZ, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroups( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceGroupCount, | |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroups( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceGroupCount, | |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageMemoryRequirements2( | |
| VkDevice device, | |
| const VkImageMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageMemoryRequirements2( | |
| VkDevice device, | |
| const VkImageMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2( | |
| VkDevice device, | |
| const VkBufferMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2( | |
| VkDevice device, | |
| const VkBufferMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2( | |
| VkDevice device, | |
| const VkImageSparseMemoryRequirementsInfo2* pInfo, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2( | |
| VkDevice device, | |
| const VkImageSparseMemoryRequirementsInfo2* pInfo, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordTrimCommandPool( | |
| VkDevice device, | |
| VkCommandPool commandPool, | |
| VkCommandPoolTrimFlags flags) { | |
| StartReadObject(device); | |
| StartWriteObject(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordTrimCommandPool( | |
| VkDevice device, | |
| VkCommandPool commandPool, | |
| VkCommandPoolTrimFlags flags) { | |
| FinishReadObject(device); | |
| FinishWriteObject(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceQueue2( | |
| VkDevice device, | |
| const VkDeviceQueueInfo2* pQueueInfo, | |
| VkQueue* pQueue) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceQueue2( | |
| VkDevice device, | |
| const VkDeviceQueueInfo2* pQueueInfo, | |
| VkQueue* pQueue) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversion( | |
| VkDevice device, | |
| const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSamplerYcbcrConversion* pYcbcrConversion) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversion( | |
| VkDevice device, | |
| const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSamplerYcbcrConversion* pYcbcrConversion, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversion( | |
| VkDevice device, | |
| VkSamplerYcbcrConversion ycbcrConversion, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(ycbcrConversion); | |
| // Host access to ycbcrConversion must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversion( | |
| VkDevice device, | |
| VkSamplerYcbcrConversion ycbcrConversion, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(ycbcrConversion); | |
| // Host access to ycbcrConversion must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplate( | |
| VkDevice device, | |
| const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplate( | |
| VkDevice device, | |
| const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplate( | |
| VkDevice device, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorUpdateTemplate); | |
| // Host access to descriptorUpdateTemplate must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplate( | |
| VkDevice device, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorUpdateTemplate); | |
| // Host access to descriptorUpdateTemplate must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordUpdateDescriptorSetWithTemplate( | |
| VkDevice device, | |
| VkDescriptorSet descriptorSet, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const void* pData) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorSet); | |
| StartReadObject(descriptorUpdateTemplate); | |
| // Host access to descriptorSet must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordUpdateDescriptorSetWithTemplate( | |
| VkDevice device, | |
| VkDescriptorSet descriptorSet, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const void* pData) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorSet); | |
| FinishReadObject(descriptorUpdateTemplate); | |
| // Host access to descriptorSet must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupport( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| VkDescriptorSetLayoutSupport* pSupport) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupport( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| VkDescriptorSetLayoutSupport* pSupport) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroySurfaceKHR( | |
| VkInstance instance, | |
| VkSurfaceKHR surface, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(instance); | |
| StartWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySurfaceKHR( | |
| VkInstance instance, | |
| VkSurfaceKHR surface, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(instance); | |
| FinishWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceSupportKHR( | |
| VkPhysicalDevice physicalDevice, | |
| uint32_t queueFamilyIndex, | |
| VkSurfaceKHR surface, | |
| VkBool32* pSupported) { | |
| StartReadObject(surface); | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceSupportKHR( | |
| VkPhysicalDevice physicalDevice, | |
| uint32_t queueFamilyIndex, | |
| VkSurfaceKHR surface, | |
| VkBool32* pSupported, | |
| VkResult result) { | |
| FinishReadObject(surface); | |
| } | |
| void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { | |
| StartReadObject(surface); | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| VkSurfaceCapabilitiesKHR* pSurfaceCapabilities, | |
| VkResult result) { | |
| FinishReadObject(surface); | |
| } | |
| void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceFormatsKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pSurfaceFormatCount, | |
| VkSurfaceFormatKHR* pSurfaceFormats) { | |
| StartReadObject(surface); | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceFormatsKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pSurfaceFormatCount, | |
| VkSurfaceFormatKHR* pSurfaceFormats, | |
| VkResult result) { | |
| FinishReadObject(surface); | |
| } | |
| void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfacePresentModesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pPresentModeCount, | |
| VkPresentModeKHR* pPresentModes) { | |
| StartReadObject(surface); | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfacePresentModesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pPresentModeCount, | |
| VkPresentModeKHR* pPresentModes, | |
| VkResult result) { | |
| FinishReadObject(surface); | |
| } | |
| void ThreadSafety::PreCallRecordCreateSwapchainKHR( | |
| VkDevice device, | |
| const VkSwapchainCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSwapchainKHR* pSwapchain) { | |
| StartReadObject(device); | |
| StartWriteObject(pCreateInfo->surface); | |
| StartWriteObject(pCreateInfo->oldSwapchain); | |
| // Host access to pCreateInfo.surface,pCreateInfo.oldSwapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCreateSwapchainKHR( | |
| VkDevice device, | |
| const VkSwapchainCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSwapchainKHR* pSwapchain, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(pCreateInfo->surface); | |
| FinishWriteObject(pCreateInfo->oldSwapchain); | |
| // Host access to pCreateInfo.surface,pCreateInfo.oldSwapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordDestroySwapchainKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySwapchainKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordAcquireNextImageKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| uint64_t timeout, | |
| VkSemaphore semaphore, | |
| VkFence fence, | |
| uint32_t* pImageIndex) { | |
| StartReadObject(device); | |
| StartWriteObject(swapchain); | |
| StartWriteObject(semaphore); | |
| StartWriteObject(fence); | |
| // Host access to swapchain must be externally synchronized | |
| // Host access to semaphore must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordAcquireNextImageKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| uint64_t timeout, | |
| VkSemaphore semaphore, | |
| VkFence fence, | |
| uint32_t* pImageIndex, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(swapchain); | |
| FinishWriteObject(semaphore); | |
| FinishWriteObject(fence); | |
| // Host access to swapchain must be externally synchronized | |
| // Host access to semaphore must be externally synchronized | |
| // Host access to fence must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceGroupPresentCapabilitiesKHR( | |
| VkDevice device, | |
| VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceGroupPresentCapabilitiesKHR( | |
| VkDevice device, | |
| VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModesKHR( | |
| VkDevice device, | |
| VkSurfaceKHR surface, | |
| VkDeviceGroupPresentModeFlagsKHR* pModes) { | |
| StartReadObject(device); | |
| StartWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModesKHR( | |
| VkDevice device, | |
| VkSurfaceKHR surface, | |
| VkDeviceGroupPresentModeFlagsKHR* pModes, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetPhysicalDevicePresentRectanglesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pRectCount, | |
| VkRect2D* pRects) { | |
| StartWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDevicePresentRectanglesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| uint32_t* pRectCount, | |
| VkRect2D* pRects, | |
| VkResult result) { | |
| FinishWriteObject(surface); | |
| // Host access to surface must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordAcquireNextImage2KHR( | |
| VkDevice device, | |
| const VkAcquireNextImageInfoKHR* pAcquireInfo, | |
| uint32_t* pImageIndex) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordAcquireNextImage2KHR( | |
| VkDevice device, | |
| const VkAcquireNextImageInfoKHR* pAcquireInfo, | |
| uint32_t* pImageIndex, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDisplayPlaneSupportedDisplaysKHR( | |
| VkPhysicalDevice physicalDevice, | |
| uint32_t planeIndex, | |
| uint32_t* pDisplayCount, | |
| VkDisplayKHR* pDisplays) { | |
| if (pDisplays) { | |
| for (uint32_t index = 0; index < *pDisplayCount; index++) { | |
| StartReadObject(pDisplays[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PostCallRecordGetDisplayPlaneSupportedDisplaysKHR( | |
| VkPhysicalDevice physicalDevice, | |
| uint32_t planeIndex, | |
| uint32_t* pDisplayCount, | |
| VkDisplayKHR* pDisplays, | |
| VkResult result) { | |
| if (pDisplays) { | |
| for (uint32_t index = 0; index < *pDisplayCount; index++) { | |
| FinishReadObject(pDisplays[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PreCallRecordGetDisplayModePropertiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| uint32_t* pPropertyCount, | |
| VkDisplayModePropertiesKHR* pProperties) { | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordGetDisplayModePropertiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| uint32_t* pPropertyCount, | |
| VkDisplayModePropertiesKHR* pProperties, | |
| VkResult result) { | |
| FinishReadObject(display); | |
| } | |
| void ThreadSafety::PreCallRecordCreateDisplayModeKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| const VkDisplayModeCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDisplayModeKHR* pMode) { | |
| StartWriteObject(display); | |
| // Host access to display must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCreateDisplayModeKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| const VkDisplayModeCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDisplayModeKHR* pMode, | |
| VkResult result) { | |
| FinishWriteObject(display); | |
| // Host access to display must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetDisplayPlaneCapabilitiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayModeKHR mode, | |
| uint32_t planeIndex, | |
| VkDisplayPlaneCapabilitiesKHR* pCapabilities) { | |
| StartWriteObject(mode); | |
| // Host access to mode must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetDisplayPlaneCapabilitiesKHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayModeKHR mode, | |
| uint32_t planeIndex, | |
| VkDisplayPlaneCapabilitiesKHR* pCapabilities, | |
| VkResult result) { | |
| FinishWriteObject(mode); | |
| // Host access to mode must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateDisplayPlaneSurfaceKHR( | |
| VkInstance instance, | |
| const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDisplayPlaneSurfaceKHR( | |
| VkInstance instance, | |
| const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordCreateSharedSwapchainsKHR( | |
| VkDevice device, | |
| uint32_t swapchainCount, | |
| const VkSwapchainCreateInfoKHR* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSwapchainKHR* pSwapchains) { | |
| StartReadObject(device); | |
| if (pCreateInfos) { | |
| for (uint32_t index=0; index < swapchainCount; index++) { | |
| StartWriteObject(pCreateInfos[index].surface); | |
| StartWriteObject(pCreateInfos[index].oldSwapchain); | |
| } | |
| } | |
| if (pSwapchains) { | |
| for (uint32_t index = 0; index < swapchainCount; index++) { | |
| StartReadObject(pSwapchains[index]); | |
| } | |
| } | |
| // Host access to pCreateInfos[].surface,pCreateInfos[].oldSwapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCreateSharedSwapchainsKHR( | |
| VkDevice device, | |
| uint32_t swapchainCount, | |
| const VkSwapchainCreateInfoKHR* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSwapchainKHR* pSwapchains, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| if (pCreateInfos) { | |
| for (uint32_t index=0; index < swapchainCount; index++) { | |
| FinishWriteObject(pCreateInfos[index].surface); | |
| FinishWriteObject(pCreateInfos[index].oldSwapchain); | |
| } | |
| } | |
| if (pSwapchains) { | |
| for (uint32_t index = 0; index < swapchainCount; index++) { | |
| FinishReadObject(pSwapchains[index]); | |
| } | |
| } | |
| // Host access to pCreateInfos[].surface,pCreateInfos[].oldSwapchain must be externally synchronized | |
| } | |
| #ifdef VK_USE_PLATFORM_XLIB_KHR | |
| void ThreadSafety::PreCallRecordCreateXlibSurfaceKHR( | |
| VkInstance instance, | |
| const VkXlibSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateXlibSurfaceKHR( | |
| VkInstance instance, | |
| const VkXlibSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_XLIB_KHR | |
| #ifdef VK_USE_PLATFORM_XCB_KHR | |
| void ThreadSafety::PreCallRecordCreateXcbSurfaceKHR( | |
| VkInstance instance, | |
| const VkXcbSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateXcbSurfaceKHR( | |
| VkInstance instance, | |
| const VkXcbSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_XCB_KHR | |
| #ifdef VK_USE_PLATFORM_WAYLAND_KHR | |
| void ThreadSafety::PreCallRecordCreateWaylandSurfaceKHR( | |
| VkInstance instance, | |
| const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateWaylandSurfaceKHR( | |
| VkInstance instance, | |
| const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_WAYLAND_KHR | |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR | |
| void ThreadSafety::PreCallRecordCreateAndroidSurfaceKHR( | |
| VkInstance instance, | |
| const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateAndroidSurfaceKHR( | |
| VkInstance instance, | |
| const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_ANDROID_KHR | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordCreateWin32SurfaceKHR( | |
| VkInstance instance, | |
| const VkWin32SurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateWin32SurfaceKHR( | |
| VkInstance instance, | |
| const VkWin32SurfaceCreateInfoKHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeaturesKHR( | |
| VkDevice device, | |
| uint32_t heapIndex, | |
| uint32_t localDeviceIndex, | |
| uint32_t remoteDeviceIndex, | |
| VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeaturesKHR( | |
| VkDevice device, | |
| uint32_t heapIndex, | |
| uint32_t localDeviceIndex, | |
| uint32_t remoteDeviceIndex, | |
| VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetDeviceMaskKHR( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t deviceMask) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetDeviceMaskKHR( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t deviceMask) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDispatchBaseKHR( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t baseGroupX, | |
| uint32_t baseGroupY, | |
| uint32_t baseGroupZ, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDispatchBaseKHR( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t baseGroupX, | |
| uint32_t baseGroupY, | |
| uint32_t baseGroupZ, | |
| uint32_t groupCountX, | |
| uint32_t groupCountY, | |
| uint32_t groupCountZ) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordTrimCommandPoolKHR( | |
| VkDevice device, | |
| VkCommandPool commandPool, | |
| VkCommandPoolTrimFlags flags) { | |
| StartReadObject(device); | |
| StartWriteObject(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordTrimCommandPoolKHR( | |
| VkDevice device, | |
| VkCommandPool commandPool, | |
| VkCommandPoolTrimFlags flags) { | |
| FinishReadObject(device); | |
| FinishWriteObject(commandPool); | |
| // Host access to commandPool must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroupsKHR( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceGroupCount, | |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroupsKHR( | |
| VkInstance instance, | |
| uint32_t* pPhysicalDeviceGroupCount, | |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordGetMemoryWin32HandleKHR( | |
| VkDevice device, | |
| const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryWin32HandleKHR( | |
| VkDevice device, | |
| const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetMemoryWin32HandlePropertiesKHR( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| HANDLE handle, | |
| VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryWin32HandlePropertiesKHR( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| HANDLE handle, | |
| VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordGetMemoryFdKHR( | |
| VkDevice device, | |
| const VkMemoryGetFdInfoKHR* pGetFdInfo, | |
| int* pFd) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryFdKHR( | |
| VkDevice device, | |
| const VkMemoryGetFdInfoKHR* pGetFdInfo, | |
| int* pFd, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetMemoryFdPropertiesKHR( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| int fd, | |
| VkMemoryFdPropertiesKHR* pMemoryFdProperties) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryFdPropertiesKHR( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| int fd, | |
| VkMemoryFdPropertiesKHR* pMemoryFdProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordImportSemaphoreWin32HandleKHR( | |
| VkDevice device, | |
| const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordImportSemaphoreWin32HandleKHR( | |
| VkDevice device, | |
| const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetSemaphoreWin32HandleKHR( | |
| VkDevice device, | |
| const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetSemaphoreWin32HandleKHR( | |
| VkDevice device, | |
| const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordImportSemaphoreFdKHR( | |
| VkDevice device, | |
| const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordImportSemaphoreFdKHR( | |
| VkDevice device, | |
| const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetSemaphoreFdKHR( | |
| VkDevice device, | |
| const VkSemaphoreGetFdInfoKHR* pGetFdInfo, | |
| int* pFd) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetSemaphoreFdKHR( | |
| VkDevice device, | |
| const VkSemaphoreGetFdInfoKHR* pGetFdInfo, | |
| int* pFd, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdPushDescriptorSetKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipelineLayout layout, | |
| uint32_t set, | |
| uint32_t descriptorWriteCount, | |
| const VkWriteDescriptorSet* pDescriptorWrites) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdPushDescriptorSetKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineBindPoint pipelineBindPoint, | |
| VkPipelineLayout layout, | |
| uint32_t set, | |
| uint32_t descriptorWriteCount, | |
| const VkWriteDescriptorSet* pDescriptorWrites) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdPushDescriptorSetWithTemplateKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| VkPipelineLayout layout, | |
| uint32_t set, | |
| const void* pData) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(descriptorUpdateTemplate); | |
| StartReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdPushDescriptorSetWithTemplateKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| VkPipelineLayout layout, | |
| uint32_t set, | |
| const void* pData) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(descriptorUpdateTemplate); | |
| FinishReadObject(layout); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplateKHR( | |
| VkDevice device, | |
| const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplateKHR( | |
| VkDevice device, | |
| const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplateKHR( | |
| VkDevice device, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorUpdateTemplate); | |
| // Host access to descriptorUpdateTemplate must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplateKHR( | |
| VkDevice device, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorUpdateTemplate); | |
| // Host access to descriptorUpdateTemplate must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordUpdateDescriptorSetWithTemplateKHR( | |
| VkDevice device, | |
| VkDescriptorSet descriptorSet, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const void* pData) { | |
| StartReadObject(device); | |
| StartWriteObject(descriptorSet); | |
| StartReadObject(descriptorUpdateTemplate); | |
| // Host access to descriptorSet must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordUpdateDescriptorSetWithTemplateKHR( | |
| VkDevice device, | |
| VkDescriptorSet descriptorSet, | |
| VkDescriptorUpdateTemplate descriptorUpdateTemplate, | |
| const void* pData) { | |
| FinishReadObject(device); | |
| FinishWriteObject(descriptorSet); | |
| FinishReadObject(descriptorUpdateTemplate); | |
| // Host access to descriptorSet must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateRenderPass2KHR( | |
| VkDevice device, | |
| const VkRenderPassCreateInfo2KHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkRenderPass* pRenderPass) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateRenderPass2KHR( | |
| VkDevice device, | |
| const VkRenderPassCreateInfo2KHR* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkRenderPass* pRenderPass, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginRenderPass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkRenderPassBeginInfo* pRenderPassBegin, | |
| const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginRenderPass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkRenderPassBeginInfo* pRenderPassBegin, | |
| const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdNextSubpass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkSubpassBeginInfoKHR* pSubpassBeginInfo, | |
| const VkSubpassEndInfoKHR* pSubpassEndInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdNextSubpass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkSubpassBeginInfoKHR* pSubpassBeginInfo, | |
| const VkSubpassEndInfoKHR* pSubpassEndInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndRenderPass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkSubpassEndInfoKHR* pSubpassEndInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndRenderPass2KHR( | |
| VkCommandBuffer commandBuffer, | |
| const VkSubpassEndInfoKHR* pSubpassEndInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetSwapchainStatusKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain) { | |
| StartReadObject(device); | |
| StartWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetSwapchainStatusKHR( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordImportFenceWin32HandleKHR( | |
| VkDevice device, | |
| const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordImportFenceWin32HandleKHR( | |
| VkDevice device, | |
| const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetFenceWin32HandleKHR( | |
| VkDevice device, | |
| const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetFenceWin32HandleKHR( | |
| VkDevice device, | |
| const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, | |
| HANDLE* pHandle, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordImportFenceFdKHR( | |
| VkDevice device, | |
| const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordImportFenceFdKHR( | |
| VkDevice device, | |
| const VkImportFenceFdInfoKHR* pImportFenceFdInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetFenceFdKHR( | |
| VkDevice device, | |
| const VkFenceGetFdInfoKHR* pGetFdInfo, | |
| int* pFd) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetFenceFdKHR( | |
| VkDevice device, | |
| const VkFenceGetFdInfoKHR* pGetFdInfo, | |
| int* pFd, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDisplayModeProperties2KHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| uint32_t* pPropertyCount, | |
| VkDisplayModeProperties2KHR* pProperties) { | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordGetDisplayModeProperties2KHR( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| uint32_t* pPropertyCount, | |
| VkDisplayModeProperties2KHR* pProperties, | |
| VkResult result) { | |
| FinishReadObject(display); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkImageMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkImageMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkBufferMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkBufferMemoryRequirementsInfo2* pInfo, | |
| VkMemoryRequirements2* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkImageSparseMemoryRequirementsInfo2* pInfo, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2KHR( | |
| VkDevice device, | |
| const VkImageSparseMemoryRequirementsInfo2* pInfo, | |
| uint32_t* pSparseMemoryRequirementCount, | |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversionKHR( | |
| VkDevice device, | |
| const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSamplerYcbcrConversion* pYcbcrConversion) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversionKHR( | |
| VkDevice device, | |
| const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSamplerYcbcrConversion* pYcbcrConversion, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversionKHR( | |
| VkDevice device, | |
| VkSamplerYcbcrConversion ycbcrConversion, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(ycbcrConversion); | |
| // Host access to ycbcrConversion must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversionKHR( | |
| VkDevice device, | |
| VkSamplerYcbcrConversion ycbcrConversion, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(ycbcrConversion); | |
| // Host access to ycbcrConversion must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordBindBufferMemory2KHR( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindBufferMemoryInfo* pBindInfos) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordBindBufferMemory2KHR( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindBufferMemoryInfo* pBindInfos, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordBindImageMemory2KHR( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindImageMemoryInfo* pBindInfos) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordBindImageMemory2KHR( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindImageMemoryInfo* pBindInfos, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupportKHR( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| VkDescriptorSetLayoutSupport* pSupport) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupportKHR( | |
| VkDevice device, | |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | |
| VkDescriptorSetLayoutSupport* pSupport) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndirectCountKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| StartReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndirectCountKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| FinishReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndexedIndirectCountKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| StartReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndexedIndirectCountKHR( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| FinishReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetPipelineExecutablePropertiesKHR( | |
| VkDevice device, | |
| const VkPipelineInfoKHR* pPipelineInfo, | |
| uint32_t* pExecutableCount, | |
| VkPipelineExecutablePropertiesKHR* pProperties) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetPipelineExecutablePropertiesKHR( | |
| VkDevice device, | |
| const VkPipelineInfoKHR* pPipelineInfo, | |
| uint32_t* pExecutableCount, | |
| VkPipelineExecutablePropertiesKHR* pProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetPipelineExecutableStatisticsKHR( | |
| VkDevice device, | |
| const VkPipelineExecutableInfoKHR* pExecutableInfo, | |
| uint32_t* pStatisticCount, | |
| VkPipelineExecutableStatisticKHR* pStatistics) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetPipelineExecutableStatisticsKHR( | |
| VkDevice device, | |
| const VkPipelineExecutableInfoKHR* pExecutableInfo, | |
| uint32_t* pStatisticCount, | |
| VkPipelineExecutableStatisticKHR* pStatistics, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetPipelineExecutableInternalRepresentationsKHR( | |
| VkDevice device, | |
| const VkPipelineExecutableInfoKHR* pExecutableInfo, | |
| uint32_t* pInternalRepresentationCount, | |
| VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetPipelineExecutableInternalRepresentationsKHR( | |
| VkDevice device, | |
| const VkPipelineExecutableInfoKHR* pExecutableInfo, | |
| uint32_t* pInternalRepresentationCount, | |
| VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCreateDebugReportCallbackEXT( | |
| VkInstance instance, | |
| const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDebugReportCallbackEXT* pCallback) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDebugReportCallbackEXT( | |
| VkInstance instance, | |
| const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDebugReportCallbackEXT* pCallback, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDebugReportCallbackEXT( | |
| VkInstance instance, | |
| VkDebugReportCallbackEXT callback, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(instance); | |
| StartWriteObject(callback); | |
| // Host access to callback must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDebugReportCallbackEXT( | |
| VkInstance instance, | |
| VkDebugReportCallbackEXT callback, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(instance); | |
| FinishWriteObject(callback); | |
| // Host access to callback must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordDebugReportMessageEXT( | |
| VkInstance instance, | |
| VkDebugReportFlagsEXT flags, | |
| VkDebugReportObjectTypeEXT objectType, | |
| uint64_t object, | |
| size_t location, | |
| int32_t messageCode, | |
| const char* pLayerPrefix, | |
| const char* pMessage) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordDebugReportMessageEXT( | |
| VkInstance instance, | |
| VkDebugReportFlagsEXT flags, | |
| VkDebugReportObjectTypeEXT objectType, | |
| uint64_t object, | |
| size_t location, | |
| int32_t messageCode, | |
| const char* pLayerPrefix, | |
| const char* pMessage) { | |
| FinishReadObject(instance); | |
| } | |
| // TODO - not wrapping EXT function vkDebugMarkerSetObjectTagEXT | |
| // TODO - not wrapping EXT function vkDebugMarkerSetObjectNameEXT | |
| // TODO - not wrapping EXT function vkCmdDebugMarkerBeginEXT | |
| // TODO - not wrapping EXT function vkCmdDebugMarkerEndEXT | |
| // TODO - not wrapping EXT function vkCmdDebugMarkerInsertEXT | |
| void ThreadSafety::PreCallRecordCmdBindTransformFeedbackBuffersEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstBinding, | |
| uint32_t bindingCount, | |
| const VkBuffer* pBuffers, | |
| const VkDeviceSize* pOffsets, | |
| const VkDeviceSize* pSizes) { | |
| StartWriteObject(commandBuffer); | |
| if (pBuffers) { | |
| for (uint32_t index = 0; index < bindingCount; index++) { | |
| StartReadObject(pBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindTransformFeedbackBuffersEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstBinding, | |
| uint32_t bindingCount, | |
| const VkBuffer* pBuffers, | |
| const VkDeviceSize* pOffsets, | |
| const VkDeviceSize* pSizes) { | |
| FinishWriteObject(commandBuffer); | |
| if (pBuffers) { | |
| for (uint32_t index = 0; index < bindingCount; index++) { | |
| FinishReadObject(pBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginTransformFeedbackEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstCounterBuffer, | |
| uint32_t counterBufferCount, | |
| const VkBuffer* pCounterBuffers, | |
| const VkDeviceSize* pCounterBufferOffsets) { | |
| StartWriteObject(commandBuffer); | |
| if (pCounterBuffers) { | |
| for (uint32_t index = 0; index < counterBufferCount; index++) { | |
| StartReadObject(pCounterBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginTransformFeedbackEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstCounterBuffer, | |
| uint32_t counterBufferCount, | |
| const VkBuffer* pCounterBuffers, | |
| const VkDeviceSize* pCounterBufferOffsets) { | |
| FinishWriteObject(commandBuffer); | |
| if (pCounterBuffers) { | |
| for (uint32_t index = 0; index < counterBufferCount; index++) { | |
| FinishReadObject(pCounterBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndTransformFeedbackEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstCounterBuffer, | |
| uint32_t counterBufferCount, | |
| const VkBuffer* pCounterBuffers, | |
| const VkDeviceSize* pCounterBufferOffsets) { | |
| StartWriteObject(commandBuffer); | |
| if (pCounterBuffers) { | |
| for (uint32_t index = 0; index < counterBufferCount; index++) { | |
| StartReadObject(pCounterBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndTransformFeedbackEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstCounterBuffer, | |
| uint32_t counterBufferCount, | |
| const VkBuffer* pCounterBuffers, | |
| const VkDeviceSize* pCounterBufferOffsets) { | |
| FinishWriteObject(commandBuffer); | |
| if (pCounterBuffers) { | |
| for (uint32_t index = 0; index < counterBufferCount; index++) { | |
| FinishReadObject(pCounterBuffers[index]); | |
| } | |
| } | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginQueryIndexedEXT( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| VkQueryControlFlags flags, | |
| uint32_t index) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginQueryIndexedEXT( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| VkQueryControlFlags flags, | |
| uint32_t index) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndQueryIndexedEXT( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| uint32_t index) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndQueryIndexedEXT( | |
| VkCommandBuffer commandBuffer, | |
| VkQueryPool queryPool, | |
| uint32_t query, | |
| uint32_t index) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(queryPool); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndirectByteCountEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t instanceCount, | |
| uint32_t firstInstance, | |
| VkBuffer counterBuffer, | |
| VkDeviceSize counterBufferOffset, | |
| uint32_t counterOffset, | |
| uint32_t vertexStride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(counterBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndirectByteCountEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t instanceCount, | |
| uint32_t firstInstance, | |
| VkBuffer counterBuffer, | |
| VkDeviceSize counterBufferOffset, | |
| uint32_t counterOffset, | |
| uint32_t vertexStride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(counterBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetImageViewHandleNVX( | |
| VkDevice device, | |
| const VkImageViewHandleInfoNVX* pInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageViewHandleNVX( | |
| VkDevice device, | |
| const VkImageViewHandleInfoNVX* pInfo) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndirectCountAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| StartReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndirectCountAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| FinishReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawIndexedIndirectCountAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| StartReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawIndexedIndirectCountAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| FinishReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetShaderInfoAMD( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| VkShaderStageFlagBits shaderStage, | |
| VkShaderInfoTypeAMD infoType, | |
| size_t* pInfoSize, | |
| void* pInfo) { | |
| StartReadObject(device); | |
| StartReadObject(pipeline); | |
| } | |
| void ThreadSafety::PostCallRecordGetShaderInfoAMD( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| VkShaderStageFlagBits shaderStage, | |
| VkShaderInfoTypeAMD infoType, | |
| size_t* pInfoSize, | |
| void* pInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipeline); | |
| } | |
| #ifdef VK_USE_PLATFORM_GGP | |
| void ThreadSafety::PreCallRecordCreateStreamDescriptorSurfaceGGP( | |
| VkInstance instance, | |
| const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateStreamDescriptorSurfaceGGP( | |
| VkInstance instance, | |
| const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_GGP | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordGetMemoryWin32HandleNV( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkExternalMemoryHandleTypeFlagsNV handleType, | |
| HANDLE* pHandle) { | |
| StartReadObject(device); | |
| StartReadObject(memory); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryWin32HandleNV( | |
| VkDevice device, | |
| VkDeviceMemory memory, | |
| VkExternalMemoryHandleTypeFlagsNV handleType, | |
| HANDLE* pHandle, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(memory); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| #ifdef VK_USE_PLATFORM_VI_NN | |
| void ThreadSafety::PreCallRecordCreateViSurfaceNN( | |
| VkInstance instance, | |
| const VkViSurfaceCreateInfoNN* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateViSurfaceNN( | |
| VkInstance instance, | |
| const VkViSurfaceCreateInfoNN* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_VI_NN | |
| void ThreadSafety::PreCallRecordCmdBeginConditionalRenderingEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginConditionalRenderingEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndConditionalRenderingEXT( | |
| VkCommandBuffer commandBuffer) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndConditionalRenderingEXT( | |
| VkCommandBuffer commandBuffer) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdProcessCommandsNVX( | |
| VkCommandBuffer commandBuffer, | |
| const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdProcessCommandsNVX( | |
| VkCommandBuffer commandBuffer, | |
| const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdReserveSpaceForCommandsNVX( | |
| VkCommandBuffer commandBuffer, | |
| const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdReserveSpaceForCommandsNVX( | |
| VkCommandBuffer commandBuffer, | |
| const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateIndirectCommandsLayoutNVX( | |
| VkDevice device, | |
| const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateIndirectCommandsLayoutNVX( | |
| VkDevice device, | |
| const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyIndirectCommandsLayoutNVX( | |
| VkDevice device, | |
| VkIndirectCommandsLayoutNVX indirectCommandsLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartReadObject(indirectCommandsLayout); | |
| } | |
| void ThreadSafety::PostCallRecordDestroyIndirectCommandsLayoutNVX( | |
| VkDevice device, | |
| VkIndirectCommandsLayoutNVX indirectCommandsLayout, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishReadObject(indirectCommandsLayout); | |
| } | |
| void ThreadSafety::PreCallRecordCreateObjectTableNVX( | |
| VkDevice device, | |
| const VkObjectTableCreateInfoNVX* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkObjectTableNVX* pObjectTable) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateObjectTableNVX( | |
| VkDevice device, | |
| const VkObjectTableCreateInfoNVX* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkObjectTableNVX* pObjectTable, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyObjectTableNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyObjectTableNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordRegisterObjectsNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| uint32_t objectCount, | |
| const VkObjectTableEntryNVX* const* ppObjectTableEntries, | |
| const uint32_t* pObjectIndices) { | |
| StartReadObject(device); | |
| StartWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordRegisterObjectsNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| uint32_t objectCount, | |
| const VkObjectTableEntryNVX* const* ppObjectTableEntries, | |
| const uint32_t* pObjectIndices, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordUnregisterObjectsNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| uint32_t objectCount, | |
| const VkObjectEntryTypeNVX* pObjectEntryTypes, | |
| const uint32_t* pObjectIndices) { | |
| StartReadObject(device); | |
| StartWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordUnregisterObjectsNVX( | |
| VkDevice device, | |
| VkObjectTableNVX objectTable, | |
| uint32_t objectCount, | |
| const VkObjectEntryTypeNVX* pObjectEntryTypes, | |
| const uint32_t* pObjectIndices, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(objectTable); | |
| // Host access to objectTable must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetViewportWScalingNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkViewportWScalingNV* pViewportWScalings) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetViewportWScalingNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkViewportWScalingNV* pViewportWScalings) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordReleaseDisplayEXT( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display) { | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordReleaseDisplayEXT( | |
| VkPhysicalDevice physicalDevice, | |
| VkDisplayKHR display, | |
| VkResult result) { | |
| FinishReadObject(display); | |
| } | |
| #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT | |
| void ThreadSafety::PreCallRecordAcquireXlibDisplayEXT( | |
| VkPhysicalDevice physicalDevice, | |
| Display* dpy, | |
| VkDisplayKHR display) { | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordAcquireXlibDisplayEXT( | |
| VkPhysicalDevice physicalDevice, | |
| Display* dpy, | |
| VkDisplayKHR display, | |
| VkResult result) { | |
| FinishReadObject(display); | |
| } | |
| #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT | |
| void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { | |
| StartReadObject(surface); | |
| } | |
| void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT( | |
| VkPhysicalDevice physicalDevice, | |
| VkSurfaceKHR surface, | |
| VkSurfaceCapabilities2EXT* pSurfaceCapabilities, | |
| VkResult result) { | |
| FinishReadObject(surface); | |
| } | |
| void ThreadSafety::PreCallRecordDisplayPowerControlEXT( | |
| VkDevice device, | |
| VkDisplayKHR display, | |
| const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { | |
| StartReadObject(device); | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordDisplayPowerControlEXT( | |
| VkDevice device, | |
| VkDisplayKHR display, | |
| const VkDisplayPowerInfoEXT* pDisplayPowerInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(display); | |
| } | |
| void ThreadSafety::PreCallRecordRegisterDeviceEventEXT( | |
| VkDevice device, | |
| const VkDeviceEventInfoEXT* pDeviceEventInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordRegisterDeviceEventEXT( | |
| VkDevice device, | |
| const VkDeviceEventInfoEXT* pDeviceEventInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordRegisterDisplayEventEXT( | |
| VkDevice device, | |
| VkDisplayKHR display, | |
| const VkDisplayEventInfoEXT* pDisplayEventInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence) { | |
| StartReadObject(device); | |
| StartReadObject(display); | |
| } | |
| void ThreadSafety::PostCallRecordRegisterDisplayEventEXT( | |
| VkDevice device, | |
| VkDisplayKHR display, | |
| const VkDisplayEventInfoEXT* pDisplayEventInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkFence* pFence, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(display); | |
| } | |
| void ThreadSafety::PreCallRecordGetSwapchainCounterEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkSurfaceCounterFlagBitsEXT counter, | |
| uint64_t* pCounterValue) { | |
| StartReadObject(device); | |
| StartReadObject(swapchain); | |
| } | |
| void ThreadSafety::PostCallRecordGetSwapchainCounterEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkSurfaceCounterFlagBitsEXT counter, | |
| uint64_t* pCounterValue, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(swapchain); | |
| } | |
| void ThreadSafety::PreCallRecordGetRefreshCycleDurationGOOGLE( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { | |
| StartReadObject(device); | |
| StartWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetRefreshCycleDurationGOOGLE( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetPastPresentationTimingGOOGLE( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| uint32_t* pPresentationTimingCount, | |
| VkPastPresentationTimingGOOGLE* pPresentationTimings) { | |
| StartReadObject(device); | |
| StartWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordGetPastPresentationTimingGOOGLE( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| uint32_t* pPresentationTimingCount, | |
| VkPastPresentationTimingGOOGLE* pPresentationTimings, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(swapchain); | |
| // Host access to swapchain must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetDiscardRectangleEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstDiscardRectangle, | |
| uint32_t discardRectangleCount, | |
| const VkRect2D* pDiscardRectangles) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetDiscardRectangleEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstDiscardRectangle, | |
| uint32_t discardRectangleCount, | |
| const VkRect2D* pDiscardRectangles) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordSetHdrMetadataEXT( | |
| VkDevice device, | |
| uint32_t swapchainCount, | |
| const VkSwapchainKHR* pSwapchains, | |
| const VkHdrMetadataEXT* pMetadata) { | |
| StartReadObject(device); | |
| if (pSwapchains) { | |
| for (uint32_t index = 0; index < swapchainCount; index++) { | |
| StartReadObject(pSwapchains[index]); | |
| } | |
| } | |
| } | |
| void ThreadSafety::PostCallRecordSetHdrMetadataEXT( | |
| VkDevice device, | |
| uint32_t swapchainCount, | |
| const VkSwapchainKHR* pSwapchains, | |
| const VkHdrMetadataEXT* pMetadata) { | |
| FinishReadObject(device); | |
| if (pSwapchains) { | |
| for (uint32_t index = 0; index < swapchainCount; index++) { | |
| FinishReadObject(pSwapchains[index]); | |
| } | |
| } | |
| } | |
| #ifdef VK_USE_PLATFORM_IOS_MVK | |
| void ThreadSafety::PreCallRecordCreateIOSSurfaceMVK( | |
| VkInstance instance, | |
| const VkIOSSurfaceCreateInfoMVK* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateIOSSurfaceMVK( | |
| VkInstance instance, | |
| const VkIOSSurfaceCreateInfoMVK* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_IOS_MVK | |
| #ifdef VK_USE_PLATFORM_MACOS_MVK | |
| void ThreadSafety::PreCallRecordCreateMacOSSurfaceMVK( | |
| VkInstance instance, | |
| const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateMacOSSurfaceMVK( | |
| VkInstance instance, | |
| const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_MACOS_MVK | |
| // TODO - not wrapping EXT function vkSetDebugUtilsObjectNameEXT | |
| // TODO - not wrapping EXT function vkSetDebugUtilsObjectTagEXT | |
| void ThreadSafety::PreCallRecordQueueBeginDebugUtilsLabelEXT( | |
| VkQueue queue, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| StartReadObject(queue); | |
| } | |
| void ThreadSafety::PostCallRecordQueueBeginDebugUtilsLabelEXT( | |
| VkQueue queue, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| FinishReadObject(queue); | |
| } | |
| void ThreadSafety::PreCallRecordQueueEndDebugUtilsLabelEXT( | |
| VkQueue queue) { | |
| StartReadObject(queue); | |
| } | |
| void ThreadSafety::PostCallRecordQueueEndDebugUtilsLabelEXT( | |
| VkQueue queue) { | |
| FinishReadObject(queue); | |
| } | |
| void ThreadSafety::PreCallRecordQueueInsertDebugUtilsLabelEXT( | |
| VkQueue queue, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| StartReadObject(queue); | |
| } | |
| void ThreadSafety::PostCallRecordQueueInsertDebugUtilsLabelEXT( | |
| VkQueue queue, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| FinishReadObject(queue); | |
| } | |
| void ThreadSafety::PreCallRecordCmdBeginDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdBeginDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCmdEndDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdEndDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCmdInsertDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdInsertDebugUtilsLabelEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkDebugUtilsLabelEXT* pLabelInfo) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCreateDebugUtilsMessengerEXT( | |
| VkInstance instance, | |
| const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDebugUtilsMessengerEXT* pMessenger) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateDebugUtilsMessengerEXT( | |
| VkInstance instance, | |
| const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkDebugUtilsMessengerEXT* pMessenger, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyDebugUtilsMessengerEXT( | |
| VkInstance instance, | |
| VkDebugUtilsMessengerEXT messenger, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(instance); | |
| StartWriteObject(messenger); | |
| // Host access to messenger must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyDebugUtilsMessengerEXT( | |
| VkInstance instance, | |
| VkDebugUtilsMessengerEXT messenger, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(instance); | |
| FinishWriteObject(messenger); | |
| // Host access to messenger must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordSubmitDebugUtilsMessageEXT( | |
| VkInstance instance, | |
| VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, | |
| VkDebugUtilsMessageTypeFlagsEXT messageTypes, | |
| const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordSubmitDebugUtilsMessageEXT( | |
| VkInstance instance, | |
| VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, | |
| VkDebugUtilsMessageTypeFlagsEXT messageTypes, | |
| const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { | |
| FinishReadObject(instance); | |
| } | |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR | |
| void ThreadSafety::PreCallRecordGetAndroidHardwareBufferPropertiesANDROID( | |
| VkDevice device, | |
| const struct AHardwareBuffer* buffer, | |
| VkAndroidHardwareBufferPropertiesANDROID* pProperties) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetAndroidHardwareBufferPropertiesANDROID( | |
| VkDevice device, | |
| const struct AHardwareBuffer* buffer, | |
| VkAndroidHardwareBufferPropertiesANDROID* pProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordGetMemoryAndroidHardwareBufferANDROID( | |
| VkDevice device, | |
| const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, | |
| struct AHardwareBuffer** pBuffer) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryAndroidHardwareBufferANDROID( | |
| VkDevice device, | |
| const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, | |
| struct AHardwareBuffer** pBuffer, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #endif // VK_USE_PLATFORM_ANDROID_KHR | |
| void ThreadSafety::PreCallRecordCmdSetSampleLocationsEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetSampleLocationsEXT( | |
| VkCommandBuffer commandBuffer, | |
| const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetImageDrmFormatModifierPropertiesEXT( | |
| VkDevice device, | |
| VkImage image, | |
| VkImageDrmFormatModifierPropertiesEXT* pProperties) { | |
| StartReadObject(device); | |
| StartReadObject(image); | |
| } | |
| void ThreadSafety::PostCallRecordGetImageDrmFormatModifierPropertiesEXT( | |
| VkDevice device, | |
| VkImage image, | |
| VkImageDrmFormatModifierPropertiesEXT* pProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(image); | |
| } | |
| void ThreadSafety::PreCallRecordCreateValidationCacheEXT( | |
| VkDevice device, | |
| const VkValidationCacheCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkValidationCacheEXT* pValidationCache) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateValidationCacheEXT( | |
| VkDevice device, | |
| const VkValidationCacheCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkValidationCacheEXT* pValidationCache, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyValidationCacheEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT validationCache, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartWriteObject(validationCache); | |
| // Host access to validationCache must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordDestroyValidationCacheEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT validationCache, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishWriteObject(validationCache); | |
| // Host access to validationCache must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordMergeValidationCachesEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT dstCache, | |
| uint32_t srcCacheCount, | |
| const VkValidationCacheEXT* pSrcCaches) { | |
| StartReadObject(device); | |
| StartWriteObject(dstCache); | |
| if (pSrcCaches) { | |
| for (uint32_t index = 0; index < srcCacheCount; index++) { | |
| StartReadObject(pSrcCaches[index]); | |
| } | |
| } | |
| // Host access to dstCache must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordMergeValidationCachesEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT dstCache, | |
| uint32_t srcCacheCount, | |
| const VkValidationCacheEXT* pSrcCaches, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishWriteObject(dstCache); | |
| if (pSrcCaches) { | |
| for (uint32_t index = 0; index < srcCacheCount; index++) { | |
| FinishReadObject(pSrcCaches[index]); | |
| } | |
| } | |
| // Host access to dstCache must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetValidationCacheDataEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT validationCache, | |
| size_t* pDataSize, | |
| void* pData) { | |
| StartReadObject(device); | |
| StartReadObject(validationCache); | |
| } | |
| void ThreadSafety::PostCallRecordGetValidationCacheDataEXT( | |
| VkDevice device, | |
| VkValidationCacheEXT validationCache, | |
| size_t* pDataSize, | |
| void* pData, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(validationCache); | |
| } | |
| void ThreadSafety::PreCallRecordCmdBindShadingRateImageNV( | |
| VkCommandBuffer commandBuffer, | |
| VkImageView imageView, | |
| VkImageLayout imageLayout) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(imageView); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdBindShadingRateImageNV( | |
| VkCommandBuffer commandBuffer, | |
| VkImageView imageView, | |
| VkImageLayout imageLayout) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(imageView); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetViewportShadingRatePaletteNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkShadingRatePaletteNV* pShadingRatePalettes) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetViewportShadingRatePaletteNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstViewport, | |
| uint32_t viewportCount, | |
| const VkShadingRatePaletteNV* pShadingRatePalettes) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetCoarseSampleOrderNV( | |
| VkCommandBuffer commandBuffer, | |
| VkCoarseSampleOrderTypeNV sampleOrderType, | |
| uint32_t customSampleOrderCount, | |
| const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetCoarseSampleOrderNV( | |
| VkCommandBuffer commandBuffer, | |
| VkCoarseSampleOrderTypeNV sampleOrderType, | |
| uint32_t customSampleOrderCount, | |
| const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCreateAccelerationStructureNV( | |
| VkDevice device, | |
| const VkAccelerationStructureCreateInfoNV* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkAccelerationStructureNV* pAccelerationStructure) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordCreateAccelerationStructureNV( | |
| VkDevice device, | |
| const VkAccelerationStructureCreateInfoNV* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkAccelerationStructureNV* pAccelerationStructure, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordDestroyAccelerationStructureNV( | |
| VkDevice device, | |
| VkAccelerationStructureNV accelerationStructure, | |
| const VkAllocationCallbacks* pAllocator) { | |
| StartReadObject(device); | |
| StartReadObject(accelerationStructure); | |
| } | |
| void ThreadSafety::PostCallRecordDestroyAccelerationStructureNV( | |
| VkDevice device, | |
| VkAccelerationStructureNV accelerationStructure, | |
| const VkAllocationCallbacks* pAllocator) { | |
| FinishReadObject(device); | |
| FinishReadObject(accelerationStructure); | |
| } | |
| void ThreadSafety::PreCallRecordGetAccelerationStructureMemoryRequirementsNV( | |
| VkDevice device, | |
| const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, | |
| VkMemoryRequirements2KHR* pMemoryRequirements) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetAccelerationStructureMemoryRequirementsNV( | |
| VkDevice device, | |
| const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, | |
| VkMemoryRequirements2KHR* pMemoryRequirements) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordBindAccelerationStructureMemoryNV( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordBindAccelerationStructureMemoryNV( | |
| VkDevice device, | |
| uint32_t bindInfoCount, | |
| const VkBindAccelerationStructureMemoryInfoNV* pBindInfos, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureNV( | |
| VkCommandBuffer commandBuffer, | |
| const VkAccelerationStructureInfoNV* pInfo, | |
| VkBuffer instanceData, | |
| VkDeviceSize instanceOffset, | |
| VkBool32 update, | |
| VkAccelerationStructureNV dst, | |
| VkAccelerationStructureNV src, | |
| VkBuffer scratch, | |
| VkDeviceSize scratchOffset) { | |
| StartReadObject(commandBuffer); | |
| StartReadObject(instanceData); | |
| StartReadObject(dst); | |
| StartReadObject(src); | |
| StartReadObject(scratch); | |
| } | |
| void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureNV( | |
| VkCommandBuffer commandBuffer, | |
| const VkAccelerationStructureInfoNV* pInfo, | |
| VkBuffer instanceData, | |
| VkDeviceSize instanceOffset, | |
| VkBool32 update, | |
| VkAccelerationStructureNV dst, | |
| VkAccelerationStructureNV src, | |
| VkBuffer scratch, | |
| VkDeviceSize scratchOffset) { | |
| FinishReadObject(commandBuffer); | |
| FinishReadObject(instanceData); | |
| FinishReadObject(dst); | |
| FinishReadObject(src); | |
| FinishReadObject(scratch); | |
| } | |
| void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureNV( | |
| VkCommandBuffer commandBuffer, | |
| VkAccelerationStructureNV dst, | |
| VkAccelerationStructureNV src, | |
| VkCopyAccelerationStructureModeNV mode) { | |
| StartReadObject(commandBuffer); | |
| StartReadObject(dst); | |
| StartReadObject(src); | |
| } | |
| void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureNV( | |
| VkCommandBuffer commandBuffer, | |
| VkAccelerationStructureNV dst, | |
| VkAccelerationStructureNV src, | |
| VkCopyAccelerationStructureModeNV mode) { | |
| FinishReadObject(commandBuffer); | |
| FinishReadObject(dst); | |
| FinishReadObject(src); | |
| } | |
| void ThreadSafety::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) { | |
| StartReadObject(commandBuffer); | |
| StartReadObject(raygenShaderBindingTableBuffer); | |
| StartReadObject(missShaderBindingTableBuffer); | |
| StartReadObject(hitShaderBindingTableBuffer); | |
| StartReadObject(callableShaderBindingTableBuffer); | |
| } | |
| void ThreadSafety::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) { | |
| FinishReadObject(commandBuffer); | |
| FinishReadObject(raygenShaderBindingTableBuffer); | |
| FinishReadObject(missShaderBindingTableBuffer); | |
| FinishReadObject(hitShaderBindingTableBuffer); | |
| FinishReadObject(callableShaderBindingTableBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCreateRayTracingPipelinesNV( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkRayTracingPipelineCreateInfoNV* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines) { | |
| StartReadObject(device); | |
| StartReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PostCallRecordCreateRayTracingPipelinesNV( | |
| VkDevice device, | |
| VkPipelineCache pipelineCache, | |
| uint32_t createInfoCount, | |
| const VkRayTracingPipelineCreateInfoNV* pCreateInfos, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkPipeline* pPipelines, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipelineCache); | |
| } | |
| void ThreadSafety::PreCallRecordGetRayTracingShaderGroupHandlesNV( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| uint32_t firstGroup, | |
| uint32_t groupCount, | |
| size_t dataSize, | |
| void* pData) { | |
| StartReadObject(device); | |
| StartReadObject(pipeline); | |
| } | |
| void ThreadSafety::PostCallRecordGetRayTracingShaderGroupHandlesNV( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| uint32_t firstGroup, | |
| uint32_t groupCount, | |
| size_t dataSize, | |
| void* pData, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipeline); | |
| } | |
| void ThreadSafety::PreCallRecordGetAccelerationStructureHandleNV( | |
| VkDevice device, | |
| VkAccelerationStructureNV accelerationStructure, | |
| size_t dataSize, | |
| void* pData) { | |
| StartReadObject(device); | |
| StartReadObject(accelerationStructure); | |
| } | |
| void ThreadSafety::PostCallRecordGetAccelerationStructureHandleNV( | |
| VkDevice device, | |
| VkAccelerationStructureNV accelerationStructure, | |
| size_t dataSize, | |
| void* pData, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(accelerationStructure); | |
| } | |
| void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t accelerationStructureCount, | |
| const VkAccelerationStructureNV* pAccelerationStructures, | |
| VkQueryType queryType, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery) { | |
| StartReadObject(commandBuffer); | |
| if (pAccelerationStructures) { | |
| for (uint32_t index = 0; index < accelerationStructureCount; index++) { | |
| StartReadObject(pAccelerationStructures[index]); | |
| } | |
| } | |
| StartReadObject(queryPool); | |
| } | |
| void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t accelerationStructureCount, | |
| const VkAccelerationStructureNV* pAccelerationStructures, | |
| VkQueryType queryType, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery) { | |
| FinishReadObject(commandBuffer); | |
| if (pAccelerationStructures) { | |
| for (uint32_t index = 0; index < accelerationStructureCount; index++) { | |
| FinishReadObject(pAccelerationStructures[index]); | |
| } | |
| } | |
| FinishReadObject(queryPool); | |
| } | |
| void ThreadSafety::PreCallRecordCompileDeferredNV( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| uint32_t shader) { | |
| StartReadObject(device); | |
| StartReadObject(pipeline); | |
| } | |
| void ThreadSafety::PostCallRecordCompileDeferredNV( | |
| VkDevice device, | |
| VkPipeline pipeline, | |
| uint32_t shader, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(pipeline); | |
| } | |
| void ThreadSafety::PreCallRecordGetMemoryHostPointerPropertiesEXT( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| const void* pHostPointer, | |
| VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetMemoryHostPointerPropertiesEXT( | |
| VkDevice device, | |
| VkExternalMemoryHandleTypeFlagBits handleType, | |
| const void* pHostPointer, | |
| VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdWriteBufferMarkerAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineStageFlagBits pipelineStage, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| uint32_t marker) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdWriteBufferMarkerAMD( | |
| VkCommandBuffer commandBuffer, | |
| VkPipelineStageFlagBits pipelineStage, | |
| VkBuffer dstBuffer, | |
| VkDeviceSize dstOffset, | |
| uint32_t marker) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(dstBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordGetCalibratedTimestampsEXT( | |
| VkDevice device, | |
| uint32_t timestampCount, | |
| const VkCalibratedTimestampInfoEXT* pTimestampInfos, | |
| uint64_t* pTimestamps, | |
| uint64_t* pMaxDeviation) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetCalibratedTimestampsEXT( | |
| VkDevice device, | |
| uint32_t timestampCount, | |
| const VkCalibratedTimestampInfoEXT* pTimestampInfos, | |
| uint64_t* pTimestamps, | |
| uint64_t* pMaxDeviation, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #ifdef VK_USE_PLATFORM_GGP | |
| #endif // VK_USE_PLATFORM_GGP | |
| void ThreadSafety::PreCallRecordCmdDrawMeshTasksNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t taskCount, | |
| uint32_t firstTask) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawMeshTasksNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t taskCount, | |
| uint32_t firstTask) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectNV( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectNV( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| uint32_t drawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectCountNV( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| StartWriteObject(commandBuffer); | |
| StartReadObject(buffer); | |
| StartReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectCountNV( | |
| VkCommandBuffer commandBuffer, | |
| VkBuffer buffer, | |
| VkDeviceSize offset, | |
| VkBuffer countBuffer, | |
| VkDeviceSize countBufferOffset, | |
| uint32_t maxDrawCount, | |
| uint32_t stride) { | |
| FinishWriteObject(commandBuffer); | |
| FinishReadObject(buffer); | |
| FinishReadObject(countBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetExclusiveScissorNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstExclusiveScissor, | |
| uint32_t exclusiveScissorCount, | |
| const VkRect2D* pExclusiveScissors) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetExclusiveScissorNV( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t firstExclusiveScissor, | |
| uint32_t exclusiveScissorCount, | |
| const VkRect2D* pExclusiveScissors) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetCheckpointNV( | |
| VkCommandBuffer commandBuffer, | |
| const void* pCheckpointMarker) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetCheckpointNV( | |
| VkCommandBuffer commandBuffer, | |
| const void* pCheckpointMarker) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordGetQueueCheckpointDataNV( | |
| VkQueue queue, | |
| uint32_t* pCheckpointDataCount, | |
| VkCheckpointDataNV* pCheckpointData) { | |
| StartReadObject(queue); | |
| } | |
| void ThreadSafety::PostCallRecordGetQueueCheckpointDataNV( | |
| VkQueue queue, | |
| uint32_t* pCheckpointDataCount, | |
| VkCheckpointDataNV* pCheckpointData) { | |
| FinishReadObject(queue); | |
| } | |
| void ThreadSafety::PreCallRecordInitializePerformanceApiINTEL( | |
| VkDevice device, | |
| const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordInitializePerformanceApiINTEL( | |
| VkDevice device, | |
| const VkInitializePerformanceApiInfoINTEL* pInitializeInfo, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordUninitializePerformanceApiINTEL( | |
| VkDevice device) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordUninitializePerformanceApiINTEL( | |
| VkDevice device) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetPerformanceMarkerINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceMarkerInfoINTEL* pMarkerInfo) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetPerformanceMarkerINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceMarkerInfoINTEL* pMarkerInfo, | |
| VkResult result) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetPerformanceStreamMarkerINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetPerformanceStreamMarkerINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo, | |
| VkResult result) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetPerformanceOverrideINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceOverrideInfoINTEL* pOverrideInfo) { | |
| StartReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetPerformanceOverrideINTEL( | |
| VkCommandBuffer commandBuffer, | |
| const VkPerformanceOverrideInfoINTEL* pOverrideInfo, | |
| VkResult result) { | |
| FinishReadObject(commandBuffer); | |
| } | |
| void ThreadSafety::PreCallRecordAcquirePerformanceConfigurationINTEL( | |
| VkDevice device, | |
| const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, | |
| VkPerformanceConfigurationINTEL* pConfiguration) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordAcquirePerformanceConfigurationINTEL( | |
| VkDevice device, | |
| const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, | |
| VkPerformanceConfigurationINTEL* pConfiguration, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordReleasePerformanceConfigurationINTEL( | |
| VkDevice device, | |
| VkPerformanceConfigurationINTEL configuration) { | |
| StartReadObject(device); | |
| StartReadObject(configuration); | |
| } | |
| void ThreadSafety::PostCallRecordReleasePerformanceConfigurationINTEL( | |
| VkDevice device, | |
| VkPerformanceConfigurationINTEL configuration, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(configuration); | |
| } | |
| void ThreadSafety::PreCallRecordQueueSetPerformanceConfigurationINTEL( | |
| VkQueue queue, | |
| VkPerformanceConfigurationINTEL configuration) { | |
| StartReadObject(queue); | |
| StartReadObject(configuration); | |
| } | |
| void ThreadSafety::PostCallRecordQueueSetPerformanceConfigurationINTEL( | |
| VkQueue queue, | |
| VkPerformanceConfigurationINTEL configuration, | |
| VkResult result) { | |
| FinishReadObject(queue); | |
| FinishReadObject(configuration); | |
| } | |
| void ThreadSafety::PreCallRecordGetPerformanceParameterINTEL( | |
| VkDevice device, | |
| VkPerformanceParameterTypeINTEL parameter, | |
| VkPerformanceValueINTEL* pValue) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetPerformanceParameterINTEL( | |
| VkDevice device, | |
| VkPerformanceParameterTypeINTEL parameter, | |
| VkPerformanceValueINTEL* pValue, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| void ThreadSafety::PreCallRecordSetLocalDimmingAMD( | |
| VkDevice device, | |
| VkSwapchainKHR swapChain, | |
| VkBool32 localDimmingEnable) { | |
| StartReadObject(device); | |
| StartReadObject(swapChain); | |
| } | |
| void ThreadSafety::PostCallRecordSetLocalDimmingAMD( | |
| VkDevice device, | |
| VkSwapchainKHR swapChain, | |
| VkBool32 localDimmingEnable) { | |
| FinishReadObject(device); | |
| FinishReadObject(swapChain); | |
| } | |
| #ifdef VK_USE_PLATFORM_FUCHSIA | |
| void ThreadSafety::PreCallRecordCreateImagePipeSurfaceFUCHSIA( | |
| VkInstance instance, | |
| const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateImagePipeSurfaceFUCHSIA( | |
| VkInstance instance, | |
| const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_FUCHSIA | |
| #ifdef VK_USE_PLATFORM_METAL_EXT | |
| void ThreadSafety::PreCallRecordCreateMetalSurfaceEXT( | |
| VkInstance instance, | |
| const VkMetalSurfaceCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateMetalSurfaceEXT( | |
| VkInstance instance, | |
| const VkMetalSurfaceCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| #endif // VK_USE_PLATFORM_METAL_EXT | |
| void ThreadSafety::PreCallRecordGetBufferDeviceAddressEXT( | |
| VkDevice device, | |
| const VkBufferDeviceAddressInfoEXT* pInfo) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetBufferDeviceAddressEXT( | |
| VkDevice device, | |
| const VkBufferDeviceAddressInfoEXT* pInfo) { | |
| FinishReadObject(device); | |
| } | |
| #ifdef VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordAcquireFullScreenExclusiveModeEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain) { | |
| StartReadObject(device); | |
| StartReadObject(swapchain); | |
| } | |
| void ThreadSafety::PostCallRecordAcquireFullScreenExclusiveModeEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(swapchain); | |
| } | |
| void ThreadSafety::PreCallRecordReleaseFullScreenExclusiveModeEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain) { | |
| StartReadObject(device); | |
| StartReadObject(swapchain); | |
| } | |
| void ThreadSafety::PostCallRecordReleaseFullScreenExclusiveModeEXT( | |
| VkDevice device, | |
| VkSwapchainKHR swapchain, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| FinishReadObject(swapchain); | |
| } | |
| void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModes2EXT( | |
| VkDevice device, | |
| const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, | |
| VkDeviceGroupPresentModeFlagsKHR* pModes) { | |
| StartReadObject(device); | |
| } | |
| void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModes2EXT( | |
| VkDevice device, | |
| const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, | |
| VkDeviceGroupPresentModeFlagsKHR* pModes, | |
| VkResult result) { | |
| FinishReadObject(device); | |
| } | |
| #endif // VK_USE_PLATFORM_WIN32_KHR | |
| void ThreadSafety::PreCallRecordCreateHeadlessSurfaceEXT( | |
| VkInstance instance, | |
| const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface) { | |
| StartReadObject(instance); | |
| } | |
| void ThreadSafety::PostCallRecordCreateHeadlessSurfaceEXT( | |
| VkInstance instance, | |
| const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, | |
| const VkAllocationCallbacks* pAllocator, | |
| VkSurfaceKHR* pSurface, | |
| VkResult result) { | |
| FinishReadObject(instance); | |
| } | |
| void ThreadSafety::PreCallRecordCmdSetLineStippleEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t lineStippleFactor, | |
| uint16_t lineStipplePattern) { | |
| StartWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PostCallRecordCmdSetLineStippleEXT( | |
| VkCommandBuffer commandBuffer, | |
| uint32_t lineStippleFactor, | |
| uint16_t lineStipplePattern) { | |
| FinishWriteObject(commandBuffer); | |
| // Host access to commandBuffer must be externally synchronized | |
| } | |
| void ThreadSafety::PreCallRecordResetQueryPoolEXT( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount) { | |
| StartReadObject(device); | |
| StartReadObject(queryPool); | |
| } | |
| void ThreadSafety::PostCallRecordResetQueryPoolEXT( | |
| VkDevice device, | |
| VkQueryPool queryPool, | |
| uint32_t firstQuery, | |
| uint32_t queryCount) { | |
| FinishReadObject(device); | |
| FinishReadObject(queryPool); | |
| } |