diff --git a/gsk/gpu/gskgpunodeprocessor.c b/gsk/gpu/gskgpunodeprocessor.c index a5a6ab3c41..05b4f71ec3 100644 --- a/gsk/gpu/gskgpunodeprocessor.c +++ b/gsk/gpu/gskgpunodeprocessor.c @@ -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; }