MetalDevice: Defer release of layer drawables

This commit is contained in:
Stenzek 2023-12-18 20:16:36 +10:00
parent f4fb069216
commit 9e82c18559
No known key found for this signature in database
1 changed files with 3 additions and 2 deletions

View File

@ -394,11 +394,12 @@ void MetalDevice::RenderBlankFrame()
@autoreleasepool
{
id<MTLDrawable> drawable = [m_layer nextDrawable];
id<MTLDrawable> drawable = [[m_layer nextDrawable] retain];
m_layer_pass_desc.colorAttachments[0].texture = [drawable texture];
id<MTLRenderCommandEncoder> encoder = [m_render_cmdbuf renderCommandEncoderWithDescriptor:m_layer_pass_desc];
[encoder endEncoding];
[m_render_cmdbuf presentDrawable:drawable];
DeferRelease(drawable);
SubmitCommandBuffer();
}
}
@ -2019,7 +2020,7 @@ void MetalDevice::EndPresent()
EndAnyEncoding();
[m_render_cmdbuf presentDrawable:m_layer_drawable];
[m_layer_drawable release];
DeferRelease(m_layer_drawable);
m_layer_drawable = nil;
SubmitCommandBuffer();
TrimTexturePool();