fixing sneaky bug in blitter clear
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user