GskVulkanCommandPool *command_pool;
VkFence fence;
- VkRenderPass render_pass;
VkDescriptorSetLayout descriptor_set_layout;
VkPipelineLayout pipeline_layout;
GskVulkanUploader *uploader;
NULL,
&self->descriptor_pool);
- GSK_VK_CHECK (vkCreateRenderPass, gdk_vulkan_context_get_device (self->vulkan),
- &(VkRenderPassCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
- .attachmentCount = 1,
- .pAttachments = (VkAttachmentDescription[]) {
- {
- .format = gdk_vulkan_context_get_image_format (self->vulkan),
- .samples = VK_SAMPLE_COUNT_1_BIT,
- .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
- .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
- .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,
- .finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
- }
- },
- .subpassCount = 1,
- .pSubpasses = (VkSubpassDescription []) {
- {
- .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
- .inputAttachmentCount = 0,
- .colorAttachmentCount = 1,
- .pColorAttachments = (VkAttachmentReference []) {
- {
- .attachment = 0,
- .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
- }
- },
- .pResolveAttachments = (VkAttachmentReference []) {
- {
- .attachment = VK_ATTACHMENT_UNUSED,
- .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
- }
- },
- .pDepthStencilAttachment = NULL,
- }
- },
- .dependencyCount = 0
- },
- NULL,
- &self->render_pass);
-
GSK_VK_CHECK (vkCreateDescriptorSetLayout, device,
&(VkDescriptorSetLayoutCreateInfo) {
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
GskVulkanPipeline *
gsk_vulkan_render_get_pipeline (GskVulkanRender *self,
- GskVulkanPipelineType type)
+ GskVulkanPipelineType type,
+ VkRenderPass render_pass)
{
static const struct {
const char *name;
self->pipelines[type] = pipeline_info[type].create_func (self->vulkan,
self->pipeline_layout,
pipeline_info[type].name,
- self->render_pass);
+ render_pass);
return self->pipelines[type];
}
self->pipeline_layout,
NULL);
- vkDestroyRenderPass (device,
- self->render_pass,
- NULL);
-
vkDestroyDescriptorPool (device,
self->descriptor_pool,
NULL);
return FALSE; \
}G_STMT_END
+static GskVulkanPipeline *
+gsk_vulkan_render_pass_get_pipeline (GskVulkanRenderPass *self,
+ GskVulkanRender *render,
+ GskVulkanPipelineType pipeline_type)
+{
+ return gsk_vulkan_render_get_pipeline (render,
+ pipeline_type,
+ self->render_pass);
+}
+
static void
gsk_vulkan_render_pass_add_node (GskVulkanRenderPass *self,
GskVulkanRender *render,
return FALSE;
}
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, GSK_VULKAN_PIPELINE_TEXTURE);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, GSK_VULKAN_PIPELINE_TEXTURE);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_LINEAR_GRADIENT_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_BORDER_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_INSET_SHADOW_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_OUTSET_SHADOW_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_BLEND_MODE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
else
pipeline_type = GSK_VULKAN_PIPELINE_CROSS_FADE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;
pipeline_type = GSK_VULKAN_PIPELINE_TEXT_CLIP_ROUNDED;
op.type = GSK_VULKAN_OP_TEXT;
}
- op.text.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.text.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
op.text.start_glyph = 0;
op.text.texture_index = G_MAXUINT;
else
pipeline_type = GSK_VULKAN_PIPELINE_BLUR_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_get_pipeline (render, pipeline_type);
+ op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
g_array_append_val (self->render_ops, op);
return TRUE;