1e5c31af7Sopenharmony_ci#ifndef _VKTRENDERPASSTESTSUTIL_HPP 2e5c31af7Sopenharmony_ci#define _VKTRENDERPASSTESTSUTIL_HPP 3e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------ 4e5c31af7Sopenharmony_ci * Vulkan Conformance Tests 5e5c31af7Sopenharmony_ci * ------------------------ 6e5c31af7Sopenharmony_ci * 7e5c31af7Sopenharmony_ci * Copyright (c) 2018 The Khronos Group Inc. 8e5c31af7Sopenharmony_ci * 9e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 10e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 11e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 12e5c31af7Sopenharmony_ci * 13e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 14e5c31af7Sopenharmony_ci * 15e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 16e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 17e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 19e5c31af7Sopenharmony_ci * limitations under the License. 20e5c31af7Sopenharmony_ci * 21e5c31af7Sopenharmony_ci *//*! 22e5c31af7Sopenharmony_ci * \file 23e5c31af7Sopenharmony_ci * \brief RenderPass test utils 24e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/ 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ci#include "tcuDefs.hpp" 27e5c31af7Sopenharmony_ci#include "vkRef.hpp" 28e5c31af7Sopenharmony_ci#include "vkDefs.hpp" 29e5c31af7Sopenharmony_ci#include "vkMemUtil.hpp" 30e5c31af7Sopenharmony_ci#include "vkTypeUtil.hpp" 31e5c31af7Sopenharmony_ci#include "vkTypeUtil.hpp" 32e5c31af7Sopenharmony_ci#include "vktRenderPassGroupParams.hpp" 33e5c31af7Sopenharmony_ci 34e5c31af7Sopenharmony_ci#include <vector> 35e5c31af7Sopenharmony_ci 36e5c31af7Sopenharmony_cinamespace vkt 37e5c31af7Sopenharmony_ci{ 38e5c31af7Sopenharmony_cinamespace renderpass 39e5c31af7Sopenharmony_ci{ 40e5c31af7Sopenharmony_ci 41e5c31af7Sopenharmony_ciusing namespace vk; 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ciclass AttachmentDescription1 : public vk::VkAttachmentDescription 44e5c31af7Sopenharmony_ci{ 45e5c31af7Sopenharmony_cipublic: 46e5c31af7Sopenharmony_ci AttachmentDescription1 (const void* pNext, 47e5c31af7Sopenharmony_ci VkAttachmentDescriptionFlags flags, 48e5c31af7Sopenharmony_ci VkFormat format, 49e5c31af7Sopenharmony_ci VkSampleCountFlagBits samples, 50e5c31af7Sopenharmony_ci VkAttachmentLoadOp loadOp, 51e5c31af7Sopenharmony_ci VkAttachmentStoreOp storeOp, 52e5c31af7Sopenharmony_ci VkAttachmentLoadOp stencilLoadOp, 53e5c31af7Sopenharmony_ci VkAttachmentStoreOp stencilStoreOp, 54e5c31af7Sopenharmony_ci VkImageLayout initialLayout, 55e5c31af7Sopenharmony_ci VkImageLayout finalLayout); 56e5c31af7Sopenharmony_ci}; 57e5c31af7Sopenharmony_ci 58e5c31af7Sopenharmony_ciclass AttachmentDescription2 : public vk::VkAttachmentDescription2 59e5c31af7Sopenharmony_ci{ 60e5c31af7Sopenharmony_cipublic: 61e5c31af7Sopenharmony_ci AttachmentDescription2 (const void* pNext, 62e5c31af7Sopenharmony_ci VkAttachmentDescriptionFlags flags, 63e5c31af7Sopenharmony_ci VkFormat format, 64e5c31af7Sopenharmony_ci VkSampleCountFlagBits samples, 65e5c31af7Sopenharmony_ci VkAttachmentLoadOp loadOp, 66e5c31af7Sopenharmony_ci VkAttachmentStoreOp storeOp, 67e5c31af7Sopenharmony_ci VkAttachmentLoadOp stencilLoadOp, 68e5c31af7Sopenharmony_ci VkAttachmentStoreOp stencilStoreOp, 69e5c31af7Sopenharmony_ci VkImageLayout initialLayout, 70e5c31af7Sopenharmony_ci VkImageLayout finalLayout); 71e5c31af7Sopenharmony_ci}; 72e5c31af7Sopenharmony_ci 73e5c31af7Sopenharmony_ciclass AttachmentReference1 : public vk::VkAttachmentReference 74e5c31af7Sopenharmony_ci{ 75e5c31af7Sopenharmony_cipublic: 76e5c31af7Sopenharmony_ci AttachmentReference1 (const void* pNext, 77e5c31af7Sopenharmony_ci deUint32 attachment, 78e5c31af7Sopenharmony_ci VkImageLayout layout, 79e5c31af7Sopenharmony_ci VkImageAspectFlags aspectMask); 80e5c31af7Sopenharmony_ci}; 81e5c31af7Sopenharmony_ci 82e5c31af7Sopenharmony_ciclass AttachmentReference2 : public vk::VkAttachmentReference2 83e5c31af7Sopenharmony_ci{ 84e5c31af7Sopenharmony_cipublic: 85e5c31af7Sopenharmony_ci AttachmentReference2 (const void* pNext, 86e5c31af7Sopenharmony_ci deUint32 attachment, 87e5c31af7Sopenharmony_ci VkImageLayout layout, 88e5c31af7Sopenharmony_ci VkImageAspectFlags aspectMask); 89e5c31af7Sopenharmony_ci}; 90e5c31af7Sopenharmony_ci 91e5c31af7Sopenharmony_ciclass SubpassDescription1 : public vk::VkSubpassDescription 92e5c31af7Sopenharmony_ci{ 93e5c31af7Sopenharmony_cipublic: 94e5c31af7Sopenharmony_ci SubpassDescription1 (const void* pNext, 95e5c31af7Sopenharmony_ci VkSubpassDescriptionFlags flags, 96e5c31af7Sopenharmony_ci VkPipelineBindPoint pipelineBindPoint, 97e5c31af7Sopenharmony_ci deUint32 viewMask, 98e5c31af7Sopenharmony_ci deUint32 inputAttachmentCount, 99e5c31af7Sopenharmony_ci const VkAttachmentReference* pInputAttachments, 100e5c31af7Sopenharmony_ci deUint32 colorAttachmentCount, 101e5c31af7Sopenharmony_ci const VkAttachmentReference* pColorAttachments, 102e5c31af7Sopenharmony_ci const VkAttachmentReference* pResolveAttachments, 103e5c31af7Sopenharmony_ci const VkAttachmentReference* pDepthStencilAttachment, 104e5c31af7Sopenharmony_ci deUint32 preserveAttachmentCount, 105e5c31af7Sopenharmony_ci const deUint32* pPreserveAttachments); 106e5c31af7Sopenharmony_ci}; 107e5c31af7Sopenharmony_ci 108e5c31af7Sopenharmony_ciclass SubpassDescription2 : public vk::VkSubpassDescription2 109e5c31af7Sopenharmony_ci{ 110e5c31af7Sopenharmony_cipublic: 111e5c31af7Sopenharmony_ci SubpassDescription2 (const void* pNext, 112e5c31af7Sopenharmony_ci VkSubpassDescriptionFlags flags, 113e5c31af7Sopenharmony_ci VkPipelineBindPoint pipelineBindPoint, 114e5c31af7Sopenharmony_ci deUint32 viewMask, 115e5c31af7Sopenharmony_ci deUint32 inputAttachmentCount, 116e5c31af7Sopenharmony_ci const VkAttachmentReference2* pInputAttachments, 117e5c31af7Sopenharmony_ci deUint32 colorAttachmentCount, 118e5c31af7Sopenharmony_ci const VkAttachmentReference2* pColorAttachments, 119e5c31af7Sopenharmony_ci const VkAttachmentReference2* pResolveAttachments, 120e5c31af7Sopenharmony_ci const VkAttachmentReference2* pDepthStencilAttachment, 121e5c31af7Sopenharmony_ci deUint32 preserveAttachmentCount, 122e5c31af7Sopenharmony_ci const deUint32* pPreserveAttachments); 123e5c31af7Sopenharmony_ci}; 124e5c31af7Sopenharmony_ci 125e5c31af7Sopenharmony_ciclass SubpassDependency1 : public vk::VkSubpassDependency 126e5c31af7Sopenharmony_ci{ 127e5c31af7Sopenharmony_cipublic: 128e5c31af7Sopenharmony_ci SubpassDependency1 (const void* pNext, 129e5c31af7Sopenharmony_ci deUint32 srcSubpass, 130e5c31af7Sopenharmony_ci deUint32 dstSubpass, 131e5c31af7Sopenharmony_ci VkPipelineStageFlags srcStageMask, 132e5c31af7Sopenharmony_ci VkPipelineStageFlags dstStageMask, 133e5c31af7Sopenharmony_ci VkAccessFlags srcAccessMask, 134e5c31af7Sopenharmony_ci VkAccessFlags dstAccessMask, 135e5c31af7Sopenharmony_ci VkDependencyFlags dependencyFlags, 136e5c31af7Sopenharmony_ci deInt32 viewOffset); 137e5c31af7Sopenharmony_ci}; 138e5c31af7Sopenharmony_ci 139e5c31af7Sopenharmony_ciclass SubpassDependency2 : public vk::VkSubpassDependency2 140e5c31af7Sopenharmony_ci{ 141e5c31af7Sopenharmony_cipublic: 142e5c31af7Sopenharmony_ci SubpassDependency2 (const void* pNext, 143e5c31af7Sopenharmony_ci deUint32 srcSubpass, 144e5c31af7Sopenharmony_ci deUint32 dstSubpass, 145e5c31af7Sopenharmony_ci VkPipelineStageFlags srcStageMask, 146e5c31af7Sopenharmony_ci VkPipelineStageFlags dstStageMask, 147e5c31af7Sopenharmony_ci VkAccessFlags srcAccessMask, 148e5c31af7Sopenharmony_ci VkAccessFlags dstAccessMask, 149e5c31af7Sopenharmony_ci VkDependencyFlags dependencyFlags, 150e5c31af7Sopenharmony_ci deInt32 viewOffset); 151e5c31af7Sopenharmony_ci}; 152e5c31af7Sopenharmony_ci 153e5c31af7Sopenharmony_ciclass RenderPassCreateInfo1 : public VkRenderPassCreateInfo 154e5c31af7Sopenharmony_ci{ 155e5c31af7Sopenharmony_cipublic: 156e5c31af7Sopenharmony_ci RenderPassCreateInfo1 (const void* pNext, 157e5c31af7Sopenharmony_ci VkRenderPassCreateFlags flags, 158e5c31af7Sopenharmony_ci deUint32 attachmentCount, 159e5c31af7Sopenharmony_ci const VkAttachmentDescription* pAttachments, 160e5c31af7Sopenharmony_ci deUint32 subpassCount, 161e5c31af7Sopenharmony_ci const VkSubpassDescription* pSubpasses, 162e5c31af7Sopenharmony_ci deUint32 dependencyCount, 163e5c31af7Sopenharmony_ci const VkSubpassDependency* pDependencies, 164e5c31af7Sopenharmony_ci deUint32 correlatedViewMaskCount, 165e5c31af7Sopenharmony_ci const deUint32* pCorrelatedViewMasks); 166e5c31af7Sopenharmony_ci 167e5c31af7Sopenharmony_ci Move<VkRenderPass> createRenderPass (const DeviceInterface& vk, 168e5c31af7Sopenharmony_ci VkDevice device) const; 169e5c31af7Sopenharmony_ci}; 170e5c31af7Sopenharmony_ci 171e5c31af7Sopenharmony_ciclass RenderPassCreateInfo2 : public VkRenderPassCreateInfo2 172e5c31af7Sopenharmony_ci{ 173e5c31af7Sopenharmony_cipublic: 174e5c31af7Sopenharmony_ci RenderPassCreateInfo2 (const void* pNext, 175e5c31af7Sopenharmony_ci VkRenderPassCreateFlags flags, 176e5c31af7Sopenharmony_ci deUint32 attachmentCount, 177e5c31af7Sopenharmony_ci const VkAttachmentDescription2* pAttachments, 178e5c31af7Sopenharmony_ci deUint32 subpassCount, 179e5c31af7Sopenharmony_ci const VkSubpassDescription2* pSubpasses, 180e5c31af7Sopenharmony_ci deUint32 dependencyCount, 181e5c31af7Sopenharmony_ci const VkSubpassDependency2* pDependencies, 182e5c31af7Sopenharmony_ci deUint32 correlatedViewMaskCount, 183e5c31af7Sopenharmony_ci const deUint32* pCorrelatedViewMasks); 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ci Move<VkRenderPass> createRenderPass (const DeviceInterface& vk, 186e5c31af7Sopenharmony_ci VkDevice device) const; 187e5c31af7Sopenharmony_ci}; 188e5c31af7Sopenharmony_ci 189e5c31af7Sopenharmony_ciclass SubpassBeginInfo1 190e5c31af7Sopenharmony_ci{ 191e5c31af7Sopenharmony_cipublic: 192e5c31af7Sopenharmony_ci SubpassBeginInfo1 (const void* pNext, 193e5c31af7Sopenharmony_ci VkSubpassContents contents); 194e5c31af7Sopenharmony_ci 195e5c31af7Sopenharmony_ci VkSubpassContents contents; 196e5c31af7Sopenharmony_ci}; 197e5c31af7Sopenharmony_ci 198e5c31af7Sopenharmony_ciclass SubpassBeginInfo2 : public VkSubpassBeginInfo 199e5c31af7Sopenharmony_ci{ 200e5c31af7Sopenharmony_cipublic: 201e5c31af7Sopenharmony_ci SubpassBeginInfo2 (const void* pNext, 202e5c31af7Sopenharmony_ci VkSubpassContents contents); 203e5c31af7Sopenharmony_ci}; 204e5c31af7Sopenharmony_ci 205e5c31af7Sopenharmony_ciclass SubpassEndInfo1 206e5c31af7Sopenharmony_ci{ 207e5c31af7Sopenharmony_cipublic: 208e5c31af7Sopenharmony_ci SubpassEndInfo1 (const void* pNext); 209e5c31af7Sopenharmony_ci}; 210e5c31af7Sopenharmony_ci 211e5c31af7Sopenharmony_ciclass SubpassEndInfo2 : public VkSubpassEndInfo 212e5c31af7Sopenharmony_ci{ 213e5c31af7Sopenharmony_cipublic: 214e5c31af7Sopenharmony_ci SubpassEndInfo2 (const void* pNext); 215e5c31af7Sopenharmony_ci}; 216e5c31af7Sopenharmony_ci 217e5c31af7Sopenharmony_ciclass RenderpassSubpass1 218e5c31af7Sopenharmony_ci{ 219e5c31af7Sopenharmony_cipublic: 220e5c31af7Sopenharmony_ci typedef SubpassBeginInfo1 SubpassBeginInfo; 221e5c31af7Sopenharmony_ci typedef SubpassEndInfo1 SubpassEndInfo; 222e5c31af7Sopenharmony_ci 223e5c31af7Sopenharmony_ci static void cmdBeginRenderPass (const DeviceInterface& vk, 224e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 225e5c31af7Sopenharmony_ci const VkRenderPassBeginInfo* pRenderPassBegin, 226e5c31af7Sopenharmony_ci const SubpassBeginInfo* pSubpassBeginInfo); 227e5c31af7Sopenharmony_ci 228e5c31af7Sopenharmony_ci static void cmdNextSubpass (const DeviceInterface& vk, 229e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 230e5c31af7Sopenharmony_ci const SubpassBeginInfo* pSubpassBeginInfo, 231e5c31af7Sopenharmony_ci const SubpassEndInfo* pSubpassEndInfo); 232e5c31af7Sopenharmony_ci 233e5c31af7Sopenharmony_ci static void cmdEndRenderPass (const DeviceInterface& vk, 234e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 235e5c31af7Sopenharmony_ci const SubpassEndInfo* pSubpassEndInfo); 236e5c31af7Sopenharmony_ci}; 237e5c31af7Sopenharmony_ci 238e5c31af7Sopenharmony_ciclass RenderpassSubpass2 239e5c31af7Sopenharmony_ci{ 240e5c31af7Sopenharmony_cipublic: 241e5c31af7Sopenharmony_ci typedef SubpassBeginInfo2 SubpassBeginInfo; 242e5c31af7Sopenharmony_ci typedef SubpassEndInfo2 SubpassEndInfo; 243e5c31af7Sopenharmony_ci 244e5c31af7Sopenharmony_ci static void cmdBeginRenderPass (const DeviceInterface& vk, 245e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 246e5c31af7Sopenharmony_ci const VkRenderPassBeginInfo* pRenderPassBegin, 247e5c31af7Sopenharmony_ci const SubpassBeginInfo* pSubpassBeginInfo); 248e5c31af7Sopenharmony_ci 249e5c31af7Sopenharmony_ci static void cmdNextSubpass (const DeviceInterface& vk, 250e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 251e5c31af7Sopenharmony_ci const SubpassBeginInfo* pSubpassBeginInfo, 252e5c31af7Sopenharmony_ci const SubpassEndInfo* pSubpassEndInfo); 253e5c31af7Sopenharmony_ci 254e5c31af7Sopenharmony_ci static void cmdEndRenderPass (const DeviceInterface& vk, 255e5c31af7Sopenharmony_ci VkCommandBuffer cmdBuffer, 256e5c31af7Sopenharmony_ci const SubpassEndInfo* pSubpassEndInfo); 257e5c31af7Sopenharmony_ci}; 258e5c31af7Sopenharmony_ci 259e5c31af7Sopenharmony_ci// For internal to RP/RP2 conversions 260e5c31af7Sopenharmony_ci 261e5c31af7Sopenharmony_ciclass AttachmentReference 262e5c31af7Sopenharmony_ci{ 263e5c31af7Sopenharmony_cipublic: 264e5c31af7Sopenharmony_ci AttachmentReference (deUint32 attachment, 265e5c31af7Sopenharmony_ci VkImageLayout layout, 266e5c31af7Sopenharmony_ci VkImageAspectFlags aspectMask = static_cast<VkImageAspectFlags>(0u)); 267e5c31af7Sopenharmony_ci 268e5c31af7Sopenharmony_ci deUint32 getAttachment (void) const; 269e5c31af7Sopenharmony_ci VkImageLayout getImageLayout (void) const; 270e5c31af7Sopenharmony_ci VkImageAspectFlags getAspectMask (void) const; 271e5c31af7Sopenharmony_ci void setImageLayout (VkImageLayout layout); 272e5c31af7Sopenharmony_ci 273e5c31af7Sopenharmony_ciprivate: 274e5c31af7Sopenharmony_ci deUint32 m_attachment; 275e5c31af7Sopenharmony_ci VkImageLayout m_layout; 276e5c31af7Sopenharmony_ci VkImageAspectFlags m_aspectMask; 277e5c31af7Sopenharmony_ci}; 278e5c31af7Sopenharmony_ci 279e5c31af7Sopenharmony_ciclass Subpass 280e5c31af7Sopenharmony_ci{ 281e5c31af7Sopenharmony_cipublic: 282e5c31af7Sopenharmony_ci Subpass (VkPipelineBindPoint pipelineBindPoint, 283e5c31af7Sopenharmony_ci VkSubpassDescriptionFlags flags, 284e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& inputAttachments, 285e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& colorAttachments, 286e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& resolveAttachments, 287e5c31af7Sopenharmony_ci AttachmentReference depthStencilAttachment, 288e5c31af7Sopenharmony_ci const std::vector<deUint32>& preserveAttachments, 289e5c31af7Sopenharmony_ci bool omitBlendState = false); 290e5c31af7Sopenharmony_ci 291e5c31af7Sopenharmony_ci VkPipelineBindPoint getPipelineBindPoint (void) const; 292e5c31af7Sopenharmony_ci VkSubpassDescriptionFlags getFlags (void) const; 293e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& getInputAttachments (void) const; 294e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& getColorAttachments (void) const; 295e5c31af7Sopenharmony_ci const std::vector<AttachmentReference>& getResolveAttachments (void) const; 296e5c31af7Sopenharmony_ci const AttachmentReference& getDepthStencilAttachment (void) const; 297e5c31af7Sopenharmony_ci const std::vector<deUint32>& getPreserveAttachments (void) const; 298e5c31af7Sopenharmony_ci bool getOmitBlendState (void) const; 299e5c31af7Sopenharmony_ci 300e5c31af7Sopenharmony_ciprivate: 301e5c31af7Sopenharmony_ci VkPipelineBindPoint m_pipelineBindPoint; 302e5c31af7Sopenharmony_ci VkSubpassDescriptionFlags m_flags; 303e5c31af7Sopenharmony_ci 304e5c31af7Sopenharmony_ci std::vector<AttachmentReference> m_inputAttachments; 305e5c31af7Sopenharmony_ci std::vector<AttachmentReference> m_colorAttachments; 306e5c31af7Sopenharmony_ci std::vector<AttachmentReference> m_resolveAttachments; 307e5c31af7Sopenharmony_ci AttachmentReference m_depthStencilAttachment; 308e5c31af7Sopenharmony_ci 309e5c31af7Sopenharmony_ci std::vector<deUint32> m_preserveAttachments; 310e5c31af7Sopenharmony_ci bool m_omitBlendState; 311e5c31af7Sopenharmony_ci}; 312e5c31af7Sopenharmony_ci 313e5c31af7Sopenharmony_ciclass SubpassDependency 314e5c31af7Sopenharmony_ci{ 315e5c31af7Sopenharmony_cipublic: 316e5c31af7Sopenharmony_ci SubpassDependency (deUint32 srcPass, 317e5c31af7Sopenharmony_ci deUint32 dstPass, 318e5c31af7Sopenharmony_ci 319e5c31af7Sopenharmony_ci VkPipelineStageFlags srcStageMask, 320e5c31af7Sopenharmony_ci VkPipelineStageFlags dstStageMask, 321e5c31af7Sopenharmony_ci 322e5c31af7Sopenharmony_ci VkAccessFlags srcAccessMask, 323e5c31af7Sopenharmony_ci VkAccessFlags dstAccessMask, 324e5c31af7Sopenharmony_ci 325e5c31af7Sopenharmony_ci VkDependencyFlags flags); 326e5c31af7Sopenharmony_ci 327e5c31af7Sopenharmony_ci deUint32 getSrcPass (void) const; 328e5c31af7Sopenharmony_ci deUint32 getDstPass (void) const; 329e5c31af7Sopenharmony_ci 330e5c31af7Sopenharmony_ci VkPipelineStageFlags getSrcStageMask (void) const; 331e5c31af7Sopenharmony_ci VkPipelineStageFlags getDstStageMask (void) const; 332e5c31af7Sopenharmony_ci 333e5c31af7Sopenharmony_ci VkAccessFlags getSrcAccessMask (void) const; 334e5c31af7Sopenharmony_ci VkAccessFlags getDstAccessMask (void) const; 335e5c31af7Sopenharmony_ci 336e5c31af7Sopenharmony_ci VkDependencyFlags getFlags (void) const; 337e5c31af7Sopenharmony_ci 338e5c31af7Sopenharmony_ciprivate: 339e5c31af7Sopenharmony_ci deUint32 m_srcPass; 340e5c31af7Sopenharmony_ci deUint32 m_dstPass; 341e5c31af7Sopenharmony_ci 342e5c31af7Sopenharmony_ci VkPipelineStageFlags m_srcStageMask; 343e5c31af7Sopenharmony_ci VkPipelineStageFlags m_dstStageMask; 344e5c31af7Sopenharmony_ci 345e5c31af7Sopenharmony_ci VkAccessFlags m_srcAccessMask; 346e5c31af7Sopenharmony_ci VkAccessFlags m_dstAccessMask; 347e5c31af7Sopenharmony_ci VkDependencyFlags m_flags; 348e5c31af7Sopenharmony_ci}; 349e5c31af7Sopenharmony_ci 350e5c31af7Sopenharmony_ciclass Attachment 351e5c31af7Sopenharmony_ci{ 352e5c31af7Sopenharmony_cipublic: 353e5c31af7Sopenharmony_ci Attachment (VkFormat format, 354e5c31af7Sopenharmony_ci VkSampleCountFlagBits samples, 355e5c31af7Sopenharmony_ci 356e5c31af7Sopenharmony_ci VkAttachmentLoadOp loadOp, 357e5c31af7Sopenharmony_ci VkAttachmentStoreOp storeOp, 358e5c31af7Sopenharmony_ci 359e5c31af7Sopenharmony_ci VkAttachmentLoadOp stencilLoadOp, 360e5c31af7Sopenharmony_ci VkAttachmentStoreOp stencilStoreOp, 361e5c31af7Sopenharmony_ci 362e5c31af7Sopenharmony_ci VkImageLayout initialLayout, 363e5c31af7Sopenharmony_ci VkImageLayout finalLayout); 364e5c31af7Sopenharmony_ci 365e5c31af7Sopenharmony_ci VkFormat getFormat (void) const; 366e5c31af7Sopenharmony_ci VkSampleCountFlagBits getSamples (void) const; 367e5c31af7Sopenharmony_ci 368e5c31af7Sopenharmony_ci VkAttachmentLoadOp getLoadOp (void) const; 369e5c31af7Sopenharmony_ci VkAttachmentStoreOp getStoreOp (void) const; 370e5c31af7Sopenharmony_ci 371e5c31af7Sopenharmony_ci VkAttachmentLoadOp getStencilLoadOp (void) const; 372e5c31af7Sopenharmony_ci VkAttachmentStoreOp getStencilStoreOp (void) const; 373e5c31af7Sopenharmony_ci 374e5c31af7Sopenharmony_ci VkImageLayout getInitialLayout (void) const; 375e5c31af7Sopenharmony_ci VkImageLayout getFinalLayout (void) const; 376e5c31af7Sopenharmony_ci 377e5c31af7Sopenharmony_ciprivate: 378e5c31af7Sopenharmony_ci VkFormat m_format; 379e5c31af7Sopenharmony_ci VkSampleCountFlagBits m_samples; 380e5c31af7Sopenharmony_ci 381e5c31af7Sopenharmony_ci VkAttachmentLoadOp m_loadOp; 382e5c31af7Sopenharmony_ci VkAttachmentStoreOp m_storeOp; 383e5c31af7Sopenharmony_ci 384e5c31af7Sopenharmony_ci VkAttachmentLoadOp m_stencilLoadOp; 385e5c31af7Sopenharmony_ci VkAttachmentStoreOp m_stencilStoreOp; 386e5c31af7Sopenharmony_ci 387e5c31af7Sopenharmony_ci VkImageLayout m_initialLayout; 388e5c31af7Sopenharmony_ci VkImageLayout m_finalLayout; 389e5c31af7Sopenharmony_ci}; 390e5c31af7Sopenharmony_ci 391e5c31af7Sopenharmony_ciclass RenderPass 392e5c31af7Sopenharmony_ci{ 393e5c31af7Sopenharmony_cipublic: 394e5c31af7Sopenharmony_ci RenderPass (const std::vector<Attachment>& attachments, 395e5c31af7Sopenharmony_ci const std::vector<Subpass>& subpasses, 396e5c31af7Sopenharmony_ci const std::vector<SubpassDependency>& dependencies, 397e5c31af7Sopenharmony_ci const std::vector<VkInputAttachmentAspectReference> inputAspects = std::vector<VkInputAttachmentAspectReference>()); 398e5c31af7Sopenharmony_ci 399e5c31af7Sopenharmony_ci const std::vector<Attachment>& getAttachments (void) const; 400e5c31af7Sopenharmony_ci const std::vector<Subpass>& getSubpasses (void) const; 401e5c31af7Sopenharmony_ci const std::vector<SubpassDependency>& getDependencies (void) const; 402e5c31af7Sopenharmony_ci const std::vector<VkInputAttachmentAspectReference>& getInputAspects (void) const; 403e5c31af7Sopenharmony_ci 404e5c31af7Sopenharmony_ciprivate: 405e5c31af7Sopenharmony_ci std::vector<Attachment> m_attachments; 406e5c31af7Sopenharmony_ci std::vector<Subpass> m_subpasses; 407e5c31af7Sopenharmony_ci std::vector<SubpassDependency> m_dependencies; 408e5c31af7Sopenharmony_ci std::vector<VkInputAttachmentAspectReference> m_inputAspects; 409e5c31af7Sopenharmony_ci}; 410e5c31af7Sopenharmony_ci 411e5c31af7Sopenharmony_ciMove<VkRenderPass> createRenderPass (const DeviceInterface& vk, 412e5c31af7Sopenharmony_ci VkDevice device, 413e5c31af7Sopenharmony_ci const RenderPass& renderPassInfo, 414e5c31af7Sopenharmony_ci RenderingType renderingType, 415e5c31af7Sopenharmony_ci SynchronizationType synchronizationType = SYNCHRONIZATION_TYPE_LEGACY); 416e5c31af7Sopenharmony_ci 417e5c31af7Sopenharmony_ci} // renderpass 418e5c31af7Sopenharmony_ci 419e5c31af7Sopenharmony_ci} // vkt 420e5c31af7Sopenharmony_ci 421e5c31af7Sopenharmony_ci#endif // _VKTRENDERPASSTESTSUTIL_HPP 422