From 4ddb7e2cf7c9dd98b4c7df3545d453ddb4793796 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 3 Apr 2021 13:46:56 -0300 Subject: [PATCH] metal: initialize empty Buffer contents. --- src/modules/graphics/metal/Buffer.mm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/modules/graphics/metal/Buffer.mm b/src/modules/graphics/metal/Buffer.mm index f808f26a7..ab6146481 100644 --- a/src/modules/graphics/metal/Buffer.mm +++ b/src/modules/graphics/metal/Buffer.mm @@ -75,6 +75,8 @@ Buffer::Buffer(love::graphics::Graphics *gfx, id device, const Settin { if (@available(iOS 12, macOS 10.14, *)) { + // TODO: minimumTextureBufferAlignmentForPixelFormat + MTLPixelFormat pixformat = getMTLPixelFormat(getDataMember(0).decl.format); size_t width = arraylength * getDataMembers().size(); auto desc = [MTLTextureDescriptor textureBufferDescriptorWithPixelFormat:pixformat @@ -90,6 +92,12 @@ Buffer::Buffer(love::graphics::Graphics *gfx, id device, const Settin if (data != nullptr) fill(0, size, data); + else if (settings.zeroInitialize) + { + auto *mgfx = (Graphics *) gfx; + auto encoder = mgfx->useBlitEncoder(); + [encoder fillBuffer:buffer range:NSMakeRange(0, size) value:0]; + } }} Buffer::~Buffer()