On Windows, Flutter draws through Skia without a stencil buffer, so a clip to any shape but a rectangle, a circle or a small convex polygon is a mask drawn on the CPU for every draw under it. Every cone was clipped to the map's whole painted floor (the replay once per frame around all cones; the editor per cone), and editor cones also clipped to their visibility shape. That was most of what cones cost. - The revealed map is clipped to the floor once, in its own repaint boundary (RevealedFloor/ConeCoverageLayer take the floor), and the cone mask is composited over it in a clip layer that saves a layer. A colour filter would group them too, but the engine caches a filter's children as one image, redrawing the map with every mask. - Cones joining a layer that clips the map skip their own floor clip; drag previews, screenshots and the replay's no-worker fallback still clip themselves. - An editor cone without height floors draws its lit area (visibility within reach) as one path made once per painter, with no clip. The only visible change: floor edges inside cones are now antialiased (1 px lines, at most 17/255 on screenshots of a replay). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dara Adedeji committed on 10/14/2026, 11:53:24 PMparent13710f0
Checks
- SuccessfulCodeRabbitGitHub
Review completed
- Skippedwindows-testGitHub
- Skippedpresence-workerGitHub
- SkippedconvexGitHub
- Skippedwindows-buildGitHub
- Skippednative-replayGitHub
- Skippedclient-contractGitHub
- Skippednative-bridgeGitHub
- Skippedlinux-buildGitHub
- Successfultest (shard 1)GitHub
- Successfultest (shard 0)GitHub
- FailedanalyzeGitHub
- SuccessfulwebGitHub
- SuccessfulchangesGitHub
6 files changedLine totals unavailable