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

View file

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