diff --git a/src/kosmickrisp/bridge/mtl_command_buffer.m b/src/kosmickrisp/bridge/mtl_command_buffer.m index 3086bd293c2..d5b9174eaa7 100644 --- a/src/kosmickrisp/bridge/mtl_command_buffer.m +++ b/src/kosmickrisp/bridge/mtl_command_buffer.m @@ -38,8 +38,10 @@ mtl_add_completed_handler(mtl_command_buffer *cmd, void (*callback)(void *data), @autoreleasepool { id mtl_cmd = (id)cmd; [mtl_cmd addCompletedHandler:^(id _Nonnull cmd_buf) { - if (callback) - callback(data); + @autoreleasepool { + if (callback) + callback(data); + } }]; } } diff --git a/src/kosmickrisp/bridge/mtl_device.m b/src/kosmickrisp/bridge/mtl_device.m index 7427e4061e1..93b811a41ea 100644 --- a/src/kosmickrisp/bridge/mtl_device.m +++ b/src/kosmickrisp/bridge/mtl_device.m @@ -20,20 +20,20 @@ mtl_device_create() mtl_device *device = 0u; @autoreleasepool { - NSArray> *devs = MTLCopyAllDevices(); + NSArray> *devs = [MTLCopyAllDevices() autorelease]; uint32_t device_count = [devs count]; for (uint32_t i = 0u; i < device_count; ++i) { if (@available(macOS 10.15, *)) { if (!device && [devs[i] supportsFamily:MTLGPUFamilyMetal3]) { device = (mtl_device *)[devs[i] retain]; + break; } - [devs[i] autorelease]; } } - - return device; } + + return device; } /* Device operations */ diff --git a/src/kosmickrisp/compiler/nir_to_msl.c b/src/kosmickrisp/compiler/nir_to_msl.c index e9b5607a910..57fc1f982ad 100644 --- a/src/kosmickrisp/compiler/nir_to_msl.c +++ b/src/kosmickrisp/compiler/nir_to_msl.c @@ -2034,6 +2034,7 @@ nir_to_msl(nir_shader *shader, void *mem_ctx, uint64_t disabled_workarounds) ctx.indentlevel--; P(&ctx, "}\n"); char *ret = ctx.text->buf; + _mesa_hash_table_destroy(ctx.types, NULL); ralloc_steal(mem_ctx, ctx.text->buf); ralloc_free(ctx.text); return ret; diff --git a/src/kosmickrisp/vulkan/kk_sampler.c b/src/kosmickrisp/vulkan/kk_sampler.c index 04cba2d11cd..10389a28b88 100644 --- a/src/kosmickrisp/vulkan/kk_sampler.c +++ b/src/kosmickrisp/vulkan/kk_sampler.c @@ -126,7 +126,9 @@ kk_sampler_create(struct kk_device *dev, const struct mtl_sampler_packed *packed) { mtl_sampler_descriptor *desc = create_sampler_descriptor(packed); - return mtl_new_sampler(dev->mtl_handle, desc); + mtl_sampler *sampler = mtl_new_sampler(dev->mtl_handle, desc); + mtl_release(desc); + return sampler; } VKAPI_ATTR VkResult VKAPI_CALL