Add blend gate regression for draw merge

This commit is contained in:
2026-06-13 22:37:40 +02:00
parent 49caa42379
commit b9ed78e1b5
2 changed files with 34 additions and 0 deletions

View File

@@ -3139,6 +3139,38 @@ void canvas_blend_gate_preserves_legacy_fallbacks(pp::tests::Harness& h)
}
}
void canvas_blend_gate_combines_layer_and_stroke_complexity(pp::tests::Harness& h)
{
const std::vector<int> layer_blend_modes { 0, 4, 0 };
const auto plan = plan_canvas_blend_gate(
RenderDeviceFeatures { .framebuffer_fetch = true, .texture_copy = true, .render_target_blit = true },
CanvasBlendGateRequest {
.extent = Extent2D { .width = 64, .height = 32 },
.layer_blend_modes = layer_blend_modes,
.has_stroke_blend_mode = true,
.stroke_blend_mode = 10,
.dual_brush_blend = true,
.pattern_blend = true,
});
PP_EXPECT(h, plan);
if (!plan) {
return;
}
PP_EXPECT(h, plan.value().shader_blend);
PP_EXPECT(h, plan.value().complex_blend);
PP_EXPECT(h, plan.value().stroke_complex);
PP_EXPECT(h, plan.value().dual_brush_complex);
PP_EXPECT(h, plan.value().pattern_complex);
PP_EXPECT(h, plan.value().first_complex_layer_index == 1);
PP_EXPECT(h, plan.value().reads_destination_color);
PP_EXPECT(h, plan.value().requires_auxiliary_texture);
PP_EXPECT(h, plan.value().requires_texture_copy);
PP_EXPECT(h, plan.value().requires_render_target_blit);
PP_EXPECT(h, plan.value().path == StrokeCompositePath::framebuffer_fetch);
}
void plans_canvas_stroke_feedback_paths(pp::tests::Harness& h)
{
const Extent2D extent { .width = 32, .height = 16 };
@@ -3498,6 +3530,7 @@ int main()
legacy_node_stroke_preview_pass_orchestration_plan_preserves_feedback_material_and_composite_inputs);
harness.run("plans_canvas_blend_gate_from_persisted_indices", plans_canvas_blend_gate_from_persisted_indices);
harness.run("canvas_blend_gate_preserves_legacy_fallbacks", canvas_blend_gate_preserves_legacy_fallbacks);
harness.run("canvas_blend_gate_combines_layer_and_stroke_complexity", canvas_blend_gate_combines_layer_and_stroke_complexity);
harness.run("plans_canvas_stroke_feedback_paths", plans_canvas_stroke_feedback_paths);
harness.run("canvas_stroke_feedback_preserves_legacy_fallback", canvas_stroke_feedback_preserves_legacy_fallback);
harness.run("plans_canvas_stroke_rasterization_boundary", plans_canvas_stroke_rasterization_boundary);