@@ -40,7 +40,7 @@ dispatch_table: *const DispatchTable,
4040
4141pub const DispatchTable = struct {
4242 begin : * const fn (* Self , * const vk.CommandBufferBeginInfo ) VkError ! void ,
43- clearColorImage : * const fn (* Self , * Image , vk.ImageLayout , * const vk.ClearColorValue , [] const vk.ImageSubresourceRange ) VkError ! void ,
43+ clearColorImage : * const fn (* Self , * Image , vk.ImageLayout , * const vk.ClearColorValue , vk.ImageSubresourceRange ) VkError ! void ,
4444 copyBuffer : * const fn (* Self , * Buffer , * Buffer , []const vk.BufferCopy ) VkError ! void ,
4545 copyImage : * const fn (* Self , * Image , vk.ImageLayout , * Image , vk.ImageLayout , []const vk.ImageCopy ) VkError ! void ,
4646 end : * const fn (* Self ) VkError ! void ,
@@ -122,7 +122,6 @@ fn cleanCommandList(self: *Self) void {
122122 const allocator = self .host_allocator .allocator ();
123123 for (self .commands .items ) | command | {
124124 switch (command ) {
125- .ClearColorImage = > | data | allocator .free (data .ranges ),
126125 .CopyBuffer = > | data | allocator .free (data .regions ),
127126 .CopyImage = > | data | allocator .free (data .regions ),
128127 else = > {},
@@ -134,13 +133,15 @@ fn cleanCommandList(self: *Self) void {
134133
135134pub inline fn clearColorImage (self : * Self , image : * Image , layout : vk.ImageLayout , color : * const vk.ClearColorValue , ranges : []const vk.ImageSubresourceRange ) VkError ! void {
136135 const allocator = self .host_allocator .allocator ();
137- self .commands .append (allocator , .{ .ClearColorImage = .{
138- .image = image ,
139- .layout = layout ,
140- .clear_color = color .* ,
141- .ranges = allocator .dupe (vk .ImageSubresourceRange , ranges ) catch return VkError .OutOfHostMemory ,
142- } }) catch return VkError .OutOfHostMemory ;
143- try self .dispatch_table .clearColorImage (self , image , layout , color , ranges );
136+ for (ranges ) | range | {
137+ self .commands .append (allocator , .{ .ClearColorImage = .{
138+ .image = image ,
139+ .layout = layout ,
140+ .clear_color = color .* ,
141+ .range = range ,
142+ } }) catch return VkError .OutOfHostMemory ;
143+ try self .dispatch_table .clearColorImage (self , image , layout , color , range );
144+ }
144145}
145146
146147pub inline fn copyBuffer (self : * Self , src : * Buffer , dst : * Buffer , regions : []const vk.BufferCopy ) VkError ! void {
0 commit comments