aboutsummaryrefslogtreecommitdiff
path: root/layers/buffer_validation.h
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-02-01 13:35:48 -0700
committerMark Lobodzinski <mark@lunarg.com>2017-02-03 10:17:10 -0700
commite8c5817289db5d3bb5e3e9e0b08fb06feb611b09 (patch)
treef616c1bea07cbb4d2110691f1e87cac17a18e569 /layers/buffer_validation.h
parent4ccc652a0656a09b5baf8b0723dd256ca8293a4d (diff)
downloadusermoji-e8c5817289db5d3bb5e3e9e0b08fb06feb611b09.tar.xz
layers: Move findlayout/setlayout & val helpers
Moved image layout related validation and support routines out of core validation and into the buffer_validation module. Change-Id: I85ce2c5172d9a89e465e29fe2d6abdaab1f99747
Diffstat (limited to 'layers/buffer_validation.h')
-rw-r--r--layers/buffer_validation.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/layers/buffer_validation.h b/layers/buffer_validation.h
index 26bf63bb..25865e68 100644
--- a/layers/buffer_validation.h
+++ b/layers/buffer_validation.h
@@ -27,6 +27,11 @@
#include <unordered_map>
#include <vector>
#include <utility>
+#include <algorithm>
+
+
+
+
bool PreCallValidateCreateImage(core_validation::layer_data *device_data, const VkImageCreateInfo *pCreateInfo,
@@ -64,4 +69,56 @@ bool PreCallValidateCmdClearDepthStencilImage(core_validation::layer_data *dev_d
VkImageLayout imageLayout, uint32_t rangeCount,
const VkImageSubresourceRange *pRanges);
+bool FindLayoutVerifyNode(core_validation::layer_data *device_data, GLOBAL_CB_NODE *pCB, ImageSubresourcePair imgpair,
+ IMAGE_CMD_BUF_LAYOUT_NODE &node, const VkImageAspectFlags aspectMask);
+
+bool FindLayoutVerifyLayout(core_validation::layer_data *device_data, ImageSubresourcePair imgpair, VkImageLayout &layout,
+ const VkImageAspectFlags aspectMask);
+
+bool FindCmdBufLayout(core_validation::layer_data *device_data, GLOBAL_CB_NODE *pCB, VkImage image, VkImageSubresource range,
+ IMAGE_CMD_BUF_LAYOUT_NODE &node);
+
+bool FindGlobalLayout(core_validation::layer_data *device_data, ImageSubresourcePair imgpair, VkImageLayout &layout);
+
+bool FindLayouts(core_validation::layer_data *device_data, VkImage image, std::vector<VkImageLayout> &layouts);
+
+void SetGlobalLayout(core_validation::layer_data *device_data, ImageSubresourcePair imgpair, const VkImageLayout &layout);
+
+void SetLayout(core_validation::layer_data *device_data, GLOBAL_CB_NODE *pCB, ImageSubresourcePair imgpair,
+ const IMAGE_CMD_BUF_LAYOUT_NODE &node);
+
+void SetLayout(core_validation::layer_data *device_data, GLOBAL_CB_NODE *pCB, ImageSubresourcePair imgpair,
+ const VkImageLayout &layout);
+
+void SetImageViewLayout(core_validation::layer_data *device_data, GLOBAL_CB_NODE *pCB, VkImageView imageView,
+ const VkImageLayout &layout);
+
+bool VerifyFramebufferAndRenderPassLayouts(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *pCB,
+ const VkRenderPassBeginInfo *pRenderPassBegin,
+ const FRAMEBUFFER_STATE *framebuffer_state);
+
+void TransitionAttachmentRefLayout(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *pCB, FRAMEBUFFER_STATE *pFramebuffer,
+ VkAttachmentReference ref);
+
+void TransitionSubpassLayouts(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *pCB,
+ const VkRenderPassBeginInfo *pRenderPassBegin, const int subpass_index,
+ FRAMEBUFFER_STATE *framebuffer_state);
+
+bool TransitionImageAspectLayout(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *pCB,
+ const VkImageMemoryBarrier *mem_barrier, uint32_t level, uint32_t layer,
+ VkImageAspectFlags aspect);
+
+bool TransitionImageLayouts(core_validation::layer_data *device_data, VkCommandBuffer cmdBuffer, uint32_t memBarrierCount,
+ const VkImageMemoryBarrier *pImgMemBarriers);
+
+bool VerifySourceImageLayout(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *cb_node, VkImage srcImage,
+ VkImageSubresourceLayers subLayers, VkImageLayout srcImageLayout,
+ UNIQUE_VALIDATION_ERROR_CODE msgCode);
+
+bool VerifyDestImageLayout(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *cb_node, VkImage destImage,
+ VkImageSubresourceLayers subLayers, VkImageLayout destImageLayout, UNIQUE_VALIDATION_ERROR_CODE msgCode);
+
+void TransitionFinalSubpassLayouts(core_validation::layer_data *dev_data, GLOBAL_CB_NODE *pCB,
+ const VkRenderPassBeginInfo *pRenderPassBegin, FRAMEBUFFER_STATE *framebuffer_state);
+
#endif // CORE_VALIDATION_BUFFER_VALIDATION_H_