#include "sync/sync_renderpass.h"
#include "sync/sync_validation.h"
#include "sync/sync_op.h"
#include "sync/sync_image.h"
#include "state_tracker/render_pass_state.h"
class ValidateResolveAction { … };
class UpdateStateResolveAction { … };
void InitSubpassContexts(VkQueueFlags queue_flags, const vvl::RenderPass &rp_state, const AccessContext *external_context,
std::vector<AccessContext> &subpass_contexts) { … }
static SyncStageAccessIndex GetLoadOpUsageIndex(VkAttachmentLoadOp load_op, syncval_state::AttachmentType type) { … }
static SyncStageAccessIndex GetStoreOpUsageIndex(VkAttachmentStoreOp store_op, syncval_state::AttachmentType type) { … }
static SyncStageAccessIndex ColorLoadUsage(VkAttachmentLoadOp load_op) { … }
static SyncStageAccessIndex DepthStencilLoadUsage(VkAttachmentLoadOp load_op) { … }
static AccessContext *CreateStoreResolveProxyContext(const AccessContext &context, const vvl::RenderPass &rp_state,
uint32_t subpass, const AttachmentViewGenVector &attachment_views) { … }
bool RenderPassAccessContext::ValidateLayoutTransitions(const SyncValidationInfo &val_info, const AccessContext &access_context,
const vvl::RenderPass &rp_state, const VkRect2D &render_area,
uint32_t subpass, const AttachmentViewGenVector &attachment_views,
vvl::Func command) { … }
bool RenderPassAccessContext::ValidateLoadOperation(const SyncValidationInfo &val_info, const AccessContext &access_context,
const vvl::RenderPass &rp_state, const VkRect2D &render_area, uint32_t subpass,
const AttachmentViewGenVector &attachment_views, vvl::Func command) { … }
bool RenderPassAccessContext::ValidateStoreOperation(const SyncValidationInfo &val_info, vvl::Func command) const { … }
bool IsImageLayoutDepthWritable(VkImageLayout image_layout) { … }
bool IsImageLayoutStencilWritable(VkImageLayout image_layout) { … }
bool IsDepthAttachmentWriteable(const LastBound &last_bound_state, const VkFormat format, const VkImageLayout layout) { … }
bool IsStencilAttachmentWriteable(const LastBound &last_bound_state, const VkFormat format, const VkImageLayout layout) { … }
template <typename Action>
void ResolveOperation(Action &action, const vvl::RenderPass &rp_state, const AttachmentViewGenVector &attachment_views,
uint32_t subpass) { … }
bool RenderPassAccessContext::ValidateResolveOperations(const SyncValidationInfo &val_info, vvl::Func command) const { … }
void RenderPassAccessContext::UpdateAttachmentResolveAccess(const vvl::RenderPass &rp_state,
const AttachmentViewGenVector &attachment_views, uint32_t subpass,
const ResourceUsageTag tag, AccessContext access_context) { … }
void RenderPassAccessContext::UpdateAttachmentStoreAccess(const vvl::RenderPass &rp_state,
const AttachmentViewGenVector &attachment_views, uint32_t subpass,
const ResourceUsageTag tag, AccessContext &access_context) { … }
void RenderPassAccessContext::RecordLayoutTransitions(const vvl::RenderPass &rp_state, uint32_t subpass,
const AttachmentViewGenVector &attachment_views, const ResourceUsageTag tag,
AccessContext &access_context) { … }
bool RenderPassAccessContext::ValidateDrawSubpassAttachment(const CommandExecutionContext &exec_context,
const vvl::CommandBuffer &cmd_buffer, vvl::Func command) const { … }
void RenderPassAccessContext::RecordDrawSubpassAttachment(const vvl::CommandBuffer &cmd_buffer, const ResourceUsageTag tag) { … }
uint32_t RenderPassAccessContext::GetAttachmentIndex(const VkClearAttachment &clear_attachment) const { … }
VkImageAspectFlags ClearAttachmentInfo::GetAspectsToClear(VkImageAspectFlags clear_aspect_mask, const ImageViewState &view) { … }
ClearAttachmentInfo::ClearAttachmentInfo(const VkClearAttachment &clear_attachment, const VkClearRect &rect,
const ImageViewState &view_, uint32_t attachment_index_, uint32_t subpass_)
: … { … }
std::string ClearAttachmentInfo::GetSubpassAttachmentText() const { … }
VkImageSubresourceRange ClearAttachmentInfo::RestrictSubresourceRange(const VkClearRect &clear_rect, const ImageViewState &view) { … }
ClearAttachmentInfo RenderPassAccessContext::GetClearAttachmentInfo(const VkClearAttachment &clear_attachment,
const VkClearRect &rect) const { … }
bool RenderPassAccessContext::ValidateNextSubpass(const CommandExecutionContext &exec_context, vvl::Func command) const { … }
bool RenderPassAccessContext::ValidateEndRenderPass(const CommandExecutionContext &exec_context, vvl::Func command) const { … }
AccessContext *RenderPassAccessContext::CreateStoreResolveProxy() const { … }
bool RenderPassAccessContext::ValidateFinalSubpassLayoutTransitions(const CommandExecutionContext &exec_context,
vvl::Func command) const { … }
void RenderPassAccessContext::RecordLayoutTransitions(const ResourceUsageTag tag) { … }
void RenderPassAccessContext::RecordLoadOperations(const ResourceUsageTag tag) { … }
AttachmentViewGenVector RenderPassAccessContext::CreateAttachmentViewGen(
const VkRect2D &render_area, const std::vector<const syncval_state::ImageViewState *> &attachment_views) { … }
RenderPassAccessContext::RenderPassAccessContext(const vvl::RenderPass &rp_state, const VkRect2D &render_area,
VkQueueFlags queue_flags,
const std::vector<const syncval_state::ImageViewState *> &attachment_views,
const AccessContext *external_context)
: … { … }
void RenderPassAccessContext::RecordBeginRenderPass(const ResourceUsageTag barrier_tag, const ResourceUsageTag load_tag) { … }
void RenderPassAccessContext::RecordNextSubpass(const ResourceUsageTag store_tag, const ResourceUsageTag barrier_tag,
const ResourceUsageTag load_tag) { … }
void RenderPassAccessContext::RecordEndRenderPass(AccessContext *external_context, const ResourceUsageTag store_tag,
const ResourceUsageTag barrier_tag) { … }
void syncval_state::BeginRenderingCmdState::AddRenderingInfo(const SyncValidator &state, const VkRenderingInfo &rendering_info) { … }
const syncval_state::DynamicRenderingInfo &syncval_state::BeginRenderingCmdState::GetRenderingInfo() const { … }
syncval_state::DynamicRenderingInfo::DynamicRenderingInfo(const SyncValidator &state, const VkRenderingInfo &rendering_info)
: … { … }
ClearAttachmentInfo syncval_state::DynamicRenderingInfo::GetClearAttachmentInfo(const VkClearAttachment &clear_attachment,
const VkClearRect &rect) const { … }
syncval_state::DynamicRenderingInfo::Attachment::Attachment(const SyncValidator &state,
const vku::safe_VkRenderingAttachmentInfo &attachment_info,
AttachmentType type_, const VkOffset3D &offset,
const VkExtent3D &extent)
: … { … }
SyncStageAccessIndex syncval_state::DynamicRenderingInfo::Attachment::GetLoadUsage() const { … }
SyncStageAccessIndex syncval_state::DynamicRenderingInfo::Attachment::GetStoreUsage() const { … }
SyncOrdering syncval_state::DynamicRenderingInfo::Attachment::GetOrdering() const { … }
Location syncval_state::DynamicRenderingInfo::Attachment::GetLocation(const Location &loc, uint32_t attachment_index) const { … }
bool syncval_state::DynamicRenderingInfo::Attachment::IsWriteable(const LastBound &last_bound_state) const { … }