fix: remaining memory leaks

This commit is contained in:
Samuliak 2024-07-07 13:50:27 +02:00
parent 23af64ade8
commit 7731787aa2
4 changed files with 5 additions and 1 deletions

View file

@ -70,6 +70,7 @@ struct RenderTarget {
descriptor->setStorageMode(MTL::StorageModePrivate); descriptor->setStorageMode(MTL::StorageModePrivate);
texture = device->newTexture(descriptor); texture = device->newTexture(descriptor);
texture->setLabel(toNSString(std::string(std::is_same<Format_t, PICA::ColorFmt>::value ? "Color" : "Depth") + " render target " + std::to_string(size.u()) + "x" + std::to_string(size.v()))); texture->setLabel(toNSString(std::string(std::is_same<Format_t, PICA::ColorFmt>::value ? "Color" : "Depth") + " render target " + std::to_string(size.u()) + "x" + std::to_string(size.v())));
descriptor->release();
} }
void free() { void free() {

View file

@ -103,6 +103,8 @@ class RendererMTL final : public Renderer {
lastColorTexture = colorTexture; lastColorTexture = colorTexture;
lastDepthTexture = depthTexture; lastDepthTexture = depthTexture;
} }
renderPassDescriptor->release();
} }
void commitCommandBuffer() { void commitCommandBuffer() {

View file

@ -18,6 +18,7 @@ void Texture::allocate() {
descriptor->setStorageMode(MTL::StorageModeShared); // TODO: use private + staging buffers? descriptor->setStorageMode(MTL::StorageModeShared); // TODO: use private + staging buffers?
texture = device->newTexture(descriptor); texture = device->newTexture(descriptor);
texture->setLabel(toNSString("Texture " + std::to_string(size.u()) + "x" + std::to_string(size.v()))); texture->setLabel(toNSString("Texture " + std::to_string(size.u()) + "x" + std::to_string(size.v())));
descriptor->release();
setNewConfig(config); setNewConfig(config);
} }
@ -43,6 +44,7 @@ void Texture::setNewConfig(u32 cfg) {
samplerDescriptor->setLabel(toNSString("Sampler")); samplerDescriptor->setLabel(toNSString("Sampler"));
sampler = device->newSamplerState(samplerDescriptor); sampler = device->newSamplerState(samplerDescriptor);
samplerDescriptor->release();
} }
void Texture::free() { void Texture::free() {

View file

@ -86,7 +86,6 @@ void RendererMTL::display() {
nextRenderPassName = "Display"; nextRenderPassName = "Display";
beginRenderPassIfNeeded(renderPassDescriptor, false, drawable->texture()); beginRenderPassIfNeeded(renderPassDescriptor, false, drawable->texture());
renderPassDescriptor->release();
renderCommandEncoder->setRenderPipelineState(displayPipeline); renderCommandEncoder->setRenderPipelineState(displayPipeline);
renderCommandEncoder->setFragmentSamplerState(nearestSampler, 0); renderCommandEncoder->setFragmentSamplerState(nearestSampler, 0);