#pragma once
#include "sync/sync_common.h"
class ResourceAccessState;
class ResourceAccessWriteState;
struct ResourceFirstAccess;
constexpr VkPipelineStageFlags2KHR kColorAttachmentExecScope = …;
const SyncStageAccessFlags kColorAttachmentAccessScope = …;
constexpr VkPipelineStageFlags2KHR kDepthStencilAttachmentExecScope = …;
const SyncStageAccessFlags kDepthStencilAttachmentAccessScope = …;
constexpr VkPipelineStageFlags2KHR kRasterAttachmentExecScope = …;
const SyncStageAccessFlags kRasterAttachmentAccessScope = …;
enum SyncHazard { … };
enum class SyncOrdering : uint8_t { … };
const char *string_SyncHazard(SyncHazard hazard);
const char *string_SyncHazardVUID(SyncHazard hazard);
class HazardResult { … };
struct SyncExecScope { … };
struct SemaphoreScope : SyncExecScope { … };
struct SyncBarrier { … };
struct ResourceFirstAccess { … };
QueueId;
struct OrderingBarrier { … };
ResourceUsageTagSet;
class ResourceAccessWriteState { … };
class ResourceAccessState : public SyncStageAccess { … };
ResourceAccessStateFunction;
ResourceAccessRangeMap;
ResourceRangeMergeIterator;
template <typename ScopeOps>
void ResourceAccessState::ApplyBarrier(ScopeOps &&scope, const SyncBarrier &barrier, bool layout_transition) { … }
template <typename Predicate>
bool ResourceAccessState::ApplyPredicatedWait(Predicate &predicate) { … }
template <typename Barrier>
SyncBarrier::SyncBarrier(const Barrier &barrier, const SyncExecScope &src, const SyncExecScope &dst)
: src_exec_scope(src),
src_access_scope(SyncStageAccess::AccessScope(src.valid_accesses, barrier.srcAccessMask)),
dst_exec_scope(dst),
dst_access_scope(SyncStageAccess::AccessScope(dst.valid_accesses, barrier.dstAccessMask)) { … }
template <typename Barrier>
SyncBarrier::SyncBarrier(VkQueueFlags queue_flags, const Barrier &barrier) { … }