Remove legacy render passes and frambebuffers in favor of dynamic rendering
Somehow, some way, we ended up with net positive lines changed
This commit is contained in:
@@ -10,7 +10,6 @@ const Texture = @import("Texture.zig");
|
||||
const WaitSemaphore = @import("WaitSemaphore.zig");
|
||||
|
||||
params: Params,
|
||||
render_pass: vk.RenderPass,
|
||||
|
||||
extent: vk.Extent2D = .{ .width = 0, .height = 0 },
|
||||
swapchain: vk.SwapchainKHR = .null_handle,
|
||||
@@ -27,106 +26,8 @@ pub const PresentResult = enum {
|
||||
|
||||
pub fn init(engine: *Engine) !Swapchain {
|
||||
const params: Params = try .init(engine);
|
||||
|
||||
const render_pass = try engine.createRenderPass(.{
|
||||
.attachments = &.{
|
||||
.{
|
||||
.format = params.surface_format.format,
|
||||
.samples = .{ .@"1_bit" = true },
|
||||
.load_op = .clear,
|
||||
.store_op = .store,
|
||||
.stencil_load_op = .dont_care,
|
||||
.stencil_store_op = .dont_care,
|
||||
.initial_layout = .undefined,
|
||||
.final_layout = .present_src_khr,
|
||||
},
|
||||
.{
|
||||
.format = Texture.Usage.depth.vkFormat(),
|
||||
.samples = .{ .@"1_bit" = true },
|
||||
.load_op = .clear,
|
||||
.store_op = .dont_care,
|
||||
.stencil_load_op = .clear,
|
||||
.stencil_store_op = .dont_care,
|
||||
.initial_layout = .undefined,
|
||||
.final_layout = .depth_stencil_attachment_optimal,
|
||||
},
|
||||
},
|
||||
.subpasses = &.{
|
||||
// Main
|
||||
.{
|
||||
.pipeline_bind_point = .graphics,
|
||||
.color_attachments = &.{
|
||||
.{
|
||||
.attachment = 0,
|
||||
.layout = .color_attachment_optimal,
|
||||
},
|
||||
},
|
||||
.depth_stencil_attachment = .{
|
||||
.attachment = 1,
|
||||
.layout = .depth_stencil_attachment_optimal,
|
||||
},
|
||||
},
|
||||
// GUI
|
||||
.{
|
||||
.pipeline_bind_point = .graphics,
|
||||
.color_attachments = &.{
|
||||
.{
|
||||
.attachment = 0,
|
||||
.layout = .color_attachment_optimal,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
.dependencies = &.{
|
||||
.{
|
||||
.src_subpass = 0,
|
||||
.dst_subpass = 0,
|
||||
.src_stage_mask = .{
|
||||
.color_attachment_output_bit = true,
|
||||
.late_fragment_tests_bit = true,
|
||||
},
|
||||
.dst_stage_mask = .{
|
||||
.color_attachment_output_bit = true,
|
||||
.early_fragment_tests_bit = true,
|
||||
},
|
||||
.src_access_mask = .{
|
||||
.depth_stencil_attachment_write_bit = true,
|
||||
},
|
||||
.dst_access_mask = .{
|
||||
.color_attachment_write_bit = true,
|
||||
.depth_stencil_attachment_write_bit = true,
|
||||
},
|
||||
.dependency_flags = .{
|
||||
.by_region_bit = true,
|
||||
},
|
||||
},
|
||||
.{
|
||||
.src_subpass = 0,
|
||||
.dst_subpass = 1,
|
||||
.src_stage_mask = .{
|
||||
.color_attachment_output_bit = true,
|
||||
},
|
||||
.dst_stage_mask = .{
|
||||
.color_attachment_output_bit = true,
|
||||
},
|
||||
.src_access_mask = .{
|
||||
.color_attachment_write_bit = true,
|
||||
},
|
||||
.dst_access_mask = .{
|
||||
.color_attachment_write_bit = true,
|
||||
},
|
||||
.dependency_flags = .{
|
||||
.by_region_bit = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
errdefer engine.destroyRenderPass(render_pass);
|
||||
engine.setObjectName(render_pass, "RP", .{});
|
||||
|
||||
var swapchain: Swapchain = .{
|
||||
.params = params,
|
||||
.render_pass = render_pass,
|
||||
};
|
||||
|
||||
try recreate(&swapchain, engine);
|
||||
@@ -151,7 +52,6 @@ pub fn deinit(self: *Swapchain, engine: *Engine) void {
|
||||
engine.destroySwapchain(self.swapchain);
|
||||
}
|
||||
|
||||
engine.destroyRenderPass(self.render_pass);
|
||||
engine.destroySemaphore(self.semaphore_image_acquired);
|
||||
engine.destroyFence(self.fence);
|
||||
|
||||
@@ -258,7 +158,6 @@ pub fn recreate(self: *Swapchain, engine: *Engine) !void {
|
||||
swapchain_images.appendAssumeCapacity(try SwapchainImage.init(engine, .{
|
||||
.image = image,
|
||||
.format = self.params.surface_format.format,
|
||||
.render_pass = self.render_pass,
|
||||
.extent = extent,
|
||||
.depth_stencil_image_view = new_depth_texture.image_view,
|
||||
.index = index,
|
||||
@@ -414,12 +313,10 @@ const SwapchainImage = struct {
|
||||
image_view: vk.ImageView,
|
||||
semaphore_image_acquired: vk.Semaphore,
|
||||
semaphore_render_finished: vk.Semaphore,
|
||||
framebuffer: vk.Framebuffer,
|
||||
|
||||
const InitProps = struct {
|
||||
image: vk.Image,
|
||||
format: vk.Format,
|
||||
render_pass: vk.RenderPass,
|
||||
extent: vk.Extent2D,
|
||||
depth_stencil_image_view: vk.ImageView,
|
||||
|
||||
@@ -450,29 +347,17 @@ const SwapchainImage = struct {
|
||||
errdefer engine.destroySemaphore(semaphore_render_finished);
|
||||
engine.setObjectName(image_view, "S Rendered[{d}]", .{props.index});
|
||||
|
||||
const framebuffer = try engine.createFramebuffer(.{
|
||||
.render_pass = props.render_pass,
|
||||
.attachments = &.{ image_view, props.depth_stencil_image_view },
|
||||
.width = props.extent.width,
|
||||
.height = props.extent.height,
|
||||
.layers = 1,
|
||||
});
|
||||
errdefer engine.destroyFramebuffer(framebuffer);
|
||||
engine.setObjectName(image_view, "FB Swapchain[{d}]", .{props.index});
|
||||
|
||||
return .{
|
||||
.image = props.image,
|
||||
.image_view = image_view,
|
||||
.semaphore_image_acquired = semaphore_image_acquired,
|
||||
.semaphore_render_finished = semaphore_render_finished,
|
||||
.framebuffer = framebuffer,
|
||||
};
|
||||
}
|
||||
|
||||
fn deinit(self: *SwapchainImage, engine: *Engine) void {
|
||||
std.log.scoped(.deinit).debug("Deinitializing {*} with {*}", .{ self, engine });
|
||||
|
||||
engine.destroyFramebuffer(self.framebuffer);
|
||||
engine.destroySemaphore(self.semaphore_render_finished);
|
||||
engine.destroySemaphore(self.semaphore_image_acquired);
|
||||
engine.destroyImageView(self.image_view);
|
||||
|
||||
Reference in New Issue
Block a user