adding fragdepth propagation, adjusting attachment sizing
This commit is contained in:
@@ -40,3 +40,33 @@ pub fn init(device: *Device, allocator: std.mem.Allocator, info: *const vk.Image
|
||||
pub inline fn destroy(self: *Self, allocator: std.mem.Allocator) void {
|
||||
self.vtable.destroy(self, allocator);
|
||||
}
|
||||
|
||||
pub fn levelCount(self: *const Self) u32 {
|
||||
return if (self.subresource_range.level_count == vk.REMAINING_MIP_LEVELS)
|
||||
self.image.mip_levels - self.subresource_range.base_mip_level
|
||||
else
|
||||
self.subresource_range.level_count;
|
||||
}
|
||||
|
||||
pub fn layerCount(self: *const Self) u32 {
|
||||
return if (self.subresource_range.layer_count == vk.REMAINING_ARRAY_LAYERS)
|
||||
self.remainingLayerCount()
|
||||
else
|
||||
self.subresource_range.layer_count;
|
||||
}
|
||||
|
||||
pub fn resolvedSubresourceRange(self: *const Self) vk.ImageSubresourceRange {
|
||||
var range = self.subresource_range;
|
||||
range.level_count = self.levelCount();
|
||||
range.layer_count = self.layerCount();
|
||||
return range;
|
||||
}
|
||||
|
||||
fn remainingLayerCount(self: *const Self) u32 {
|
||||
if (self.image.image_type == .@"3d" and self.image.flags.@"2d_array_compatible_bit") {
|
||||
const depth = @max(@as(u32, 1), self.image.extent.depth >> @intCast(self.subresource_range.base_mip_level));
|
||||
return depth - self.subresource_range.base_array_layer;
|
||||
}
|
||||
|
||||
return self.image.array_layers - self.subresource_range.base_array_layer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user