gpointer download_data)
{
graphene_vec2_t scale;
+ cairo_rectangle_int_t extents;
graphene_vec2_init (&scale, self->scale, self->scale);
+ cairo_region_get_extents (self->clip, &extents);
gsk_vulkan_render_pass_op (self,
g_object_ref (self->target),
- self->clip,
+ &extents,
&scale,
&self->viewport,
node,
GskVulkanRender *render,
const graphene_vec2_t *scale,
const graphene_rect_t *viewport,
- cairo_region_t *clip_region,
+ cairo_rectangle_int_t *clip,
GskRenderNode *node)
{
GskVulkanParseState state;
- graphene_rect_t clip;
+ graphene_rect_t scaled_clip;
float scale_x, scale_y;
scale_x = 1 / graphene_vec2_get_x (scale);
scale_y = 1 / graphene_vec2_get_y (scale);
- cairo_region_get_extents (clip_region, &state.scissor);
- clip = GRAPHENE_RECT_INIT(state.scissor.x, state.scissor.y,
- state.scissor.width, state.scissor.height);
- graphene_rect_scale (&clip, scale_x, scale_y, &clip);
- gsk_vulkan_clip_init_empty (&state.clip, &clip);
+ state.scissor = *clip;
+ scaled_clip = GRAPHENE_RECT_INIT(clip->x, clip->y, clip->width, clip->height);
+ graphene_rect_scale (&scaled_clip, scale_x, scale_y, &scaled_clip);
+ gsk_vulkan_clip_init_empty (&state.clip, &scaled_clip);
state.modelview = NULL;
graphene_matrix_init_ortho (&state.projection,
void
gsk_vulkan_render_pass_op (GskVulkanRender *render,
GskVulkanImage *image,
- cairo_region_t *clip,
+ cairo_rectangle_int_t *area,
const graphene_vec2_t *scale,
const graphene_rect_t *viewport,
GskRenderNode *node,
self->image = image;
self->initial_layout = initial_layout;
self->final_layout = final_layout;
- cairo_region_get_extents (clip, &self->area);
+ self->area = *area;
self->viewport_size = viewport->size;
self->render_pass = gsk_vulkan_render_pass_new ();
render,
scale,
viewport,
- clip,
+ area,
node);
end = (GskVulkanRenderPassEndOp *) gsk_vulkan_op_alloc (render, &GSK_VULKAN_RENDER_PASS_END_OP_CLASS);
GdkVulkanContext *context;
graphene_rect_t view;
GskVulkanImage *image;
- cairo_region_t *clip;
float scale_x, scale_y;
scale_x = graphene_vec2_get_x (scale);
gsk_render_node_get_preferred_depth (node)),
view.size.width, view.size.height);
- clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
- 0, 0,
- gsk_vulkan_image_get_width (image),
- gsk_vulkan_image_get_height (image)
- });
-
gsk_vulkan_render_pass_op (render,
image,
- clip,
+ &(cairo_rectangle_int_t) {
+ 0, 0,
+ gsk_vulkan_image_get_width (image),
+ gsk_vulkan_image_get_height (image)
+ },
scale,
&view,
node,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
- cairo_region_destroy (clip);
-
return image;
}
void gsk_vulkan_render_pass_op (GskVulkanRender *render,
GskVulkanImage *image,
- cairo_region_t *clip,
+ cairo_rectangle_int_t *area,
const graphene_vec2_t *scale,
const graphene_rect_t *viewport,
GskRenderNode *node,
GskVulkanRender *render,
const graphene_vec2_t *scale,
const graphene_rect_t *viewport,
- cairo_region_t *clip,
+ cairo_rectangle_int_t *clip,
GskRenderNode *node);
G_END_DECLS