mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
renderer/metal: clean up some memory management
This commit is contained in:
35
src/App.zig
35
src/App.zig
@ -73,41 +73,6 @@ pub fn create(
|
|||||||
};
|
};
|
||||||
errdefer app.surfaces.deinit(alloc);
|
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;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,6 +254,8 @@ fn initPostPipeline(
|
|||||||
const ptr = post_library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str});
|
const ptr = post_library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str});
|
||||||
break :func_frag objc.Object.fromId(ptr.?);
|
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
|
// Create our descriptor
|
||||||
const desc = init: {
|
const desc = init: {
|
||||||
@ -262,6 +264,7 @@ fn initPostPipeline(
|
|||||||
const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{});
|
const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{});
|
||||||
break :init id_init;
|
break :init id_init;
|
||||||
};
|
};
|
||||||
|
defer desc.msgSend(void, objc.sel("release"), .{});
|
||||||
desc.setProperty("vertexFunction", func_vert);
|
desc.setProperty("vertexFunction", func_vert);
|
||||||
desc.setProperty("fragmentFunction", func_frag);
|
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});
|
const ptr = library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str});
|
||||||
break :func_frag objc.Object.fromId(ptr.?);
|
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
|
// Create the vertex descriptor. The vertex descriptor describes the
|
||||||
// data layout of the vertex inputs. We use indexed (or "instanced")
|
// 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});
|
const ptr = library.msgSend(?*anyopaque, objc.sel("newFunctionWithName:"), .{str});
|
||||||
break :func_frag objc.Object.fromId(ptr.?);
|
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
|
// Create the vertex descriptor. The vertex descriptor describes the
|
||||||
// data layout of the vertex inputs. We use indexed (or "instanced")
|
// 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;
|
break :vertex_desc desc;
|
||||||
};
|
};
|
||||||
|
defer vertex_desc.msgSend(void, objc.sel("release"), .{});
|
||||||
|
|
||||||
// Create our descriptor
|
// Create our descriptor
|
||||||
const desc = init: {
|
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"), .{});
|
const id_init = id_alloc.msgSend(objc.Object, objc.sel("init"), .{});
|
||||||
break :init id_init;
|
break :init id_init;
|
||||||
};
|
};
|
||||||
|
defer desc.msgSend(void, objc.sel("release"), .{});
|
||||||
|
|
||||||
// Set our properties
|
// Set our properties
|
||||||
desc.setProperty("vertexFunction", func_vert);
|
desc.setProperty("vertexFunction", func_vert);
|
||||||
|
Reference in New Issue
Block a user