vulkan: Remove a function from pipeline impls

That function is available already in the structs we feed to Vulkan.

Store it from there and reuse it.
This commit is contained in:
Benjamin Otte 2023-05-18 21:56:20 +02:00
parent 0fee26252c
commit 79a227bc64
25 changed files with 27 additions and 96 deletions

View File

@ -98,12 +98,6 @@ gsk_vulkan_blend_mode_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_BLEND_MODE_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_blend_mode_pipeline_count_vertex_data (GskVulkanBlendModePipeline *pipeline)
{
return sizeof (GskVulkanBlendModeInstance);
}
void
gsk_vulkan_blend_mode_pipeline_collect_vertex_data (GskVulkanBlendModePipeline *pipeline,
guchar *data,

View File

@ -18,7 +18,6 @@ GskVulkanPipeline * gsk_vulkan_blend_mode_pipeline_new (GdkVulka
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_blend_mode_pipeline_count_vertex_data (GskVulkanBlendModePipeline *pipeline);
void gsk_vulkan_blend_mode_pipeline_collect_vertex_data (GskVulkanBlendModePipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -91,12 +91,6 @@ gsk_vulkan_blur_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_BLUR_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_blur_pipeline_count_vertex_data (GskVulkanBlurPipeline *pipeline)
{
return sizeof (GskVulkanBlurInstance);
}
void
gsk_vulkan_blur_pipeline_collect_vertex_data (GskVulkanBlurPipeline *pipeline,
guchar *data,

View File

@ -17,7 +17,6 @@ GskVulkanPipeline * gsk_vulkan_blur_pipeline_new (GdkVulka
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_blur_pipeline_count_vertex_data (GskVulkanBlurPipeline *pipeline);
void gsk_vulkan_blur_pipeline_collect_vertex_data (GskVulkanBlurPipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -123,12 +123,6 @@ gsk_vulkan_border_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_BORDER_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_border_pipeline_count_vertex_data (GskVulkanBorderPipeline *pipeline)
{
return sizeof (GskVulkanBorderInstance);
}
void
gsk_vulkan_border_pipeline_collect_vertex_data (GskVulkanBorderPipeline *pipeline,
guchar *data,

View File

@ -18,7 +18,6 @@ GskVulkanPipeline * gsk_vulkan_border_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_border_pipeline_count_vertex_data (GskVulkanBorderPipeline *pipeline);
void gsk_vulkan_border_pipeline_collect_vertex_data (GskVulkanBorderPipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -119,12 +119,6 @@ gsk_vulkan_box_shadow_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_BOX_SHADOW_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_box_shadow_pipeline_count_vertex_data (GskVulkanBoxShadowPipeline *pipeline)
{
return sizeof (GskVulkanBoxShadowInstance);
}
void
gsk_vulkan_box_shadow_pipeline_collect_vertex_data (GskVulkanBoxShadowPipeline *pipeline,
guchar *data,

View File

@ -18,7 +18,6 @@ GskVulkanPipeline * gsk_vulkan_box_shadow_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_box_shadow_pipeline_count_vertex_data (GskVulkanBoxShadowPipeline *pipeline);
void gsk_vulkan_box_shadow_pipeline_collect_vertex_data (GskVulkanBoxShadowPipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -84,12 +84,6 @@ gsk_vulkan_color_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_COLOR_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_color_pipeline_count_vertex_data (GskVulkanColorPipeline *pipeline)
{
return sizeof (GskVulkanColorInstance);
}
void
gsk_vulkan_color_pipeline_collect_vertex_data (GskVulkanColorPipeline *pipeline,
guchar *data,

View File

@ -17,7 +17,6 @@ GskVulkanPipeline * gsk_vulkan_color_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_color_pipeline_count_vertex_data (GskVulkanColorPipeline *pipeline);
void gsk_vulkan_color_pipeline_collect_vertex_data (GskVulkanColorPipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -84,13 +84,6 @@ gsk_vulkan_color_text_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_COLOR_TEXT_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_color_text_pipeline_count_vertex_data (GskVulkanColorTextPipeline *pipeline,
int num_instances)
{
return sizeof (GskVulkanColorTextInstance) * num_instances;
}
void
gsk_vulkan_color_text_pipeline_collect_vertex_data (GskVulkanColorTextPipeline *pipeline,
guchar *data,

View File

@ -18,8 +18,6 @@ GskVulkanPipeline * gsk_vulkan_color_text_pipeline_new (Gd
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_color_text_pipeline_count_vertex_data (GskVulkanColorTextPipeline *pipeline,
int num_instances);
void gsk_vulkan_color_text_pipeline_collect_vertex_data (GskVulkanColorTextPipeline *pipeline,
guchar *data,
GskVulkanRenderer *renderer,

View File

@ -98,12 +98,6 @@ gsk_vulkan_cross_fade_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_CROSS_FADE_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_cross_fade_pipeline_count_vertex_data (GskVulkanCrossFadePipeline *pipeline)
{
return sizeof (GskVulkanCrossFadeInstance);
}
void
gsk_vulkan_cross_fade_pipeline_collect_vertex_data (GskVulkanCrossFadePipeline *pipeline,
guchar *data,

View File

@ -17,7 +17,6 @@ GskVulkanPipeline * gsk_vulkan_cross_fade_pipeline_new (GdkVulka
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_cross_fade_pipeline_count_vertex_data (GskVulkanCrossFadePipeline *pipeline);
void gsk_vulkan_cross_fade_pipeline_collect_vertex_data (GskVulkanCrossFadePipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -116,12 +116,6 @@ gsk_vulkan_effect_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_EFFECT_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_effect_pipeline_count_vertex_data (GskVulkanEffectPipeline *pipeline)
{
return sizeof (GskVulkanEffectInstance);
}
void
gsk_vulkan_effect_pipeline_collect_vertex_data (GskVulkanEffectPipeline *pipeline,
guchar *data,

View File

@ -17,7 +17,6 @@ GskVulkanPipeline * gsk_vulkan_effect_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_effect_pipeline_count_vertex_data (GskVulkanEffectPipeline *pipeline);
void gsk_vulkan_effect_pipeline_collect_vertex_data (GskVulkanEffectPipeline *pipeline,
guchar *data,
const graphene_point_t *offset,

View File

@ -167,12 +167,6 @@ gsk_vulkan_linear_gradient_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_LINEAR_GRADIENT_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_linear_gradient_pipeline_count_vertex_data (GskVulkanLinearGradientPipeline *pipeline)
{
return sizeof (GskVulkanLinearGradientInstance);
}
void
gsk_vulkan_linear_gradient_pipeline_collect_vertex_data (GskVulkanLinearGradientPipeline *pipeline,
guchar *data,

View File

@ -20,8 +20,6 @@ GskVulkanPipeline * gsk_vulkan_linear_gradient_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_linear_gradient_pipeline_count_vertex_data
(GskVulkanLinearGradientPipeline*pipeline);
void gsk_vulkan_linear_gradient_pipeline_collect_vertex_data
(GskVulkanLinearGradientPipeline*pipeline,
guchar *data,

View File

@ -19,6 +19,8 @@ struct _GskVulkanPipelinePrivate
GskVulkanShader *vertex_shader;
GskVulkanShader *fragment_shader;
gsize vertex_stride;
};
G_DEFINE_TYPE_WITH_PRIVATE (GskVulkanPipeline, gsk_vulkan_pipeline, G_TYPE_OBJECT)
@ -59,6 +61,7 @@ gsk_vulkan_pipeline_new (GType pipeline_type,
const char *shader_name,
VkRenderPass render_pass)
{
const VkPipelineVertexInputStateCreateInfo *vertex_input_state;
GskVulkanPipelinePrivate *priv;
GskVulkanPipeline *self;
VkDevice device;
@ -79,6 +82,10 @@ gsk_vulkan_pipeline_new (GType pipeline_type,
priv->vertex_shader = gsk_vulkan_shader_new_from_resource (context, GSK_VULKAN_SHADER_VERTEX, shader_name, NULL);
priv->fragment_shader = gsk_vulkan_shader_new_from_resource (context, GSK_VULKAN_SHADER_FRAGMENT, shader_name, NULL);
vertex_input_state = GSK_VULKAN_PIPELINE_GET_CLASS (self)->get_input_state_create_info (self);
g_assert (vertex_input_state->vertexBindingDescriptionCount == 1);
priv->vertex_stride = vertex_input_state->pVertexBindingDescriptions[0].stride;
GSK_VK_CHECK (vkCreateGraphicsPipelines, device,
VK_NULL_HANDLE,
1,
@ -89,7 +96,7 @@ gsk_vulkan_pipeline_new (GType pipeline_type,
GST_VULKAN_SHADER_STAGE_CREATE_INFO (priv->vertex_shader),
GST_VULKAN_SHADER_STAGE_CREATE_INFO (priv->fragment_shader)
},
.pVertexInputState = GSK_VULKAN_PIPELINE_GET_CLASS (self)->get_input_state_create_info (self),
.pVertexInputState = vertex_input_state,
.pInputAssemblyState = &(VkPipelineInputAssemblyStateCreateInfo) {
.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
@ -164,3 +171,10 @@ gsk_vulkan_pipeline_get_pipeline (GskVulkanPipeline *self)
return priv->pipeline;
}
gsize
gsk_vulkan_pipeline_get_vertex_stride (GskVulkanPipeline *self)
{
GskVulkanPipelinePrivate *priv = gsk_vulkan_pipeline_get_instance_private (self);
return priv->vertex_stride;
}

View File

@ -37,6 +37,7 @@ GskVulkanPipeline * gsk_vulkan_pipeline_new (GType
const char *shader_name,
VkRenderPass render_pass);
VkPipeline gsk_vulkan_pipeline_get_pipeline (GskVulkanPipeline *self);
gsize gsk_vulkan_pipeline_get_vertex_stride (GskVulkanPipeline *self);
G_END_DECLS

View File

@ -1640,61 +1640,59 @@ gsk_vulkan_render_pass_count_vertex_data (GskVulkanRenderPass *self)
case GSK_VULKAN_OP_FALLBACK_ROUNDED_CLIP:
case GSK_VULKAN_OP_TEXTURE:
case GSK_VULKAN_OP_REPEAT:
op->render.vertex_count = gsk_vulkan_texture_pipeline_count_vertex_data (GSK_VULKAN_TEXTURE_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_TEXT:
op->text.vertex_count = gsk_vulkan_text_pipeline_count_vertex_data (GSK_VULKAN_TEXT_PIPELINE (op->text.pipeline),
op->text.num_glyphs);
op->text.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline) * op->text.num_glyphs;
n_bytes += op->text.vertex_count;
break;
case GSK_VULKAN_OP_COLOR_TEXT:
op->text.vertex_count = gsk_vulkan_color_text_pipeline_count_vertex_data (GSK_VULKAN_COLOR_TEXT_PIPELINE (op->render.pipeline),
op->text.num_glyphs);
op->text.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline) * op->text.num_glyphs;
n_bytes += op->text.vertex_count;
break;
case GSK_VULKAN_OP_COLOR:
op->render.vertex_count = gsk_vulkan_color_pipeline_count_vertex_data (GSK_VULKAN_COLOR_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_LINEAR_GRADIENT:
op->render.vertex_count = gsk_vulkan_linear_gradient_pipeline_count_vertex_data (GSK_VULKAN_LINEAR_GRADIENT_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_OPACITY:
case GSK_VULKAN_OP_COLOR_MATRIX:
op->render.vertex_count = gsk_vulkan_effect_pipeline_count_vertex_data (GSK_VULKAN_EFFECT_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_BLUR:
op->render.vertex_count = gsk_vulkan_blur_pipeline_count_vertex_data (GSK_VULKAN_BLUR_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_BORDER:
op->render.vertex_count = gsk_vulkan_border_pipeline_count_vertex_data (GSK_VULKAN_BORDER_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_INSET_SHADOW:
case GSK_VULKAN_OP_OUTSET_SHADOW:
op->render.vertex_count = gsk_vulkan_box_shadow_pipeline_count_vertex_data (GSK_VULKAN_BOX_SHADOW_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_CROSS_FADE:
op->render.vertex_count = gsk_vulkan_cross_fade_pipeline_count_vertex_data (GSK_VULKAN_CROSS_FADE_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;
case GSK_VULKAN_OP_BLEND_MODE:
op->render.vertex_count = gsk_vulkan_blend_mode_pipeline_count_vertex_data (GSK_VULKAN_BLEND_MODE_PIPELINE (op->render.pipeline));
op->render.vertex_count = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline);
n_bytes += op->render.vertex_count;
break;

View File

@ -91,13 +91,6 @@ gsk_vulkan_text_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_TEXT_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_text_pipeline_count_vertex_data (GskVulkanTextPipeline *pipeline,
int num_instances)
{
return sizeof (GskVulkanTextInstance) * num_instances;
}
void
gsk_vulkan_text_pipeline_collect_vertex_data (GskVulkanTextPipeline *pipeline,
guchar *data,

View File

@ -18,8 +18,6 @@ GskVulkanPipeline * gsk_vulkan_text_pipeline_new (GdkVulka
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_text_pipeline_count_vertex_data (GskVulkanTextPipeline *pipeline,
int num_instances);
void gsk_vulkan_text_pipeline_collect_vertex_data (GskVulkanTextPipeline *pipeline,
guchar *data,
GskVulkanRenderer *renderer,

View File

@ -84,12 +84,6 @@ gsk_vulkan_texture_pipeline_new (GdkVulkanContext *context,
return gsk_vulkan_pipeline_new (GSK_TYPE_VULKAN_TEXTURE_PIPELINE, context, layout, shader_name, render_pass);
}
gsize
gsk_vulkan_texture_pipeline_count_vertex_data (GskVulkanTexturePipeline *pipeline)
{
return sizeof (GskVulkanTextureInstance);
}
void
gsk_vulkan_texture_pipeline_collect_vertex_data (GskVulkanTexturePipeline *pipeline,
guchar *data,

View File

@ -17,7 +17,6 @@ GskVulkanPipeline * gsk_vulkan_texture_pipeline_new (GdkVulk
const char *shader_name,
VkRenderPass render_pass);
gsize gsk_vulkan_texture_pipeline_count_vertex_data (GskVulkanTexturePipeline *pipeline);
void gsk_vulkan_texture_pipeline_collect_vertex_data (GskVulkanTexturePipeline *pipeline,
guchar *data,
const graphene_point_t *offset,