blob: a954dee7a36ba92b9166cc65d831e58cc2780230 [file] [log] [blame]
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
// See thread_safety_generator.py for modifications
/***************************************************************************
*
* Copyright (c) 2015-2023 The Khronos Group Inc.
* Copyright (c) 2015-2023 Valve Corporation
* Copyright (c) 2015-2023 LunarG, Inc.
* Copyright (c) 2015-2023 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.
****************************************************************************/
// NOLINTBEGIN
#include "chassis.h"
#include "thread_tracker/thread_safety_validation.h"
void ThreadSafety::PreCallRecordCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance) {}
void ThreadSafety::PostCallRecordCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance, const RecordObject& record_obj) {
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pInstance);
}
}
void ThreadSafety::PreCallRecordDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
StartWriteObjectParentInstance(instance, vvl::Func::vkDestroyInstance);
// Host access to instance must be externally synchronized
// all sname:VkPhysicalDevice objects enumerated from pname:instance must be externally synchronized between host accesses
}
void ThreadSafety::PostCallRecordDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishWriteObjectParentInstance(instance, vvl::Func::vkDestroyInstance);
DestroyObjectParentInstance(instance);
// Host access to instance must be externally synchronized
// all sname:VkPhysicalDevice objects enumerated from pname:instance must be externally synchronized between host accesses
}
void ThreadSafety::PreCallRecordEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices) {
StartReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDevices);
}
void ThreadSafety::PostCallRecordEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices, const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDevices);
}
void ThreadSafety::PreCallRecordGetInstanceProcAddr(VkInstance instance, const char* pName) {
StartReadObjectParentInstance(instance, vvl::Func::vkGetInstanceProcAddr);
}
void ThreadSafety::PostCallRecordGetInstanceProcAddr(VkInstance instance, const char* pName, const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkGetInstanceProcAddr);
}
void ThreadSafety::PreCallRecordGetDeviceProcAddr(VkDevice device, const char* pName) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceProcAddr);
}
void ThreadSafety::PostCallRecordGetDeviceProcAddr(VkDevice device, const char* pName, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceProcAddr);
}
void ThreadSafety::PreCallRecordCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {}
void ThreadSafety::PostCallRecordCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDevice* pDevice,
const RecordObject& record_obj) {
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pDevice);
}
}
void ThreadSafety::PreCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
StartWriteObject(queue, vvl::Func::vkQueueSubmit);
StartWriteObject(fence, vvl::Func::vkQueueSubmit);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(queue, vvl::Func::vkQueueSubmit);
FinishWriteObject(fence, vvl::Func::vkQueueSubmit);
// Host access to queue must be externally synchronized
// Host access to fence must be externally synchronized
}
void ThreadSafety::PreCallRecordQueueWaitIdle(VkQueue queue) {
StartWriteObject(queue, vvl::Func::vkQueueWaitIdle);
// Host access to queue must be externally synchronized
}
void ThreadSafety::PostCallRecordQueueWaitIdle(VkQueue queue, const RecordObject& record_obj) {
FinishWriteObject(queue, vvl::Func::vkQueueWaitIdle);
// Host access to queue must be externally synchronized
}
void ThreadSafety::PreCallRecordAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
StartReadObjectParentInstance(device, vvl::Func::vkAllocateMemory);
}
void ThreadSafety::PostCallRecordAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAllocateMemory);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pMemory);
}
}
void ThreadSafety::PreCallRecordFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkFreeMemory);
StartWriteObject(memory, vvl::Func::vkFreeMemory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PostCallRecordFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkFreeMemory);
FinishWriteObject(memory, vvl::Func::vkFreeMemory);
DestroyObject(memory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PreCallRecordMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size,
VkMemoryMapFlags flags, void** ppData) {
StartReadObjectParentInstance(device, vvl::Func::vkMapMemory);
StartWriteObject(memory, vvl::Func::vkMapMemory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PostCallRecordMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size,
VkMemoryMapFlags flags, void** ppData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkMapMemory);
FinishWriteObject(memory, vvl::Func::vkMapMemory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PreCallRecordUnmapMemory(VkDevice device, VkDeviceMemory memory) {
StartReadObjectParentInstance(device, vvl::Func::vkUnmapMemory);
StartWriteObject(memory, vvl::Func::vkUnmapMemory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PostCallRecordUnmapMemory(VkDevice device, VkDeviceMemory memory, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkUnmapMemory);
FinishWriteObject(memory, vvl::Func::vkUnmapMemory);
// Host access to memory must be externally synchronized
}
void ThreadSafety::PreCallRecordFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges) {
StartReadObjectParentInstance(device, vvl::Func::vkFlushMappedMemoryRanges);
}
void ThreadSafety::PostCallRecordFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkFlushMappedMemoryRanges);
}
void ThreadSafety::PreCallRecordInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges) {
StartReadObjectParentInstance(device, vvl::Func::vkInvalidateMappedMemoryRanges);
}
void ThreadSafety::PostCallRecordInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkInvalidateMappedMemoryRanges);
}
void ThreadSafety::PreCallRecordGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory,
VkDeviceSize* pCommittedMemoryInBytes) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryCommitment);
StartReadObject(memory, vvl::Func::vkGetDeviceMemoryCommitment);
}
void ThreadSafety::PostCallRecordGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory,
VkDeviceSize* pCommittedMemoryInBytes, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryCommitment);
FinishReadObject(memory, vvl::Func::vkGetDeviceMemoryCommitment);
}
void ThreadSafety::PreCallRecordBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory,
VkDeviceSize memoryOffset) {
StartReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory);
StartWriteObject(buffer, vvl::Func::vkBindBufferMemory);
StartReadObject(memory, vvl::Func::vkBindBufferMemory);
// Host access to buffer must be externally synchronized
}
void ThreadSafety::PostCallRecordBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory,
VkDeviceSize memoryOffset, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory);
FinishWriteObject(buffer, vvl::Func::vkBindBufferMemory);
FinishReadObject(memory, vvl::Func::vkBindBufferMemory);
// Host access to buffer must be externally synchronized
}
void ThreadSafety::PreCallRecordBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) {
StartReadObjectParentInstance(device, vvl::Func::vkBindImageMemory);
StartWriteObject(image, vvl::Func::vkBindImageMemory);
StartReadObject(memory, vvl::Func::vkBindImageMemory);
// Host access to image must be externally synchronized
}
void ThreadSafety::PostCallRecordBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindImageMemory);
FinishWriteObject(image, vvl::Func::vkBindImageMemory);
FinishReadObject(memory, vvl::Func::vkBindImageMemory);
// Host access to image must be externally synchronized
}
void ThreadSafety::PreCallRecordGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
VkMemoryRequirements* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements);
StartReadObject(buffer, vvl::Func::vkGetBufferMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
VkMemoryRequirements* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements);
FinishReadObject(buffer, vvl::Func::vkGetBufferMemoryRequirements);
}
void ThreadSafety::PreCallRecordGetImageMemoryRequirements(VkDevice device, VkImage image,
VkMemoryRequirements* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements);
StartReadObject(image, vvl::Func::vkGetImageMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetImageMemoryRequirements(VkDevice device, VkImage image,
VkMemoryRequirements* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements);
FinishReadObject(image, vvl::Func::vkGetImageMemoryRequirements);
}
void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements(VkDevice device, VkImage image,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements);
StartReadObject(image, vvl::Func::vkGetImageSparseMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements(VkDevice device, VkImage image,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements* pSparseMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements);
FinishReadObject(image, vvl::Func::vkGetImageSparseMemoryRequirements);
}
void ThreadSafety::PreCallRecordQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo,
VkFence fence) {
StartWriteObject(queue, vvl::Func::vkQueueBindSparse);
StartWriteObject(fence, vvl::Func::vkQueueBindSparse);
// Host access to queue 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, const RecordObject& record_obj) {
FinishWriteObject(queue, vvl::Func::vkQueueBindSparse);
FinishWriteObject(fence, vvl::Func::vkQueueBindSparse);
// Host access to queue 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) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateFence);
}
void ThreadSafety::PostCallRecordCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkFence* pFence,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateFence);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pFence);
}
}
void ThreadSafety::PreCallRecordDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyFence);
StartWriteObject(fence, vvl::Func::vkDestroyFence);
// Host access to fence must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyFence);
FinishWriteObject(fence, vvl::Func::vkDestroyFence);
DestroyObject(fence);
// Host access to fence must be externally synchronized
}
void ThreadSafety::PreCallRecordResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
StartReadObjectParentInstance(device, vvl::Func::vkResetFences);
if (pFences) {
for (uint32_t index = 0; index < fenceCount; index++) {
StartWriteObject(pFences[index], vvl::Func::vkResetFences);
}
}
// Host access to each member of pFences must be externally synchronized
}
void ThreadSafety::PostCallRecordResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkResetFences);
if (pFences) {
for (uint32_t index = 0; index < fenceCount; index++) {
FinishWriteObject(pFences[index], vvl::Func::vkResetFences);
}
}
// Host access to each member of pFences must be externally synchronized
}
void ThreadSafety::PreCallRecordGetFenceStatus(VkDevice device, VkFence fence) {
StartReadObjectParentInstance(device, vvl::Func::vkGetFenceStatus);
StartReadObject(fence, vvl::Func::vkGetFenceStatus);
}
void ThreadSafety::PostCallRecordGetFenceStatus(VkDevice device, VkFence fence, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetFenceStatus);
FinishReadObject(fence, vvl::Func::vkGetFenceStatus);
}
void ThreadSafety::PreCallRecordWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll,
uint64_t timeout) {
StartReadObjectParentInstance(device, vvl::Func::vkWaitForFences);
if (pFences) {
for (uint32_t index = 0; index < fenceCount; index++) {
StartReadObject(pFences[index], vvl::Func::vkWaitForFences);
}
}
}
void ThreadSafety::PostCallRecordWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll,
uint64_t timeout, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWaitForFences);
if (pFences) {
for (uint32_t index = 0; index < fenceCount; index++) {
FinishReadObject(pFences[index], vvl::Func::vkWaitForFences);
}
}
}
void ThreadSafety::PreCallRecordCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSemaphore);
}
void ThreadSafety::PostCallRecordCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSemaphore);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pSemaphore);
}
}
void ThreadSafety::PreCallRecordDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroySemaphore);
StartWriteObject(semaphore, vvl::Func::vkDestroySemaphore);
// Host access to semaphore must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroySemaphore);
FinishWriteObject(semaphore, vvl::Func::vkDestroySemaphore);
DestroyObject(semaphore);
// Host access to semaphore must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateEvent);
}
void ThreadSafety::PostCallRecordCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkEvent* pEvent,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateEvent);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pEvent);
}
}
void ThreadSafety::PreCallRecordDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyEvent);
StartWriteObject(event, vvl::Func::vkDestroyEvent);
// Host access to event must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyEvent);
FinishWriteObject(event, vvl::Func::vkDestroyEvent);
DestroyObject(event);
// Host access to event must be externally synchronized
}
void ThreadSafety::PreCallRecordGetEventStatus(VkDevice device, VkEvent event) {
StartReadObjectParentInstance(device, vvl::Func::vkGetEventStatus);
StartReadObject(event, vvl::Func::vkGetEventStatus);
}
void ThreadSafety::PostCallRecordGetEventStatus(VkDevice device, VkEvent event, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetEventStatus);
FinishReadObject(event, vvl::Func::vkGetEventStatus);
}
void ThreadSafety::PreCallRecordSetEvent(VkDevice device, VkEvent event) {
StartReadObjectParentInstance(device, vvl::Func::vkSetEvent);
StartWriteObject(event, vvl::Func::vkSetEvent);
// Host access to event must be externally synchronized
}
void ThreadSafety::PostCallRecordSetEvent(VkDevice device, VkEvent event, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetEvent);
FinishWriteObject(event, vvl::Func::vkSetEvent);
// Host access to event must be externally synchronized
}
void ThreadSafety::PreCallRecordResetEvent(VkDevice device, VkEvent event) {
StartReadObjectParentInstance(device, vvl::Func::vkResetEvent);
StartWriteObject(event, vvl::Func::vkResetEvent);
// Host access to event must be externally synchronized
}
void ThreadSafety::PostCallRecordResetEvent(VkDevice device, VkEvent event, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkResetEvent);
FinishWriteObject(event, vvl::Func::vkResetEvent);
// Host access to event must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateQueryPool);
}
void ThreadSafety::PostCallRecordCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateQueryPool);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pQueryPool);
}
}
void ThreadSafety::PreCallRecordDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyQueryPool);
StartWriteObject(queryPool, vvl::Func::vkDestroyQueryPool);
// Host access to queryPool must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyQueryPool);
FinishWriteObject(queryPool, vvl::Func::vkDestroyQueryPool);
DestroyObject(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) {
StartReadObjectParentInstance(device, vvl::Func::vkGetQueryPoolResults);
StartReadObject(queryPool, vvl::Func::vkGetQueryPoolResults);
}
void ThreadSafety::PostCallRecordGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride,
VkQueryResultFlags flags, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetQueryPoolResults);
FinishReadObject(queryPool, vvl::Func::vkGetQueryPoolResults);
}
void ThreadSafety::PreCallRecordCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateBuffer);
}
void ThreadSafety::PostCallRecordCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateBuffer);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pBuffer);
}
}
void ThreadSafety::PreCallRecordDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyBuffer);
StartWriteObject(buffer, vvl::Func::vkDestroyBuffer);
// Host access to buffer must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyBuffer);
FinishWriteObject(buffer, vvl::Func::vkDestroyBuffer);
DestroyObject(buffer);
// Host access to buffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkBufferView* pView) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateBufferView);
}
void ThreadSafety::PostCallRecordCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkBufferView* pView,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateBufferView);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pView);
}
}
void ThreadSafety::PreCallRecordDestroyBufferView(VkDevice device, VkBufferView bufferView,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyBufferView);
StartWriteObject(bufferView, vvl::Func::vkDestroyBufferView);
// Host access to bufferView must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyBufferView(VkDevice device, VkBufferView bufferView,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyBufferView);
FinishWriteObject(bufferView, vvl::Func::vkDestroyBufferView);
DestroyObject(bufferView);
// Host access to bufferView must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateImage);
}
void ThreadSafety::PostCallRecordCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkImage* pImage,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateImage);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pImage);
}
}
void ThreadSafety::PreCallRecordDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyImage);
StartWriteObject(image, vvl::Func::vkDestroyImage);
// Host access to image must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyImage);
FinishWriteObject(image, vvl::Func::vkDestroyImage);
DestroyObject(image);
// Host access to image must be externally synchronized
}
void ThreadSafety::PreCallRecordGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource,
VkSubresourceLayout* pLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout);
StartReadObject(image, vvl::Func::vkGetImageSubresourceLayout);
}
void ThreadSafety::PostCallRecordGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource,
VkSubresourceLayout* pLayout, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout);
FinishReadObject(image, vvl::Func::vkGetImageSubresourceLayout);
}
void ThreadSafety::PreCallRecordCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateImageView);
}
void ThreadSafety::PostCallRecordCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkImageView* pView,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateImageView);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pView);
}
}
void ThreadSafety::PreCallRecordDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyImageView);
StartWriteObject(imageView, vvl::Func::vkDestroyImageView);
// Host access to imageView must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyImageView);
FinishWriteObject(imageView, vvl::Func::vkDestroyImageView);
DestroyObject(imageView);
// Host access to imageView must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateShaderModule);
}
void ThreadSafety::PostCallRecordCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateShaderModule);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pShaderModule);
}
}
void ThreadSafety::PreCallRecordDestroyShaderModule(VkDevice device, VkShaderModule shaderModule,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyShaderModule);
StartWriteObject(shaderModule, vvl::Func::vkDestroyShaderModule);
// Host access to shaderModule must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyShaderModule(VkDevice device, VkShaderModule shaderModule,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyShaderModule);
FinishWriteObject(shaderModule, vvl::Func::vkDestroyShaderModule);
DestroyObject(shaderModule);
// Host access to shaderModule must be externally synchronized
}
void ThreadSafety::PreCallRecordCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) {
StartReadObjectParentInstance(device, vvl::Func::vkCreatePipelineCache);
}
void ThreadSafety::PostCallRecordCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreatePipelineCache);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pPipelineCache);
}
}
void ThreadSafety::PreCallRecordDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyPipelineCache);
StartWriteObject(pipelineCache, vvl::Func::vkDestroyPipelineCache);
// Host access to pipelineCache must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyPipelineCache);
FinishWriteObject(pipelineCache, vvl::Func::vkDestroyPipelineCache);
DestroyObject(pipelineCache);
// Host access to pipelineCache must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineCacheData);
StartReadObject(pipelineCache, vvl::Func::vkGetPipelineCacheData);
}
void ThreadSafety::PostCallRecordGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineCacheData);
FinishReadObject(pipelineCache, vvl::Func::vkGetPipelineCacheData);
}
void ThreadSafety::PreCallRecordMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount,
const VkPipelineCache* pSrcCaches) {
StartReadObjectParentInstance(device, vvl::Func::vkMergePipelineCaches);
StartWriteObject(dstCache, vvl::Func::vkMergePipelineCaches);
if (pSrcCaches) {
for (uint32_t index = 0; index < srcCacheCount; index++) {
StartReadObject(pSrcCaches[index], vvl::Func::vkMergePipelineCaches);
}
}
// Host access to dstCache must be externally synchronized
}
void ThreadSafety::PostCallRecordMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount,
const VkPipelineCache* pSrcCaches, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkMergePipelineCaches);
FinishWriteObject(dstCache, vvl::Func::vkMergePipelineCaches);
if (pSrcCaches) {
for (uint32_t index = 0; index < srcCacheCount; index++) {
FinishReadObject(pSrcCaches[index], vvl::Func::vkMergePipelineCaches);
}
}
// 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) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateGraphicsPipelines);
StartReadObject(pipelineCache, vvl::Func::vkCreateGraphicsPipelines);
}
void ThreadSafety::PostCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
const VkGraphicsPipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateGraphicsPipelines);
FinishReadObject(pipelineCache, vvl::Func::vkCreateGraphicsPipelines);
if (pPipelines) {
for (uint32_t index = 0; index < createInfoCount; index++) {
if (!pPipelines[index]) continue;
CreateObject(pPipelines[index]);
}
}
}
void ThreadSafety::PreCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateComputePipelines);
StartReadObject(pipelineCache, vvl::Func::vkCreateComputePipelines);
}
void ThreadSafety::PostCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateComputePipelines);
FinishReadObject(pipelineCache, vvl::Func::vkCreateComputePipelines);
if (pPipelines) {
for (uint32_t index = 0; index < createInfoCount; index++) {
if (!pPipelines[index]) continue;
CreateObject(pPipelines[index]);
}
}
}
void ThreadSafety::PreCallRecordDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyPipeline);
StartWriteObject(pipeline, vvl::Func::vkDestroyPipeline);
// Host access to pipeline must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyPipeline);
FinishWriteObject(pipeline, vvl::Func::vkDestroyPipeline);
DestroyObject(pipeline);
// Host access to pipeline must be externally synchronized
}
void ThreadSafety::PreCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkCreatePipelineLayout);
}
void ThreadSafety::PostCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreatePipelineLayout);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pPipelineLayout);
}
}
void ThreadSafety::PreCallRecordDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyPipelineLayout);
StartWriteObject(pipelineLayout, vvl::Func::vkDestroyPipelineLayout);
// Host access to pipelineLayout must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyPipelineLayout);
FinishWriteObject(pipelineLayout, vvl::Func::vkDestroyPipelineLayout);
DestroyObject(pipelineLayout);
// Host access to pipelineLayout must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSampler);
}
void ThreadSafety::PostCallRecordCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSampler* pSampler,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSampler);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pSampler);
}
}
void ThreadSafety::PreCallRecordDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroySampler);
StartWriteObject(sampler, vvl::Func::vkDestroySampler);
// Host access to sampler must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroySampler);
FinishWriteObject(sampler, vvl::Func::vkDestroySampler);
DestroyObject(sampler);
// Host access to sampler must be externally synchronized
}
void ThreadSafety::PreCallRecordDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorSetLayout);
StartWriteObject(descriptorSetLayout, vvl::Func::vkDestroyDescriptorSetLayout);
// Host access to descriptorSetLayout must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorSetLayout);
FinishWriteObject(descriptorSetLayout, vvl::Func::vkDestroyDescriptorSetLayout);
DestroyObject(descriptorSetLayout);
// Host access to descriptorSetLayout must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorPool);
}
void ThreadSafety::PostCallRecordCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorPool);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pDescriptorPool);
}
}
void ThreadSafety::PreCallRecordCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateFramebuffer);
}
void ThreadSafety::PostCallRecordCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateFramebuffer);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pFramebuffer);
}
}
void ThreadSafety::PreCallRecordDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyFramebuffer);
StartWriteObject(framebuffer, vvl::Func::vkDestroyFramebuffer);
// Host access to framebuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyFramebuffer);
FinishWriteObject(framebuffer, vvl::Func::vkDestroyFramebuffer);
DestroyObject(framebuffer);
// Host access to framebuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass);
}
void ThreadSafety::PostCallRecordCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pRenderPass);
}
}
void ThreadSafety::PreCallRecordDestroyRenderPass(VkDevice device, VkRenderPass renderPass,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyRenderPass);
StartWriteObject(renderPass, vvl::Func::vkDestroyRenderPass);
// Host access to renderPass must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyRenderPass(VkDevice device, VkRenderPass renderPass,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyRenderPass);
FinishWriteObject(renderPass, vvl::Func::vkDestroyRenderPass);
DestroyObject(renderPass);
// Host access to renderPass must be externally synchronized
}
void ThreadSafety::PreCallRecordGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRenderAreaGranularity);
StartReadObject(renderPass, vvl::Func::vkGetRenderAreaGranularity);
}
void ThreadSafety::PostCallRecordGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRenderAreaGranularity);
FinishReadObject(renderPass, vvl::Func::vkGetRenderAreaGranularity);
}
void ThreadSafety::PreCallRecordBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkBeginCommandBuffer);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkBeginCommandBuffer);
// 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, vvl::Func::vkEndCommandBuffer);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkEndCommandBuffer);
// 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, vvl::Func::vkResetCommandBuffer);
// 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::PostCallRecordResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkResetCommandBuffer);
// 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::PreCallRecordCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindPipeline);
StartReadObject(pipeline, vvl::Func::vkCmdBindPipeline);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindPipeline);
FinishReadObject(pipeline, vvl::Func::vkCmdBindPipeline);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount,
const VkViewport* pViewports) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewport);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount,
const VkViewport* pViewports, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewport);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount,
const VkRect2D* pScissors) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetScissor);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount,
const VkRect2D* pScissors, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetScissor);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLineWidth);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLineWidth);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp,
float depthBiasSlopeFactor) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBias);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp,
float depthBiasSlopeFactor, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBias);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetBlendConstants);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4],
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetBlendConstants);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBounds);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBounds);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t compareMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilCompareMask);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t compareMask, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilCompareMask);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t writeMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilWriteMask);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t writeMask, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilWriteMask);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t reference) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilReference);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
uint32_t reference, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilReference);
// 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, vvl::Func::vkCmdBindDescriptorSets);
StartReadObject(layout, vvl::Func::vkCmdBindDescriptorSets);
if (pDescriptorSets) {
for (uint32_t index = 0; index < descriptorSetCount; index++) {
StartReadObject(pDescriptorSets[index], vvl::Func::vkCmdBindDescriptorSets);
}
}
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindDescriptorSets);
FinishReadObject(layout, vvl::Func::vkCmdBindDescriptorSets);
if (pDescriptorSets) {
for (uint32_t index = 0; index < descriptorSetCount; index++) {
FinishReadObject(pDescriptorSets[index], vvl::Func::vkCmdBindDescriptorSets);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkIndexType indexType) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindIndexBuffer);
StartReadObject(buffer, vvl::Func::vkCmdBindIndexBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkIndexType indexType, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindIndexBuffer);
FinishReadObject(buffer, vvl::Func::vkCmdBindIndexBuffer);
// 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, vvl::Func::vkCmdBindVertexBuffers);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
StartReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers);
}
}
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindVertexBuffers);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
FinishReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers);
}
}
// 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, vvl::Func::vkCmdDraw);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDraw);
// 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, vvl::Func::vkCmdDrawIndexed);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexed);
// 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, vvl::Func::vkCmdDrawIndirect);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndirect);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
uint32_t drawCount, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirect);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndirect);
// 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, vvl::Func::vkCmdDrawIndexedIndirect);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirect);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
uint32_t drawCount, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexedIndirect);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirect);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDispatch);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDispatch);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDispatchIndirect);
StartReadObject(buffer, vvl::Func::vkCmdDispatchIndirect);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDispatchIndirect);
FinishReadObject(buffer, vvl::Func::vkCmdDispatchIndirect);
// 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, vvl::Func::vkCmdCopyBuffer);
StartReadObject(srcBuffer, vvl::Func::vkCmdCopyBuffer);
StartReadObject(dstBuffer, vvl::Func::vkCmdCopyBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer,
uint32_t regionCount, const VkBufferCopy* pRegions, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBuffer);
FinishReadObject(srcBuffer, vvl::Func::vkCmdCopyBuffer);
FinishReadObject(dstBuffer, vvl::Func::vkCmdCopyBuffer);
// 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, vvl::Func::vkCmdCopyImage);
StartReadObject(srcImage, vvl::Func::vkCmdCopyImage);
StartReadObject(dstImage, vvl::Func::vkCmdCopyImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImage);
FinishReadObject(srcImage, vvl::Func::vkCmdCopyImage);
FinishReadObject(dstImage, vvl::Func::vkCmdCopyImage);
// 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, vvl::Func::vkCmdBlitImage);
StartReadObject(srcImage, vvl::Func::vkCmdBlitImage);
StartReadObject(dstImage, vvl::Func::vkCmdBlitImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBlitImage);
FinishReadObject(srcImage, vvl::Func::vkCmdBlitImage);
FinishReadObject(dstImage, vvl::Func::vkCmdBlitImage);
// 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, vvl::Func::vkCmdCopyBufferToImage);
StartReadObject(srcBuffer, vvl::Func::vkCmdCopyBufferToImage);
StartReadObject(dstImage, vvl::Func::vkCmdCopyBufferToImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBufferToImage);
FinishReadObject(srcBuffer, vvl::Func::vkCmdCopyBufferToImage);
FinishReadObject(dstImage, vvl::Func::vkCmdCopyBufferToImage);
// 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, vvl::Func::vkCmdCopyImageToBuffer);
StartReadObject(srcImage, vvl::Func::vkCmdCopyImageToBuffer);
StartReadObject(dstBuffer, vvl::Func::vkCmdCopyImageToBuffer);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImageToBuffer);
FinishReadObject(srcImage, vvl::Func::vkCmdCopyImageToBuffer);
FinishReadObject(dstBuffer, vvl::Func::vkCmdCopyImageToBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset,
VkDeviceSize dataSize, const void* pData) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdUpdateBuffer);
StartReadObject(dstBuffer, vvl::Func::vkCmdUpdateBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset,
VkDeviceSize dataSize, const void* pData, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdUpdateBuffer);
FinishReadObject(dstBuffer, vvl::Func::vkCmdUpdateBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset,
VkDeviceSize size, uint32_t data) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdFillBuffer);
StartReadObject(dstBuffer, vvl::Func::vkCmdFillBuffer);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset,
VkDeviceSize size, uint32_t data, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdFillBuffer);
FinishReadObject(dstBuffer, vvl::Func::vkCmdFillBuffer);
// 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, vvl::Func::vkCmdClearColorImage);
StartReadObject(image, vvl::Func::vkCmdClearColorImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdClearColorImage);
FinishReadObject(image, vvl::Func::vkCmdClearColorImage);
// 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, vvl::Func::vkCmdClearDepthStencilImage);
StartReadObject(image, vvl::Func::vkCmdClearDepthStencilImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdClearDepthStencilImage);
FinishReadObject(image, vvl::Func::vkCmdClearDepthStencilImage);
// 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, vvl::Func::vkCmdClearAttachments);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdClearAttachments);
// 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, vvl::Func::vkCmdResolveImage);
StartReadObject(srcImage, vvl::Func::vkCmdResolveImage);
StartReadObject(dstImage, vvl::Func::vkCmdResolveImage);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResolveImage);
FinishReadObject(srcImage, vvl::Func::vkCmdResolveImage);
FinishReadObject(dstImage, vvl::Func::vkCmdResolveImage);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent);
StartReadObject(event, vvl::Func::vkCmdSetEvent);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent);
FinishReadObject(event, vvl::Func::vkCmdSetEvent);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent);
StartReadObject(event, vvl::Func::vkCmdResetEvent);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent);
FinishReadObject(event, vvl::Func::vkCmdResetEvent);
// 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, vvl::Func::vkCmdWaitEvents);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
StartReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents);
}
}
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWaitEvents);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
FinishReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents);
}
}
// 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, vvl::Func::vkCmdPipelineBarrier);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPipelineBarrier);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
VkQueryControlFlags flags) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginQuery);
StartReadObject(queryPool, vvl::Func::vkCmdBeginQuery);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
VkQueryControlFlags flags, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginQuery);
FinishReadObject(queryPool, vvl::Func::vkCmdBeginQuery);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndQuery);
StartReadObject(queryPool, vvl::Func::vkCmdEndQuery);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndQuery);
FinishReadObject(queryPool, vvl::Func::vkCmdEndQuery);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResetQueryPool);
StartReadObject(queryPool, vvl::Func::vkCmdResetQueryPool);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResetQueryPool);
FinishReadObject(queryPool, vvl::Func::vkCmdResetQueryPool);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage,
VkQueryPool queryPool, uint32_t query) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp);
StartReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage,
VkQueryPool queryPool, uint32_t query, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp);
FinishReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp);
// 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, vvl::Func::vkCmdCopyQueryPoolResults);
StartReadObject(queryPool, vvl::Func::vkCmdCopyQueryPoolResults);
StartReadObject(dstBuffer, vvl::Func::vkCmdCopyQueryPoolResults);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyQueryPoolResults);
FinishReadObject(queryPool, vvl::Func::vkCmdCopyQueryPoolResults);
FinishReadObject(dstBuffer, vvl::Func::vkCmdCopyQueryPoolResults);
// 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, vvl::Func::vkCmdPushConstants);
StartReadObject(layout, vvl::Func::vkCmdPushConstants);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPushConstants);
FinishReadObject(layout, vvl::Func::vkCmdPushConstants);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin,
VkSubpassContents contents) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin,
VkSubpassContents contents, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndRenderPass(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndRenderPass(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdExecuteCommands);
if (pCommandBuffers) {
for (uint32_t index = 0; index < commandBufferCount; index++) {
StartReadObject(pCommandBuffers[index], vvl::Func::vkCmdExecuteCommands);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdExecuteCommands);
if (pCommandBuffers) {
for (uint32_t index = 0; index < commandBufferCount; index++) {
FinishReadObject(pCommandBuffers[index], vvl::Func::vkCmdExecuteCommands);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordBindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory2);
}
void ThreadSafety::PostCallRecordBindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory2);
}
void ThreadSafety::PreCallRecordBindImageMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindImageMemory2);
}
void ThreadSafety::PostCallRecordBindImageMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindImageMemory2);
}
void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeatures(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPeerMemoryFeatures);
}
void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeatures(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPeerMemoryFeatures);
}
void ThreadSafety::PreCallRecordCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDeviceMask);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDeviceMask);
// 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, vvl::Func::vkCmdDispatchBase);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDispatchBase);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
StartReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDeviceGroups);
}
void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDeviceGroups);
}
void ThreadSafety::PreCallRecordGetImageMemoryRequirements2(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements2);
}
void ThreadSafety::PostCallRecordGetImageMemoryRequirements2(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements2);
}
void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements2);
}
void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements2);
}
void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2(VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements2);
}
void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2(VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements2);
}
void ThreadSafety::PreCallRecordTrimCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) {
StartReadObjectParentInstance(device, vvl::Func::vkTrimCommandPool);
StartWriteObject(commandPool, vvl::Func::vkTrimCommandPool);
// Host access to commandPool must be externally synchronized
}
void ThreadSafety::PostCallRecordTrimCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkTrimCommandPool);
FinishWriteObject(commandPool, vvl::Func::vkTrimCommandPool);
// Host access to commandPool must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversion(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSamplerYcbcrConversion);
}
void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversion(VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSamplerYcbcrConversion);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pYcbcrConversion);
}
}
void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversion(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroySamplerYcbcrConversion);
StartWriteObject(ycbcrConversion, vvl::Func::vkDestroySamplerYcbcrConversion);
// Host access to ycbcrConversion must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversion(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroySamplerYcbcrConversion);
FinishWriteObject(ycbcrConversion, vvl::Func::vkDestroySamplerYcbcrConversion);
DestroyObject(ycbcrConversion);
// Host access to ycbcrConversion must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplate(VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorUpdateTemplate);
}
void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplate(VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorUpdateTemplate);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pDescriptorUpdateTemplate);
}
}
void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplate(VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorUpdateTemplate);
StartWriteObject(descriptorUpdateTemplate, vvl::Func::vkDestroyDescriptorUpdateTemplate);
// Host access to descriptorUpdateTemplate must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplate(VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorUpdateTemplate);
FinishWriteObject(descriptorUpdateTemplate, vvl::Func::vkDestroyDescriptorUpdateTemplate);
DestroyObject(descriptorUpdateTemplate);
// Host access to descriptorUpdateTemplate must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSupport);
}
void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSupport);
}
void ThreadSafety::PreCallRecordCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCount);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndirectCount);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCount);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndirectCount);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset,
uint32_t maxDrawCount, uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset,
uint32_t maxDrawCount, uint32_t stride,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateRenderPass2(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass2);
}
void ThreadSafety::PostCallRecordCreateRenderPass2(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass2);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pRenderPass);
}
}
void ThreadSafety::PreCallRecordCmdBeginRenderPass2(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin,
const VkSubpassBeginInfo* pSubpassBeginInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginRenderPass2(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin,
const VkSubpassBeginInfo* pSubpassBeginInfo, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdNextSubpass2(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo,
const VkSubpassEndInfo* pSubpassEndInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdNextSubpass2(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo,
const VkSubpassEndInfo* pSubpassEndInfo, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndRenderPass2(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndRenderPass2(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) {
StartReadObjectParentInstance(device, vvl::Func::vkResetQueryPool);
StartReadObject(queryPool, vvl::Func::vkResetQueryPool);
}
void ThreadSafety::PostCallRecordResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkResetQueryPool);
FinishReadObject(queryPool, vvl::Func::vkResetQueryPool);
}
void ThreadSafety::PreCallRecordGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreCounterValue);
StartReadObject(semaphore, vvl::Func::vkGetSemaphoreCounterValue);
}
void ThreadSafety::PostCallRecordGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreCounterValue);
FinishReadObject(semaphore, vvl::Func::vkGetSemaphoreCounterValue);
}
void ThreadSafety::PreCallRecordWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) {
StartReadObjectParentInstance(device, vvl::Func::vkWaitSemaphores);
}
void ThreadSafety::PostCallRecordWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWaitSemaphores);
}
void ThreadSafety::PreCallRecordSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSignalSemaphore);
}
void ThreadSafety::PostCallRecordSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSignalSemaphore);
}
void ThreadSafety::PreCallRecordGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddress);
}
void ThreadSafety::PostCallRecordGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddress);
}
void ThreadSafety::PreCallRecordGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureAddress);
}
void ThreadSafety::PostCallRecordGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureAddress);
}
void ThreadSafety::PreCallRecordGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryOpaqueCaptureAddress);
}
void ThreadSafety::PostCallRecordGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryOpaqueCaptureAddress);
}
void ThreadSafety::PreCallRecordCreatePrivateDataSlot(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPrivateDataSlot* pPrivateDataSlot) {
StartReadObjectParentInstance(device, vvl::Func::vkCreatePrivateDataSlot);
}
void ThreadSafety::PostCallRecordCreatePrivateDataSlot(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreatePrivateDataSlot);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pPrivateDataSlot);
}
}
void ThreadSafety::PreCallRecordDestroyPrivateDataSlot(VkDevice device, VkPrivateDataSlot privateDataSlot,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyPrivateDataSlot);
StartWriteObject(privateDataSlot, vvl::Func::vkDestroyPrivateDataSlot);
// Host access to privateDataSlot must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyPrivateDataSlot(VkDevice device, VkPrivateDataSlot privateDataSlot,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyPrivateDataSlot);
FinishWriteObject(privateDataSlot, vvl::Func::vkDestroyPrivateDataSlot);
DestroyObject(privateDataSlot);
// Host access to privateDataSlot must be externally synchronized
}
void ThreadSafety::PreCallRecordSetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t data) {
StartReadObjectParentInstance(device, vvl::Func::vkSetPrivateData);
StartReadObject(privateDataSlot, vvl::Func::vkSetPrivateData);
}
void ThreadSafety::PostCallRecordSetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t data, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetPrivateData);
FinishReadObject(privateDataSlot, vvl::Func::vkSetPrivateData);
}
void ThreadSafety::PreCallRecordGetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPrivateData);
StartReadObject(privateDataSlot, vvl::Func::vkGetPrivateData);
}
void ThreadSafety::PostCallRecordGetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPrivateData);
FinishReadObject(privateDataSlot, vvl::Func::vkGetPrivateData);
}
void ThreadSafety::PreCallRecordCmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent event,
const VkDependencyInfo* pDependencyInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent2);
StartReadObject(event, vvl::Func::vkCmdSetEvent2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent2);
FinishReadObject(event, vvl::Func::vkCmdSetEvent2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent2);
StartReadObject(event, vvl::Func::vkCmdResetEvent2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent2);
FinishReadObject(event, vvl::Func::vkCmdResetEvent2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWaitEvents2(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
const VkDependencyInfo* pDependencyInfos) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWaitEvents2);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
StartReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents2);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWaitEvents2(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
const VkDependencyInfo* pDependencyInfos, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWaitEvents2);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
FinishReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents2);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdPipelineBarrier2(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdPipelineBarrier2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdPipelineBarrier2(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPipelineBarrier2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkQueryPool queryPool, uint32_t query) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp2);
StartReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkQueryPool queryPool, uint32_t query, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp2);
FinishReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordQueueSubmit2(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) {
StartWriteObject(queue, vvl::Func::vkQueueSubmit2);
StartWriteObject(fence, vvl::Func::vkQueueSubmit2);
// Host access to queue must be externally synchronized
// Host access to fence must be externally synchronized
}
void ThreadSafety::PostCallRecordQueueSubmit2(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence,
const RecordObject& record_obj) {
FinishWriteObject(queue, vvl::Func::vkQueueSubmit2);
FinishWriteObject(fence, vvl::Func::vkQueueSubmit2);
// Host access to queue must be externally synchronized
// Host access to fence must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyBuffer2(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyBuffer2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyBuffer2(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBuffer2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyImage2(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyImage2(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyBufferToImage2(VkCommandBuffer commandBuffer,
const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyBufferToImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyBufferToImage2(VkCommandBuffer commandBuffer,
const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBufferToImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,
const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyImageToBuffer2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,
const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImageToBuffer2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBlitImage2(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBlitImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBlitImage2(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBlitImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResolveImage2(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResolveImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResolveImage2(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResolveImage2);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginRendering);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginRendering);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndRendering(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndRendering);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndRendering(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndRendering);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCullMode);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCullMode);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetFrontFace);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetFrontFace);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPrimitiveTopology(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveTopology);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPrimitiveTopology(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveTopology);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount,
const VkViewport* pViewports) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWithCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount,
const VkViewport* pViewports, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWithCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount,
const VkRect2D* pScissors) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetScissorWithCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount,
const VkRect2D* pScissors, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetScissorWithCount);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount,
const VkBuffer* pBuffers, const VkDeviceSize* pOffsets,
const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindVertexBuffers2);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
StartReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers2);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount,
const VkBuffer* pBuffers, const VkDeviceSize* pOffsets,
const VkDeviceSize* pSizes, const VkDeviceSize* pStrides,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindVertexBuffers2);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
FinishReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers2);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthWriteEnable(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthWriteEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthWriteEnable(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthWriteEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthCompareOp(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthCompareOp);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthCompareOp(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthCompareOp);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBoundsTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBoundsTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilTestEnable(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilTestEnable(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilTestEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp,
VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilOp);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp,
VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilOp);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizerDiscardEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizerDiscardEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBiasEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBiasEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveRestartEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveRestartEnable);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceBufferMemoryRequirements(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceBufferMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetDeviceBufferMemoryRequirements(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceBufferMemoryRequirements);
}
void ThreadSafety::PreCallRecordGetDeviceImageMemoryRequirements(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetDeviceImageMemoryRequirements(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageMemoryRequirements);
}
void ThreadSafety::PreCallRecordGetDeviceImageSparseMemoryRequirements(
VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSparseMemoryRequirements);
}
void ThreadSafety::PostCallRecordGetDeviceImageSparseMemoryRequirements(VkDevice device,
const VkDeviceImageMemoryRequirements* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSparseMemoryRequirements);
}
void ThreadSafety::PreCallRecordDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(instance, vvl::Func::vkDestroySurfaceKHR);
StartWriteObjectParentInstance(surface, vvl::Func::vkDestroySurfaceKHR);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkDestroySurfaceKHR);
FinishWriteObjectParentInstance(surface, vvl::Func::vkDestroySurfaceKHR);
DestroyObjectParentInstance(surface);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
VkSurfaceKHR surface, VkBool32* pSupported) {
StartReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceSupportKHR);
}
void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
VkSurfaceKHR surface, VkBool32* pSupported,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceSupportKHR);
}
void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
StartReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
}
void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
VkSurfaceCapabilitiesKHR* pSurfaceCapabilities,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
}
void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pSurfaceFormatCount,
VkSurfaceFormatKHR* pSurfaceFormats) {
StartReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceFormatsKHR);
}
void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pSurfaceFormatCount,
VkSurfaceFormatKHR* pSurfaceFormats,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceFormatsKHR);
}
void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
VkPresentModeKHR* pPresentModes) {
StartReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfacePresentModesKHR);
}
void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
VkPresentModeKHR* pPresentModes,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfacePresentModesKHR);
}
void ThreadSafety::PreCallRecordCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSwapchainKHR);
StartWriteObjectParentInstance(pCreateInfo->surface, vvl::Func::vkCreateSwapchainKHR);
StartWriteObject(pCreateInfo->oldSwapchain, vvl::Func::vkCreateSwapchainKHR);
// Host access to pCreateInfo->surface,pCreateInfo->oldSwapchain must be externally synchronized
}
void ThreadSafety::PostCallRecordCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSwapchainKHR);
FinishWriteObjectParentInstance(pCreateInfo->surface, vvl::Func::vkCreateSwapchainKHR);
FinishWriteObject(pCreateInfo->oldSwapchain, vvl::Func::vkCreateSwapchainKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pSwapchain);
}
// Host access to pCreateInfo->surface,pCreateInfo->oldSwapchain must be externally synchronized
}
void ThreadSafety::PreCallRecordAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout,
VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {
StartReadObjectParentInstance(device, vvl::Func::vkAcquireNextImageKHR);
StartWriteObject(swapchain, vvl::Func::vkAcquireNextImageKHR);
StartWriteObject(semaphore, vvl::Func::vkAcquireNextImageKHR);
StartWriteObject(fence, vvl::Func::vkAcquireNextImageKHR);
// 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,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAcquireNextImageKHR);
FinishWriteObject(swapchain, vvl::Func::vkAcquireNextImageKHR);
FinishWriteObject(semaphore, vvl::Func::vkAcquireNextImageKHR);
FinishWriteObject(fence, vvl::Func::vkAcquireNextImageKHR);
// 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) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPresentCapabilitiesKHR);
}
void ThreadSafety::PostCallRecordGetDeviceGroupPresentCapabilitiesKHR(
VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPresentCapabilitiesKHR);
}
void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface,
VkDeviceGroupPresentModeFlagsKHR* pModes) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupSurfacePresentModesKHR);
StartWriteObjectParentInstance(surface, vvl::Func::vkGetDeviceGroupSurfacePresentModesKHR);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface,
VkDeviceGroupPresentModeFlagsKHR* pModes,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupSurfacePresentModesKHR);
FinishWriteObjectParentInstance(surface, vvl::Func::vkGetDeviceGroupSurfacePresentModesKHR);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pRectCount, VkRect2D* pRects) {
StartWriteObjectParentInstance(surface, vvl::Func::vkGetPhysicalDevicePresentRectanglesKHR);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PostCallRecordGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
uint32_t* pRectCount, VkRect2D* pRects,
const RecordObject& record_obj) {
FinishWriteObjectParentInstance(surface, vvl::Func::vkGetPhysicalDevicePresentRectanglesKHR);
// Host access to surface must be externally synchronized
}
void ThreadSafety::PreCallRecordAcquireNextImage2KHR(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo,
uint32_t* pImageIndex) {
StartReadObjectParentInstance(device, vvl::Func::vkAcquireNextImage2KHR);
}
void ThreadSafety::PostCallRecordAcquireNextImage2KHR(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo,
uint32_t* pImageIndex, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAcquireNextImage2KHR);
}
void ThreadSafety::PreCallRecordCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
const VkDisplayModeCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) {
StartWriteObjectParentInstance(display, vvl::Func::vkCreateDisplayModeKHR);
// Host access to display must be externally synchronized
}
void ThreadSafety::PostCallRecordCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
const VkDisplayModeCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode,
const RecordObject& record_obj) {
FinishWriteObjectParentInstance(display, vvl::Func::vkCreateDisplayModeKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pMode);
}
// Host access to display must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
StartWriteObject(mode, vvl::Func::vkGetDisplayPlaneCapabilitiesKHR);
// Host access to mode must be externally synchronized
}
void ThreadSafety::PostCallRecordGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities,
const RecordObject& record_obj) {
FinishWriteObject(mode, vvl::Func::vkGetDisplayPlaneCapabilitiesKHR);
// Host access to mode must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateDisplayPlaneSurfaceKHR(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateDisplayPlaneSurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateDisplayPlaneSurfaceKHR(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateDisplayPlaneSurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
void ThreadSafety::PreCallRecordCreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
const VkSwapchainCreateInfoKHR* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSharedSwapchainsKHR);
if (pCreateInfos) {
for (uint32_t index = 0; index < swapchainCount; index++) {
StartWriteObjectParentInstance(pCreateInfos[index].surface, vvl::Func::vkCreateSharedSwapchainsKHR);
StartWriteObject(pCreateInfos[index].oldSwapchain, vvl::Func::vkCreateSharedSwapchainsKHR);
}
}
if (pSwapchains) {
for (uint32_t index = 0; index < swapchainCount; index++) {
StartReadObject(pSwapchains[index], vvl::Func::vkCreateSharedSwapchainsKHR);
}
}
// 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,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSharedSwapchainsKHR);
if (pCreateInfos) {
for (uint32_t index = 0; index < swapchainCount; index++) {
FinishWriteObjectParentInstance(pCreateInfos[index].surface, vvl::Func::vkCreateSharedSwapchainsKHR);
FinishWriteObject(pCreateInfos[index].oldSwapchain, vvl::Func::vkCreateSharedSwapchainsKHR);
}
}
if (record_obj.result == VK_SUCCESS) {
if (pSwapchains) {
for (uint32_t index = 0; index < swapchainCount; index++) {
CreateObject(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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateXlibSurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateXlibSurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateXcbSurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateXcbSurfaceKHR(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateXcbSurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateWaylandSurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateWaylandSurfaceKHR(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateWaylandSurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateAndroidSurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateAndroidSurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateWin32SurfaceKHR);
}
void ThreadSafety::PostCallRecordCreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateWin32SurfaceKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordCreateVideoSessionKHR(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateVideoSessionKHR);
}
void ThreadSafety::PostCallRecordCreateVideoSessionKHR(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateVideoSessionKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pVideoSession);
}
}
void ThreadSafety::PreCallRecordDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyVideoSessionKHR);
StartWriteObject(videoSession, vvl::Func::vkDestroyVideoSessionKHR);
// Host access to videoSession must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyVideoSessionKHR);
FinishWriteObject(videoSession, vvl::Func::vkDestroyVideoSessionKHR);
DestroyObject(videoSession);
// Host access to videoSession must be externally synchronized
}
void ThreadSafety::PreCallRecordGetVideoSessionMemoryRequirementsKHR(VkDevice device, VkVideoSessionKHR videoSession,
uint32_t* pMemoryRequirementsCount,
VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetVideoSessionMemoryRequirementsKHR);
StartReadObject(videoSession, vvl::Func::vkGetVideoSessionMemoryRequirementsKHR);
}
void ThreadSafety::PostCallRecordGetVideoSessionMemoryRequirementsKHR(VkDevice device, VkVideoSessionKHR videoSession,
uint32_t* pMemoryRequirementsCount,
VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetVideoSessionMemoryRequirementsKHR);
FinishReadObject(videoSession, vvl::Func::vkGetVideoSessionMemoryRequirementsKHR);
}
void ThreadSafety::PreCallRecordBindVideoSessionMemoryKHR(VkDevice device, VkVideoSessionKHR videoSession,
uint32_t bindSessionMemoryInfoCount,
const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindVideoSessionMemoryKHR);
StartWriteObject(videoSession, vvl::Func::vkBindVideoSessionMemoryKHR);
// Host access to videoSession must be externally synchronized
}
void ThreadSafety::PostCallRecordBindVideoSessionMemoryKHR(VkDevice device, VkVideoSessionKHR videoSession,
uint32_t bindSessionMemoryInfoCount,
const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindVideoSessionMemoryKHR);
FinishWriteObject(videoSession, vvl::Func::vkBindVideoSessionMemoryKHR);
// Host access to videoSession must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateVideoSessionParametersKHR(VkDevice device,
const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkVideoSessionParametersKHR* pVideoSessionParameters) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateVideoSessionParametersKHR);
}
void ThreadSafety::PostCallRecordCreateVideoSessionParametersKHR(VkDevice device,
const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkVideoSessionParametersKHR* pVideoSessionParameters,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateVideoSessionParametersKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pVideoSessionParameters);
}
}
void ThreadSafety::PreCallRecordUpdateVideoSessionParametersKHR(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkUpdateVideoSessionParametersKHR);
StartReadObject(videoSessionParameters, vvl::Func::vkUpdateVideoSessionParametersKHR);
}
void ThreadSafety::PostCallRecordUpdateVideoSessionParametersKHR(VkDevice device,
VkVideoSessionParametersKHR videoSessionParameters,
const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkUpdateVideoSessionParametersKHR);
FinishReadObject(videoSessionParameters, vvl::Func::vkUpdateVideoSessionParametersKHR);
}
void ThreadSafety::PreCallRecordDestroyVideoSessionParametersKHR(VkDevice device,
VkVideoSessionParametersKHR videoSessionParameters,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyVideoSessionParametersKHR);
StartWriteObject(videoSessionParameters, vvl::Func::vkDestroyVideoSessionParametersKHR);
// Host access to videoSessionParameters must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyVideoSessionParametersKHR(VkDevice device,
VkVideoSessionParametersKHR videoSessionParameters,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyVideoSessionParametersKHR);
FinishWriteObject(videoSessionParameters, vvl::Func::vkDestroyVideoSessionParametersKHR);
DestroyObject(videoSessionParameters);
// Host access to videoSessionParameters must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,
const VkVideoCodingControlInfoKHR* pCodingControlInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdControlVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,
const VkVideoCodingControlInfoKHR* pCodingControlInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdControlVideoCodingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDecodeVideoKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDecodeVideoKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBeginRenderingKHR(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginRenderingKHR(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndRenderingKHR(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndRenderingKHR(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderingKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPeerMemoryFeaturesKHR);
}
void ThreadSafety::PostCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupPeerMemoryFeaturesKHR);
}
void ThreadSafety::PreCallRecordCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer, uint32_t deviceMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDeviceMaskKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer, uint32_t deviceMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDeviceMaskKHR);
// 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, vvl::Func::vkCmdDispatchBaseKHR);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDispatchBaseKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) {
StartReadObjectParentInstance(device, vvl::Func::vkTrimCommandPoolKHR);
StartWriteObject(commandPool, vvl::Func::vkTrimCommandPoolKHR);
// Host access to commandPool must be externally synchronized
}
void ThreadSafety::PostCallRecordTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkTrimCommandPoolKHR);
FinishWriteObject(commandPool, vvl::Func::vkTrimCommandPoolKHR);
// Host access to commandPool must be externally synchronized
}
void ThreadSafety::PreCallRecordEnumeratePhysicalDeviceGroupsKHR(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
StartReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDeviceGroupsKHR);
}
void ThreadSafety::PostCallRecordEnumeratePhysicalDeviceGroupsKHR(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkEnumeratePhysicalDeviceGroupsKHR);
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetMemoryWin32HandleKHR(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandleKHR);
}
void ThreadSafety::PostCallRecordGetMemoryWin32HandleKHR(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandleKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetMemoryWin32HandlePropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType,
HANDLE handle,
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandlePropertiesKHR);
}
void ThreadSafety::PostCallRecordGetMemoryWin32HandlePropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType,
HANDLE handle,
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandlePropertiesKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryFdKHR);
}
void ThreadSafety::PostCallRecordGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryFdKHR);
}
void ThreadSafety::PreCallRecordGetMemoryFdPropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd,
VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryFdPropertiesKHR);
}
void ThreadSafety::PostCallRecordGetMemoryFdPropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd,
VkMemoryFdPropertiesKHR* pMemoryFdProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryFdPropertiesKHR);
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordImportSemaphoreWin32HandleKHR(
VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreWin32HandleKHR);
}
void ThreadSafety::PostCallRecordImportSemaphoreWin32HandleKHR(
VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreWin32HandleKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetSemaphoreWin32HandleKHR(VkDevice device,
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreWin32HandleKHR);
}
void ThreadSafety::PostCallRecordGetSemaphoreWin32HandleKHR(VkDevice device,
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreWin32HandleKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordImportSemaphoreFdKHR(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreFdKHR);
}
void ThreadSafety::PostCallRecordImportSemaphoreFdKHR(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreFdKHR);
}
void ThreadSafety::PreCallRecordGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreFdKHR);
}
void ThreadSafety::PostCallRecordGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreFdKHR);
}
void ThreadSafety::PreCallRecordCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint,
VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdPushDescriptorSetKHR);
StartReadObject(layout, vvl::Func::vkCmdPushDescriptorSetKHR);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPushDescriptorSetKHR);
FinishReadObject(layout, vvl::Func::vkCmdPushDescriptorSetKHR);
// 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, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
StartReadObject(descriptorUpdateTemplate, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
StartReadObject(layout, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
VkPipelineLayout layout, uint32_t set, const void* pData,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
FinishReadObject(descriptorUpdateTemplate, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
FinishReadObject(layout, vvl::Func::vkCmdPushDescriptorSetWithTemplateKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateDescriptorUpdateTemplateKHR(VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorUpdateTemplateKHR);
}
void ThreadSafety::PostCallRecordCreateDescriptorUpdateTemplateKHR(VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateDescriptorUpdateTemplateKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pDescriptorUpdateTemplate);
}
}
void ThreadSafety::PreCallRecordDestroyDescriptorUpdateTemplateKHR(VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorUpdateTemplateKHR);
StartWriteObject(descriptorUpdateTemplate, vvl::Func::vkDestroyDescriptorUpdateTemplateKHR);
// Host access to descriptorUpdateTemplate must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDescriptorUpdateTemplateKHR(VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyDescriptorUpdateTemplateKHR);
FinishWriteObject(descriptorUpdateTemplate, vvl::Func::vkDestroyDescriptorUpdateTemplateKHR);
DestroyObject(descriptorUpdateTemplate);
// Host access to descriptorUpdateTemplate must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass2KHR);
}
void ThreadSafety::PostCallRecordCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateRenderPass2KHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pRenderPass);
}
}
void ThreadSafety::PreCallRecordCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin,
const VkSubpassBeginInfo* pSubpassBeginInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
const VkSubpassBeginInfo* pSubpassBeginInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginRenderPass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo,
const VkSubpassEndInfo* pSubpassEndInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo,
const VkSubpassEndInfo* pSubpassEndInfo, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdNextSubpass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndRenderPass2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSwapchainStatusKHR);
StartWriteObject(swapchain, vvl::Func::vkGetSwapchainStatusKHR);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PostCallRecordGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSwapchainStatusKHR);
FinishWriteObject(swapchain, vvl::Func::vkGetSwapchainStatusKHR);
// Host access to swapchain must be externally synchronized
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordImportFenceWin32HandleKHR(VkDevice device,
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkImportFenceWin32HandleKHR);
}
void ThreadSafety::PostCallRecordImportFenceWin32HandleKHR(VkDevice device,
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkImportFenceWin32HandleKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetFenceWin32HandleKHR(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetFenceWin32HandleKHR);
}
void ThreadSafety::PostCallRecordGetFenceWin32HandleKHR(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetFenceWin32HandleKHR);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkImportFenceFdKHR);
}
void ThreadSafety::PostCallRecordImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkImportFenceFdKHR);
}
void ThreadSafety::PreCallRecordGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) {
StartReadObjectParentInstance(device, vvl::Func::vkGetFenceFdKHR);
}
void ThreadSafety::PostCallRecordGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetFenceFdKHR);
}
void ThreadSafety::PreCallRecordAcquireProfilingLockKHR(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkAcquireProfilingLockKHR);
}
void ThreadSafety::PostCallRecordAcquireProfilingLockKHR(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAcquireProfilingLockKHR);
}
void ThreadSafety::PreCallRecordReleaseProfilingLockKHR(VkDevice device) {
StartReadObjectParentInstance(device, vvl::Func::vkReleaseProfilingLockKHR);
}
void ThreadSafety::PostCallRecordReleaseProfilingLockKHR(VkDevice device, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkReleaseProfilingLockKHR);
}
void ThreadSafety::PreCallRecordGetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements2KHR);
}
void ThreadSafety::PostCallRecordGetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageMemoryRequirements2KHR);
}
void ThreadSafety::PreCallRecordGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements2KHR);
}
void ThreadSafety::PostCallRecordGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferMemoryRequirements2KHR);
}
void ThreadSafety::PreCallRecordGetImageSparseMemoryRequirements2KHR(VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements2KHR);
}
void ThreadSafety::PostCallRecordGetImageSparseMemoryRequirements2KHR(VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSparseMemoryRequirements2KHR);
}
void ThreadSafety::PreCallRecordCreateSamplerYcbcrConversionKHR(VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateSamplerYcbcrConversionKHR);
}
void ThreadSafety::PostCallRecordCreateSamplerYcbcrConversionKHR(VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateSamplerYcbcrConversionKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pYcbcrConversion);
}
}
void ThreadSafety::PreCallRecordDestroySamplerYcbcrConversionKHR(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroySamplerYcbcrConversionKHR);
StartWriteObject(ycbcrConversion, vvl::Func::vkDestroySamplerYcbcrConversionKHR);
// Host access to ycbcrConversion must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroySamplerYcbcrConversionKHR(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroySamplerYcbcrConversionKHR);
FinishWriteObject(ycbcrConversion, vvl::Func::vkDestroySamplerYcbcrConversionKHR);
DestroyObject(ycbcrConversion);
// Host access to ycbcrConversion must be externally synchronized
}
void ThreadSafety::PreCallRecordBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory2KHR);
}
void ThreadSafety::PostCallRecordBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindBufferMemory2KHR);
}
void ThreadSafety::PreCallRecordBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount,
const VkBindImageMemoryInfo* pBindInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindImageMemory2KHR);
}
void ThreadSafety::PostCallRecordBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount,
const VkBindImageMemoryInfo* pBindInfos, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindImageMemory2KHR);
}
void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSupportKHR(VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSupportKHR);
}
void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSupportKHR(VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSupportKHR);
}
void ThreadSafety::PreCallRecordCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCountKHR);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndirectCountKHR);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCountKHR);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCountKHR);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndirectCountKHR);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCountKHR);
// 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, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreCounterValueKHR);
StartReadObject(semaphore, vvl::Func::vkGetSemaphoreCounterValueKHR);
}
void ThreadSafety::PostCallRecordGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreCounterValueKHR);
FinishReadObject(semaphore, vvl::Func::vkGetSemaphoreCounterValueKHR);
}
void ThreadSafety::PreCallRecordWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) {
StartReadObjectParentInstance(device, vvl::Func::vkWaitSemaphoresKHR);
}
void ThreadSafety::PostCallRecordWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWaitSemaphoresKHR);
}
void ThreadSafety::PreCallRecordSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSignalSemaphoreKHR);
}
void ThreadSafety::PostCallRecordSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSignalSemaphoreKHR);
}
void ThreadSafety::PreCallRecordCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize,
const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetFragmentShadingRateKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize,
const VkFragmentShadingRateCombinerOpKHR combinerOps[2],
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetFragmentShadingRateKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordWaitForPresentKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout) {
StartReadObjectParentInstance(device, vvl::Func::vkWaitForPresentKHR);
StartWriteObject(swapchain, vvl::Func::vkWaitForPresentKHR);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PostCallRecordWaitForPresentKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWaitForPresentKHR);
FinishWriteObject(swapchain, vvl::Func::vkWaitForPresentKHR);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PreCallRecordGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddressKHR);
}
void ThreadSafety::PostCallRecordGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddressKHR);
}
void ThreadSafety::PreCallRecordGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureAddressKHR);
}
void ThreadSafety::PostCallRecordGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureAddressKHR);
}
void ThreadSafety::PreCallRecordGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryOpaqueCaptureAddressKHR);
}
void ThreadSafety::PostCallRecordGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceMemoryOpaqueCaptureAddressKHR);
}
void ThreadSafety::PreCallRecordCreateDeferredOperationKHR(VkDevice device, const VkAllocationCallbacks* pAllocator,
VkDeferredOperationKHR* pDeferredOperation) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateDeferredOperationKHR);
}
void ThreadSafety::PostCallRecordCreateDeferredOperationKHR(VkDevice device, const VkAllocationCallbacks* pAllocator,
VkDeferredOperationKHR* pDeferredOperation,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateDeferredOperationKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pDeferredOperation);
}
}
void ThreadSafety::PreCallRecordDestroyDeferredOperationKHR(VkDevice device, VkDeferredOperationKHR operation,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyDeferredOperationKHR);
StartWriteObject(operation, vvl::Func::vkDestroyDeferredOperationKHR);
// Host access to operation must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDeferredOperationKHR(VkDevice device, VkDeferredOperationKHR operation,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyDeferredOperationKHR);
FinishWriteObject(operation, vvl::Func::vkDestroyDeferredOperationKHR);
DestroyObject(operation);
// Host access to operation must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeferredOperationMaxConcurrencyKHR(VkDevice device, VkDeferredOperationKHR operation) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeferredOperationMaxConcurrencyKHR);
StartReadObject(operation, vvl::Func::vkGetDeferredOperationMaxConcurrencyKHR);
}
void ThreadSafety::PostCallRecordGetDeferredOperationMaxConcurrencyKHR(VkDevice device, VkDeferredOperationKHR operation,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeferredOperationMaxConcurrencyKHR);
FinishReadObject(operation, vvl::Func::vkGetDeferredOperationMaxConcurrencyKHR);
}
void ThreadSafety::PreCallRecordGetDeferredOperationResultKHR(VkDevice device, VkDeferredOperationKHR operation) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeferredOperationResultKHR);
StartReadObject(operation, vvl::Func::vkGetDeferredOperationResultKHR);
}
void ThreadSafety::PostCallRecordGetDeferredOperationResultKHR(VkDevice device, VkDeferredOperationKHR operation,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeferredOperationResultKHR);
FinishReadObject(operation, vvl::Func::vkGetDeferredOperationResultKHR);
}
void ThreadSafety::PreCallRecordDeferredOperationJoinKHR(VkDevice device, VkDeferredOperationKHR operation) {
StartReadObjectParentInstance(device, vvl::Func::vkDeferredOperationJoinKHR);
StartReadObject(operation, vvl::Func::vkDeferredOperationJoinKHR);
}
void ThreadSafety::PostCallRecordDeferredOperationJoinKHR(VkDevice device, VkDeferredOperationKHR operation,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDeferredOperationJoinKHR);
FinishReadObject(operation, vvl::Func::vkDeferredOperationJoinKHR);
}
void ThreadSafety::PreCallRecordGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo,
uint32_t* pExecutableCount,
VkPipelineExecutablePropertiesKHR* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutablePropertiesKHR);
}
void ThreadSafety::PostCallRecordGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo,
uint32_t* pExecutableCount,
VkPipelineExecutablePropertiesKHR* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutablePropertiesKHR);
}
void ThreadSafety::PreCallRecordGetPipelineExecutableStatisticsKHR(VkDevice device,
const VkPipelineExecutableInfoKHR* pExecutableInfo,
uint32_t* pStatisticCount,
VkPipelineExecutableStatisticKHR* pStatistics) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutableStatisticsKHR);
}
void ThreadSafety::PostCallRecordGetPipelineExecutableStatisticsKHR(VkDevice device,
const VkPipelineExecutableInfoKHR* pExecutableInfo,
uint32_t* pStatisticCount,
VkPipelineExecutableStatisticKHR* pStatistics,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutableStatisticsKHR);
}
void ThreadSafety::PreCallRecordGetPipelineExecutableInternalRepresentationsKHR(
VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount,
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutableInternalRepresentationsKHR);
}
void ThreadSafety::PostCallRecordGetPipelineExecutableInternalRepresentationsKHR(
VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount,
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineExecutableInternalRepresentationsKHR);
}
void ThreadSafety::PreCallRecordMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData) {
StartReadObjectParentInstance(device, vvl::Func::vkMapMemory2KHR);
}
void ThreadSafety::PostCallRecordMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkMapMemory2KHR);
}
void ThreadSafety::PreCallRecordUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkUnmapMemory2KHR);
}
void ThreadSafety::PostCallRecordUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkUnmapMemory2KHR);
}
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordGetEncodedVideoSessionParametersKHR(
VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo,
VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetEncodedVideoSessionParametersKHR);
}
void ThreadSafety::PostCallRecordGetEncodedVideoSessionParametersKHR(
VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo,
VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetEncodedVideoSessionParametersKHR);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEncodeVideoKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEncodeVideoKHR);
// Host access to commandBuffer must be externally synchronized
}
#endif // VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
const VkDependencyInfo* pDependencyInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent2KHR);
StartReadObject(event, vvl::Func::vkCmdSetEvent2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
const VkDependencyInfo* pDependencyInfo, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetEvent2KHR);
FinishReadObject(event, vvl::Func::vkCmdSetEvent2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent2KHR);
StartReadObject(event, vvl::Func::vkCmdResetEvent2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResetEvent2KHR);
FinishReadObject(event, vvl::Func::vkCmdResetEvent2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
const VkDependencyInfo* pDependencyInfos) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWaitEvents2KHR);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
StartReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents2KHR);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
const VkDependencyInfo* pDependencyInfos, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWaitEvents2KHR);
if (pEvents) {
for (uint32_t index = 0; index < eventCount; index++) {
FinishReadObject(pEvents[index], vvl::Func::vkCmdWaitEvents2KHR);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdPipelineBarrier2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPipelineBarrier2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkQueryPool queryPool, uint32_t query) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp2KHR);
StartReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkQueryPool queryPool, uint32_t query, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteTimestamp2KHR);
FinishReadObject(queryPool, vvl::Func::vkCmdWriteTimestamp2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) {
StartWriteObject(queue, vvl::Func::vkQueueSubmit2KHR);
StartWriteObject(fence, vvl::Func::vkQueueSubmit2KHR);
// Host access to queue must be externally synchronized
// Host access to fence must be externally synchronized
}
void ThreadSafety::PostCallRecordQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence,
const RecordObject& record_obj) {
FinishWriteObject(queue, vvl::Func::vkQueueSubmit2KHR);
FinishWriteObject(fence, vvl::Func::vkQueueSubmit2KHR);
// Host access to queue must be externally synchronized
// Host access to fence must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteBufferMarker2AMD);
StartReadObject(dstBuffer, vvl::Func::vkCmdWriteBufferMarker2AMD);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteBufferMarker2AMD);
FinishReadObject(dstBuffer, vvl::Func::vkCmdWriteBufferMarker2AMD);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetQueueCheckpointData2NV(VkQueue queue, uint32_t* pCheckpointDataCount,
VkCheckpointData2NV* pCheckpointData) {
StartReadObject(queue, vvl::Func::vkGetQueueCheckpointData2NV);
}
void ThreadSafety::PostCallRecordGetQueueCheckpointData2NV(VkQueue queue, uint32_t* pCheckpointDataCount,
VkCheckpointData2NV* pCheckpointData, const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkGetQueueCheckpointData2NV);
}
void ThreadSafety::PreCallRecordCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyImage2KHR(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyImage2KHR(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,
const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyBufferToImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,
const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyBufferToImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,
const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyImageToBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,
const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyImageToBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBlitImage2KHR(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBlitImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBlitImage2KHR(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBlitImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdResolveImage2KHR(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdResolveImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdResolveImage2KHR(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdResolveImage2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysIndirect2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysIndirect2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceBufferMemoryRequirementsKHR(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceBufferMemoryRequirementsKHR);
}
void ThreadSafety::PostCallRecordGetDeviceBufferMemoryRequirementsKHR(VkDevice device,
const VkDeviceBufferMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceBufferMemoryRequirementsKHR);
}
void ThreadSafety::PreCallRecordGetDeviceImageMemoryRequirementsKHR(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageMemoryRequirementsKHR);
}
void ThreadSafety::PostCallRecordGetDeviceImageMemoryRequirementsKHR(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageMemoryRequirementsKHR);
}
void ThreadSafety::PreCallRecordGetDeviceImageSparseMemoryRequirementsKHR(
VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSparseMemoryRequirementsKHR);
}
void ThreadSafety::PostCallRecordGetDeviceImageSparseMemoryRequirementsKHR(
VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSparseMemoryRequirementsKHR);
}
void ThreadSafety::PreCallRecordCmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkDeviceSize size, VkIndexType indexType) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindIndexBuffer2KHR);
StartReadObject(buffer, vvl::Func::vkCmdBindIndexBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkDeviceSize size, VkIndexType indexType, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindIndexBuffer2KHR);
FinishReadObject(buffer, vvl::Func::vkCmdBindIndexBuffer2KHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetRenderingAreaGranularityKHR(VkDevice device, const VkRenderingAreaInfoKHR* pRenderingAreaInfo,
VkExtent2D* pGranularity) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRenderingAreaGranularityKHR);
}
void ThreadSafety::PostCallRecordGetRenderingAreaGranularityKHR(VkDevice device, const VkRenderingAreaInfoKHR* pRenderingAreaInfo,
VkExtent2D* pGranularity, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRenderingAreaGranularityKHR);
}
void ThreadSafety::PreCallRecordGetDeviceImageSubresourceLayoutKHR(VkDevice device, const VkDeviceImageSubresourceInfoKHR* pInfo,
VkSubresourceLayout2KHR* pLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSubresourceLayoutKHR);
}
void ThreadSafety::PostCallRecordGetDeviceImageSubresourceLayoutKHR(VkDevice device, const VkDeviceImageSubresourceInfoKHR* pInfo,
VkSubresourceLayout2KHR* pLayout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceImageSubresourceLayoutKHR);
}
void ThreadSafety::PreCallRecordGetImageSubresourceLayout2KHR(VkDevice device, VkImage image,
const VkImageSubresource2KHR* pSubresource,
VkSubresourceLayout2KHR* pLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout2KHR);
StartReadObject(image, vvl::Func::vkGetImageSubresourceLayout2KHR);
}
void ThreadSafety::PostCallRecordGetImageSubresourceLayout2KHR(VkDevice device, VkImage image,
const VkImageSubresource2KHR* pSubresource,
VkSubresourceLayout2KHR* pLayout, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout2KHR);
FinishReadObject(image, vvl::Func::vkGetImageSubresourceLayout2KHR);
}
void ThreadSafety::PreCallRecordCreateDebugReportCallbackEXT(VkInstance instance,
const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugReportCallbackEXT* pCallback) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateDebugReportCallbackEXT);
}
void ThreadSafety::PostCallRecordCreateDebugReportCallbackEXT(VkInstance instance,
const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugReportCallbackEXT* pCallback, const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateDebugReportCallbackEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pCallback);
}
}
void ThreadSafety::PreCallRecordDestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(instance, vvl::Func::vkDestroyDebugReportCallbackEXT);
StartWriteObjectParentInstance(callback, vvl::Func::vkDestroyDebugReportCallbackEXT);
// Host access to callback must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkDestroyDebugReportCallbackEXT);
FinishWriteObjectParentInstance(callback, vvl::Func::vkDestroyDebugReportCallbackEXT);
DestroyObjectParentInstance(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) {
StartReadObjectParentInstance(instance, vvl::Func::vkDebugReportMessageEXT);
}
void ThreadSafety::PostCallRecordDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags,
VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location,
int32_t messageCode, const char* pLayerPrefix, const char* pMessage,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkDebugReportMessageEXT);
}
void ThreadSafety::PreCallRecordCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t firstBinding,
uint32_t bindingCount, const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindTransformFeedbackBuffersEXT);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
StartReadObject(pBuffers[index], vvl::Func::vkCmdBindTransformFeedbackBuffersEXT);
}
}
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindTransformFeedbackBuffersEXT);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
FinishReadObject(pBuffers[index], vvl::Func::vkCmdBindTransformFeedbackBuffersEXT);
}
}
// 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, vvl::Func::vkCmdBeginTransformFeedbackEXT);
if (pCounterBuffers) {
for (uint32_t index = 0; index < counterBufferCount; index++) {
StartReadObject(pCounterBuffers[index], vvl::Func::vkCmdBeginTransformFeedbackEXT);
}
}
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginTransformFeedbackEXT);
if (pCounterBuffers) {
for (uint32_t index = 0; index < counterBufferCount; index++) {
FinishReadObject(pCounterBuffers[index], vvl::Func::vkCmdBeginTransformFeedbackEXT);
}
}
// 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, vvl::Func::vkCmdEndTransformFeedbackEXT);
if (pCounterBuffers) {
for (uint32_t index = 0; index < counterBufferCount; index++) {
StartReadObject(pCounterBuffers[index], vvl::Func::vkCmdEndTransformFeedbackEXT);
}
}
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndTransformFeedbackEXT);
if (pCounterBuffers) {
for (uint32_t index = 0; index < counterBufferCount; index++) {
FinishReadObject(pCounterBuffers[index], vvl::Func::vkCmdEndTransformFeedbackEXT);
}
}
// 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, vvl::Func::vkCmdBeginQueryIndexedEXT);
StartReadObject(queryPool, vvl::Func::vkCmdBeginQueryIndexedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
VkQueryControlFlags flags, uint32_t index,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginQueryIndexedEXT);
FinishReadObject(queryPool, vvl::Func::vkCmdBeginQueryIndexedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
uint32_t index) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndQueryIndexedEXT);
StartReadObject(queryPool, vvl::Func::vkCmdEndQueryIndexedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query,
uint32_t index, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndQueryIndexedEXT);
FinishReadObject(queryPool, vvl::Func::vkCmdEndQueryIndexedEXT);
// 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, vvl::Func::vkCmdDrawIndirectByteCountEXT);
StartReadObject(counterBuffer, vvl::Func::vkCmdDrawIndirectByteCountEXT);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectByteCountEXT);
FinishReadObject(counterBuffer, vvl::Func::vkCmdDrawIndirectByteCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateCuModuleNVX(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateCuModuleNVX);
}
void ThreadSafety::PostCallRecordCreateCuModuleNVX(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateCuModuleNVX);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pModule);
}
}
void ThreadSafety::PreCallRecordCreateCuFunctionNVX(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateCuFunctionNVX);
}
void ThreadSafety::PostCallRecordCreateCuFunctionNVX(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateCuFunctionNVX);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pFunction);
}
}
void ThreadSafety::PreCallRecordDestroyCuModuleNVX(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyCuModuleNVX);
StartReadObject(module, vvl::Func::vkDestroyCuModuleNVX);
}
void ThreadSafety::PostCallRecordDestroyCuModuleNVX(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyCuModuleNVX);
FinishReadObject(module, vvl::Func::vkDestroyCuModuleNVX);
}
void ThreadSafety::PreCallRecordDestroyCuFunctionNVX(VkDevice device, VkCuFunctionNVX function,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyCuFunctionNVX);
StartReadObject(function, vvl::Func::vkDestroyCuFunctionNVX);
}
void ThreadSafety::PostCallRecordDestroyCuFunctionNVX(VkDevice device, VkCuFunctionNVX function,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyCuFunctionNVX);
FinishReadObject(function, vvl::Func::vkDestroyCuFunctionNVX);
}
void ThreadSafety::PreCallRecordCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) {
StartReadObject(commandBuffer, vvl::Func::vkCmdCuLaunchKernelNVX);
}
void ThreadSafety::PostCallRecordCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo,
const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdCuLaunchKernelNVX);
}
void ThreadSafety::PreCallRecordGetImageViewHandleNVX(VkDevice device, const VkImageViewHandleInfoNVX* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageViewHandleNVX);
}
void ThreadSafety::PostCallRecordGetImageViewHandleNVX(VkDevice device, const VkImageViewHandleInfoNVX* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageViewHandleNVX);
}
void ThreadSafety::PreCallRecordGetImageViewAddressNVX(VkDevice device, VkImageView imageView,
VkImageViewAddressPropertiesNVX* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageViewAddressNVX);
StartReadObject(imageView, vvl::Func::vkGetImageViewAddressNVX);
}
void ThreadSafety::PostCallRecordGetImageViewAddressNVX(VkDevice device, VkImageView imageView,
VkImageViewAddressPropertiesNVX* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageViewAddressNVX);
FinishReadObject(imageView, vvl::Func::vkGetImageViewAddressNVX);
}
void ThreadSafety::PreCallRecordCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCountAMD);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndirectCountAMD);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCountAMD);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndirectCountAMD);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndirectCountAMD);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndirectCountAMD);
// 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, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
StartReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
// 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,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
FinishReadObject(buffer, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawIndexedIndirectCountAMD);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage,
VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetShaderInfoAMD);
StartReadObject(pipeline, vvl::Func::vkGetShaderInfoAMD);
}
void ThreadSafety::PostCallRecordGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage,
VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetShaderInfoAMD);
FinishReadObject(pipeline, vvl::Func::vkGetShaderInfoAMD);
}
#ifdef VK_USE_PLATFORM_GGP
void ThreadSafety::PreCallRecordCreateStreamDescriptorSurfaceGGP(VkInstance instance,
const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateStreamDescriptorSurfaceGGP);
}
void ThreadSafety::PostCallRecordCreateStreamDescriptorSurfaceGGP(VkInstance instance,
const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateStreamDescriptorSurfaceGGP);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_GGP
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory,
VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandleNV);
StartReadObject(memory, vvl::Func::vkGetMemoryWin32HandleNV);
}
void ThreadSafety::PostCallRecordGetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory,
VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryWin32HandleNV);
FinishReadObject(memory, vvl::Func::vkGetMemoryWin32HandleNV);
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateViSurfaceNN);
}
void ThreadSafety::PostCallRecordCreateViSurfaceNN(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateViSurfaceNN);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_VI_NN
void ThreadSafety::PreCallRecordCmdBeginConditionalRenderingEXT(
VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginConditionalRenderingEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginConditionalRenderingEXT(
VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginConditionalRenderingEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndConditionalRenderingEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndConditionalRenderingEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWScalingNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWScalingNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
StartReadObjectParentInstance(display, vvl::Func::vkReleaseDisplayEXT);
}
void ThreadSafety::PostCallRecordReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(display, vvl::Func::vkReleaseDisplayEXT);
}
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
void ThreadSafety::PreCallRecordAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display) {
StartReadObjectParentInstance(display, vvl::Func::vkAcquireXlibDisplayEXT);
}
void ThreadSafety::PostCallRecordAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(display, vvl::Func::vkAcquireXlibDisplayEXT);
}
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
void ThreadSafety::PreCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
StartReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceCapabilities2EXT);
}
void ThreadSafety::PostCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
VkSurfaceCapabilities2EXT* pSurfaceCapabilities,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(surface, vvl::Func::vkGetPhysicalDeviceSurfaceCapabilities2EXT);
}
void ThreadSafety::PreCallRecordDisplayPowerControlEXT(VkDevice device, VkDisplayKHR display,
const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkDisplayPowerControlEXT);
StartReadObjectParentInstance(display, vvl::Func::vkDisplayPowerControlEXT);
}
void ThreadSafety::PostCallRecordDisplayPowerControlEXT(VkDevice device, VkDisplayKHR display,
const VkDisplayPowerInfoEXT* pDisplayPowerInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDisplayPowerControlEXT);
FinishReadObjectParentInstance(display, vvl::Func::vkDisplayPowerControlEXT);
}
void ThreadSafety::PreCallRecordRegisterDeviceEventEXT(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo,
const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
StartReadObjectParentInstance(device, vvl::Func::vkRegisterDeviceEventEXT);
}
void ThreadSafety::PostCallRecordRegisterDeviceEventEXT(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo,
const VkAllocationCallbacks* pAllocator, VkFence* pFence,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkRegisterDeviceEventEXT);
}
void ThreadSafety::PreCallRecordGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain,
VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSwapchainCounterEXT);
StartReadObject(swapchain, vvl::Func::vkGetSwapchainCounterEXT);
}
void ThreadSafety::PostCallRecordGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain,
VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSwapchainCounterEXT);
FinishReadObject(swapchain, vvl::Func::vkGetSwapchainCounterEXT);
}
void ThreadSafety::PreCallRecordGetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain,
VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRefreshCycleDurationGOOGLE);
StartWriteObject(swapchain, vvl::Func::vkGetRefreshCycleDurationGOOGLE);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PostCallRecordGetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain,
VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRefreshCycleDurationGOOGLE);
FinishWriteObject(swapchain, vvl::Func::vkGetRefreshCycleDurationGOOGLE);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain,
uint32_t* pPresentationTimingCount,
VkPastPresentationTimingGOOGLE* pPresentationTimings) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPastPresentationTimingGOOGLE);
StartWriteObject(swapchain, vvl::Func::vkGetPastPresentationTimingGOOGLE);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PostCallRecordGetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain,
uint32_t* pPresentationTimingCount,
VkPastPresentationTimingGOOGLE* pPresentationTimings,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPastPresentationTimingGOOGLE);
FinishWriteObject(swapchain, vvl::Func::vkGetPastPresentationTimingGOOGLE);
// Host access to swapchain must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle,
uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle,
uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,
VkDiscardRectangleModeEXT discardRectangleMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,
VkDiscardRectangleModeEXT discardRectangleMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDiscardRectangleModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains,
const VkHdrMetadataEXT* pMetadata) {
StartReadObjectParentInstance(device, vvl::Func::vkSetHdrMetadataEXT);
if (pSwapchains) {
for (uint32_t index = 0; index < swapchainCount; index++) {
StartReadObject(pSwapchains[index], vvl::Func::vkSetHdrMetadataEXT);
}
}
}
void ThreadSafety::PostCallRecordSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains,
const VkHdrMetadataEXT* pMetadata, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetHdrMetadataEXT);
if (pSwapchains) {
for (uint32_t index = 0; index < swapchainCount; index++) {
FinishReadObject(pSwapchains[index], vvl::Func::vkSetHdrMetadataEXT);
}
}
}
#ifdef VK_USE_PLATFORM_IOS_MVK
void ThreadSafety::PreCallRecordCreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateIOSSurfaceMVK);
}
void ThreadSafety::PostCallRecordCreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateIOSSurfaceMVK);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#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) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateMacOSSurfaceMVK);
}
void ThreadSafety::PostCallRecordCreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateMacOSSurfaceMVK);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_MACOS_MVK
void ThreadSafety::PreCallRecordQueueBeginDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) {
StartReadObject(queue, vvl::Func::vkQueueBeginDebugUtilsLabelEXT);
}
void ThreadSafety::PostCallRecordQueueBeginDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo,
const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkQueueBeginDebugUtilsLabelEXT);
}
void ThreadSafety::PreCallRecordQueueEndDebugUtilsLabelEXT(VkQueue queue) {
StartReadObject(queue, vvl::Func::vkQueueEndDebugUtilsLabelEXT);
}
void ThreadSafety::PostCallRecordQueueEndDebugUtilsLabelEXT(VkQueue queue, const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkQueueEndDebugUtilsLabelEXT);
}
void ThreadSafety::PreCallRecordQueueInsertDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) {
StartReadObject(queue, vvl::Func::vkQueueInsertDebugUtilsLabelEXT);
}
void ThreadSafety::PostCallRecordQueueInsertDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo,
const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkQueueInsertDebugUtilsLabelEXT);
}
void ThreadSafety::PreCallRecordCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBeginDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBeginDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdEndDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdEndDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdInsertDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdInsertDebugUtilsLabelEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateDebugUtilsMessengerEXT(VkInstance instance,
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugUtilsMessengerEXT* pMessenger) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateDebugUtilsMessengerEXT);
}
void ThreadSafety::PostCallRecordCreateDebugUtilsMessengerEXT(VkInstance instance,
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugUtilsMessengerEXT* pMessenger,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateDebugUtilsMessengerEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pMessenger);
}
}
void ThreadSafety::PreCallRecordDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(instance, vvl::Func::vkDestroyDebugUtilsMessengerEXT);
StartWriteObjectParentInstance(messenger, vvl::Func::vkDestroyDebugUtilsMessengerEXT);
// Host access to messenger must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkDestroyDebugUtilsMessengerEXT);
FinishWriteObjectParentInstance(messenger, vvl::Func::vkDestroyDebugUtilsMessengerEXT);
DestroyObjectParentInstance(messenger);
// Host access to messenger must be externally synchronized
}
void ThreadSafety::PreCallRecordSubmitDebugUtilsMessageEXT(VkInstance instance,
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
StartReadObjectParentInstance(instance, vvl::Func::vkSubmitDebugUtilsMessageEXT);
}
void ThreadSafety::PostCallRecordSubmitDebugUtilsMessageEXT(VkInstance instance,
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkSubmitDebugUtilsMessageEXT);
}
#ifdef VK_USE_PLATFORM_ANDROID_KHR
void ThreadSafety::PreCallRecordGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, const struct AHardwareBuffer* buffer,
VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAndroidHardwareBufferPropertiesANDROID);
}
void ThreadSafety::PostCallRecordGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, const struct AHardwareBuffer* buffer,
VkAndroidHardwareBufferPropertiesANDROID* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAndroidHardwareBufferPropertiesANDROID);
}
#endif // VK_USE_PLATFORM_ANDROID_KHR
#ifdef VK_USE_PLATFORM_ANDROID_KHR
void ThreadSafety::PreCallRecordGetMemoryAndroidHardwareBufferANDROID(VkDevice device,
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
struct AHardwareBuffer** pBuffer) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryAndroidHardwareBufferANDROID);
}
void ThreadSafety::PostCallRecordGetMemoryAndroidHardwareBufferANDROID(VkDevice device,
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
struct AHardwareBuffer** pBuffer,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryAndroidHardwareBufferANDROID);
}
#endif // VK_USE_PLATFORM_ANDROID_KHR
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCreateExecutionGraphPipelinesAMDX(VkDevice device, VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateExecutionGraphPipelinesAMDX);
StartReadObject(pipelineCache, vvl::Func::vkCreateExecutionGraphPipelinesAMDX);
}
void ThreadSafety::PostCallRecordCreateExecutionGraphPipelinesAMDX(VkDevice device, VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateExecutionGraphPipelinesAMDX);
FinishReadObject(pipelineCache, vvl::Func::vkCreateExecutionGraphPipelinesAMDX);
if (pPipelines) {
for (uint32_t index = 0; index < createInfoCount; index++) {
if (!pPipelines[index]) continue;
CreateObject(pPipelines[index]);
}
}
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordGetExecutionGraphPipelineScratchSizeAMDX(VkDevice device, VkPipeline executionGraph,
VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetExecutionGraphPipelineScratchSizeAMDX);
StartReadObject(executionGraph, vvl::Func::vkGetExecutionGraphPipelineScratchSizeAMDX);
}
void ThreadSafety::PostCallRecordGetExecutionGraphPipelineScratchSizeAMDX(VkDevice device, VkPipeline executionGraph,
VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetExecutionGraphPipelineScratchSizeAMDX);
FinishReadObject(executionGraph, vvl::Func::vkGetExecutionGraphPipelineScratchSizeAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordGetExecutionGraphPipelineNodeIndexAMDX(VkDevice device, VkPipeline executionGraph,
const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
uint32_t* pNodeIndex) {
StartReadObjectParentInstance(device, vvl::Func::vkGetExecutionGraphPipelineNodeIndexAMDX);
StartReadObject(executionGraph, vvl::Func::vkGetExecutionGraphPipelineNodeIndexAMDX);
}
void ThreadSafety::PostCallRecordGetExecutionGraphPipelineNodeIndexAMDX(VkDevice device, VkPipeline executionGraph,
const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
uint32_t* pNodeIndex, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetExecutionGraphPipelineNodeIndexAMDX);
FinishReadObject(executionGraph, vvl::Func::vkGetExecutionGraphPipelineNodeIndexAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdInitializeGraphScratchMemoryAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch) {
StartReadObject(commandBuffer, vvl::Func::vkCmdInitializeGraphScratchMemoryAMDX);
}
void ThreadSafety::PostCallRecordCmdInitializeGraphScratchMemoryAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdInitializeGraphScratchMemoryAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdDispatchGraphAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
const VkDispatchGraphCountInfoAMDX* pCountInfo) {
StartReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphAMDX);
}
void ThreadSafety::PostCallRecordCmdDispatchGraphAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
const VkDispatchGraphCountInfoAMDX* pCountInfo,
const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdDispatchGraphIndirectAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
const VkDispatchGraphCountInfoAMDX* pCountInfo) {
StartReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphIndirectAMDX);
}
void ThreadSafety::PostCallRecordCmdDispatchGraphIndirectAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
const VkDispatchGraphCountInfoAMDX* pCountInfo,
const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphIndirectAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
#ifdef VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdDispatchGraphIndirectCountAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
VkDeviceAddress countInfo) {
StartReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphIndirectCountAMDX);
}
void ThreadSafety::PostCallRecordCmdDispatchGraphIndirectCountAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch,
VkDeviceAddress countInfo, const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdDispatchGraphIndirectCountAMDX);
}
#endif // VK_ENABLE_BETA_EXTENSIONS
void ThreadSafety::PreCallRecordCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,
const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleLocationsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,
const VkSampleLocationsInfoEXT* pSampleLocationsInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleLocationsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetImageDrmFormatModifierPropertiesEXT(VkDevice device, VkImage image,
VkImageDrmFormatModifierPropertiesEXT* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageDrmFormatModifierPropertiesEXT);
StartReadObject(image, vvl::Func::vkGetImageDrmFormatModifierPropertiesEXT);
}
void ThreadSafety::PostCallRecordGetImageDrmFormatModifierPropertiesEXT(VkDevice device, VkImage image,
VkImageDrmFormatModifierPropertiesEXT* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageDrmFormatModifierPropertiesEXT);
FinishReadObject(image, vvl::Func::vkGetImageDrmFormatModifierPropertiesEXT);
}
void ThreadSafety::PreCallRecordCreateValidationCacheEXT(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkValidationCacheEXT* pValidationCache) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateValidationCacheEXT);
}
void ThreadSafety::PostCallRecordCreateValidationCacheEXT(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkValidationCacheEXT* pValidationCache, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateValidationCacheEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pValidationCache);
}
}
void ThreadSafety::PreCallRecordDestroyValidationCacheEXT(VkDevice device, VkValidationCacheEXT validationCache,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyValidationCacheEXT);
StartWriteObject(validationCache, vvl::Func::vkDestroyValidationCacheEXT);
// Host access to validationCache must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyValidationCacheEXT(VkDevice device, VkValidationCacheEXT validationCache,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyValidationCacheEXT);
FinishWriteObject(validationCache, vvl::Func::vkDestroyValidationCacheEXT);
DestroyObject(validationCache);
// Host access to validationCache must be externally synchronized
}
void ThreadSafety::PreCallRecordMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount,
const VkValidationCacheEXT* pSrcCaches) {
StartReadObjectParentInstance(device, vvl::Func::vkMergeValidationCachesEXT);
StartWriteObject(dstCache, vvl::Func::vkMergeValidationCachesEXT);
if (pSrcCaches) {
for (uint32_t index = 0; index < srcCacheCount; index++) {
StartReadObject(pSrcCaches[index], vvl::Func::vkMergeValidationCachesEXT);
}
}
// Host access to dstCache must be externally synchronized
}
void ThreadSafety::PostCallRecordMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount,
const VkValidationCacheEXT* pSrcCaches, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkMergeValidationCachesEXT);
FinishWriteObject(dstCache, vvl::Func::vkMergeValidationCachesEXT);
if (pSrcCaches) {
for (uint32_t index = 0; index < srcCacheCount; index++) {
FinishReadObject(pSrcCaches[index], vvl::Func::vkMergeValidationCachesEXT);
}
}
// Host access to dstCache must be externally synchronized
}
void ThreadSafety::PreCallRecordGetValidationCacheDataEXT(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetValidationCacheDataEXT);
StartReadObject(validationCache, vvl::Func::vkGetValidationCacheDataEXT);
}
void ThreadSafety::PostCallRecordGetValidationCacheDataEXT(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetValidationCacheDataEXT);
FinishReadObject(validationCache, vvl::Func::vkGetValidationCacheDataEXT);
}
void ThreadSafety::PreCallRecordCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView,
VkImageLayout imageLayout) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindShadingRateImageNV);
StartReadObject(imageView, vvl::Func::vkCmdBindShadingRateImageNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView,
VkImageLayout imageLayout, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindShadingRateImageNV);
FinishReadObject(imageView, vvl::Func::vkCmdBindShadingRateImageNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount,
const VkShadingRatePaletteNV* pShadingRatePalettes) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportShadingRatePaletteNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount,
const VkShadingRatePaletteNV* pShadingRatePalettes,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportShadingRatePaletteNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType,
uint32_t customSampleOrderCount,
const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoarseSampleOrderNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType,
uint32_t customSampleOrderCount,
const VkCoarseSampleOrderCustomNV* pCustomSampleOrders,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoarseSampleOrderNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateAccelerationStructureNV(VkDevice device,
const VkAccelerationStructureCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureNV* pAccelerationStructure) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateAccelerationStructureNV);
}
void ThreadSafety::PostCallRecordCreateAccelerationStructureNV(VkDevice device,
const VkAccelerationStructureCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureNV* pAccelerationStructure,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateAccelerationStructureNV);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pAccelerationStructure);
}
}
void ThreadSafety::PreCallRecordDestroyAccelerationStructureNV(VkDevice device, VkAccelerationStructureNV accelerationStructure,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyAccelerationStructureNV);
StartWriteObject(accelerationStructure, vvl::Func::vkDestroyAccelerationStructureNV);
// Host access to accelerationStructure must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyAccelerationStructureNV(VkDevice device, VkAccelerationStructureNV accelerationStructure,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyAccelerationStructureNV);
FinishWriteObject(accelerationStructure, vvl::Func::vkDestroyAccelerationStructureNV);
DestroyObject(accelerationStructure);
// Host access to accelerationStructure must be externally synchronized
}
void ThreadSafety::PreCallRecordGetAccelerationStructureMemoryRequirementsNV(
VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureMemoryRequirementsNV);
}
void ThreadSafety::PostCallRecordGetAccelerationStructureMemoryRequirementsNV(
VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureMemoryRequirementsNV);
}
void ThreadSafety::PreCallRecordBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount,
const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBindAccelerationStructureMemoryNV);
}
void ThreadSafety::PostCallRecordBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount,
const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindAccelerationStructureMemoryNV);
}
void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,
const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData,
VkDeviceSize instanceOffset, VkBool32 update,
VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
VkBuffer scratch, VkDeviceSize scratchOffset) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructureNV);
StartReadObject(instanceData, vvl::Func::vkCmdBuildAccelerationStructureNV);
StartReadObject(dst, vvl::Func::vkCmdBuildAccelerationStructureNV);
StartReadObject(src, vvl::Func::vkCmdBuildAccelerationStructureNV);
StartReadObject(scratch, vvl::Func::vkCmdBuildAccelerationStructureNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,
const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData,
VkDeviceSize instanceOffset, VkBool32 update,
VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
VkBuffer scratch, VkDeviceSize scratchOffset,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructureNV);
FinishReadObject(instanceData, vvl::Func::vkCmdBuildAccelerationStructureNV);
FinishReadObject(dst, vvl::Func::vkCmdBuildAccelerationStructureNV);
FinishReadObject(src, vvl::Func::vkCmdBuildAccelerationStructureNV);
FinishReadObject(scratch, vvl::Func::vkCmdBuildAccelerationStructureNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst,
VkAccelerationStructureNV src,
VkCopyAccelerationStructureModeKHR mode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureNV);
StartReadObject(dst, vvl::Func::vkCmdCopyAccelerationStructureNV);
StartReadObject(src, vvl::Func::vkCmdCopyAccelerationStructureNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst,
VkAccelerationStructureNV src,
VkCopyAccelerationStructureModeKHR mode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureNV);
FinishReadObject(dst, vvl::Func::vkCmdCopyAccelerationStructureNV);
FinishReadObject(src, vvl::Func::vkCmdCopyAccelerationStructureNV);
// Host access to commandBuffer must be externally synchronized
}
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) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysNV);
StartReadObject(raygenShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
StartReadObject(missShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
StartReadObject(hitShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
StartReadObject(callableShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
// Host access to commandBuffer must be externally synchronized
}
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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysNV);
FinishReadObject(raygenShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
FinishReadObject(missShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
FinishReadObject(hitShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
FinishReadObject(callableShaderBindingTableBuffer, vvl::Func::vkCmdTraceRaysNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateRayTracingPipelinesNV);
StartReadObject(pipelineCache, vvl::Func::vkCreateRayTracingPipelinesNV);
}
void ThreadSafety::PostCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateRayTracingPipelinesNV);
FinishReadObject(pipelineCache, vvl::Func::vkCreateRayTracingPipelinesNV);
if (pPipelines) {
for (uint32_t index = 0; index < createInfoCount; index++) {
if (!pPipelines[index]) continue;
CreateObject(pPipelines[index]);
}
}
}
void ThreadSafety::PreCallRecordGetRayTracingShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup,
uint32_t groupCount, size_t dataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupHandlesKHR);
StartReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupHandlesKHR);
}
void ThreadSafety::PostCallRecordGetRayTracingShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup,
uint32_t groupCount, size_t dataSize, void* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupHandlesKHR);
FinishReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupHandlesKHR);
}
void ThreadSafety::PreCallRecordGetRayTracingShaderGroupHandlesNV(VkDevice device, VkPipeline pipeline, uint32_t firstGroup,
uint32_t groupCount, size_t dataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupHandlesNV);
StartReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupHandlesNV);
}
void ThreadSafety::PostCallRecordGetRayTracingShaderGroupHandlesNV(VkDevice device, VkPipeline pipeline, uint32_t firstGroup,
uint32_t groupCount, size_t dataSize, void* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupHandlesNV);
FinishReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupHandlesNV);
}
void ThreadSafety::PreCallRecordGetAccelerationStructureHandleNV(VkDevice device, VkAccelerationStructureNV accelerationStructure,
size_t dataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureHandleNV);
StartReadObject(accelerationStructure, vvl::Func::vkGetAccelerationStructureHandleNV);
}
void ThreadSafety::PostCallRecordGetAccelerationStructureHandleNV(VkDevice device, VkAccelerationStructureNV accelerationStructure,
size_t dataSize, void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureHandleNV);
FinishReadObject(accelerationStructure, vvl::Func::vkGetAccelerationStructureHandleNV);
}
void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,
uint32_t accelerationStructureCount,
const VkAccelerationStructureNV* pAccelerationStructures,
VkQueryType queryType, VkQueryPool queryPool,
uint32_t firstQuery) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
StartReadObject(pAccelerationStructures[index], vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
}
}
StartReadObject(queryPool, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesNV(
VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures,
VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
FinishReadObject(pAccelerationStructures[index], vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
}
}
FinishReadObject(queryPool, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCompileDeferredNV(VkDevice device, VkPipeline pipeline, uint32_t shader) {
StartReadObjectParentInstance(device, vvl::Func::vkCompileDeferredNV);
StartReadObject(pipeline, vvl::Func::vkCompileDeferredNV);
}
void ThreadSafety::PostCallRecordCompileDeferredNV(VkDevice device, VkPipeline pipeline, uint32_t shader,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCompileDeferredNV);
FinishReadObject(pipeline, vvl::Func::vkCompileDeferredNV);
}
void ThreadSafety::PreCallRecordGetMemoryHostPointerPropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType,
const void* pHostPointer,
VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryHostPointerPropertiesEXT);
}
void ThreadSafety::PostCallRecordGetMemoryHostPointerPropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType,
const void* pHostPointer,
VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryHostPointerPropertiesEXT);
}
void ThreadSafety::PreCallRecordCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage,
VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteBufferMarkerAMD);
StartReadObject(dstBuffer, vvl::Func::vkCmdWriteBufferMarkerAMD);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage,
VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteBufferMarkerAMD);
FinishReadObject(dstBuffer, vvl::Func::vkCmdWriteBufferMarkerAMD);
// 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) {
StartReadObjectParentInstance(device, vvl::Func::vkGetCalibratedTimestampsEXT);
}
void ThreadSafety::PostCallRecordGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount,
const VkCalibratedTimestampInfoEXT* pTimestampInfos,
uint64_t* pTimestamps, uint64_t* pMaxDeviation,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetCalibratedTimestampsEXT);
}
void ThreadSafety::PreCallRecordCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksNV);
// 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, vvl::Func::vkCmdDrawMeshTasksIndirectNV);
StartReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
uint32_t drawCount, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectNV);
FinishReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectNV);
// 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, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
StartReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
// 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, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
FinishReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor,
uint32_t exclusiveScissorCount,
const VkBool32* pExclusiveScissorEnables) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetExclusiveScissorEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor,
uint32_t exclusiveScissorCount,
const VkBool32* pExclusiveScissorEnables,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetExclusiveScissorEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor,
uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetExclusiveScissorNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor,
uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetExclusiveScissorNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCheckpointNV(VkCommandBuffer commandBuffer, const void* pCheckpointMarker) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCheckpointNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCheckpointNV(VkCommandBuffer commandBuffer, const void* pCheckpointMarker,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCheckpointNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetQueueCheckpointDataNV(VkQueue queue, uint32_t* pCheckpointDataCount,
VkCheckpointDataNV* pCheckpointData) {
StartReadObject(queue, vvl::Func::vkGetQueueCheckpointDataNV);
}
void ThreadSafety::PostCallRecordGetQueueCheckpointDataNV(VkQueue queue, uint32_t* pCheckpointDataCount,
VkCheckpointDataNV* pCheckpointData, const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkGetQueueCheckpointDataNV);
}
void ThreadSafety::PreCallRecordInitializePerformanceApiINTEL(VkDevice device,
const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkInitializePerformanceApiINTEL);
}
void ThreadSafety::PostCallRecordInitializePerformanceApiINTEL(VkDevice device,
const VkInitializePerformanceApiInfoINTEL* pInitializeInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkInitializePerformanceApiINTEL);
}
void ThreadSafety::PreCallRecordUninitializePerformanceApiINTEL(VkDevice device) {
StartReadObjectParentInstance(device, vvl::Func::vkUninitializePerformanceApiINTEL);
}
void ThreadSafety::PostCallRecordUninitializePerformanceApiINTEL(VkDevice device, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkUninitializePerformanceApiINTEL);
}
void ThreadSafety::PreCallRecordCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceMarkerInfoINTEL* pMarkerInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceMarkerINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceMarkerInfoINTEL* pMarkerInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceMarkerINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceStreamMarkerINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceStreamMarkerINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceOverrideInfoINTEL* pOverrideInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceOverrideINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,
const VkPerformanceOverrideInfoINTEL* pOverrideInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPerformanceOverrideINTEL);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordAcquirePerformanceConfigurationINTEL(VkDevice device,
const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
VkPerformanceConfigurationINTEL* pConfiguration) {
StartReadObjectParentInstance(device, vvl::Func::vkAcquirePerformanceConfigurationINTEL);
}
void ThreadSafety::PostCallRecordAcquirePerformanceConfigurationINTEL(
VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
VkPerformanceConfigurationINTEL* pConfiguration, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAcquirePerformanceConfigurationINTEL);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pConfiguration);
}
}
void ThreadSafety::PreCallRecordReleasePerformanceConfigurationINTEL(VkDevice device,
VkPerformanceConfigurationINTEL configuration) {
StartReadObjectParentInstance(device, vvl::Func::vkReleasePerformanceConfigurationINTEL);
StartWriteObject(configuration, vvl::Func::vkReleasePerformanceConfigurationINTEL);
// Host access to configuration must be externally synchronized
}
void ThreadSafety::PostCallRecordReleasePerformanceConfigurationINTEL(VkDevice device,
VkPerformanceConfigurationINTEL configuration,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkReleasePerformanceConfigurationINTEL);
FinishWriteObject(configuration, vvl::Func::vkReleasePerformanceConfigurationINTEL);
DestroyObject(configuration);
// Host access to configuration must be externally synchronized
}
void ThreadSafety::PreCallRecordQueueSetPerformanceConfigurationINTEL(VkQueue queue,
VkPerformanceConfigurationINTEL configuration) {
StartReadObject(queue, vvl::Func::vkQueueSetPerformanceConfigurationINTEL);
StartReadObject(configuration, vvl::Func::vkQueueSetPerformanceConfigurationINTEL);
}
void ThreadSafety::PostCallRecordQueueSetPerformanceConfigurationINTEL(VkQueue queue, VkPerformanceConfigurationINTEL configuration,
const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkQueueSetPerformanceConfigurationINTEL);
FinishReadObject(configuration, vvl::Func::vkQueueSetPerformanceConfigurationINTEL);
}
void ThreadSafety::PreCallRecordGetPerformanceParameterINTEL(VkDevice device, VkPerformanceParameterTypeINTEL parameter,
VkPerformanceValueINTEL* pValue) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPerformanceParameterINTEL);
}
void ThreadSafety::PostCallRecordGetPerformanceParameterINTEL(VkDevice device, VkPerformanceParameterTypeINTEL parameter,
VkPerformanceValueINTEL* pValue, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPerformanceParameterINTEL);
}
void ThreadSafety::PreCallRecordSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) {
StartReadObjectParentInstance(device, vvl::Func::vkSetLocalDimmingAMD);
StartReadObject(swapChain, vvl::Func::vkSetLocalDimmingAMD);
}
void ThreadSafety::PostCallRecordSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetLocalDimmingAMD);
FinishReadObject(swapChain, vvl::Func::vkSetLocalDimmingAMD);
}
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordCreateImagePipeSurfaceFUCHSIA(VkInstance instance,
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateImagePipeSurfaceFUCHSIA);
}
void ThreadSafety::PostCallRecordCreateImagePipeSurfaceFUCHSIA(VkInstance instance,
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateImagePipeSurfaceFUCHSIA);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_METAL_EXT
void ThreadSafety::PreCallRecordCreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateMetalSurfaceEXT);
}
void ThreadSafety::PostCallRecordCreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateMetalSurfaceEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_METAL_EXT
void ThreadSafety::PreCallRecordGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddressEXT);
}
void ThreadSafety::PostCallRecordGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferDeviceAddressEXT);
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordAcquireFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) {
StartReadObjectParentInstance(device, vvl::Func::vkAcquireFullScreenExclusiveModeEXT);
StartReadObject(swapchain, vvl::Func::vkAcquireFullScreenExclusiveModeEXT);
}
void ThreadSafety::PostCallRecordAcquireFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkAcquireFullScreenExclusiveModeEXT);
FinishReadObject(swapchain, vvl::Func::vkAcquireFullScreenExclusiveModeEXT);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordReleaseFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) {
StartReadObjectParentInstance(device, vvl::Func::vkReleaseFullScreenExclusiveModeEXT);
StartReadObject(swapchain, vvl::Func::vkReleaseFullScreenExclusiveModeEXT);
}
void ThreadSafety::PostCallRecordReleaseFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkReleaseFullScreenExclusiveModeEXT);
FinishReadObject(swapchain, vvl::Func::vkReleaseFullScreenExclusiveModeEXT);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
VkDeviceGroupPresentModeFlagsKHR* pModes) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupSurfacePresentModes2EXT);
}
void ThreadSafety::PostCallRecordGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
VkDeviceGroupPresentModeFlagsKHR* pModes,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceGroupSurfacePresentModes2EXT);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordCreateHeadlessSurfaceEXT(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateHeadlessSurfaceEXT);
}
void ThreadSafety::PostCallRecordCreateHeadlessSurfaceEXT(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateHeadlessSurfaceEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
void ThreadSafety::PreCallRecordCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor,
uint16_t lineStipplePattern) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLineStippleEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor,
uint16_t lineStipplePattern, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLineStippleEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount) {
StartReadObjectParentInstance(device, vvl::Func::vkResetQueryPoolEXT);
StartReadObject(queryPool, vvl::Func::vkResetQueryPoolEXT);
}
void ThreadSafety::PostCallRecordResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkResetQueryPoolEXT);
FinishReadObject(queryPool, vvl::Func::vkResetQueryPoolEXT);
}
void ThreadSafety::PreCallRecordCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCullModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCullModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetFrontFaceEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetFrontFaceEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveTopologyEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveTopologyEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount,
const VkViewport* pViewports) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWithCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount,
const VkViewport* pViewports, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWithCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount,
const VkRect2D* pScissors) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetScissorWithCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount,
const VkRect2D* pScissors, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetScissorWithCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding,
uint32_t bindingCount, const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes,
const VkDeviceSize* pStrides) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindVertexBuffers2EXT);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
StartReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers2EXT);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding,
uint32_t bindingCount, const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes,
const VkDeviceSize* pStrides, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindVertexBuffers2EXT);
if (pBuffers) {
for (uint32_t index = 0; index < bindingCount; index++) {
FinishReadObject(pBuffers[index], vvl::Func::vkCmdBindVertexBuffers2EXT);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthWriteEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthWriteEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthCompareOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthCompareOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBoundsTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBoundsTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilTestEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp,
VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp,
VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetStencilOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCopyMemoryToImageEXT(VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToImageEXT);
}
void ThreadSafety::PostCallRecordCopyMemoryToImageEXT(VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToImageEXT);
}
void ThreadSafety::PreCallRecordCopyImageToMemoryEXT(VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyImageToMemoryEXT);
}
void ThreadSafety::PostCallRecordCopyImageToMemoryEXT(VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyImageToMemoryEXT);
}
void ThreadSafety::PreCallRecordCopyImageToImageEXT(VkDevice device, const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyImageToImageEXT);
}
void ThreadSafety::PostCallRecordCopyImageToImageEXT(VkDevice device, const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyImageToImageEXT);
}
void ThreadSafety::PreCallRecordTransitionImageLayoutEXT(VkDevice device, uint32_t transitionCount,
const VkHostImageLayoutTransitionInfoEXT* pTransitions) {
StartReadObjectParentInstance(device, vvl::Func::vkTransitionImageLayoutEXT);
}
void ThreadSafety::PostCallRecordTransitionImageLayoutEXT(VkDevice device, uint32_t transitionCount,
const VkHostImageLayoutTransitionInfoEXT* pTransitions,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkTransitionImageLayoutEXT);
}
void ThreadSafety::PreCallRecordGetImageSubresourceLayout2EXT(VkDevice device, VkImage image,
const VkImageSubresource2KHR* pSubresource,
VkSubresourceLayout2KHR* pLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout2EXT);
StartReadObject(image, vvl::Func::vkGetImageSubresourceLayout2EXT);
}
void ThreadSafety::PostCallRecordGetImageSubresourceLayout2EXT(VkDevice device, VkImage image,
const VkImageSubresource2KHR* pSubresource,
VkSubresourceLayout2KHR* pLayout, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageSubresourceLayout2EXT);
FinishReadObject(image, vvl::Func::vkGetImageSubresourceLayout2EXT);
}
void ThreadSafety::PreCallRecordReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkReleaseSwapchainImagesEXT);
}
void ThreadSafety::PostCallRecordReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkReleaseSwapchainImagesEXT);
}
void ThreadSafety::PreCallRecordGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,
const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetGeneratedCommandsMemoryRequirementsNV);
}
void ThreadSafety::PostCallRecordGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,
const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetGeneratedCommandsMemoryRequirementsNV);
}
void ThreadSafety::PreCallRecordCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdPreprocessGeneratedCommandsNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdPreprocessGeneratedCommandsNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed,
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdExecuteGeneratedCommandsNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed,
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdExecuteGeneratedCommandsNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline, uint32_t groupIndex) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindPipelineShaderGroupNV);
StartReadObject(pipeline, vvl::Func::vkCmdBindPipelineShaderGroupNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline, uint32_t groupIndex,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindPipelineShaderGroupNV);
FinishReadObject(pipeline, vvl::Func::vkCmdBindPipelineShaderGroupNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateIndirectCommandsLayoutNV(VkDevice device,
const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateIndirectCommandsLayoutNV);
}
void ThreadSafety::PostCallRecordCreateIndirectCommandsLayoutNV(VkDevice device,
const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkIndirectCommandsLayoutNV* pIndirectCommandsLayout,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateIndirectCommandsLayoutNV);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pIndirectCommandsLayout);
}
}
void ThreadSafety::PreCallRecordDestroyIndirectCommandsLayoutNV(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyIndirectCommandsLayoutNV);
StartWriteObject(indirectCommandsLayout, vvl::Func::vkDestroyIndirectCommandsLayoutNV);
// Host access to indirectCommandsLayout must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyIndirectCommandsLayoutNV(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyIndirectCommandsLayoutNV);
FinishWriteObject(indirectCommandsLayout, vvl::Func::vkDestroyIndirectCommandsLayoutNV);
DestroyObject(indirectCommandsLayout);
// Host access to indirectCommandsLayout must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBias2EXT(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBias2EXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBias2EXT(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBias2EXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordAcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display) {
StartReadObjectParentInstance(display, vvl::Func::vkAcquireDrmDisplayEXT);
}
void ThreadSafety::PostCallRecordAcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(display, vvl::Func::vkAcquireDrmDisplayEXT);
}
void ThreadSafety::PreCallRecordCreatePrivateDataSlotEXT(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPrivateDataSlot* pPrivateDataSlot) {
StartReadObjectParentInstance(device, vvl::Func::vkCreatePrivateDataSlotEXT);
}
void ThreadSafety::PostCallRecordCreatePrivateDataSlotEXT(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPrivateDataSlot* pPrivateDataSlot, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreatePrivateDataSlotEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pPrivateDataSlot);
}
}
void ThreadSafety::PreCallRecordDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlot privateDataSlot,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyPrivateDataSlotEXT);
StartWriteObject(privateDataSlot, vvl::Func::vkDestroyPrivateDataSlotEXT);
// Host access to privateDataSlot must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlot privateDataSlot,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyPrivateDataSlotEXT);
FinishWriteObject(privateDataSlot, vvl::Func::vkDestroyPrivateDataSlotEXT);
DestroyObject(privateDataSlot);
// Host access to privateDataSlot must be externally synchronized
}
void ThreadSafety::PreCallRecordSetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t data) {
StartReadObjectParentInstance(device, vvl::Func::vkSetPrivateDataEXT);
StartReadObject(privateDataSlot, vvl::Func::vkSetPrivateDataEXT);
}
void ThreadSafety::PostCallRecordSetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t data,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetPrivateDataEXT);
FinishReadObject(privateDataSlot, vvl::Func::vkSetPrivateDataEXT);
}
void ThreadSafety::PreCallRecordGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPrivateDataEXT);
StartReadObject(privateDataSlot, vvl::Func::vkGetPrivateDataEXT);
}
void ThreadSafety::PostCallRecordGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlot privateDataSlot, uint64_t* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPrivateDataEXT);
FinishReadObject(privateDataSlot, vvl::Func::vkGetPrivateDataEXT);
}
#ifdef VK_USE_PLATFORM_METAL_EXT
void ThreadSafety::PreCallRecordExportMetalObjectsEXT(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkExportMetalObjectsEXT);
}
void ThreadSafety::PostCallRecordExportMetalObjectsEXT(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkExportMetalObjectsEXT);
}
#endif // VK_USE_PLATFORM_METAL_EXT
void ThreadSafety::PreCallRecordGetDescriptorSetLayoutSizeEXT(VkDevice device, VkDescriptorSetLayout layout,
VkDeviceSize* pLayoutSizeInBytes) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSizeEXT);
StartReadObject(layout, vvl::Func::vkGetDescriptorSetLayoutSizeEXT);
}
void ThreadSafety::PostCallRecordGetDescriptorSetLayoutSizeEXT(VkDevice device, VkDescriptorSetLayout layout,
VkDeviceSize* pLayoutSizeInBytes, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutSizeEXT);
FinishReadObject(layout, vvl::Func::vkGetDescriptorSetLayoutSizeEXT);
}
void ThreadSafety::PreCallRecordGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device, VkDescriptorSetLayout layout,
uint32_t binding, VkDeviceSize* pOffset) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutBindingOffsetEXT);
StartReadObject(layout, vvl::Func::vkGetDescriptorSetLayoutBindingOffsetEXT);
}
void ThreadSafety::PostCallRecordGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device, VkDescriptorSetLayout layout,
uint32_t binding, VkDeviceSize* pOffset,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutBindingOffsetEXT);
FinishReadObject(layout, vvl::Func::vkGetDescriptorSetLayoutBindingOffsetEXT);
}
void ThreadSafety::PreCallRecordGetDescriptorEXT(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize,
void* pDescriptor) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorEXT);
}
void ThreadSafety::PostCallRecordGetDescriptorEXT(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize,
void* pDescriptor, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorEXT);
}
void ThreadSafety::PreCallRecordCmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer, uint32_t bufferCount,
const VkDescriptorBufferBindingInfoEXT* pBindingInfos) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindDescriptorBuffersEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer, uint32_t bufferCount,
const VkDescriptorBufferBindingInfoEXT* pBindingInfos,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindDescriptorBuffersEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
uint32_t firstSet, uint32_t setCount,
const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDescriptorBufferOffsetsEXT);
StartReadObject(layout, vvl::Func::vkCmdSetDescriptorBufferOffsetsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
uint32_t firstSet, uint32_t setCount,
const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDescriptorBufferOffsetsEXT);
FinishReadObject(layout, vvl::Func::vkCmdSetDescriptorBufferOffsetsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipelineLayout layout, uint32_t set) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindDescriptorBufferEmbeddedSamplersEXT);
StartReadObject(layout, vvl::Func::vkCmdBindDescriptorBufferEmbeddedSamplersEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipelineLayout layout, uint32_t set,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindDescriptorBufferEmbeddedSamplersEXT);
FinishReadObject(layout, vvl::Func::vkCmdBindDescriptorBufferEmbeddedSamplersEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkBufferCaptureDescriptorDataInfoEXT* pInfo,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PostCallRecordGetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkBufferCaptureDescriptorDataInfoEXT* pInfo,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PreCallRecordGetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkImageCaptureDescriptorDataInfoEXT* pInfo,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PostCallRecordGetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkImageCaptureDescriptorDataInfoEXT* pInfo,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PreCallRecordGetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkImageViewCaptureDescriptorDataInfoEXT* pInfo,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetImageViewOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PostCallRecordGetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkImageViewCaptureDescriptorDataInfoEXT* pInfo,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetImageViewOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PreCallRecordGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkSamplerCaptureDescriptorDataInfoEXT* pInfo,
void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSamplerOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PostCallRecordGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,
const VkSamplerCaptureDescriptorDataInfoEXT* pInfo,
void* pData, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSamplerOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PreCallRecordGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PostCallRecordGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT);
}
void ThreadSafety::PreCallRecordCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate,
const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetFragmentShadingRateEnumNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate,
const VkFragmentShadingRateCombinerOpKHR combinerOps[2],
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetFragmentShadingRateEnumNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceFaultInfoEXT(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts,
VkDeviceFaultInfoEXT* pFaultInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceFaultInfoEXT);
}
void ThreadSafety::PostCallRecordGetDeviceFaultInfoEXT(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts,
VkDeviceFaultInfoEXT* pFaultInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceFaultInfoEXT);
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
void ThreadSafety::PreCallRecordAcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
StartReadObjectParentInstance(display, vvl::Func::vkAcquireWinrtDisplayNV);
}
void ThreadSafety::PostCallRecordAcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(display, vvl::Func::vkAcquireWinrtDisplayNV);
}
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
void ThreadSafety::PreCallRecordCreateDirectFBSurfaceEXT(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateDirectFBSurfaceEXT);
}
void ThreadSafety::PostCallRecordCreateDirectFBSurfaceEXT(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateDirectFBSurfaceEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
void ThreadSafety::PreCallRecordCmdSetVertexInputEXT(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount,
const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
uint32_t vertexAttributeDescriptionCount,
const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetVertexInputEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetVertexInputEXT(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount,
const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
uint32_t vertexAttributeDescriptionCount,
const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetVertexInputEXT);
// Host access to commandBuffer must be externally synchronized
}
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordGetMemoryZirconHandleFUCHSIA(VkDevice device,
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
zx_handle_t* pZirconHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryZirconHandleFUCHSIA);
}
void ThreadSafety::PostCallRecordGetMemoryZirconHandleFUCHSIA(VkDevice device,
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
zx_handle_t* pZirconHandle, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryZirconHandleFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordGetMemoryZirconHandlePropertiesFUCHSIA(
VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle,
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryZirconHandlePropertiesFUCHSIA);
}
void ThreadSafety::PostCallRecordGetMemoryZirconHandlePropertiesFUCHSIA(
VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle,
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryZirconHandlePropertiesFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordImportSemaphoreZirconHandleFUCHSIA(
VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreZirconHandleFUCHSIA);
}
void ThreadSafety::PostCallRecordImportSemaphoreZirconHandleFUCHSIA(
VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkImportSemaphoreZirconHandleFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordGetSemaphoreZirconHandleFUCHSIA(VkDevice device,
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
zx_handle_t* pZirconHandle) {
StartReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreZirconHandleFUCHSIA);
}
void ThreadSafety::PostCallRecordGetSemaphoreZirconHandleFUCHSIA(VkDevice device,
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
zx_handle_t* pZirconHandle, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetSemaphoreZirconHandleFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordCreateBufferCollectionFUCHSIA(VkDevice device,
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBufferCollectionFUCHSIA* pCollection) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateBufferCollectionFUCHSIA);
}
void ThreadSafety::PostCallRecordCreateBufferCollectionFUCHSIA(VkDevice device,
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBufferCollectionFUCHSIA* pCollection,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateBufferCollectionFUCHSIA);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pCollection);
}
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordSetBufferCollectionImageConstraintsFUCHSIA(
VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSetBufferCollectionImageConstraintsFUCHSIA);
StartReadObject(collection, vvl::Func::vkSetBufferCollectionImageConstraintsFUCHSIA);
}
void ThreadSafety::PostCallRecordSetBufferCollectionImageConstraintsFUCHSIA(
VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetBufferCollectionImageConstraintsFUCHSIA);
FinishReadObject(collection, vvl::Func::vkSetBufferCollectionImageConstraintsFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordSetBufferCollectionBufferConstraintsFUCHSIA(
VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSetBufferCollectionBufferConstraintsFUCHSIA);
StartReadObject(collection, vvl::Func::vkSetBufferCollectionBufferConstraintsFUCHSIA);
}
void ThreadSafety::PostCallRecordSetBufferCollectionBufferConstraintsFUCHSIA(
VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetBufferCollectionBufferConstraintsFUCHSIA);
FinishReadObject(collection, vvl::Func::vkSetBufferCollectionBufferConstraintsFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordDestroyBufferCollectionFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyBufferCollectionFUCHSIA);
StartReadObject(collection, vvl::Func::vkDestroyBufferCollectionFUCHSIA);
}
void ThreadSafety::PostCallRecordDestroyBufferCollectionFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyBufferCollectionFUCHSIA);
FinishReadObject(collection, vvl::Func::vkDestroyBufferCollectionFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordGetBufferCollectionPropertiesFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection,
VkBufferCollectionPropertiesFUCHSIA* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetBufferCollectionPropertiesFUCHSIA);
StartReadObject(collection, vvl::Func::vkGetBufferCollectionPropertiesFUCHSIA);
}
void ThreadSafety::PostCallRecordGetBufferCollectionPropertiesFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection,
VkBufferCollectionPropertiesFUCHSIA* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetBufferCollectionPropertiesFUCHSIA);
FinishReadObject(collection, vvl::Func::vkGetBufferCollectionPropertiesFUCHSIA);
}
#endif // VK_USE_PLATFORM_FUCHSIA
void ThreadSafety::PreCallRecordGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device, VkRenderPass renderpass,
VkExtent2D* pMaxWorkgroupSize) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI);
StartReadObject(renderpass, vvl::Func::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI);
}
void ThreadSafety::PostCallRecordGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device, VkRenderPass renderpass,
VkExtent2D* pMaxWorkgroupSize,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI);
FinishReadObject(renderpass, vvl::Func::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI);
}
void ThreadSafety::PreCallRecordCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSubpassShadingHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSubpassShadingHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer, VkImageView imageView,
VkImageLayout imageLayout) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindInvocationMaskHUAWEI);
StartReadObject(imageView, vvl::Func::vkCmdBindInvocationMaskHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer, VkImageView imageView,
VkImageLayout imageLayout, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindInvocationMaskHUAWEI);
FinishReadObject(imageView, vvl::Func::vkCmdBindInvocationMaskHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetMemoryRemoteAddressNV(VkDevice device,
const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
VkRemoteAddressNV* pAddress) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMemoryRemoteAddressNV);
}
void ThreadSafety::PostCallRecordGetMemoryRemoteAddressNV(VkDevice device,
const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
VkRemoteAddressNV* pAddress, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMemoryRemoteAddressNV);
}
void ThreadSafety::PreCallRecordGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo,
VkBaseOutStructure* pPipelineProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelinePropertiesEXT);
}
void ThreadSafety::PostCallRecordGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo,
VkBaseOutStructure* pPipelineProperties, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelinePropertiesEXT);
}
void ThreadSafety::PreCallRecordCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer, uint32_t patchControlPoints) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPatchControlPointsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer, uint32_t patchControlPoints,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPatchControlPointsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizerDiscardEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizerDiscardEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBiasEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthBiasEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLogicOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLogicOpEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveRestartEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPrimitiveRestartEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
#ifdef VK_USE_PLATFORM_SCREEN_QNX
void ThreadSafety::PreCallRecordCreateScreenSurfaceQNX(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
StartReadObjectParentInstance(instance, vvl::Func::vkCreateScreenSurfaceQNX);
}
void ThreadSafety::PostCallRecordCreateScreenSurfaceQNX(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(instance, vvl::Func::vkCreateScreenSurfaceQNX);
if (record_obj.result == VK_SUCCESS) {
CreateObjectParentInstance(*pSurface);
}
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
void ThreadSafety::PreCallRecordCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer, uint32_t attachmentCount,
const VkBool32* pColorWriteEnables) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetColorWriteEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer, uint32_t attachmentCount,
const VkBool32* pColorWriteEnables, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetColorWriteEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount,
uint32_t firstInstance, uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMultiEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount,
uint32_t firstInstance, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMultiEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount,
uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMultiIndexedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount,
uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMultiIndexedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCreateMicromapEXT(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateMicromapEXT);
}
void ThreadSafety::PostCallRecordCreateMicromapEXT(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateMicromapEXT);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pMicromap);
}
}
void ThreadSafety::PreCallRecordDestroyMicromapEXT(VkDevice device, VkMicromapEXT micromap,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyMicromapEXT);
StartWriteObject(micromap, vvl::Func::vkDestroyMicromapEXT);
// Host access to micromap must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyMicromapEXT(VkDevice device, VkMicromapEXT micromap,
const VkAllocationCallbacks* pAllocator, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyMicromapEXT);
FinishWriteObject(micromap, vvl::Func::vkDestroyMicromapEXT);
DestroyObject(micromap);
// Host access to micromap must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer, uint32_t infoCount,
const VkMicromapBuildInfoEXT* pInfos) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBuildMicromapsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer, uint32_t infoCount,
const VkMicromapBuildInfoEXT* pInfos, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBuildMicromapsEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordBuildMicromapsEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
const VkMicromapBuildInfoEXT* pInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBuildMicromapsEXT);
StartReadObject(deferredOperation, vvl::Func::vkBuildMicromapsEXT);
}
void ThreadSafety::PostCallRecordBuildMicromapsEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
const VkMicromapBuildInfoEXT* pInfos, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBuildMicromapsEXT);
FinishReadObject(deferredOperation, vvl::Func::vkBuildMicromapsEXT);
}
void ThreadSafety::PreCallRecordCopyMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMicromapInfoEXT* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyMicromapEXT);
StartReadObject(deferredOperation, vvl::Func::vkCopyMicromapEXT);
}
void ThreadSafety::PostCallRecordCopyMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMicromapInfoEXT* pInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyMicromapEXT);
FinishReadObject(deferredOperation, vvl::Func::vkCopyMicromapEXT);
}
void ThreadSafety::PreCallRecordCopyMicromapToMemoryEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMicromapToMemoryInfoEXT* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyMicromapToMemoryEXT);
StartReadObject(deferredOperation, vvl::Func::vkCopyMicromapToMemoryEXT);
}
void ThreadSafety::PostCallRecordCopyMicromapToMemoryEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMicromapToMemoryInfoEXT* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyMicromapToMemoryEXT);
FinishReadObject(deferredOperation, vvl::Func::vkCopyMicromapToMemoryEXT);
}
void ThreadSafety::PreCallRecordCopyMemoryToMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMemoryToMicromapInfoEXT* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToMicromapEXT);
StartReadObject(deferredOperation, vvl::Func::vkCopyMemoryToMicromapEXT);
}
void ThreadSafety::PostCallRecordCopyMemoryToMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMemoryToMicromapInfoEXT* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToMicromapEXT);
FinishReadObject(deferredOperation, vvl::Func::vkCopyMemoryToMicromapEXT);
}
void ThreadSafety::PreCallRecordWriteMicromapsPropertiesEXT(VkDevice device, uint32_t micromapCount,
const VkMicromapEXT* pMicromaps, VkQueryType queryType, size_t dataSize,
void* pData, size_t stride) {
StartReadObjectParentInstance(device, vvl::Func::vkWriteMicromapsPropertiesEXT);
if (pMicromaps) {
for (uint32_t index = 0; index < micromapCount; index++) {
StartReadObject(pMicromaps[index], vvl::Func::vkWriteMicromapsPropertiesEXT);
}
}
}
void ThreadSafety::PostCallRecordWriteMicromapsPropertiesEXT(VkDevice device, uint32_t micromapCount,
const VkMicromapEXT* pMicromaps, VkQueryType queryType,
size_t dataSize, void* pData, size_t stride,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWriteMicromapsPropertiesEXT);
if (pMicromaps) {
for (uint32_t index = 0; index < micromapCount; index++) {
FinishReadObject(pMicromaps[index], vvl::Func::vkWriteMicromapsPropertiesEXT);
}
}
}
void ThreadSafety::PreCallRecordCmdCopyMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMicromapEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMicromapEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,
const VkCopyMicromapToMemoryInfoEXT* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMicromapToMemoryEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,
const VkCopyMicromapToMemoryInfoEXT* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMicromapToMemoryEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,
const VkCopyMemoryToMicromapInfoEXT* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToMicromapEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,
const VkCopyMemoryToMicromapInfoEXT* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToMicromapEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer, uint32_t micromapCount,
const VkMicromapEXT* pMicromaps, VkQueryType queryType,
VkQueryPool queryPool, uint32_t firstQuery) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
if (pMicromaps) {
for (uint32_t index = 0; index < micromapCount; index++) {
StartReadObject(pMicromaps[index], vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
}
}
StartReadObject(queryPool, vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer, uint32_t micromapCount,
const VkMicromapEXT* pMicromaps, VkQueryType queryType,
VkQueryPool queryPool, uint32_t firstQuery,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
if (pMicromaps) {
for (uint32_t index = 0; index < micromapCount; index++) {
FinishReadObject(pMicromaps[index], vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
}
}
FinishReadObject(queryPool, vvl::Func::vkCmdWriteMicromapsPropertiesEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceMicromapCompatibilityEXT(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo,
VkAccelerationStructureCompatibilityKHR* pCompatibility) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceMicromapCompatibilityEXT);
}
void ThreadSafety::PostCallRecordGetDeviceMicromapCompatibilityEXT(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo,
VkAccelerationStructureCompatibilityKHR* pCompatibility,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceMicromapCompatibilityEXT);
}
void ThreadSafety::PreCallRecordGetMicromapBuildSizesEXT(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType,
const VkMicromapBuildInfoEXT* pBuildInfo,
VkMicromapBuildSizesInfoEXT* pSizeInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetMicromapBuildSizesEXT);
}
void ThreadSafety::PostCallRecordGetMicromapBuildSizesEXT(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType,
const VkMicromapBuildInfoEXT* pBuildInfo,
VkMicromapBuildSizesInfoEXT* pSizeInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetMicromapBuildSizesEXT);
}
void ThreadSafety::PreCallRecordCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawClusterHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawClusterHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawClusterIndirectHUAWEI);
StartReadObject(buffer, vvl::Func::vkCmdDrawClusterIndirectHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawClusterIndirectHUAWEI);
FinishReadObject(buffer, vvl::Func::vkCmdDrawClusterIndirectHUAWEI);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordSetDeviceMemoryPriorityEXT(VkDevice device, VkDeviceMemory memory, float priority) {
StartReadObjectParentInstance(device, vvl::Func::vkSetDeviceMemoryPriorityEXT);
StartReadObject(memory, vvl::Func::vkSetDeviceMemoryPriorityEXT);
}
void ThreadSafety::PostCallRecordSetDeviceMemoryPriorityEXT(VkDevice device, VkDeviceMemory memory, float priority,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetDeviceMemoryPriorityEXT);
FinishReadObject(memory, vvl::Func::vkSetDeviceMemoryPriorityEXT);
}
void ThreadSafety::PreCallRecordGetDescriptorSetLayoutHostMappingInfoVALVE(
VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutHostMappingInfoVALVE);
}
void ThreadSafety::PostCallRecordGetDescriptorSetLayoutHostMappingInfoVALVE(
VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetLayoutHostMappingInfoVALVE);
}
void ThreadSafety::PreCallRecordGetDescriptorSetHostMappingVALVE(VkDevice device, VkDescriptorSet descriptorSet, void** ppData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetHostMappingVALVE);
StartReadObject(descriptorSet, vvl::Func::vkGetDescriptorSetHostMappingVALVE);
}
void ThreadSafety::PostCallRecordGetDescriptorSetHostMappingVALVE(VkDevice device, VkDescriptorSet descriptorSet, void** ppData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDescriptorSetHostMappingVALVE);
FinishReadObject(descriptorSet, vvl::Func::vkGetDescriptorSetHostMappingVALVE);
}
void ThreadSafety::PreCallRecordCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress,
uint32_t copyCount, uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryIndirectNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress,
uint32_t copyCount, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryIndirectNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress,
uint32_t copyCount, uint32_t stride, VkImage dstImage,
VkImageLayout dstImageLayout,
const VkImageSubresourceLayers* pImageSubresources) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToImageIndirectNV);
StartReadObject(dstImage, vvl::Func::vkCmdCopyMemoryToImageIndirectNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress,
uint32_t copyCount, uint32_t stride, VkImage dstImage,
VkImageLayout dstImageLayout,
const VkImageSubresourceLayers* pImageSubresources,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToImageIndirectNV);
FinishReadObject(dstImage, vvl::Func::vkCmdCopyMemoryToImageIndirectNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount,
const VkDecompressMemoryRegionNV* pDecompressMemoryRegions) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDecompressMemoryNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount,
const VkDecompressMemoryRegionNV* pDecompressMemoryRegions,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDecompressMemoryNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,
VkDeviceAddress indirectCommandsAddress,
VkDeviceAddress indirectCommandsCountAddress, uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDecompressMemoryIndirectCountNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,
VkDeviceAddress indirectCommandsAddress,
VkDeviceAddress indirectCommandsCountAddress, uint32_t stride,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDecompressMemoryIndirectCountNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPipelineIndirectMemoryRequirementsNV(VkDevice device,
const VkComputePipelineCreateInfo* pCreateInfo,
VkMemoryRequirements2* pMemoryRequirements) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineIndirectMemoryRequirementsNV);
}
void ThreadSafety::PostCallRecordGetPipelineIndirectMemoryRequirementsNV(VkDevice device,
const VkComputePipelineCreateInfo* pCreateInfo,
VkMemoryRequirements2* pMemoryRequirements,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineIndirectMemoryRequirementsNV);
}
void ThreadSafety::PreCallRecordCmdUpdatePipelineIndirectBufferNV(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdUpdatePipelineIndirectBufferNV);
StartReadObject(pipeline, vvl::Func::vkCmdUpdatePipelineIndirectBufferNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdUpdatePipelineIndirectBufferNV(VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdUpdatePipelineIndirectBufferNV);
FinishReadObject(pipeline, vvl::Func::vkCmdUpdatePipelineIndirectBufferNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetPipelineIndirectDeviceAddressNV(VkDevice device,
const VkPipelineIndirectDeviceAddressInfoNV* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetPipelineIndirectDeviceAddressNV);
}
void ThreadSafety::PostCallRecordGetPipelineIndirectDeviceAddressNV(VkDevice device,
const VkPipelineIndirectDeviceAddressInfoNV* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetPipelineIndirectDeviceAddressNV);
}
void ThreadSafety::PreCallRecordCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,
VkTessellationDomainOrigin domainOrigin) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetTessellationDomainOriginEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,
VkTessellationDomainOrigin domainOrigin,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetTessellationDomainOriginEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClampEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClampEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetPolygonModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetPolygonModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,
VkSampleCountFlagBits rasterizationSamples) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizationSamplesEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,
VkSampleCountFlagBits rasterizationSamples,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizationSamplesEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples,
const VkSampleMask* pSampleMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleMaskEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples,
const VkSampleMask* pSampleMask, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleMaskEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetAlphaToCoverageEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetAlphaToCoverageEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetAlphaToOneEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetAlphaToOneEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLogicOpEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLogicOpEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount, const VkBool32* pColorBlendEnables) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount, const VkBool32* pColorBlendEnables,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount,
const VkColorBlendEquationEXT* pColorBlendEquations) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendEquationEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount,
const VkColorBlendEquationEXT* pColorBlendEquations,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendEquationEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetColorWriteMaskEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetColorWriteMaskEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, uint32_t rasterizationStream) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizationStreamEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, uint32_t rasterizationStream,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRasterizationStreamEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetConservativeRasterizationModeEXT(
VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetConservativeRasterizationModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetConservativeRasterizationModeEXT(
VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetConservativeRasterizationModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,
float extraPrimitiveOverestimationSize) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetExtraPrimitiveOverestimationSizeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,
float extraPrimitiveOverestimationSize,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetExtraPrimitiveOverestimationSizeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClipEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClipEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleLocationsEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetSampleLocationsEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount,
const VkColorBlendAdvancedEXT* pColorBlendAdvanced) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendAdvancedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
uint32_t attachmentCount,
const VkColorBlendAdvancedEXT* pColorBlendAdvanced,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetColorBlendAdvancedEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,
VkProvokingVertexModeEXT provokingVertexMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetProvokingVertexModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,
VkProvokingVertexModeEXT provokingVertexMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetProvokingVertexModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,
VkLineRasterizationModeEXT lineRasterizationMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLineRasterizationModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,
VkLineRasterizationModeEXT lineRasterizationMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLineRasterizationModeEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetLineStippleEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetLineStippleEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClipNegativeOneToOneEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetDepthClipNegativeOneToOneEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWScalingEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportWScalingEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportSwizzleNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetViewportSwizzleNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageToColorEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageToColorEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageToColorLocationNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageToColorLocationNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,
VkCoverageModulationModeNV coverageModulationMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationModeNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,
VkCoverageModulationModeNV coverageModulationMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationModeNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,
VkBool32 coverageModulationTableEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationTableEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,
VkBool32 coverageModulationTableEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationTableEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,
uint32_t coverageModulationTableCount,
const float* pCoverageModulationTable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationTableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,
uint32_t coverageModulationTableCount,
const float* pCoverageModulationTable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageModulationTableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetShadingRateImageEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetShadingRateImageEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,
VkBool32 representativeFragmentTestEnable) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRepresentativeFragmentTestEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,
VkBool32 representativeFragmentTestEnable,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRepresentativeFragmentTestEnableNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,
VkCoverageReductionModeNV coverageReductionMode) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageReductionModeNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,
VkCoverageReductionModeNV coverageReductionMode,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetCoverageReductionModeNV);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetShaderModuleIdentifierEXT(VkDevice device, VkShaderModule shaderModule,
VkShaderModuleIdentifierEXT* pIdentifier) {
StartReadObjectParentInstance(device, vvl::Func::vkGetShaderModuleIdentifierEXT);
StartReadObject(shaderModule, vvl::Func::vkGetShaderModuleIdentifierEXT);
}
void ThreadSafety::PostCallRecordGetShaderModuleIdentifierEXT(VkDevice device, VkShaderModule shaderModule,
VkShaderModuleIdentifierEXT* pIdentifier,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetShaderModuleIdentifierEXT);
FinishReadObject(shaderModule, vvl::Func::vkGetShaderModuleIdentifierEXT);
}
void ThreadSafety::PreCallRecordGetShaderModuleCreateInfoIdentifierEXT(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
VkShaderModuleIdentifierEXT* pIdentifier) {
StartReadObjectParentInstance(device, vvl::Func::vkGetShaderModuleCreateInfoIdentifierEXT);
}
void ThreadSafety::PostCallRecordGetShaderModuleCreateInfoIdentifierEXT(VkDevice device,
const VkShaderModuleCreateInfo* pCreateInfo,
VkShaderModuleIdentifierEXT* pIdentifier,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetShaderModuleCreateInfoIdentifierEXT);
}
void ThreadSafety::PreCallRecordCreateOpticalFlowSessionNV(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkOpticalFlowSessionNV* pSession) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateOpticalFlowSessionNV);
}
void ThreadSafety::PostCallRecordCreateOpticalFlowSessionNV(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkOpticalFlowSessionNV* pSession, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateOpticalFlowSessionNV);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pSession);
}
}
void ThreadSafety::PreCallRecordDestroyOpticalFlowSessionNV(VkDevice device, VkOpticalFlowSessionNV session,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyOpticalFlowSessionNV);
StartReadObject(session, vvl::Func::vkDestroyOpticalFlowSessionNV);
}
void ThreadSafety::PostCallRecordDestroyOpticalFlowSessionNV(VkDevice device, VkOpticalFlowSessionNV session,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyOpticalFlowSessionNV);
FinishReadObject(session, vvl::Func::vkDestroyOpticalFlowSessionNV);
}
void ThreadSafety::PreCallRecordBindOpticalFlowSessionImageNV(VkDevice device, VkOpticalFlowSessionNV session,
VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view,
VkImageLayout layout) {
StartReadObjectParentInstance(device, vvl::Func::vkBindOpticalFlowSessionImageNV);
StartReadObject(session, vvl::Func::vkBindOpticalFlowSessionImageNV);
StartReadObject(view, vvl::Func::vkBindOpticalFlowSessionImageNV);
}
void ThreadSafety::PostCallRecordBindOpticalFlowSessionImageNV(VkDevice device, VkOpticalFlowSessionNV session,
VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view,
VkImageLayout layout, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBindOpticalFlowSessionImageNV);
FinishReadObject(session, vvl::Func::vkBindOpticalFlowSessionImageNV);
FinishReadObject(view, vvl::Func::vkBindOpticalFlowSessionImageNV);
}
void ThreadSafety::PreCallRecordCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session,
const VkOpticalFlowExecuteInfoNV* pExecuteInfo) {
StartReadObject(commandBuffer, vvl::Func::vkCmdOpticalFlowExecuteNV);
StartReadObject(session, vvl::Func::vkCmdOpticalFlowExecuteNV);
}
void ThreadSafety::PostCallRecordCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session,
const VkOpticalFlowExecuteInfoNV* pExecuteInfo,
const RecordObject& record_obj) {
FinishReadObject(commandBuffer, vvl::Func::vkCmdOpticalFlowExecuteNV);
FinishReadObject(session, vvl::Func::vkCmdOpticalFlowExecuteNV);
}
void ThreadSafety::PreCallRecordCreateShadersEXT(VkDevice device, uint32_t createInfoCount,
const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator,
VkShaderEXT* pShaders) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateShadersEXT);
}
void ThreadSafety::PostCallRecordCreateShadersEXT(VkDevice device, uint32_t createInfoCount,
const VkShaderCreateInfoEXT* pCreateInfos,
const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateShadersEXT);
if (pShaders) {
for (uint32_t index = 0; index < createInfoCount; index++) {
if (!pShaders[index]) continue;
CreateObject(pShaders[index]);
}
}
}
void ThreadSafety::PreCallRecordDestroyShaderEXT(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyShaderEXT);
StartWriteObject(shader, vvl::Func::vkDestroyShaderEXT);
// Host access to shader must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyShaderEXT(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyShaderEXT);
FinishWriteObject(shader, vvl::Func::vkDestroyShaderEXT);
DestroyObject(shader);
// Host access to shader must be externally synchronized
}
void ThreadSafety::PreCallRecordGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetShaderBinaryDataEXT);
StartReadObject(shader, vvl::Func::vkGetShaderBinaryDataEXT);
}
void ThreadSafety::PostCallRecordGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetShaderBinaryDataEXT);
FinishReadObject(shader, vvl::Func::vkGetShaderBinaryDataEXT);
}
void ThreadSafety::PreCallRecordCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount,
const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBindShadersEXT);
if (pShaders) {
for (uint32_t index = 0; index < stageCount; index++) {
StartReadObject(pShaders[index], vvl::Func::vkCmdBindShadersEXT);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount,
const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBindShadersEXT);
if (pShaders) {
for (uint32_t index = 0; index < stageCount; index++) {
FinishReadObject(pShaders[index], vvl::Func::vkCmdBindShadersEXT);
}
}
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer framebuffer,
uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetFramebufferTilePropertiesQCOM);
StartReadObject(framebuffer, vvl::Func::vkGetFramebufferTilePropertiesQCOM);
}
void ThreadSafety::PostCallRecordGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer framebuffer,
uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetFramebufferTilePropertiesQCOM);
FinishReadObject(framebuffer, vvl::Func::vkGetFramebufferTilePropertiesQCOM);
}
void ThreadSafety::PreCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo,
VkTilePropertiesQCOM* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDynamicRenderingTilePropertiesQCOM);
}
void ThreadSafety::PostCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo,
VkTilePropertiesQCOM* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDynamicRenderingTilePropertiesQCOM);
}
void ThreadSafety::PreCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain,
const VkLatencySleepModeInfoNV* pSleepModeInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSetLatencySleepModeNV);
StartReadObject(swapchain, vvl::Func::vkSetLatencySleepModeNV);
}
void ThreadSafety::PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain,
const VkLatencySleepModeInfoNV* pSleepModeInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetLatencySleepModeNV);
FinishReadObject(swapchain, vvl::Func::vkSetLatencySleepModeNV);
}
void ThreadSafety::PreCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkLatencySleepNV);
StartReadObject(swapchain, vvl::Func::vkLatencySleepNV);
}
void ThreadSafety::PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkLatencySleepNV);
FinishReadObject(swapchain, vvl::Func::vkLatencySleepNV);
}
void ThreadSafety::PreCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain,
const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkSetLatencyMarkerNV);
StartReadObject(swapchain, vvl::Func::vkSetLatencyMarkerNV);
}
void ThreadSafety::PostCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain,
const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkSetLatencyMarkerNV);
FinishReadObject(swapchain, vvl::Func::vkSetLatencyMarkerNV);
}
void ThreadSafety::PreCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount,
VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetLatencyTimingsNV);
StartReadObject(swapchain, vvl::Func::vkGetLatencyTimingsNV);
}
void ThreadSafety::PostCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount,
VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetLatencyTimingsNV);
FinishReadObject(swapchain, vvl::Func::vkGetLatencyTimingsNV);
}
void ThreadSafety::PreCallRecordQueueNotifyOutOfBandNV(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo) {
StartReadObject(queue, vvl::Func::vkQueueNotifyOutOfBandNV);
}
void ThreadSafety::PostCallRecordQueueNotifyOutOfBandNV(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo,
const RecordObject& record_obj) {
FinishReadObject(queue, vvl::Func::vkQueueNotifyOutOfBandNV);
}
void ThreadSafety::PreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,
VkImageAspectFlags aspectMask) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetAttachmentFeedbackLoopEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetAttachmentFeedbackLoopEnableEXT);
// Host access to commandBuffer must be externally synchronized
}
#ifdef VK_USE_PLATFORM_SCREEN_QNX
void ThreadSafety::PreCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer,
VkScreenBufferPropertiesQNX* pProperties) {
StartReadObjectParentInstance(device, vvl::Func::vkGetScreenBufferPropertiesQNX);
}
void ThreadSafety::PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer,
VkScreenBufferPropertiesQNX* pProperties,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetScreenBufferPropertiesQNX);
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
void ThreadSafety::PreCallRecordCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure) {
StartReadObjectParentInstance(device, vvl::Func::vkCreateAccelerationStructureKHR);
}
void ThreadSafety::PostCallRecordCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCreateAccelerationStructureKHR);
if (record_obj.result == VK_SUCCESS) {
CreateObject(*pAccelerationStructure);
}
}
void ThreadSafety::PreCallRecordDestroyAccelerationStructureKHR(VkDevice device, VkAccelerationStructureKHR accelerationStructure,
const VkAllocationCallbacks* pAllocator) {
StartReadObjectParentInstance(device, vvl::Func::vkDestroyAccelerationStructureKHR);
StartWriteObject(accelerationStructure, vvl::Func::vkDestroyAccelerationStructureKHR);
// Host access to accelerationStructure must be externally synchronized
}
void ThreadSafety::PostCallRecordDestroyAccelerationStructureKHR(VkDevice device, VkAccelerationStructureKHR accelerationStructure,
const VkAllocationCallbacks* pAllocator,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkDestroyAccelerationStructureKHR);
FinishWriteObject(accelerationStructure, vvl::Func::vkDestroyAccelerationStructureKHR);
DestroyObject(accelerationStructure);
// Host access to accelerationStructure must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBuildAccelerationStructuresKHR(
VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructuresKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBuildAccelerationStructuresKHR(
VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructuresKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer, uint32_t infoCount,
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkDeviceAddress* pIndirectDeviceAddresses,
const uint32_t* pIndirectStrides,
const uint32_t* const* ppMaxPrimitiveCounts) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructuresIndirectKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdBuildAccelerationStructuresIndirectKHR(
VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdBuildAccelerationStructuresIndirectKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordBuildAccelerationStructuresKHR(
VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
StartReadObjectParentInstance(device, vvl::Func::vkBuildAccelerationStructuresKHR);
StartReadObject(deferredOperation, vvl::Func::vkBuildAccelerationStructuresKHR);
}
void ThreadSafety::PostCallRecordBuildAccelerationStructuresKHR(
VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkBuildAccelerationStructuresKHR);
FinishReadObject(deferredOperation, vvl::Func::vkBuildAccelerationStructuresKHR);
}
void ThreadSafety::PreCallRecordCopyAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyAccelerationStructureInfoKHR* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyAccelerationStructureKHR);
StartReadObject(deferredOperation, vvl::Func::vkCopyAccelerationStructureKHR);
}
void ThreadSafety::PostCallRecordCopyAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyAccelerationStructureInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyAccelerationStructureKHR);
FinishReadObject(deferredOperation, vvl::Func::vkCopyAccelerationStructureKHR);
}
void ThreadSafety::PreCallRecordCopyAccelerationStructureToMemoryKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyAccelerationStructureToMemoryKHR);
StartReadObject(deferredOperation, vvl::Func::vkCopyAccelerationStructureToMemoryKHR);
}
void ThreadSafety::PostCallRecordCopyAccelerationStructureToMemoryKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyAccelerationStructureToMemoryKHR);
FinishReadObject(deferredOperation, vvl::Func::vkCopyAccelerationStructureToMemoryKHR);
}
void ThreadSafety::PreCallRecordCopyMemoryToAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToAccelerationStructureKHR);
StartReadObject(deferredOperation, vvl::Func::vkCopyMemoryToAccelerationStructureKHR);
}
void ThreadSafety::PostCallRecordCopyMemoryToAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkCopyMemoryToAccelerationStructureKHR);
FinishReadObject(deferredOperation, vvl::Func::vkCopyMemoryToAccelerationStructureKHR);
}
void ThreadSafety::PreCallRecordWriteAccelerationStructuresPropertiesKHR(VkDevice device, uint32_t accelerationStructureCount,
const VkAccelerationStructureKHR* pAccelerationStructures,
VkQueryType queryType, size_t dataSize, void* pData,
size_t stride) {
StartReadObjectParentInstance(device, vvl::Func::vkWriteAccelerationStructuresPropertiesKHR);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
StartReadObject(pAccelerationStructures[index], vvl::Func::vkWriteAccelerationStructuresPropertiesKHR);
}
}
}
void ThreadSafety::PostCallRecordWriteAccelerationStructuresPropertiesKHR(VkDevice device, uint32_t accelerationStructureCount,
const VkAccelerationStructureKHR* pAccelerationStructures,
VkQueryType queryType, size_t dataSize, void* pData,
size_t stride, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkWriteAccelerationStructuresPropertiesKHR);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
FinishReadObject(pAccelerationStructures[index], vvl::Func::vkWriteAccelerationStructuresPropertiesKHR);
}
}
}
void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,
const VkCopyAccelerationStructureInfoKHR* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,
const VkCopyAccelerationStructureInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureToMemoryKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyAccelerationStructureToMemoryKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToAccelerationStructureKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdCopyMemoryToAccelerationStructureKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetAccelerationStructureDeviceAddressKHR(VkDevice device,
const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureDeviceAddressKHR);
}
void ThreadSafety::PostCallRecordGetAccelerationStructureDeviceAddressKHR(VkDevice device,
const VkAccelerationStructureDeviceAddressInfoKHR* pInfo,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureDeviceAddressKHR);
}
void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesKHR(
VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures,
VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
StartReadObject(pAccelerationStructures[index], vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
}
}
StartReadObject(queryPool, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesKHR(
VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures,
VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
if (pAccelerationStructures) {
for (uint32_t index = 0; index < accelerationStructureCount; index++) {
FinishReadObject(pAccelerationStructures[index], vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
}
}
FinishReadObject(queryPool, vvl::Func::vkCmdWriteAccelerationStructuresPropertiesKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetDeviceAccelerationStructureCompatibilityKHR(
VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
VkAccelerationStructureCompatibilityKHR* pCompatibility) {
StartReadObjectParentInstance(device, vvl::Func::vkGetDeviceAccelerationStructureCompatibilityKHR);
}
void ThreadSafety::PostCallRecordGetDeviceAccelerationStructureCompatibilityKHR(
VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
VkAccelerationStructureCompatibilityKHR* pCompatibility, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetDeviceAccelerationStructureCompatibilityKHR);
}
void ThreadSafety::PreCallRecordGetAccelerationStructureBuildSizesKHR(VkDevice device,
VkAccelerationStructureBuildTypeKHR buildType,
const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
const uint32_t* pMaxPrimitiveCounts,
VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) {
StartReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureBuildSizesKHR);
}
void ThreadSafety::PostCallRecordGetAccelerationStructureBuildSizesKHR(
VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo, const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetAccelerationStructureBuildSizesKHR);
}
void ThreadSafety::PreCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
uint32_t height, uint32_t depth) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
uint32_t height, uint32_t depth, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline,
uint32_t firstGroup, uint32_t groupCount,
size_t dataSize, void* pData) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
StartReadObject(pipeline, vvl::Func::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
}
void ThreadSafety::PostCallRecordGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline,
uint32_t firstGroup, uint32_t groupCount,
size_t dataSize, void* pData,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
FinishReadObject(pipeline, vvl::Func::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
}
void ThreadSafety::PreCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
VkDeviceAddress indirectDeviceAddress) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysIndirectKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
VkDeviceAddress indirectDeviceAddress, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdTraceRaysIndirectKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordGetRayTracingShaderGroupStackSizeKHR(VkDevice device, VkPipeline pipeline, uint32_t group,
VkShaderGroupShaderKHR groupShader) {
StartReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupStackSizeKHR);
StartReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupStackSizeKHR);
}
void ThreadSafety::PostCallRecordGetRayTracingShaderGroupStackSizeKHR(VkDevice device, VkPipeline pipeline, uint32_t group,
VkShaderGroupShaderKHR groupShader,
const RecordObject& record_obj) {
FinishReadObjectParentInstance(device, vvl::Func::vkGetRayTracingShaderGroupStackSizeKHR);
FinishReadObject(pipeline, vvl::Func::vkGetRayTracingShaderGroupStackSizeKHR);
}
void ThreadSafety::PreCallRecordCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdSetRayTracingPipelineStackSizeKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize,
const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdSetRayTracingPipelineStackSizeKHR);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY,
uint32_t groupCountZ, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
uint32_t drawCount, uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectEXT);
StartReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
uint32_t drawCount, uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectEXT);
FinishReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PreCallRecordCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer,
VkDeviceSize offset, VkBuffer countBuffer,
VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride) {
StartWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
StartReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
StartReadObject(countBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
// Host access to commandBuffer must be externally synchronized
}
void ThreadSafety::PostCallRecordCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer,
VkDeviceSize offset, VkBuffer countBuffer,
VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
uint32_t stride, const RecordObject& record_obj) {
FinishWriteObject(commandBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
FinishReadObject(buffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
FinishReadObject(countBuffer, vvl::Func::vkCmdDrawMeshTasksIndirectCountEXT);
// Host access to commandBuffer must be externally synchronized
}
// NOLINTEND