summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2024-12-29 13:39:33 +1100
committerquou <quou@disroot.org>2024-12-29 13:40:12 +1100
commitc41a63370e54cc1e6e0c1b1dc20e219f3cac2845 (patch)
tree7a472534cd53c1cfb7f7160e4de6b5de68492224
parentdfd95c6e29c25c3ad9acc3e63a790da866339015 (diff)
fix depth only render passes
-rw-r--r--pipeline.cpp6
-rw-r--r--video.cpp6
2 files changed, 7 insertions, 5 deletions
diff --git a/pipeline.cpp b/pipeline.cpp
index c31ef69..8867a8d 100644
--- a/pipeline.cpp
+++ b/pipeline.cpp
@@ -93,8 +93,10 @@ void Pipeline_Builder::validate_rp() {
d.fmt == texture_format_d24s8 ||
d.fmt == texture_format_d32
);
- assert(d.w == w);
- assert(d.h == h);
+ if (c) {
+ assert(d.w == w);
+ assert(d.h == h);
+ }
}
}
diff --git a/video.cpp b/video.cpp
index ba6fd7c..5d88d0c 100644
--- a/video.cpp
+++ b/video.cpp
@@ -1522,17 +1522,17 @@ void Renderpass_Vk::init(
ad.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
ad.stencilLoadOp = ad.loadOp;
ad.stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
- if (rpk.is_first)
+ if (rpk.is_first || rp.depth.mode == Clear_Mode::clear)
ad.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
else
- ad.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ ad.initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
ad.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
dar.attachment = i;
dar.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
}
sd.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
- sd.colorAttachmentCount = 1;
+ sd.colorAttachmentCount = rp.colour_count;
sd.pColorAttachments = &car;
sd.pDepthStencilAttachment = has_depth? &dar: 0;