From 5d7c47a4696f69e49a3085f9ea70397c47c0db4a Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 17 Nov 2023 20:55:36 -0800 Subject: [PATCH] renderer/metal: clean up some memory management --- src/App.zig | 35 ---------------------------------- src/renderer/metal/shaders.zig | 9 +++++++++ 2 files changed, 9 insertions(+), 35 deletions(-) diff --git a/src/App.zig b/src/App.zig index 4536a2f69..a09860a86 100644 --- a/src/App.zig +++ b/src/App.zig @@ -73,41 +73,6 @@ pub fn create( }; errdefer app.surfaces.deinit(alloc); - // TODO: remove this temporary crap - // const glslang = @import("glslang"); - // try glslang.init(); - // { - // const c = glslang.c; - // const glsl_input: c.glslang_input_t = .{ - // .language = c.GLSLANG_SOURCE_GLSL, - // .stage = c.GLSLANG_STAGE_FRAGMENT, - // .client = c.GLSLANG_CLIENT_VULKAN, - // .client_version = c.GLSLANG_TARGET_VULKAN_1_2, - // .target_language = c.GLSLANG_TARGET_SPV, - // .target_language_version = c.GLSLANG_TARGET_SPV_1_5, - // .code = @embedFile("temp.frag"), - // .default_version = 100, - // .default_profile = c.GLSLANG_NO_PROFILE, - // .force_default_version_and_profile = 0, - // .forward_compatible = 0, - // .messages = c.GLSLANG_MSG_DEFAULT_BIT, - // .resource = c.glslang_default_resource(), - // }; - // - // const shader = try glslang.Shader.create(&glsl_input); - // defer shader.delete(); - // try shader.preprocess(&glsl_input); - // try shader.parse(&glsl_input); - // - // const program = try glslang.Program.create(); - // defer program.delete(); - // program.addShader(shader); - // try program.link(c.GLSLANG_MSG_SPV_RULES_BIT | c.GLSLANG_MSG_VULKAN_RULES_BIT); - // program.spirvGenerate(c.GLSLANG_STAGE_FRAGMENT); - // const size = program.spirvGetSize(); - // log.warn("SPIRV PROGRAM size={d}", .{size}); - // } - return app; } diff --git a/src/renderer/metal/shaders.zig b/src/renderer/metal/shaders.zig index 32f775a50..030ae2b6c 100644 --- a/src/renderer/metal/shaders.zig +++ b/src/renderer/metal/shaders.zig @@ -254,6 +254,8 @@ fn initPostPipeline( const ptr = post_library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str}); break :func_frag objc.Object.fromId(ptr.?); }; + defer func_vert.msgSend(void, objc.sel("release"), .{}); + defer func_frag.msgSend(void, objc.sel("release"), .{}); // Create our descriptor const desc = init: { @@ -262,6 +264,7 @@ fn initPostPipeline( const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{}); break :init id_init; }; + defer desc.msgSend(void, objc.sel("release"), .{}); desc.setProperty("vertexFunction", func_vert); desc.setProperty("fragmentFunction", func_frag); @@ -315,6 +318,8 @@ fn initCellPipeline(device: objc.Object, library: objc.Object) !objc.Object { const ptr = library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str}); break :func_frag objc.Object.fromId(ptr.?); }; + defer func_vert.msgSend(void, objc.sel("release"), .{}); + defer func_frag.msgSend(void, objc.sel("release"), .{}); // Create the vertex descriptor. The vertex descriptor describes the // data layout of the vertex inputs. We use indexed (or "instanced") @@ -501,6 +506,8 @@ fn initImagePipeline(device: objc.Object, library: objc.Object) !objc.Object { const ptr = library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str}); break :func_frag objc.Object.fromId(ptr.?); }; + defer func_vert.msgSend(void, objc.sel("release"), .{}); + defer func_frag.msgSend(void, objc.sel("release"), .{}); // Create the vertex descriptor. The vertex descriptor describes the // data layout of the vertex inputs. We use indexed (or "instanced") @@ -577,6 +584,7 @@ fn initImagePipeline(device: objc.Object, library: objc.Object) !objc.Object { break :vertex_desc desc; }; + defer vertex_desc.msgSend(void, objc.sel("release"), .{}); // Create our descriptor const desc = init: { @@ -585,6 +593,7 @@ fn initImagePipeline(device: objc.Object, library: objc.Object) !objc.Object { const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{}); break :init id_init; }; + defer desc.msgSend(void, objc.sel("release"), .{}); // Set our properties desc.setProperty("vertexFunction", func_vert);