fixing soft queues, improving blitter
Build / build (push) Successful in 1m2s
Test / build_and_test (push) Successful in 47m49s

This commit is contained in:
2026-04-21 21:45:40 +02:00
parent 602ade81d4
commit aaeca6f854
6 changed files with 257 additions and 106 deletions
+22
View File
@@ -24,6 +24,7 @@ pub fn create(device: *base.Device, allocator: std.mem.Allocator, info: *const v
interface.vtable = &.{
.destroy = destroy,
.getMemoryRequirements = getMemoryRequirements,
.getSubresourceLayout = getSubresourceLayout,
.getTotalSizeForAspect = getTotalSizeForAspect,
};
@@ -364,6 +365,27 @@ fn getTotalSizeForAspect(interface: *const Interface, aspect_mask: vk.ImageAspec
return size * self.interface.array_layers;
}
fn getSubresourceLayout(interface: *const Interface, subresource: vk.ImageSubresource) VkError!vk.SubresourceLayout {
const self: *const Self = @alignCast(@fieldParentPtr("interface", interface));
if (subresource.aspect_mask.subtract(.{
.color_bit = true,
.depth_bit = true,
.stencil_bit = true,
}).toInt() != 0) {
base.unsupported("aspectMask {f}", .{subresource.aspect_mask});
return VkError.ValidationFailed;
}
return .{
.offset = try self.getSubresourceOffset(subresource.aspect_mask, subresource.mip_level, subresource.array_layer),
.size = self.getMultiSampledLevelSize(subresource.aspect_mask, subresource.mip_level),
.row_pitch = self.getRowPitchMemSizeForMipLevel(subresource.aspect_mask, subresource.mip_level),
.array_pitch = self.getSliceMemSizeForMipLevel(subresource.aspect_mask, subresource.mip_level),
.depth_pitch = self.getLayerSize(subresource.aspect_mask),
};
}
pub fn getLayerSize(self: *const Self, aspect_mask: vk.ImageAspectFlags) usize {
var size: usize = 0;
for (0..self.interface.mip_levels) |mip_level| {