From bc70d192572b84fcf4ee028231c8c33a1e3955e9 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 16 Nov 2023 15:43:03 -0800 Subject: [PATCH] renderer/metal: set valid sampler properties --- src/renderer/metal/api.zig | 16 ++++++++++++++++ src/renderer/metal/sampler.zig | 7 +++++++ 2 files changed, 23 insertions(+) diff --git a/src/renderer/metal/api.zig b/src/renderer/metal/api.zig index 1c9f175ac..f92489374 100644 --- a/src/renderer/metal/api.zig +++ b/src/renderer/metal/api.zig @@ -67,6 +67,22 @@ pub const MTLPurgeableState = enum(c_ulong) { empty = 4, }; +/// https://developer.apple.com/documentation/metal/mtlsamplerminmagfilter?language=objc +pub const MTLSamplerMinMagFilter = enum(c_ulong) { + nearest = 0, + linear = 1, +}; + +/// https://developer.apple.com/documentation/metal/mtlsampleraddressmode?language=objc +pub const MTLSamplerAddressMode = enum(c_ulong) { + clamp_to_edge = 0, + mirror_clamp_to_edge = 1, + repeat = 2, + mirror_repeat = 3, + clamp_to_zero = 4, + clamp_to_border_color = 5, +}; + /// https://developer.apple.com/documentation/metal/mtlblendfactor?language=objc pub const MTLBlendFactor = enum(c_ulong) { zero = 0, diff --git a/src/renderer/metal/sampler.zig b/src/renderer/metal/sampler.zig index 5f4d51cfc..c7a04df3a 100644 --- a/src/renderer/metal/sampler.zig +++ b/src/renderer/metal/sampler.zig @@ -3,6 +3,8 @@ const Allocator = std.mem.Allocator; const assert = std.debug.assert; const objc = @import("objc"); +const mtl = @import("api.zig"); + pub const Sampler = struct { sampler: objc.Object, @@ -14,6 +16,11 @@ pub const Sampler = struct { break :init id_init; }; defer desc.msgSend(void, objc.sel("release"), .{}); + desc.setProperty("rAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge)); + desc.setProperty("sAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge)); + desc.setProperty("tAddressMode", @intFromEnum(mtl.MTLSamplerAddressMode.clamp_to_edge)); + desc.setProperty("minFilter", @intFromEnum(mtl.MTLSamplerMinMagFilter.linear)); + desc.setProperty("magFilter", @intFromEnum(mtl.MTLSamplerMinMagFilter.linear)); const sampler = device.msgSend( objc.Object,