gpu: Use nodprocessor infrastructure for offscreening

The just copied over function can just use the same infrastructure as
the other functions we already have that create slightly adjusted
offscreens.
This commit is contained in:
Benjamin Otte
2024-02-11 05:23:35 +01:00
parent 7c861d8b59
commit cfaddb5d47

View File

@@ -739,31 +739,18 @@ gsk_gpu_node_processor_create_offscreen (GskGpuFrame *frame,
const graphene_rect_t *viewport,
GskRenderNode *node)
{
GskGpuNodeProcessor self;
GskGpuImage *image;
int width, height;
width = ceil (graphene_vec2_get_x (scale) * viewport->size.width);
height = ceil (graphene_vec2_get_y (scale) * viewport->size.height);
image = gsk_gpu_node_processor_init_draw (&self,
frame,
gsk_render_node_get_preferred_depth (node),
scale,
viewport);
image = gsk_gpu_device_create_offscreen_image (gsk_gpu_frame_get_device (frame),
FALSE,
gsk_render_node_get_preferred_depth (node),
width, height);
gsk_gpu_node_processor_add_node (&self, node);
gsk_gpu_render_pass_begin_op (frame,
image,
&(cairo_rectangle_int_t) { 0, 0, width, height },
GSK_RENDER_PASS_OFFSCREEN);
gsk_gpu_node_processor_process (frame,
image,
&(cairo_rectangle_int_t) { 0, 0, width, height },
node,
viewport);
gsk_gpu_render_pass_end_op (frame,
image,
GSK_RENDER_PASS_OFFSCREEN);
gsk_gpu_node_processor_finish_draw (&self, image);
return image;
}