From 52db54e8031ceb801a5ec55d77fe64aa18a5ea04 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 19 Jul 2024 12:11:40 +0200 Subject: [PATCH] gpu: Use GskGpuShaderImage for crossfade ops --- gsk/gpu/gskgpucrossfadeop.c | 30 ++++++++++++++---------------- gsk/gpu/gskgpucrossfadeopprivate.h | 6 ++---- gsk/gpu/gskgpunodeprocessor.c | 18 ++++++++++++++---- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/gsk/gpu/gskgpucrossfadeop.c b/gsk/gpu/gskgpucrossfadeop.c index 6c82a63b28..4c9e87f626 100644 --- a/gsk/gpu/gskgpucrossfadeop.c +++ b/gsk/gpu/gskgpucrossfadeop.c @@ -50,18 +50,16 @@ static const GskGpuShaderOpClass GSK_GPU_CROSS_FADE_OP_CLASS = { }; void -gsk_gpu_cross_fade_op (GskGpuFrame *frame, - GskGpuShaderClip clip, - GskGpuColorStates color_states, - GskGpuDescriptors *desc, - const graphene_rect_t *rect, - const graphene_point_t *offset, - float opacity, - float progress, - guint32 start_descriptor, - const graphene_rect_t *start_rect, - guint32 end_descriptor, - const graphene_rect_t *end_rect) +gsk_gpu_cross_fade_op (GskGpuFrame *frame, + GskGpuShaderClip clip, + GskGpuColorStates color_states, + GskGpuDescriptors *desc, + const graphene_rect_t *rect, + const graphene_point_t *offset, + float opacity, + float progress, + const GskGpuShaderImage *start, + const GskGpuShaderImage *end) { GskGpuCrossfadeInstance *instance; @@ -76,8 +74,8 @@ gsk_gpu_cross_fade_op (GskGpuFrame *frame, gsk_gpu_rect_to_float (rect, offset, instance->rect); instance->opacity_progress[0] = opacity; instance->opacity_progress[1] = progress; - gsk_gpu_rect_to_float (start_rect, offset, instance->start_rect); - instance->start_id = start_descriptor; - gsk_gpu_rect_to_float (end_rect, offset, instance->end_rect); - instance->end_id = end_descriptor; + gsk_gpu_rect_to_float (start->bounds, offset, instance->start_rect); + instance->start_id = start->descriptor; + gsk_gpu_rect_to_float (end->bounds, offset, instance->end_rect); + instance->end_id = end->descriptor; } diff --git a/gsk/gpu/gskgpucrossfadeopprivate.h b/gsk/gpu/gskgpucrossfadeopprivate.h index 0e7a89611d..ceb7d1fcc1 100644 --- a/gsk/gpu/gskgpucrossfadeopprivate.h +++ b/gsk/gpu/gskgpucrossfadeopprivate.h @@ -14,10 +14,8 @@ void gsk_gpu_cross_fade_op (GskGpuF const graphene_point_t *offset, float opacity, float progress, - guint32 start_descriptor, - const graphene_rect_t *start_rect, - guint32 end_descriptor, - const graphene_rect_t *end_rect); + const GskGpuShaderImage *start, + const GskGpuShaderImage *end); G_END_DECLS diff --git a/gsk/gpu/gskgpunodeprocessor.c b/gsk/gpu/gskgpunodeprocessor.c index ba2461abbc..77ea9178a8 100644 --- a/gsk/gpu/gskgpunodeprocessor.c +++ b/gsk/gpu/gskgpunodeprocessor.c @@ -2739,10 +2739,20 @@ gsk_gpu_node_processor_add_cross_fade_node (GskGpuNodeProcessor *self, &self->offset, self->opacity, progress, - descriptors[0], - &start_rect, - descriptors[1], - &end_rect); + &(GskGpuShaderImage) { + start_image, + GSK_GPU_SAMPLER_DEFAULT, + descriptors[0], + NULL, + &start_rect + }, + &(GskGpuShaderImage) { + end_image, + GSK_GPU_SAMPLER_DEFAULT, + descriptors[1], + NULL, + &end_rect + }); g_object_unref (end_image); g_object_unref (start_image);