fixing sneaky bug in blitter clear
Test / build_and_test (push) Successful in 1m4s
Build / build (push) Successful in 1m42s

This commit is contained in:
2026-05-27 00:47:12 +02:00
parent ae2bdd03a0
commit 6edb856d06
11 changed files with 74 additions and 36 deletions
+7
View File
@@ -47,6 +47,7 @@ pub const DispatchTable = struct {
blitImage: *const fn (*Self, *Image, vk.ImageLayout, *Image, vk.ImageLayout, []const vk.ImageBlit, vk.Filter) VkError!void,
clearAttachment: *const fn (*Self, vk.ClearAttachment, vk.ClearRect) VkError!void,
clearColorImage: *const fn (*Self, *Image, vk.ImageLayout, *const vk.ClearColorValue, vk.ImageSubresourceRange) VkError!void,
clearDepthStencilImage: *const fn (*Self, *Image, vk.ImageLayout, *const vk.ClearDepthStencilValue, vk.ImageSubresourceRange) VkError!void,
copyBuffer: *const fn (*Self, *Buffer, *Buffer, []const vk.BufferCopy) VkError!void,
copyBufferToImage: *const fn (*Self, *Buffer, *Image, vk.ImageLayout, []const vk.BufferImageCopy) VkError!void,
copyImage: *const fn (*Self, *Image, vk.ImageLayout, *Image, vk.ImageLayout, []const vk.ImageCopy) VkError!void,
@@ -191,6 +192,12 @@ pub fn clearColorImage(self: *Self, image: *Image, layout: vk.ImageLayout, color
}
}
pub fn clearDepthStencilImage(self: *Self, image: *Image, layout: vk.ImageLayout, value: *const vk.ClearDepthStencilValue, ranges: []const vk.ImageSubresourceRange) VkError!void {
for (ranges) |range| {
try self.dispatch_table.clearDepthStencilImage(self, image, layout, value, range);
}
}
pub inline fn copyBuffer(self: *Self, src: *Buffer, dst: *Buffer, regions: []const vk.BufferCopy) VkError!void {
try self.dispatch_table.copyBuffer(self, src, dst, regions);
}
+2 -2
View File
@@ -18,7 +18,7 @@ pub const VTable = struct {
destroy: *const fn (*Self, std.mem.Allocator) void,
flushRange: *const fn (*Self, vk.DeviceSize, vk.DeviceSize) VkError!void,
invalidateRange: *const fn (*Self, vk.DeviceSize, vk.DeviceSize) VkError!void,
map: *const fn (*Self, vk.DeviceSize, vk.DeviceSize) VkError!?*anyopaque,
map: *const fn (*Self, vk.DeviceSize, vk.DeviceSize) VkError![]u8,
unmap: *const fn (*Self) void,
};
@@ -44,7 +44,7 @@ pub inline fn invalidateRange(self: *Self, offset: vk.DeviceSize, size: vk.Devic
try self.vtable.invalidateRange(self, offset, size);
}
pub inline fn map(self: *Self, offset: vk.DeviceSize, size: vk.DeviceSize) VkError!?*anyopaque {
pub inline fn map(self: *Self, offset: vk.DeviceSize, size: vk.DeviceSize) VkError![]u8 {
return self.vtable.map(self, offset, size);
}
+3 -11
View File
@@ -1497,7 +1497,7 @@ pub export fn strollMapMemory(p_device: vk.Device, p_memory: vk.DeviceMemory, of
Dispatchable(Device).checkHandleValidity(p_device) catch |err| return toVkResult(err);
const device_memory = NonDispatchable(DeviceMemory).fromHandleObject(p_memory) catch |err| return toVkResult(err);
pp_data.* = device_memory.map(offset, size) catch |err| return toVkResult(err);
pp_data.* = @ptrCast((device_memory.map(offset, size) catch |err| return toVkResult(err)).ptr);
return .success;
}
@@ -1746,21 +1746,13 @@ pub export fn strollCmdClearColorImage(p_cmd: vk.CommandBuffer, p_image: vk.Imag
cmd.clearColorImage(image, layout, color, ranges[0..count]) catch |err| return errorLogger(err);
}
pub export fn strollCmdClearDepthStencilImage(p_cmd: vk.CommandBuffer, p_image: vk.Image, layout: vk.ImageLayout, stencil: *const vk.ClearDepthStencilValue, count: u32, ranges: [*]const vk.ImageSubresourceRange) callconv(vk.vulkan_call_conv) void {
pub export fn strollCmdClearDepthStencilImage(p_cmd: vk.CommandBuffer, p_image: vk.Image, layout: vk.ImageLayout, value: *const vk.ClearDepthStencilValue, count: u32, ranges: [*]const vk.ImageSubresourceRange) callconv(vk.vulkan_call_conv) void {
entryPointBeginLogTrace(.vkCmdClearDepthStencilImage);
defer entryPointEndLogTrace();
const cmd = Dispatchable(CommandBuffer).fromHandleObject(p_cmd) catch |err| return errorLogger(err);
const image = NonDispatchable(Image).fromHandleObject(p_image) catch |err| return errorLogger(err);
notImplementedWarning();
_ = cmd;
_ = image;
_ = layout;
_ = stencil;
_ = count;
_ = ranges;
cmd.clearDepthStencilImage(image, layout, value, ranges[0..count]) catch |err| return errorLogger(err);
}
pub export fn strollCmdCopyBuffer(p_cmd: vk.CommandBuffer, p_src: vk.Buffer, p_dst: vk.Buffer, count: u32, regions: [*]const vk.BufferCopy) callconv(vk.vulkan_call_conv) void {