blob: 1e80c3e1868635adc33d3f696485c7d4fe3ca66a [file] [log] [blame]
#ifndef _VKTMULTIVIEWRENDERPASSUTIL_HPP
#define _VKTMULTIVIEWRENDERPASSUTIL_HPP
/*------------------------------------------------------------------------
* Vulkan Conformance Tests
* ------------------------
*
* Copyright (c) 2018 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*//*!
* \file
* \brief RenderPass utils
*//*--------------------------------------------------------------------*/
#include "tcuDefs.hpp"
#include "vkRef.hpp"
#include "vkDefs.hpp"
#include "vkTypeUtil.hpp"
namespace vkt
{
namespace MultiView
{
using namespace vk;
class AttachmentDescription1 : public vk::VkAttachmentDescription
{
public:
AttachmentDescription1 (const void* pNext,
VkAttachmentDescriptionFlags flags,
VkFormat format,
VkSampleCountFlagBits samples,
VkAttachmentLoadOp loadOp,
VkAttachmentStoreOp storeOp,
VkAttachmentLoadOp stencilLoadOp,
VkAttachmentStoreOp stencilStoreOp,
VkImageLayout initialLayout,
VkImageLayout finalLayout);
};
class AttachmentDescription2 : public vk::VkAttachmentDescription2KHR
{
public:
AttachmentDescription2 (const void* pNext,
VkAttachmentDescriptionFlags flags,
VkFormat format,
VkSampleCountFlagBits samples,
VkAttachmentLoadOp loadOp,
VkAttachmentStoreOp storeOp,
VkAttachmentLoadOp stencilLoadOp,
VkAttachmentStoreOp stencilStoreOp,
VkImageLayout initialLayout,
VkImageLayout finalLayout);
};
class AttachmentReference1 : public vk::VkAttachmentReference
{
public:
AttachmentReference1 (const void* pNext,
deUint32 attachment,
VkImageLayout layout,
VkImageAspectFlags aspectMask);
};
class AttachmentReference2 : public vk::VkAttachmentReference2KHR
{
public:
AttachmentReference2 (const void* pNext,
deUint32 attachment,
VkImageLayout layout,
VkImageAspectFlags aspectMask);
};
class SubpassDescription1 : public vk::VkSubpassDescription
{
public:
SubpassDescription1 (const void* pNext,
VkSubpassDescriptionFlags flags,
VkPipelineBindPoint pipelineBindPoint,
deUint32 viewMask,
deUint32 inputAttachmentCount,
const VkAttachmentReference* pInputAttachments,
deUint32 colorAttachmentCount,
const VkAttachmentReference* pColorAttachments,
const VkAttachmentReference* pResolveAttachments,
const VkAttachmentReference* pDepthStencilAttachment,
deUint32 preserveAttachmentCount,
const deUint32* pPreserveAttachments);
};
class SubpassDescription2 : public vk::VkSubpassDescription2KHR
{
public:
SubpassDescription2 (const void* pNext,
VkSubpassDescriptionFlags flags,
VkPipelineBindPoint pipelineBindPoint,
deUint32 viewMask,
deUint32 inputAttachmentCount,
const VkAttachmentReference2KHR* pInputAttachments,
deUint32 colorAttachmentCount,
const VkAttachmentReference2KHR* pColorAttachments,
const VkAttachmentReference2KHR* pResolveAttachments,
const VkAttachmentReference2KHR* pDepthStencilAttachment,
deUint32 preserveAttachmentCount,
const deUint32* pPreserveAttachments);
};
class SubpassDependency1 : public vk::VkSubpassDependency
{
public:
SubpassDependency1 (const void* pNext,
deUint32 srcSubpass,
deUint32 dstSubpass,
VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkAccessFlags srcAccessMask,
VkAccessFlags dstAccessMask,
VkDependencyFlags dependencyFlags,
deInt32 viewOffset);
};
class SubpassDependency2 : public vk::VkSubpassDependency2KHR
{
public:
SubpassDependency2 (const void* pNext,
deUint32 srcSubpass,
deUint32 dstSubpass,
VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkAccessFlags srcAccessMask,
VkAccessFlags dstAccessMask,
VkDependencyFlags dependencyFlags,
deInt32 viewOffset);
};
class RenderPassCreateInfo1 : public VkRenderPassCreateInfo
{
public:
RenderPassCreateInfo1 (const void* pNext,
VkRenderPassCreateFlags flags,
deUint32 attachmentCount,
const VkAttachmentDescription* pAttachments,
deUint32 subpassCount,
const VkSubpassDescription* pSubpasses,
deUint32 dependencyCount,
const VkSubpassDependency* pDependencies,
deUint32 correlatedViewMaskCount,
const deUint32* pCorrelatedViewMasks);
Move<VkRenderPass> createRenderPass (const DeviceInterface& vk,
VkDevice device) const;
};
class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2KHR
{
public:
RenderPassCreateInfo2 (const void* pNext,
VkRenderPassCreateFlags flags,
deUint32 attachmentCount,
const VkAttachmentDescription2KHR* pAttachments,
deUint32 subpassCount,
const VkSubpassDescription2KHR* pSubpasses,
deUint32 dependencyCount,
const VkSubpassDependency2KHR* pDependencies,
deUint32 correlatedViewMaskCount,
const deUint32* pCorrelatedViewMasks);
Move<VkRenderPass> createRenderPass (const DeviceInterface& vk,
VkDevice device) const;
};
class SubpassBeginInfo1
{
public:
SubpassBeginInfo1 (const void* pNext,
VkSubpassContents contents);
VkSubpassContents contents;
};
class SubpassBeginInfo2 : public VkSubpassBeginInfoKHR
{
public:
SubpassBeginInfo2 (const void* pNext,
VkSubpassContents contents);
};
class SubpassEndInfo1
{
public:
SubpassEndInfo1 (const void* pNext);
};
class SubpassEndInfo2 : public VkSubpassEndInfoKHR
{
public:
SubpassEndInfo2 (const void* pNext);
};
class RenderpassSubpass1
{
public:
typedef SubpassBeginInfo1 SubpassBeginInfo;
typedef SubpassEndInfo1 SubpassEndInfo;
static void cmdBeginRenderPass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
const SubpassBeginInfo* pSubpassBeginInfo);
static void cmdNextSubpass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const SubpassBeginInfo* pSubpassBeginInfo,
const SubpassEndInfo* pSubpassEndInfo);
static void cmdEndRenderPass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const SubpassEndInfo* pSubpassEndInfo);
};
class RenderpassSubpass2
{
public:
typedef SubpassBeginInfo2 SubpassBeginInfo;
typedef SubpassEndInfo2 SubpassEndInfo;
static void cmdBeginRenderPass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
const SubpassBeginInfo* pSubpassBeginInfo);
static void cmdNextSubpass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const SubpassBeginInfo* pSubpassBeginInfo,
const SubpassEndInfo* pSubpassEndInfo);
static void cmdEndRenderPass (const DeviceInterface& vk,
VkCommandBuffer cmdBuffer,
const SubpassEndInfo* pSubpassEndInfo);
};
} // renderpass
} // vkt
#endif // _VKTMULTIVIEWRENDERPASSUTIL_HPP