#include "sync/sync_op.h"
#include "sync/sync_renderpass.h"
#include "sync/sync_access_context.h"
#include "sync/sync_commandbuffer.h"
#include "sync/sync_image.h"
#include "state_tracker/buffer_state.h"
#include "state_tracker/cmd_buffer_state.h"
#include "state_tracker/render_pass_state.h"
#include "sync/sync_validation.h"
template <typename RangeMap, typename KeyType = typename RangeMap::key_type>
class MapRangesRangeGenerator { … };
EventSimpleRangeGenerator;
template <typename RangeMap, typename RangeGen, typename KeyType = typename RangeMap::key_type>
class FilteredGeneratorGenerator { … };
EventImageRangeGenerator;
SyncOpBarriers::SyncOpBarriers(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags,
VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount,
const VkMemoryBarrier *pMemoryBarriers, uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier *pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier *pImageMemoryBarriers)
: … { … }
SyncOpBarriers::SyncOpBarriers(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags, uint32_t event_count,
const VkDependencyInfoKHR *dep_infos)
: … { … }
SyncOpPipelineBarrier::SyncOpPipelineBarrier(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags,
VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount,
const VkMemoryBarrier *pMemoryBarriers, uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier *pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier *pImageMemoryBarriers)
: … { … }
SyncOpPipelineBarrier::SyncOpPipelineBarrier(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags,
const VkDependencyInfoKHR &dep_info)
: … { … }
bool SyncOpPipelineBarrier::Validate(const CommandBufferAccessContext &cb_context) const { … }
struct SyncOpPipelineBarrierFunctorFactory { … };
template <typename Barriers, typename FunctorFactory>
void SyncOpBarriers::ApplyBarriers(const Barriers &barriers, const FunctorFactory &factory, const QueueId queue_id,
const ResourceUsageTag tag, AccessContext *access_context) { … }
template <typename Barriers, typename FunctorFactory>
void SyncOpBarriers::ApplyGlobalBarriers(const Barriers &barriers, const FunctorFactory &factory, const QueueId queue_id,
const ResourceUsageTag tag, AccessContext *access_context) { … }
ResourceUsageTag SyncOpPipelineBarrier::Record(CommandBufferAccessContext *cb_context) { … }
void SyncOpPipelineBarrier::ReplayRecord(CommandExecutionContext &exec_context, const ResourceUsageTag exec_tag) const { … }
bool SyncOpPipelineBarrier::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpBarriers::BarrierSet::MakeMemoryBarriers(const SyncExecScope &src, const SyncExecScope &dst,
VkDependencyFlags dependency_flags, uint32_t memory_barrier_count,
const VkMemoryBarrier *barriers) { … }
void SyncOpBarriers::BarrierSet::MakeBufferMemoryBarriers(const SyncValidator &sync_state, const SyncExecScope &src,
const SyncExecScope &dst, VkDependencyFlags dependencyFlags,
uint32_t barrier_count, const VkBufferMemoryBarrier *barriers) { … }
void SyncOpBarriers::BarrierSet::MakeMemoryBarriers(VkQueueFlags queue_flags, VkDependencyFlags dependency_flags,
uint32_t memory_barrier_count, const VkMemoryBarrier2 *barriers) { … }
void SyncOpBarriers::BarrierSet::MakeBufferMemoryBarriers(const SyncValidator &sync_state, VkQueueFlags queue_flags,
VkDependencyFlags dependencyFlags, uint32_t barrier_count,
const VkBufferMemoryBarrier2 *barriers) { … }
void SyncOpBarriers::BarrierSet::MakeImageMemoryBarriers(const SyncValidator &sync_state, const SyncExecScope &src,
const SyncExecScope &dst, VkDependencyFlags dependencyFlags,
uint32_t barrier_count, const VkImageMemoryBarrier *barriers) { … }
void SyncOpBarriers::BarrierSet::MakeImageMemoryBarriers(const SyncValidator &sync_state, VkQueueFlags queue_flags,
VkDependencyFlags dependencyFlags, uint32_t barrier_count,
const VkImageMemoryBarrier2 *barriers) { … }
SyncOpWaitEvents::SyncOpWaitEvents(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags,
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)
: … { … }
SyncOpWaitEvents::SyncOpWaitEvents(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags,
uint32_t eventCount, const VkEvent *pEvents, const VkDependencyInfoKHR *pDependencyInfo)
: … { … }
const char *const SyncOpWaitEvents::kIgnored = …;
bool SyncOpWaitEvents::Validate(const CommandBufferAccessContext &cb_context) const { … }
bool SyncOpWaitEvents::DoValidate(const CommandExecutionContext &exec_context, const ResourceUsageTag base_tag) const { … }
struct SyncOpWaitEventsFunctorFactory { … };
ResourceUsageTag SyncOpWaitEvents::Record(CommandBufferAccessContext *cb_context) { … }
void SyncOpWaitEvents::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
bool SyncOpWaitEvents::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpWaitEvents::MakeEventsList(const SyncValidator &sync_state, uint32_t event_count, const VkEvent *events) { … }
SyncOpResetEvent::SyncOpResetEvent(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags, VkEvent event,
VkPipelineStageFlags2KHR stageMask)
: … { … }
bool SyncOpResetEvent::Validate(const CommandBufferAccessContext &cb_context) const { … }
bool SyncOpResetEvent::DoValidate(const CommandExecutionContext &exec_context, const ResourceUsageTag base_tag) const { … }
ResourceUsageTag SyncOpResetEvent::Record(CommandBufferAccessContext *cb_context) { … }
bool SyncOpResetEvent::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpResetEvent::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
SyncOpSetEvent::SyncOpSetEvent(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags, VkEvent event,
VkPipelineStageFlags2KHR stageMask, const AccessContext *access_context)
: … { … }
SyncOpSetEvent::SyncOpSetEvent(vvl::Func command, const SyncValidator &sync_state, VkQueueFlags queue_flags, VkEvent event,
const VkDependencyInfoKHR &dep_info, const AccessContext *access_context)
: … { … }
bool SyncOpSetEvent::Validate(const CommandBufferAccessContext &cb_context) const { … }
bool SyncOpSetEvent::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
bool SyncOpSetEvent::DoValidate(const CommandExecutionContext &exec_context, const ResourceUsageTag base_tag) const { … }
ResourceUsageTag SyncOpSetEvent::Record(CommandBufferAccessContext *cb_context) { … }
void SyncOpSetEvent::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
void SyncOpSetEvent::DoRecord(QueueId queue_id, ResourceUsageTag tag, const std::shared_ptr<const AccessContext> &access_context,
SyncEventsContext *events_context) const { … }
SyncOpBeginRenderPass::SyncOpBeginRenderPass(vvl::Func command, const SyncValidator &sync_state,
const VkRenderPassBeginInfo *pRenderPassBegin,
const VkSubpassBeginInfo *pSubpassBeginInfo)
: … { … }
bool SyncOpBeginRenderPass::Validate(const CommandBufferAccessContext &cb_context) const { … }
ResourceUsageTag SyncOpBeginRenderPass::Record(CommandBufferAccessContext *cb_context) { … }
bool SyncOpBeginRenderPass::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpBeginRenderPass::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
SyncOpNextSubpass::SyncOpNextSubpass(vvl::Func command, const SyncValidator &sync_state,
const VkSubpassBeginInfo *pSubpassBeginInfo, const VkSubpassEndInfo *pSubpassEndInfo)
: … { … }
bool SyncOpNextSubpass::Validate(const CommandBufferAccessContext &cb_context) const { … }
ResourceUsageTag SyncOpNextSubpass::Record(CommandBufferAccessContext *cb_context) { … }
bool SyncOpNextSubpass::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpNextSubpass::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
SyncOpEndRenderPass::SyncOpEndRenderPass(vvl::Func command, const SyncValidator &sync_state,
const VkSubpassEndInfo *pSubpassEndInfo)
: … { … }
bool SyncOpEndRenderPass::Validate(const CommandBufferAccessContext &cb_context) const { … }
ResourceUsageTag SyncOpEndRenderPass::Record(CommandBufferAccessContext *cb_context) { … }
bool SyncOpEndRenderPass::ReplayValidate(ReplayState &replay, ResourceUsageTag recorded_tag) const { … }
void SyncOpEndRenderPass::ReplayRecord(CommandExecutionContext &exec_context, ResourceUsageTag exec_tag) const { … }
ReplayState::ReplayState(CommandExecutionContext &exec_context, const CommandBufferAccessContext &recorded_context,
const ErrorObject &error_obj, uint32_t index, ResourceUsageTag base_tag)
: … { … }
void ReplayState::BeginRenderPassReplaySetup(const SyncOpBeginRenderPass &begin_op) { … }
void ReplayState::NextSubpassReplaySetup() { … }
void ReplayState::EndRenderPassReplayCleanup() { … }
AccessContext *ReplayState::ReplayStateRenderPassBegin(VkQueueFlags queue_flags, const SyncOpBeginRenderPass &begin_op,
const AccessContext &external_context) { … }
AccessContext *ReplayState::ReplayStateRenderPassNext() { … }
void ReplayState::ReplayStateRenderPassEnd(AccessContext &external_context) { … }
const AccessContext *ReplayState::GetRecordedAccessContext() const { … }
bool ReplayState::DetectFirstUseHazard(const ResourceUsageRange &first_use_range) const { … }
bool ReplayState::ValidateFirstUse() { … }
AccessContext *ReplayState::RenderPassReplayState::Begin(VkQueueFlags queue_flags, const SyncOpBeginRenderPass &begin_op_,
const AccessContext &external_context) { … }
AccessContext *ReplayState::RenderPassReplayState::Next() { … }
void ReplayState::RenderPassReplayState::End(AccessContext &external_context) { … }
void SyncEventsContext::ApplyBarrier(const SyncExecScope &src, const SyncExecScope &dst, ResourceUsageTag tag) { … }
void SyncEventsContext::ApplyTaggedWait(VkQueueFlags queue_flags, ResourceUsageTag tag) { … }
SyncEventsContext &SyncEventsContext::DeepCopy(const SyncEventsContext &from) { … }
void SyncEventsContext::AddReferencedTags(ResourceUsageTagSet &referenced) const { … }
SyncEventState::SyncEventState(const SyncEventState::EventPointer &event_state) : … { … }
void SyncEventState::ResetFirstScope() { … }
SyncEventState::IgnoreReason SyncEventState::IsIgnoredByWait(vvl::Func command, VkPipelineStageFlags2KHR srcStageMask) const { … }
bool SyncEventState::HasBarrier(VkPipelineStageFlags2KHR stageMask, VkPipelineStageFlags2KHR exec_scope_arg) const { … }
void SyncEventState::AddReferencedTags(ResourceUsageTagSet &referenced) const { … }