MetalDevice: Fix render command encoder leak

and subsequent crash on shutdown.
This commit is contained in:
Stenzek 2023-08-24 18:04:30 +10:00
parent 08acc3144c
commit 1b9e72e3a6
1 changed files with 16 additions and 14 deletions

View File

@ -1829,21 +1829,23 @@ void MetalDevice::BeginRenderPass()
m_inline_upload_encoder = nil;
}
MTLRenderPassDescriptor* desc;
if (!m_current_framebuffer)
{
// Rendering to view, but we got interrupted...
desc = [MTLRenderPassDescriptor renderPassDescriptor];
desc.colorAttachments[0].texture = [m_layer_drawable texture];
desc.colorAttachments[0].loadAction = MTLLoadActionLoad;
}
else
{
desc = m_current_framebuffer->GetDescriptor();
}
@autoreleasepool {
MTLRenderPassDescriptor* desc;
if (!m_current_framebuffer)
{
// Rendering to view, but we got interrupted...
desc = [MTLRenderPassDescriptor renderPassDescriptor];
desc.colorAttachments[0].texture = [m_layer_drawable texture];
desc.colorAttachments[0].loadAction = MTLLoadActionLoad;
}
else
{
desc = m_current_framebuffer->GetDescriptor();
}
m_render_encoder = [m_render_cmdbuf renderCommandEncoderWithDescriptor:desc];
SetInitialEncoderState();
m_render_encoder = [[m_render_cmdbuf renderCommandEncoderWithDescriptor:desc] retain];
SetInitialEncoderState();
}
}
void MetalDevice::EndRenderPass()