GskRenderNode *node,
const GskVulkanParseState *state)
{
- GskVulkanOp op = {
- .scissor.type = GSK_VULKAN_OP_SCISSOR,
- .scissor.node = node,
- .scissor.rect = state->scissor
+ GskVulkanOpScissor op = {
+ .type = GSK_VULKAN_OP_SCISSOR,
+ .node = node,
+ .rect = state->scissor
};
- gsk_vulkan_render_pass_add_op (self, &op);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
}
static void
GskRenderNode *node,
const GskVulkanParseState *state)
{
- GskVulkanOp op = {
- .constants.type = GSK_VULKAN_OP_PUSH_VERTEX_CONSTANTS,
- .constants.node = node,
- .constants.scale = state->scale,
- .constants.clip = state->clip.rect,
+ GskVulkanOpPushConstants op = {
+ .type = GSK_VULKAN_OP_PUSH_VERTEX_CONSTANTS,
+ .node = node,
+ .scale = state->scale,
+ .clip = state->clip.rect,
};
if (state->modelview)
{
- gsk_transform_to_matrix (state->modelview, &op.constants.mvp);
- graphene_matrix_multiply (&op.constants.mvp, &state->projection, &op.constants.mvp);
+ gsk_transform_to_matrix (state->modelview, &op.mvp);
+ graphene_matrix_multiply (&op.mvp, &state->projection, &op.mvp);
}
else
- graphene_matrix_init_from_matrix (&op.constants.mvp, &state->projection);
+ graphene_matrix_init_from_matrix (&op.mvp, &state->projection);
- gsk_vulkan_render_pass_add_op (self, &op);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
}
#define FALLBACK(...) G_STMT_START { \
const GskVulkanParseState *state,
GskRenderNode *node)
{
- GskVulkanOp op = {
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .node = node,
+ .offset = state->offset,
};
switch (state->clip.type)
break;
case GSK_VULKAN_CLIP_RECT:
op.type = GSK_VULKAN_OP_FALLBACK_CLIP;
- gsk_rounded_rect_init_copy (&op.render.clip, &state->clip.rect);
+ gsk_rounded_rect_init_copy (&op.clip, &state->clip.rect);
break;
case GSK_VULKAN_CLIP_ROUNDED:
op.type = GSK_VULKAN_OP_FALLBACK_ROUNDED_CLIP;
- gsk_rounded_rect_init_copy (&op.render.clip, &state->clip.rect);
+ gsk_rounded_rect_init_copy (&op.clip, &state->clip.rect);
break;
case GSK_VULKAN_CLIP_ALL_CLIPPED:
default:
return FALSE;
}
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, GSK_VULKAN_PIPELINE_TEXTURE);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, GSK_VULKAN_PIPELINE_TEXTURE);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
const GskVulkanParseState *state,
GskRenderNode *node)
{
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_COLOR,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_COLOR,
+ .node = node,
+ .offset = state->offset,
};
GskVulkanPipelineType pipeline_type;
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_LINEAR_GRADIENT,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_LINEAR_GRADIENT,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_LINEAR_GRADIENT_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_BORDER,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_BORDER,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_BORDER_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_TEXTURE,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_TEXTURE,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_TEXTURE_SCALE,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_TEXTURE_SCALE,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_INSET_SHADOW,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_INSET_SHADOW,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_inset_shadow_node_get_blur_radius (node) > 0)
else
pipeline_type = GSK_VULKAN_PIPELINE_INSET_SHADOW_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_OUTSET_SHADOW,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_OUTSET_SHADOW,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_outset_shadow_node_get_blur_radius (node) > 0)
else
pipeline_type = GSK_VULKAN_PIPELINE_OUTSET_SHADOW_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_OPACITY,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_OPACITY,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_COLOR_MATRIX,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_COLOR_MATRIX,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_REPEAT,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_REPEAT,
+ .node = node,
+ .offset = state->offset,
};
if (graphene_rect_get_area (gsk_repeat_node_get_child_bounds (node)) == 0)
else
pipeline_type = GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_BLEND_MODE,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_BLEND_MODE,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_BLEND_MODE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
const GskVulkanParseState *state,
GskRenderNode *node)
{
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_CROSS_FADE,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_CROSS_FADE,
+ .node = node,
+ .offset = state->offset,
};
GskVulkanPipelineType pipeline_type;
else
pipeline_type = GSK_VULKAN_PIPELINE_CROSS_FADE_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}
const GskVulkanParseState *state,
GskRenderNode *node)
{
- GskVulkanOp op = {
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpText op = {
+ .node = node,
+ .offset = state->offset,
};
GskVulkanPipelineType pipeline_type;
const PangoGlyphInfo *glyphs;
pipeline_type = GSK_VULKAN_PIPELINE_TEXT_CLIP_ROUNDED;
op.type = GSK_VULKAN_OP_TEXT;
}
- op.text.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- op.text.start_glyph = 0;
- op.text.texture_index = G_MAXUINT;
- op.text.scale = MAX (graphene_vec2_get_x (&state->scale), graphene_vec2_get_y (&state->scale));
+ op.start_glyph = 0;
+ op.texture_index = G_MAXUINT;
+ op.scale = MAX (graphene_vec2_get_x (&state->scale), graphene_vec2_get_y (&state->scale));
x_position = 0;
for (i = 0, count = 0; i < num_glyphs; i++)
gi->glyph,
x_position + gi->geometry.x_offset,
gi->geometry.y_offset,
- op.text.scale);
- if (op.text.texture_index == G_MAXUINT)
- op.text.texture_index = texture_index;
- if (texture_index != op.text.texture_index)
+ op.scale);
+ if (op.texture_index == G_MAXUINT)
+ op.texture_index = texture_index;
+ if (texture_index != op.texture_index)
{
- op.text.num_glyphs = count;
+ op.num_glyphs = count;
- gsk_vulkan_render_pass_add_op (self, &op);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
count = 1;
- op.text.start_glyph = i;
- op.text.texture_index = texture_index;
+ op.start_glyph = i;
+ op.texture_index = texture_index;
}
else
count++;
x_position += gi->geometry.width;
}
- if (op.text.texture_index != G_MAXUINT && count != 0)
+ if (op.texture_index != G_MAXUINT && count != 0)
{
- op.text.num_glyphs = count;
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.num_glyphs = count;
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
}
return TRUE;
GskRenderNode *node)
{
GskVulkanPipelineType pipeline_type;
- GskVulkanOp op = {
- .render.type = GSK_VULKAN_OP_BLUR,
- .render.node = node,
- .render.offset = state->offset,
+ GskVulkanOpRender op = {
+ .type = GSK_VULKAN_OP_BLUR,
+ .node = node,
+ .offset = state->offset,
};
if (gsk_vulkan_clip_contains_rect (&state->clip, &state->offset, &node->bounds))
else
pipeline_type = GSK_VULKAN_PIPELINE_BLUR_CLIP_ROUNDED;
- op.render.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
- gsk_vulkan_render_pass_add_op (self, &op);
+ op.pipeline = gsk_vulkan_render_pass_get_pipeline (self, render, pipeline_type);
+ gsk_vulkan_render_pass_add_op (self, (GskVulkanOp *) &op);
return TRUE;
}