diff --git a/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.cpp b/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.cpp index 5e2cd77c..b5066908 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.cpp +++ b/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.cpp @@ -4,6 +4,20 @@ #include "command_nodes.h" namespace skyline::gpu::interconnect::node { + RenderPassNode::RenderPassNode(vk::Rect2D renderArea) : subpassDependencies( + { + // We assume all past commands have been executed when this RP starts + vk::SubpassDependency{ + .srcSubpass = VK_SUBPASS_EXTERNAL, + .dstSubpass = 0, + .srcStageMask = vk::PipelineStageFlagBits::eAllGraphics, + .dstStageMask = vk::PipelineStageFlagBits::eAllGraphics, + .srcAccessMask = vk::AccessFlagBits::eMemoryRead | vk::AccessFlagBits::eMemoryWrite, + .dstAccessMask = vk::AccessFlagBits::eMemoryRead | vk::AccessFlagBits::eMemoryWrite, + } + } + ), storage(std::make_shared()), renderArea(renderArea) {} + RenderPassNode::Storage::~Storage() { if (device) { if (framebuffer) diff --git a/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.h b/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.h index 95da0c00..75061594 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/command_nodes.h @@ -64,7 +64,7 @@ namespace skyline::gpu::interconnect::node { vk::Rect2D renderArea; std::vector clearValues; - RenderPassNode(vk::Rect2D renderArea) : storage(std::make_shared()), renderArea(renderArea) {} + RenderPassNode(vk::Rect2D renderArea); /** * @note Any preservation of attachments from previous subpasses is automatically handled by this