summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClement Sibille <clements@lisible.xyz>2024-12-11 08:45:07 +0100
committerClement Sibille <clements@lisible.xyz>2024-12-11 08:45:07 +0100
commit7d978e795e75e55aa5578992ccff29f13e0f496d (patch)
treea3bc19e0c39a23b36889bcb0f9da5f048a17cf9b /src
parent7aa33eefe9d0648c0642b9d694504b6ae67e8644 (diff)
Create the graphics pipeline
Diffstat (limited to 'src')
-rw-r--r--src/main.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 7f30a72..8dbf720 100644
--- a/src/main.c
+++ b/src/main.c
@@ -34,6 +34,7 @@ struct vulkan_renderer {
VkImageView swapchain_image_views[MAX_SWAPCHAIN_IMAGE_COUNT];
VkRenderPass render_pass;
VkPipelineLayout pipeline_layout;
+ VkPipeline pipeline;
uint32_t swapchain_image_count;
bool enable_validation_layers;
};
@@ -762,6 +763,28 @@ bool vulkan_renderer_create_graphics_pipeline(
goto destroy_shader_modules;
}
+ if (vkCreateGraphicsPipelines(
+ renderer->device, VK_NULL_HANDLE, 1,
+ &(const VkGraphicsPipelineCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
+ .stageCount = 2,
+ .pStages = shader_stages,
+ .pVertexInputState = &vertex_input_info,
+ .pInputAssemblyState = &input_assembly,
+ .pViewportState = &viewport_state,
+ .pRasterizationState = &rasterizer,
+ .pMultisampleState = &multisampling,
+ .pColorBlendState = &color_blending,
+ .pDynamicState = &dynamic_state,
+ .layout = renderer->pipeline_layout,
+ .renderPass = renderer->render_pass,
+ .subpass = 0,
+
+ },
+ NULL, &renderer->pipeline) != VK_SUCCESS) {
+ goto destroy_shader_modules;
+ }
+
vkDestroyShaderModule(renderer->device, vertex_shader_module, NULL);
vkDestroyShaderModule(renderer->device, fragment_shader_module, NULL);
return true;
@@ -900,6 +923,7 @@ err:
}
void vulkan_renderer_deinit(struct vulkan_renderer *renderer) {
+ vkDestroyPipeline(renderer->device, renderer->pipeline, NULL);
vkDestroyPipelineLayout(renderer->device, renderer->pipeline_layout, NULL);
vkDestroyRenderPass(renderer->device, renderer->render_pass, NULL);
for (uint32_t swapchain_image_view_index = 0;
Go back to lisible.xyz