From 153b78e2bc577b0276f6fa35803fa1e44759cdf8 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 15 Mar 2024 13:37:31 +0100 Subject: [PATCH] gpu: Add a ShaderOp.print_instance vfunc ... and add gsk_shader_op_print() to do the generic stuff. --- gsk/gpu/gskgpublendmodeop.c | 18 ++++++------------ gsk/gpu/gskgpublurop.c | 18 ++++++------------ gsk/gpu/gskgpuborderop.c | 19 ++++++------------- gsk/gpu/gskgpuboxshadowop.c | 18 ++++++------------ gsk/gpu/gskgpucolorizeop.c | 18 ++++++------------ gsk/gpu/gskgpucolormatrixop.c | 18 ++++++------------ gsk/gpu/gskgpucolorop.c | 18 ++++++------------ gsk/gpu/gskgpuconicgradientop.c | 18 ++++++------------ gsk/gpu/gskgpucrossfadeop.c | 18 ++++++------------ gsk/gpu/gskgpulineargradientop.c | 21 +++++++-------------- gsk/gpu/gskgpumaskop.c | 18 ++++++------------ gsk/gpu/gskgpuradialgradientop.c | 21 +++++++-------------- gsk/gpu/gskgpuroundedcolorop.c | 18 ++++++------------ gsk/gpu/gskgpushaderop.c | 22 ++++++++++++++++++++++ gsk/gpu/gskgpushaderopprivate.h | 7 +++++++ gsk/gpu/gskgpustraightalphaop.c | 18 ++++++------------ gsk/gpu/gskgputextureop.c | 18 ++++++------------ gsk/gpu/gskgpuuberop.c | 20 +++++++------------- 18 files changed, 128 insertions(+), 198 deletions(-) diff --git a/gsk/gpu/gskgpublendmodeop.c b/gsk/gpu/gskgpublendmodeop.c index cfd51c9136..83d0fbed69 100644 --- a/gsk/gpu/gskgpublendmodeop.c +++ b/gsk/gpu/gskgpublendmodeop.c @@ -17,23 +17,16 @@ struct _GskGpuBlendModeOp }; static void -gsk_gpu_blend_mode_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_blend_mode_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuBlendmodeInstance *instance; + GskGpuBlendmodeInstance *instance = (GskGpuBlendmodeInstance *) instance_; - instance = (GskGpuBlendmodeInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "blend-mode"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->bottom_id); gsk_gpu_print_enum (string, GSK_TYPE_BLEND_MODE, shader->variation); gsk_gpu_print_image_descriptor (string, shader->desc, instance->top_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_BLEND_MODE_OP_CLASS = { @@ -41,7 +34,7 @@ static const GskGpuShaderOpClass GSK_GPU_BLEND_MODE_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuBlendModeOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_blend_mode_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -52,6 +45,7 @@ static const GskGpuShaderOpClass GSK_GPU_BLEND_MODE_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_blendmode_info, #endif + gsk_gpu_blend_mode_op_print_instance, gsk_gpu_blendmode_setup_attrib_locations, gsk_gpu_blendmode_setup_vao }; diff --git a/gsk/gpu/gskgpublurop.c b/gsk/gpu/gskgpublurop.c index fd26bf927e..7b657a1b2d 100644 --- a/gsk/gpu/gskgpublurop.c +++ b/gsk/gpu/gskgpublurop.c @@ -20,22 +20,15 @@ struct _GskGpuBlurOp }; static void -gsk_gpu_blur_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_blur_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuBlurInstance *instance; + GskGpuBlurInstance *instance = (GskGpuBlurInstance *) instance_; - instance = (GskGpuBlurInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "blur"); - gsk_gpu_print_shader_info (string, shader->clip); g_string_append_printf (string, "%g,%g ", instance->blur_direction[0], instance->blur_direction[1]); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->tex_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_BLUR_OP_CLASS = { @@ -43,7 +36,7 @@ static const GskGpuShaderOpClass GSK_GPU_BLUR_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuBlurOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_blur_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -54,6 +47,7 @@ static const GskGpuShaderOpClass GSK_GPU_BLUR_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_blur_info, #endif + gsk_gpu_blur_op_print_instance, gsk_gpu_blur_setup_attrib_locations, gsk_gpu_blur_setup_vao }; diff --git a/gsk/gpu/gskgpuborderop.c b/gsk/gpu/gskgpuborderop.c index fb414f53cb..c623b7d7c7 100644 --- a/gsk/gpu/gskgpuborderop.c +++ b/gsk/gpu/gskgpuborderop.c @@ -25,18 +25,12 @@ color_equal (const float *color1, } static void -gsk_gpu_border_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_border_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuBorderInstance *instance; + GskGpuBorderInstance *instance = (GskGpuBorderInstance *) instance_; - instance = (GskGpuBorderInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "border"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rounded_rect (string, instance->outline); gsk_gpu_print_rgba (string, (const float *) &instance->border_colors[0]); @@ -58,8 +52,6 @@ gsk_gpu_border_op_print (GskGpuOp *op, instance->border_widths[2], instance->border_widths[3]); } - - gsk_gpu_print_newline (string); } #ifdef GDK_RENDERING_VULKAN @@ -85,7 +77,7 @@ static const GskGpuShaderOpClass GSK_GPU_BORDER_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuBorderOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_border_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_border_op_vk_command, #endif @@ -96,6 +88,7 @@ static const GskGpuShaderOpClass GSK_GPU_BORDER_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_border_info, #endif + gsk_gpu_border_op_print_instance, gsk_gpu_border_setup_attrib_locations, gsk_gpu_border_setup_vao }; diff --git a/gsk/gpu/gskgpuboxshadowop.c b/gsk/gpu/gskgpuboxshadowop.c index 399c43b212..1b8d1df3e3 100644 --- a/gsk/gpu/gskgpuboxshadowop.c +++ b/gsk/gpu/gskgpuboxshadowop.c @@ -20,24 +20,17 @@ struct _GskGpuBoxShadowOp }; static void -gsk_gpu_box_shadow_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_box_shadow_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuBoxshadowInstance *instance; + GskGpuBoxshadowInstance *instance = (GskGpuBoxshadowInstance *) instance_; - instance = (GskGpuBoxshadowInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, shader->variation & VARIATION_INSET ? "inset-shadow" : "outset-shadow"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rounded_rect (string, instance->outline); gsk_gpu_print_rgba (string, instance->color); g_string_append_printf (string, "%g %g %g %g ", instance->shadow_offset[0], instance->shadow_offset[1], instance->blur_radius, instance->shadow_spread); - gsk_gpu_print_newline (string); } #ifdef GDK_RENDERING_VULKAN @@ -63,7 +56,7 @@ static const GskGpuShaderOpClass GSK_GPU_BOX_SHADOW_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuBoxShadowOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_box_shadow_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_box_shadow_op_vk_command, #endif @@ -74,6 +67,7 @@ static const GskGpuShaderOpClass GSK_GPU_BOX_SHADOW_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_boxshadow_info, #endif + gsk_gpu_box_shadow_op_print_instance, gsk_gpu_boxshadow_setup_attrib_locations, gsk_gpu_boxshadow_setup_vao }; diff --git a/gsk/gpu/gskgpucolorizeop.c b/gsk/gpu/gskgpucolorizeop.c index 9c3d948e8c..98d03eb9e0 100644 --- a/gsk/gpu/gskgpucolorizeop.c +++ b/gsk/gpu/gskgpucolorizeop.c @@ -16,22 +16,15 @@ struct _GskGpuColorizeOp }; static void -gsk_gpu_colorize_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_colorize_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuColorizeInstance *instance; + GskGpuColorizeInstance *instance = (GskGpuColorizeInstance *) instance_; - instance = (GskGpuColorizeInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "colorize"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->tex_id); gsk_gpu_print_rgba (string, instance->color); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_COLORIZE_OP_CLASS = { @@ -39,7 +32,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLORIZE_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuColorizeOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_colorize_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -50,6 +43,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLORIZE_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_colorize_info, #endif + gsk_gpu_colorize_op_print_instance, gsk_gpu_colorize_setup_attrib_locations, gsk_gpu_colorize_setup_vao }; diff --git a/gsk/gpu/gskgpucolormatrixop.c b/gsk/gpu/gskgpucolormatrixop.c index 337be07b7a..e3eb1c8d5a 100644 --- a/gsk/gpu/gskgpucolormatrixop.c +++ b/gsk/gpu/gskgpucolormatrixop.c @@ -16,21 +16,14 @@ struct _GskGpuColorMatrixOp }; static void -gsk_gpu_color_matrix_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_color_matrix_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuColormatrixInstance *instance; + GskGpuColormatrixInstance *instance = (GskGpuColormatrixInstance *) instance_; - instance = (GskGpuColormatrixInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "color-matrix"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->tex_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_COLOR_MATRIX_OP_CLASS = { @@ -38,7 +31,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLOR_MATRIX_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuColorMatrixOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_color_matrix_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -49,6 +42,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLOR_MATRIX_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_colormatrix_info, #endif + gsk_gpu_color_matrix_op_print_instance, gsk_gpu_colormatrix_setup_attrib_locations, gsk_gpu_colormatrix_setup_vao }; diff --git a/gsk/gpu/gskgpucolorop.c b/gsk/gpu/gskgpucolorop.c index 219343988c..0d8cf77c42 100644 --- a/gsk/gpu/gskgpucolorop.c +++ b/gsk/gpu/gskgpucolorop.c @@ -17,21 +17,14 @@ struct _GskGpuColorOp }; static void -gsk_gpu_color_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_color_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuColorInstance *instance; + GskGpuColorInstance *instance = (GskGpuColorInstance *) instance_; - instance = (GskGpuColorInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "color"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_rgba (string, instance->color); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_COLOR_OP_CLASS = { @@ -39,7 +32,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLOR_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuColorOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_color_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -50,6 +43,7 @@ static const GskGpuShaderOpClass GSK_GPU_COLOR_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_color_info, #endif + gsk_gpu_color_op_print_instance, gsk_gpu_color_setup_attrib_locations, gsk_gpu_color_setup_vao }; diff --git a/gsk/gpu/gskgpuconicgradientop.c b/gsk/gpu/gskgpuconicgradientop.c index 1f14fbdbbc..a9a8c85cfe 100644 --- a/gsk/gpu/gskgpuconicgradientop.c +++ b/gsk/gpu/gskgpuconicgradientop.c @@ -18,20 +18,13 @@ struct _GskGpuConicGradientOp }; static void -gsk_gpu_conic_gradient_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_conic_gradient_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuConicgradientInstance *instance; + GskGpuConicgradientInstance *instance = (GskGpuConicgradientInstance *) instance_; - instance = (GskGpuConicgradientInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "conic-gradient"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_CONIC_GRADIENT_OP_CLASS = { @@ -39,7 +32,7 @@ static const GskGpuShaderOpClass GSK_GPU_CONIC_GRADIENT_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuConicGradientOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_conic_gradient_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -50,6 +43,7 @@ static const GskGpuShaderOpClass GSK_GPU_CONIC_GRADIENT_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_conicgradient_info, #endif + gsk_gpu_conic_gradient_op_print_instance, gsk_gpu_conicgradient_setup_attrib_locations, gsk_gpu_conicgradient_setup_vao }; diff --git a/gsk/gpu/gskgpucrossfadeop.c b/gsk/gpu/gskgpucrossfadeop.c index a40f91a92c..37f32b45d3 100644 --- a/gsk/gpu/gskgpucrossfadeop.c +++ b/gsk/gpu/gskgpucrossfadeop.c @@ -16,23 +16,16 @@ struct _GskGpuCrossFadeOp }; static void -gsk_gpu_cross_fade_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_cross_fade_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuCrossfadeInstance *instance; + GskGpuCrossfadeInstance *instance = (GskGpuCrossfadeInstance *) instance_; - instance = (GskGpuCrossfadeInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "cross-fade"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->start_id); gsk_gpu_print_image_descriptor (string, shader->desc, instance->end_id); g_string_append_printf (string, "%g%%", 100 * instance->opacity_progress[1]); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_CROSS_FADE_OP_CLASS = { @@ -40,7 +33,7 @@ static const GskGpuShaderOpClass GSK_GPU_CROSS_FADE_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuCrossFadeOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_cross_fade_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -51,6 +44,7 @@ static const GskGpuShaderOpClass GSK_GPU_CROSS_FADE_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_crossfade_info, #endif + gsk_gpu_cross_fade_op_print_instance, gsk_gpu_crossfade_setup_attrib_locations, gsk_gpu_crossfade_setup_vao }; diff --git a/gsk/gpu/gskgpulineargradientop.c b/gsk/gpu/gskgpulineargradientop.c index ae2a0ac626..b616d41457 100644 --- a/gsk/gpu/gskgpulineargradientop.c +++ b/gsk/gpu/gskgpulineargradientop.c @@ -19,23 +19,15 @@ struct _GskGpuLinearGradientOp }; static void -gsk_gpu_linear_gradient_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_linear_gradient_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuLineargradientInstance *instance; - - instance = (GskGpuLineargradientInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); + GskGpuLineargradientInstance *instance = (GskGpuLineargradientInstance *) instance_; if (shader->variation & VARIATION_REPEATING) - gsk_gpu_print_op (string, indent, "repeating-linear-gradient"); - else - gsk_gpu_print_op (string, indent, "linear-gradient"); - gsk_gpu_print_shader_info (string, shader->clip); + gsk_gpu_print_string (string, "repeating"); gsk_gpu_print_rect (string, instance->rect); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_LINEAR_GRADIENT_OP_CLASS = { @@ -43,7 +35,7 @@ static const GskGpuShaderOpClass GSK_GPU_LINEAR_GRADIENT_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuLinearGradientOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_linear_gradient_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -54,6 +46,7 @@ static const GskGpuShaderOpClass GSK_GPU_LINEAR_GRADIENT_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_lineargradient_info, #endif + gsk_gpu_linear_gradient_op_print_instance, gsk_gpu_lineargradient_setup_attrib_locations, gsk_gpu_lineargradient_setup_vao }; diff --git a/gsk/gpu/gskgpumaskop.c b/gsk/gpu/gskgpumaskop.c index 4f6414d9ec..b57f525049 100644 --- a/gsk/gpu/gskgpumaskop.c +++ b/gsk/gpu/gskgpumaskop.c @@ -16,22 +16,15 @@ struct _GskGpuMaskOp }; static void -gsk_gpu_mask_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_mask_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuMaskInstance *instance; + GskGpuMaskInstance *instance = (GskGpuMaskInstance *) instance_; - instance = (GskGpuMaskInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "mask"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->source_id); gsk_gpu_print_image_descriptor (string, shader->desc, instance->mask_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_MASK_OP_CLASS = { @@ -39,7 +32,7 @@ static const GskGpuShaderOpClass GSK_GPU_MASK_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuMaskOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_mask_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -50,6 +43,7 @@ static const GskGpuShaderOpClass GSK_GPU_MASK_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_mask_info, #endif + gsk_gpu_mask_op_print_instance, gsk_gpu_mask_setup_attrib_locations, gsk_gpu_mask_setup_vao }; diff --git a/gsk/gpu/gskgpuradialgradientop.c b/gsk/gpu/gskgpuradialgradientop.c index ea75fd56a8..36004c6cfc 100644 --- a/gsk/gpu/gskgpuradialgradientop.c +++ b/gsk/gpu/gskgpuradialgradientop.c @@ -19,23 +19,15 @@ struct _GskGpuRadialGradientOp }; static void -gsk_gpu_radial_gradient_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_radial_gradient_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuRadialgradientInstance *instance; - - instance = (GskGpuRadialgradientInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); + GskGpuRadialgradientInstance *instance = (GskGpuRadialgradientInstance *) instance_; if (shader->variation & VARIATION_REPEATING) - gsk_gpu_print_op (string, indent, "repeating-radial-gradient"); - else - gsk_gpu_print_op (string, indent, "radial-gradient"); - gsk_gpu_print_shader_info (string, shader->clip); + gsk_gpu_print_string (string, "repeating"); gsk_gpu_print_rect (string, instance->rect); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_RADIAL_GRADIENT_OP_CLASS = { @@ -43,7 +35,7 @@ static const GskGpuShaderOpClass GSK_GPU_RADIAL_GRADIENT_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuRadialGradientOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_radial_gradient_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -54,6 +46,7 @@ static const GskGpuShaderOpClass GSK_GPU_RADIAL_GRADIENT_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_radialgradient_info, #endif + gsk_gpu_radial_gradient_op_print_instance, gsk_gpu_radialgradient_setup_attrib_locations, gsk_gpu_radialgradient_setup_vao }; diff --git a/gsk/gpu/gskgpuroundedcolorop.c b/gsk/gpu/gskgpuroundedcolorop.c index e9be14978d..41b898a6cd 100644 --- a/gsk/gpu/gskgpuroundedcolorop.c +++ b/gsk/gpu/gskgpuroundedcolorop.c @@ -17,21 +17,14 @@ struct _GskGpuRoundedColorOp }; static void -gsk_gpu_rounded_color_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_rounded_color_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuRoundedcolorInstance *instance; + GskGpuRoundedcolorInstance *instance = (GskGpuRoundedcolorInstance *) instance_; - instance = (GskGpuRoundedcolorInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "rounded-color"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rounded_rect (string, instance->outline); gsk_gpu_print_rgba (string, instance->color); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_ROUNDED_COLOR_OP_CLASS = { @@ -39,7 +32,7 @@ static const GskGpuShaderOpClass GSK_GPU_ROUNDED_COLOR_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuRoundedColorOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_rounded_color_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -50,6 +43,7 @@ static const GskGpuShaderOpClass GSK_GPU_ROUNDED_COLOR_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_roundedcolor_info, #endif + gsk_gpu_rounded_color_op_print_instance, gsk_gpu_roundedcolor_setup_attrib_locations, gsk_gpu_roundedcolor_setup_vao }; diff --git a/gsk/gpu/gskgpushaderop.c b/gsk/gpu/gskgpushaderop.c index c6ce9e07bd..177f85beae 100644 --- a/gsk/gpu/gskgpushaderop.c +++ b/gsk/gpu/gskgpushaderop.c @@ -3,6 +3,7 @@ #include "gskgpushaderopprivate.h" #include "gskgpuframeprivate.h" +#include "gskgpuprintprivate.h" #include "gskgldescriptorsprivate.h" #include "gskgldeviceprivate.h" #include "gskglframeprivate.h" @@ -26,6 +27,27 @@ gsk_gpu_shader_op_finish (GskGpuOp *op) g_clear_object (&self->desc); } +void +gsk_gpu_shader_op_print (GskGpuOp *op, + GskGpuFrame *frame, + GString *string, + guint indent) +{ + GskGpuShaderOp *shader = (GskGpuShaderOp *) op; + const GskGpuShaderOpClass *shader_class = (const GskGpuShaderOpClass *) op->op_class; + gpointer instance; + + instance = gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); + + if (g_str_has_prefix (shader_class->shader_name, "gskgpu")) + gsk_gpu_print_op (string, indent, shader_class->shader_name + 6); + else + gsk_gpu_print_op (string, indent, shader_class->shader_name); + gsk_gpu_print_shader_info (string, shader->clip); + shader_class->print_instance (shader, instance, string); + gsk_gpu_print_newline (string); +} + #ifdef GDK_RENDERING_VULKAN GskGpuOp * gsk_gpu_shader_op_vk_command_n (GskGpuOp *op, diff --git a/gsk/gpu/gskgpushaderopprivate.h b/gsk/gpu/gskgpushaderopprivate.h index f7759a6115..f92c91a54f 100644 --- a/gsk/gpu/gskgpushaderopprivate.h +++ b/gsk/gpu/gskgpushaderopprivate.h @@ -25,6 +25,9 @@ struct _GskGpuShaderOpClass #ifdef GDK_RENDERING_VULKAN const VkPipelineVertexInputStateCreateInfo *vertex_input_state; #endif + void (* print_instance) (GskGpuShaderOp *shader, + gpointer instance, + GString *string); void (* setup_attrib_locations) (GLuint program); void (* setup_vao) (gsize offset); }; @@ -38,6 +41,10 @@ GskGpuShaderOp * gsk_gpu_shader_op_alloc (GskGpuF void gsk_gpu_shader_op_finish (GskGpuOp *op); +void gsk_gpu_shader_op_print (GskGpuOp *op, + GskGpuFrame *frame, + GString *string, + guint indent); #ifdef GDK_RENDERING_VULKAN GskGpuOp * gsk_gpu_shader_op_vk_command_n (GskGpuOp *op, GskGpuFrame *frame, diff --git a/gsk/gpu/gskgpustraightalphaop.c b/gsk/gpu/gskgpustraightalphaop.c index 3a252978c9..1e9b784627 100644 --- a/gsk/gpu/gskgpustraightalphaop.c +++ b/gsk/gpu/gskgpustraightalphaop.c @@ -19,21 +19,14 @@ struct _GskGpuStraightAlphaOp }; static void -gsk_gpu_straight_alpha_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_straight_alpha_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuStraightalphaInstance *instance; + GskGpuStraightalphaInstance *instance = (GskGpuStraightalphaInstance *) instance_; - instance = (GskGpuStraightalphaInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "straight-alpha"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->tex_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_STRAIGHT_ALPHA_OP_CLASS = { @@ -41,7 +34,7 @@ static const GskGpuShaderOpClass GSK_GPU_STRAIGHT_ALPHA_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuStraightAlphaOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_straight_alpha_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -52,6 +45,7 @@ static const GskGpuShaderOpClass GSK_GPU_STRAIGHT_ALPHA_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_straightalpha_info, #endif + gsk_gpu_straight_alpha_op_print_instance, gsk_gpu_straightalpha_setup_attrib_locations, gsk_gpu_straightalpha_setup_vao }; diff --git a/gsk/gpu/gskgputextureop.c b/gsk/gpu/gskgputextureop.c index 09c169664f..1856b53685 100644 --- a/gsk/gpu/gskgputextureop.c +++ b/gsk/gpu/gskgputextureop.c @@ -16,21 +16,14 @@ struct _GskGpuTextureOp }; static void -gsk_gpu_texture_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_texture_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuTextureInstance *instance; + GskGpuTextureInstance *instance = (GskGpuTextureInstance *) instance_; - instance = (GskGpuTextureInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "texture"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); gsk_gpu_print_image_descriptor (string, shader->desc, instance->tex_id); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_TEXTURE_OP_CLASS = { @@ -38,7 +31,7 @@ static const GskGpuShaderOpClass GSK_GPU_TEXTURE_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuTextureOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_texture_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -49,6 +42,7 @@ static const GskGpuShaderOpClass GSK_GPU_TEXTURE_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_texture_info, #endif + gsk_gpu_texture_op_print_instance, gsk_gpu_texture_setup_attrib_locations, gsk_gpu_texture_setup_vao }; diff --git a/gsk/gpu/gskgpuuberop.c b/gsk/gpu/gskgpuuberop.c index cd5e4f4d22..616b3c499e 100644 --- a/gsk/gpu/gskgpuuberop.c +++ b/gsk/gpu/gskgpuuberop.c @@ -17,20 +17,13 @@ struct _GskGpuUberOp }; static void -gsk_gpu_uber_op_print (GskGpuOp *op, - GskGpuFrame *frame, - GString *string, - guint indent) +gsk_gpu_uber_op_print_instance (GskGpuShaderOp *shader, + gpointer instance_, + GString *string) { - GskGpuShaderOp *shader = (GskGpuShaderOp *) op; - GskGpuUberInstance *instance; + GskGpuUberInstance *instance = instance_; - instance = (GskGpuUberInstance *) gsk_gpu_frame_get_vertex_data (frame, shader->vertex_offset); - - gsk_gpu_print_op (string, indent, "uber"); - gsk_gpu_print_shader_info (string, shader->clip); gsk_gpu_print_rect (string, instance->rect); - gsk_gpu_print_newline (string); } static const GskGpuShaderOpClass GSK_GPU_UBER_OP_CLASS = { @@ -38,7 +31,7 @@ static const GskGpuShaderOpClass GSK_GPU_UBER_OP_CLASS = { GSK_GPU_OP_SIZE (GskGpuUberOp), GSK_GPU_STAGE_SHADER, gsk_gpu_shader_op_finish, - gsk_gpu_uber_op_print, + gsk_gpu_shader_op_print, #ifdef GDK_RENDERING_VULKAN gsk_gpu_shader_op_vk_command, #endif @@ -49,8 +42,9 @@ static const GskGpuShaderOpClass GSK_GPU_UBER_OP_CLASS = { #ifdef GDK_RENDERING_VULKAN &gsk_gpu_uber_info, #endif + gsk_gpu_uber_op_print_instance, gsk_gpu_uber_setup_attrib_locations, - gsk_gpu_uber_setup_vao + gsk_gpu_uber_setup_vao, }; void