#pragma once
#include "error_message/error_location.h"
#include "containers/subresource_adapter.h"
#include "containers/range_vector.h"
#include "generated/sync_validation_types.h"
namespace vvl {
class Buffer;
class BufferView;
struct VertexBufferBinding;
struct IndexBufferBinding;
}
namespace syncval_state {
class CommandBuffer;
class ImageState;
class ImageViewState;
class Swapchain;
}
class HazardResult;
class SyncValidator;
ImageRangeGen;
QueueId;
constexpr static QueueId kQueueIdInvalid = …;
constexpr static QueueId kQueueAny = …;
ResourceUsageTag;
constexpr static ResourceUsageTag kMaxIndex = …;
constexpr static ResourceUsageTag kInvalidTag = …;
ResourceUsageRange;
ResourceAddress;
ResourceAccessRange;
struct ResourceUsageTagEx { … };
template <typename T>
ResourceAccessRange MakeRange(const T &has_offset_and_size) { … }
ResourceAccessRange MakeRange(VkDeviceSize start, VkDeviceSize size);
ResourceAccessRange MakeRange(const vvl::Buffer &buffer, VkDeviceSize offset, VkDeviceSize size);
ResourceAccessRange MakeRange(const vvl::BufferView &buf_view_state);
ResourceAccessRange MakeRange(VkDeviceSize offset, uint32_t first_index, uint32_t count, uint32_t stride);
ResourceAccessRange MakeRange(const vvl::VertexBufferBinding &binding, uint32_t first_index, const std::optional<uint32_t> &count,
uint32_t stride);
ResourceAccessRange MakeRange(const vvl::IndexBufferBinding &binding, uint32_t first_index, const std::optional<uint32_t> &count,
uint32_t index_size);
extern const ResourceAccessRange kFullRange;
constexpr VkImageAspectFlags kColorAspects = …;
constexpr VkImageAspectFlags kDepthStencilAspects = …;
class SyncValidationInfo { … };
struct SyncStageAccess { … };
template <typename IntegralKey, size_t LogSize = 4U, IntegralKey kInvalidKey = IntegralKey(0)>
class CachedInsertSet : public std::set<IntegralKey> { … };
template <typename KeyType>
class SingleRangeGenerator { … };