fix renderpass being included on pipeline creation, remove renderpass/framebuffer code

This commit is contained in:
Matthew 2026-06-19 16:20:00 +10:00
parent b3726d3627
commit 37661c07ac

View File

@ -1949,7 +1949,6 @@ CreateGraphicsPipeline(Pipeline* pipeline_handle, GfxPipelineInfo* build_info)
pDynamicState: &dyn_info,
stageCount: cast(u32)shader_info.length,
pStages: shader_info.ptr,
renderPass: g_vk.render_pass,
layout: build_info.layout,
};
@ -2515,7 +2514,6 @@ RecreateSwapchain()
CreateSwapchain();
CreateDrawImages();
Write(g_vk.global_set, &g_vk.draw_image);
CreateFramebuffer();
g_vk.recreate_swapchain = false;
}
@ -3409,70 +3407,6 @@ Init(VulkanBuildInfo build_info, u64 permanent_mem, u64 frame_mem)
channels = 3;
g_vk.rgb_to_rgba_pipeline = CreateComputePipeline(&conv_info);
VkAttachmentDescription[2] attach_descriptions = [
{
format: g_vk.draw_image.image.format,
samples: VK_SAMPLE_COUNT_1_BIT,
loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
storeOp: VK_ATTACHMENT_STORE_OP_STORE,
stencilLoadOp: VK_ATTACHMENT_LOAD_OP_DONT_CARE,
stencilStoreOp: VK_ATTACHMENT_STORE_OP_DONT_CARE,
initialLayout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
finalLayout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
},
{
format: g_vk.depth_image.image.format,
samples: VK_SAMPLE_COUNT_1_BIT,
loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
storeOp: VK_ATTACHMENT_STORE_OP_STORE,
initialLayout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
finalLayout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
},
];
VkAttachmentReference color_ref = {
attachment: 0,
layout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
};
VkAttachmentReference depth_ref = {
attachment: 1,
layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
};
VkSubpassDescription subpass = {
pipelineBindPoint: VK_PIPELINE_BIND_POINT_GRAPHICS,
colorAttachmentCount: 1,
pColorAttachments: &color_ref,
pDepthStencilAttachment: &depth_ref,
};
VkSubpassDependency self_dependency = {
srcSubpass: 0,
dstSubpass: 0,
srcStageMask: VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
dstStageMask: VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
srcAccessMask: VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
dstAccessMask: VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
dependencyFlags: VK_DEPENDENCY_BY_REGION_BIT,
};
VkRenderPassCreateInfo pass_info = {
sType: VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
attachmentCount: cast(u32)attach_descriptions.length,
pAttachments: attach_descriptions.ptr,
subpassCount: 1,
pSubpasses: &subpass,
dependencyCount: 1,
pDependencies: &self_dependency,
};
VkResult result = vkCreateRenderPass(g_vk.device, &pass_info, null, &g_vk.render_pass);
VkCheckA("vkCreateRenderPass failure", result);
CreateFramebuffer();
}
assert(success, "Error initializing vulkan");