From b7ad36078f80ee51eb099b73ba344dbe61124203 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Wed, 13 Sep 2023 17:59:47 -0700 Subject: [PATCH] gfx2d: even larger sprite buffer; fix reference counting Signed-off-by: Stephen Gutekanst --- src/gfx2d/Sprite2D.zig | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/gfx2d/Sprite2D.zig b/src/gfx2d/Sprite2D.zig index 27878161..99c199a2 100644 --- a/src/gfx2d/Sprite2D.zig +++ b/src/gfx2d/Sprite2D.zig @@ -65,6 +65,20 @@ const Pipeline = struct { uv_transforms: *gpu.Buffer, sizes: *gpu.Buffer, + pub fn reference(p: *Pipeline) void { + p.render.reference(); + p.texture_sampler.reference(); + p.texture.reference(); + if (p.texture2) |tex| tex.reference(); + if (p.texture3) |tex| tex.reference(); + if (p.texture4) |tex| tex.reference(); + p.bind_group.reference(); + p.uniforms.reference(); + p.transforms.reference(); + p.uv_transforms.reference(); + p.sizes.reference(); + } + pub fn deinit(p: *Pipeline) void { p.render.release(); p.texture_sampler.release(); @@ -128,7 +142,7 @@ pub fn engineSprite2dInitPipeline( } // Storage buffers - const sprite_buffer_cap = 1024 * 256; // TODO: allow user to specify preallocation + const sprite_buffer_cap = 1024 * 512; // TODO: allow user to specify preallocation const transforms = device.createBuffer(&.{ .usage = .{ .storage = true, .copy_dst = true }, .size = @sizeOf(Mat4x4) * sprite_buffer_cap, @@ -252,6 +266,7 @@ pub fn engineSprite2dInitPipeline( .uv_transforms = uv_transforms, .sizes = sizes, }; + pipeline.value_ptr.reference(); } pub fn deinit(sprite2d: *mach.Mod(.engine_sprite2d)) !void {