Merge pull request #14435 from Simonx22/fix/metal-early-stop-shutdown

Metal: Always run endEncoding on command encoders
This commit is contained in:
JMC47
2026-03-03 12:25:16 -05:00
committed by GitHub
@@ -383,11 +383,14 @@ void Metal::StateTracker::EndRenderPass()
void Metal::StateTracker::FlushEncoders() void Metal::StateTracker::FlushEncoders()
{ {
if (!m_current_render_cmdbuf) const bool needs_submit = m_current_render_cmdbuf;
return; if (needs_submit)
{
EndRenderPass(); EndRenderPass();
for (int i = 0; i <= static_cast<int>(UploadBuffer::Last); ++i) for (int i = 0; i <= static_cast<int>(UploadBuffer::Last); ++i)
Sync(m_upload_buffers[i]); Sync(m_upload_buffers[i]);
}
if (!m_manual_buffer_upload) if (!m_manual_buffer_upload)
{ {
ASSERT(!m_upload_cmdbuf && "Should never be used!"); ASSERT(!m_upload_cmdbuf && "Should never be used!");
@@ -407,6 +410,10 @@ void Metal::StateTracker::FlushEncoders()
m_texture_upload_encoder = nullptr; m_texture_upload_encoder = nullptr;
m_texture_upload_cmdbuf = nullptr; m_texture_upload_cmdbuf = nullptr;
} }
if (!needs_submit)
return;
[m_current_render_cmdbuf [m_current_render_cmdbuf
addCompletedHandler:[backref = m_backref, draw = m_current_draw, addCompletedHandler:[backref = m_backref, draw = m_current_draw,
q = std::move(m_current_perf_query)](id<MTLCommandBuffer> buf) { q = std::move(m_current_perf_query)](id<MTLCommandBuffer> buf) {