Wrap stroke mix shell

This commit is contained in:
2026-06-13 19:19:33 +02:00
parent fc4fbb7954
commit a428f77db6
4 changed files with 23 additions and 3 deletions

View File

@@ -18,6 +18,10 @@ agent or engineer to remove them without reconstructing context from chat.
## Recent Reductions
- 2026-06-13: `LATER-003` was narrowed again. `Canvas::stroke_draw_mix()` now
routes the retained mix-pass shell through
`execute_legacy_canvas_stroke_mix_pass_shell(...)`; the live path still owns
the concrete framebuffer bind and GL capability toggles.
- 2026-06-13: `LATER-003` was narrowed again. `Canvas::stroke_draw_mix()` now
routes the full retained mix-pass shell through
`execute_legacy_canvas_stroke_mix_pass_with_setup(...)`; the live path

View File

@@ -601,6 +601,9 @@ Progress Notes:
- 2026-06-13: `Canvas::stroke_draw_mix()` now routes the full retained mix-pass
shell through `execute_legacy_canvas_stroke_mix_pass_with_setup(...)`; the
live path still owns the concrete framebuffer bind and GL capability toggles.
- 2026-06-13: `Canvas::stroke_draw_mix()` now routes the retained mix-pass
shell through `execute_legacy_canvas_stroke_mix_pass_shell(...)`; the live
path still owns the concrete framebuffer bind and GL capability toggles.
- 2026-06-13: `Canvas::stroke_draw()` live-pass sampler wiring now reuses a
retained helper builder, and the stroke execution tests cover it. `STR-004`
is now done after the final pad-destination helper extraction and tracker

View File

@@ -420,7 +420,7 @@ void Canvas::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz)
m_mixer.unbindFramebuffer();
});
[[maybe_unused]] const auto mix_result =
pp::panopainter::execute_legacy_canvas_stroke_mix_pass_with_setup(
pp::panopainter::execute_legacy_canvas_stroke_mix_pass_shell(
mix_setup.begin,
mix_setup.end,
pp::panopainter::make_legacy_canvas_stroke_mix_pass_request(
@@ -477,7 +477,7 @@ void Canvas::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz)
[&](int plane_index) {
set_active_texture_unit(0);
current_layer.rtt(plane_index).unbindTexture();
});
}));
gl.restore();
}

View File

@@ -562,6 +562,19 @@ execute_legacy_canvas_stroke_mix_pass_with_setup(
return result;
}
template <typename BeginMixPass, typename EndMixPass>
[[nodiscard]] inline LegacyCanvasStrokeMixPassResult
execute_legacy_canvas_stroke_mix_pass_shell(
BeginMixPass&& begin_mix_pass,
EndMixPass&& end_mix_pass,
const LegacyCanvasStrokeMixPassRequest& request)
{
return execute_legacy_canvas_stroke_mix_pass_with_setup(
std::forward<BeginMixPass>(begin_mix_pass),
std::forward<EndMixPass>(end_mix_pass),
request);
}
struct LegacyCanvasStrokeComputeRequest {
StrokeSample previous_sample {};
std::span<const StrokeSample> samples;