Vulkan: Encapsulate RenderTargetVk.
This makes the members private and adds more functionality. This moves
more responsibility out of vk::CommandGraphNode and also makes the
RenderPass init in the CommandGraphNode class better encapsulated.
Bug: angleproject:2539
Change-Id: Ia16f3f39cf011548c6473805b8b28e284808e856
Reviewed-on: https://chromium-review.googlesource.com/1040279
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/CommandGraph.cpp b/src/libANGLE/renderer/vulkan/CommandGraph.cpp
index 106e21b..54d0a0d 100644
--- a/src/libANGLE/renderer/vulkan/CommandGraph.cpp
+++ b/src/libANGLE/renderer/vulkan/CommandGraph.cpp
@@ -236,47 +236,15 @@
void CommandGraphNode::storeRenderPassInfo(const Framebuffer &framebuffer,
const gl::Rectangle renderArea,
+ const vk::RenderPassDesc &renderPassDesc,
const std::vector<VkClearValue> &clearValues)
{
+ mRenderPassDesc = renderPassDesc;
mRenderPassFramebuffer.setHandle(framebuffer.getHandle());
mRenderPassRenderArea = renderArea;
std::copy(clearValues.begin(), clearValues.end(), mRenderPassClearValues.begin());
}
-void CommandGraphNode::appendColorRenderTarget(Serial serial, RenderTargetVk *colorRenderTarget)
-{
- ASSERT(mOutsideRenderPassCommands.valid());
-
- // TODO(jmadill): Use automatic layout transition. http://anglebug.com/2361
- colorRenderTarget->image->changeLayoutWithStages(
- VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
- &mOutsideRenderPassCommands);
-
- mRenderPassDesc.packColorAttachment(*colorRenderTarget->image);
- colorRenderTarget->resource->onWriteResource(this, serial);
-}
-
-void CommandGraphNode::appendDepthStencilRenderTarget(Serial serial,
- RenderTargetVk *depthStencilRenderTarget)
-{
- ASSERT(mOutsideRenderPassCommands.valid());
- ASSERT(depthStencilRenderTarget->image->getFormat().textureFormat().hasDepthOrStencilBits());
-
- // TODO(jmadill): Use automatic layout transition. http://anglebug.com/2361
- const angle::Format &format = depthStencilRenderTarget->image->getFormat().textureFormat();
- VkImageAspectFlags aspectFlags = (format.depthBits > 0 ? VK_IMAGE_ASPECT_DEPTH_BIT : 0) |
- (format.stencilBits > 0 ? VK_IMAGE_ASPECT_STENCIL_BIT : 0);
-
- depthStencilRenderTarget->image->changeLayoutWithStages(
- aspectFlags, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
- &mOutsideRenderPassCommands);
-
- mRenderPassDesc.packDepthStencilAttachment(*depthStencilRenderTarget->image);
- depthStencilRenderTarget->resource->onWriteResource(this, serial);
-}
-
// static
void CommandGraphNode::SetHappensBeforeDependency(CommandGraphNode *beforeNode,
CommandGraphNode *afterNode)