Use blend gate plan for canvas copy decisions

This commit is contained in:
2026-06-03 18:37:58 +02:00
parent bc5b39057d
commit b576143afb
7 changed files with 73 additions and 19 deletions

View File

@@ -882,7 +882,8 @@ the app calls through renderer services for the whole compositing path.
mapping from persisted layer and brush blend indices to that planner, including
fallback behavior for unknown nonzero indices. Both `Canvas::draw_merge` and
`NodeCanvas` panorama rendering consume that shared gate, so the live app no
longer has duplicate local blend-trigger logic.
longer has duplicate local blend-trigger logic or duplicate destination-copy
versus framebuffer-fetch decisions in those paths.
The OpenGL shader initialization path now stores a renderer-neutral
`RenderDeviceFeatures` snapshot converted by `pp_renderer_gl`, and those live
canvas gates consume that snapshot instead of rebuilding feature flags from
@@ -1618,6 +1619,10 @@ Results:
feature snapshot through the legacy shader manager, and live canvas blend
gates consume that `RenderDeviceFeatures` value instead of hand-built
framebuffer-fetch/texture-copy flags.
- Canvas draw-merge and `NodeCanvas` panorama shader-blend paths now use the
shared canvas blend-gate plan to decide whether they can read destination
color through framebuffer fetch or must copy the destination texture before
the legacy OpenGL blend draw.
- Canvas equirectangular import drawing and depth export rendering now route
depth/blend state and active texture units through the renderer GL backend
mapping.