mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
renderer: remove metal workaround, this caused crashes on x86_64
And it now works.
This commit is contained in:
@ -213,11 +213,6 @@ pub fn build(b: *std.Build) !void {
|
||||
{
|
||||
exe.addOptions("build_options", exe_options);
|
||||
|
||||
if (target.isDarwin()) {
|
||||
// See the comment in this file
|
||||
exe.addCSourceFile("src/renderer/metal_workaround.c", &.{});
|
||||
}
|
||||
|
||||
// Add the shared dependencies
|
||||
_ = try addDeps(b, exe, static);
|
||||
|
||||
|
@ -1176,10 +1176,13 @@ fn syncAtlasTexture(device: objc.Object, atlas: *const font.Atlas, texture: *obj
|
||||
texture.* = try initAtlasTexture(device, atlas);
|
||||
}
|
||||
|
||||
// Workaround for: https://github.com/ziglang/zig/issues/13598
|
||||
ghostty_metal_replaceregion(
|
||||
texture.value,
|
||||
objc.sel("replaceRegion:mipmapLevel:withBytes:bytesPerRow:").value,
|
||||
// Once the above linked issue is fixed, this is what we actually
|
||||
// want to do:
|
||||
//
|
||||
texture.msgSend(
|
||||
void,
|
||||
objc.sel("replaceRegion:mipmapLevel:withBytes:bytesPerRow:"),
|
||||
.{
|
||||
MTLRegion{
|
||||
.origin = .{ .x = 0, .y = 0, .z = 0 },
|
||||
.size = .{
|
||||
@ -1188,43 +1191,13 @@ fn syncAtlasTexture(device: objc.Object, atlas: *const font.Atlas, texture: *obj
|
||||
.depth = 1,
|
||||
},
|
||||
},
|
||||
0,
|
||||
@as(c_ulong, 0),
|
||||
atlas.data.ptr,
|
||||
@as(c_ulong, atlas.format.depth() * atlas.size),
|
||||
},
|
||||
);
|
||||
|
||||
// Once the above linked issue is fixed, this is what we actually
|
||||
// want to do:
|
||||
//
|
||||
// texture.msgSend(
|
||||
// void,
|
||||
// objc.sel("replaceRegion:mipmapLevel:withBytes:bytesPerRow:"),
|
||||
// .{
|
||||
// MTLRegion{
|
||||
// .origin = .{ .x = 0, .y = 0, .z = 0 },
|
||||
// .size = .{
|
||||
// .width = @intCast(c_ulong, atlas.size),
|
||||
// .height = @intCast(c_ulong, atlas.size),
|
||||
// .depth = 1,
|
||||
// },
|
||||
// },
|
||||
// @as(c_ulong, 0),
|
||||
// atlas.data.ptr,
|
||||
// @as(c_ulong, atlas.format.depth() * atlas.size),
|
||||
// },
|
||||
// );
|
||||
|
||||
}
|
||||
|
||||
extern "c" fn ghostty_metal_replaceregion(
|
||||
objc.c.id,
|
||||
objc.c.SEL,
|
||||
MTLRegion,
|
||||
c_ulong,
|
||||
*anyopaque,
|
||||
c_ulong,
|
||||
) void;
|
||||
|
||||
/// Initialize the shader library.
|
||||
fn initLibrary(device: objc.Object, data: []const u8) !objc.Object {
|
||||
const source = try macos.foundation.String.createWithBytes(
|
||||
|
@ -1,35 +0,0 @@
|
||||
// Workaround for:
|
||||
// https://github.com/ziglang/zig/issues/13598
|
||||
|
||||
#include <objc/message.h>
|
||||
#include <objc/runtime.h>
|
||||
|
||||
// From Metal.h
|
||||
typedef struct Origin {
|
||||
unsigned long x;
|
||||
unsigned long y;
|
||||
unsigned long z;
|
||||
} Origin;
|
||||
|
||||
typedef struct Size {
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
unsigned long depth;
|
||||
} Size;
|
||||
|
||||
typedef struct MTLRegion {
|
||||
Origin origin;
|
||||
Size size;
|
||||
} MTLRegion;
|
||||
|
||||
void ghostty_metal_replaceregion(
|
||||
id target,
|
||||
SEL sel,
|
||||
MTLRegion region,
|
||||
unsigned long offset,
|
||||
void *ptr,
|
||||
unsigned long len
|
||||
) {
|
||||
void (*replaceRegion)(id, SEL, MTLRegion, unsigned long, void *, unsigned long) = (void (*)(id, SEL, MTLRegion, unsigned long, void *, unsigned long)) objc_msgSend;
|
||||
replaceRegion(target, sel, region, offset, ptr, len);
|
||||
}
|
Reference in New Issue
Block a user