GS:MTL: Don't start render passes with no targets

This commit is contained in:
TellowKrinkle 2023-03-06 00:14:18 -06:00 committed by lightningterror
parent 7a4ef32210
commit 98c611e404
1 changed files with 9 additions and 0 deletions

View File

@ -1710,6 +1710,15 @@ void GSDeviceMTL::RenderHW(GSHWDrawConfig& config)
config.ds = nullptr; config.ds = nullptr;
if (!config.ds && m_current_render.color_target == rt && stencil == m_current_render.stencil_target && m_current_render.depth_target != config.tex) if (!config.ds && m_current_render.color_target == rt && stencil == m_current_render.stencil_target && m_current_render.depth_target != config.tex)
config.ds = m_current_render.depth_target; config.ds = m_current_render.depth_target;
if (!rt && !config.ds)
{
// If we were rendering depth-only and depth gets cleared by the above check, that turns into rendering nothing, which should be a no-op
pxAssertDev(0, "RenderHW was given a completely useless draw call!");
[m_current_render.encoder insertDebugSignpost:@"Skipped no-color no-depth draw"];
if (primid_tex)
Recycle(primid_tex);
return;
}
BeginRenderPass(@"RenderHW", rt, MTLLoadActionLoad, config.ds, MTLLoadActionLoad, stencil, MTLLoadActionLoad); BeginRenderPass(@"RenderHW", rt, MTLLoadActionLoad, config.ds, MTLLoadActionLoad, stencil, MTLLoadActionLoad);
id<MTLRenderCommandEncoder> mtlenc = m_current_render.encoder; id<MTLRenderCommandEncoder> mtlenc = m_current_render.encoder;