|
|
|
@ -571,7 +571,7 @@ RasterizerVulkan::Texceptions RasterizerVulkan::UpdateAttachments() {
|
|
|
|
|
color_attachments[rt] = texture_cache.GetColorBufferSurface(rt, true);
|
|
|
|
|
}
|
|
|
|
|
if (color_attachments[rt] && WalkAttachmentOverlaps(*color_attachments[rt])) {
|
|
|
|
|
texceptions.set(rt);
|
|
|
|
|
texceptions[rt] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -579,7 +579,7 @@ RasterizerVulkan::Texceptions RasterizerVulkan::UpdateAttachments() {
|
|
|
|
|
zeta_attachment = texture_cache.GetDepthBufferSurface(true);
|
|
|
|
|
}
|
|
|
|
|
if (zeta_attachment && WalkAttachmentOverlaps(*zeta_attachment)) {
|
|
|
|
|
texceptions.set(ZETA_TEXCEPTION_INDEX);
|
|
|
|
|
texceptions[ZETA_TEXCEPTION_INDEX] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
texture_cache.GuardRenderTargets(false);
|
|
|
|
@ -1122,11 +1122,12 @@ RenderPassParams RasterizerVulkan::GetRenderPassParams(Texceptions texceptions)
|
|
|
|
|
|
|
|
|
|
for (std::size_t rt = 0; rt < static_cast<std::size_t>(regs.rt_control.count); ++rt) {
|
|
|
|
|
const auto& rendertarget = regs.rt[rt];
|
|
|
|
|
if (rendertarget.Address() == 0 || rendertarget.format == Tegra::RenderTargetFormat::NONE)
|
|
|
|
|
if (rendertarget.Address() == 0 || rendertarget.format == Tegra::RenderTargetFormat::NONE) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
renderpass_params.color_attachments.push_back(RenderPassParams::ColorAttachment{
|
|
|
|
|
static_cast<u32>(rt), PixelFormatFromRenderTargetFormat(rendertarget.format),
|
|
|
|
|
texceptions.test(rt)});
|
|
|
|
|
texceptions[rt]});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderpass_params.has_zeta = regs.zeta_enable;
|
|
|
|
|