Repository navigation
Add FlViewRendererSubsurface - #191389
Add FlViewRendererSubsurface#191389
Conversation
|
It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging. If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
There was a problem hiding this comment.
Code Review
This pull request introduces support for rendering Flutter content directly to a Wayland subsurface using OpenGL by adding FlSubsurface, FlSubsurfaceEGL, and FlViewRendererSubsurface, and integrating them into FlView when running on a Wayland display. Feedback on these changes highlights critical issues, including a compilation error from calling the non-existent wl_compositor_destroy, a missing <gdk/gdkwayland.h> include, and potential race conditions in FlViewRendererSubsurface that require proper mutex locking. Additionally, requesting a GLES 3.0 context is recommended to ensure glBlitFramebuffer compatibility, along with optimizing performance by reusing a persistent framebuffer object across frames.
Add a Wayland subsurface based view renderer that blits engine frames directly to a subsurface using an EGL context that shares resources with the engine. The EGL context and window surface are managed by a new FlSubsurfaceEGL class, and window resizing is synchronized with the subsurface so the two stay in step. Add FlSubsurface, expose the engine's EGL display and context through FlOpenGLManager, wire up the wayland-client and wayland-egl build configs, and use this renderer automatically whenever running on Wayland (falling back to the standard OpenGL renderer otherwise).
00b0511 to
e0ce599
Compare
Create the framebuffer used to read the engine's frame texture lazily on the first present and reuse it for subsequent frames, instead of generating and deleting it every frame. The framebuffer is deleted in dispose while its context is current.
08ddfdb to
f9f95b6
Compare
Hold frame_mutex in unrealize while releasing the compositor, EGL and subsurface objects so the raster thread cannot use them in present_layers concurrently. Move the null checks in present_layers inside the lock so a frame in flight cannot use objects that unrealize is releasing.
glBlitFramebuffer is a GLES3 / OpenGL 3.0 function that may be missing or broken on some drivers. When the subsurface's EGL context cannot use it, draw the engine frame to the window surface with the compositor shader instead, matching the fallback the OpenGL renderer already uses. The glBlitFramebuffer availability check (driver vendor blocklist plus GL version / GL_EXT_framebuffer_blit) is moved from FlCompositorOpenGL into fl_opengl_manager_can_blit so both renderers share the same detection.
mattkae
left a comment
There was a problem hiding this comment.
This looks largely good! Some nits, but I'll leave them to you. Hooray for bypassing Gtk!
Question: Should we add tests, or is that better for a follow up? I have a feeling this is a (semi) risky change, as it affects all rendering on Wayland.
Move the Wayland registry handling out of FlSubsurface and into a new FlWaylandDisplay, so the globals are bound once per display rather than once per subsurface. Subsurfaces are created from it. FlSubsurface and FlSubsurfaceEGL are now constructed from the objects they need, so neither of them can fail to be created and the callers don't have to check for NULL. If the EGL setup fails a warning is printed and the object generates the usual EGL/OpenGL errors instead.
Add a mock libwayland (in the same style as the existing mock libepoxy) so Wayland objects can be created without a compositor, and use it to test FlWaylandDisplay, FlSubsurface and FlSubsurfaceEGL. Tests are now run on X11 so GDK can't talk to a real compositor through the mock.
Checking for the absence of a log level by masking the received levels bitfield and comparing it to zero is hard to read. Add a helper that does this, so the tests read as EXPECT_FALSE(HasReceivedLogLevel(...)).
6962c71 to
e1a4aad
Compare
mattkae
left a comment
There was a problem hiding this comment.
That is some test infrastructure! Took me a bit of time, but this looks great to me.
Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
Compares the Wayland subsurface view renderer (flutter/flutter#191389) against the previous GTK OpenGL renderer, using a single engine build with the renderer selected at runtime so the comparison is apples-to-apples. Frame throughput is unchanged, but frame delivery becomes markedly more consistent under load (frame-time standard deviation down 44% at medium load and 52% at heavy load, raster standard deviation down 93% at heavy load), and roughly 19% of CPU work moves off the GTK main thread onto the raster thread. Includes the benchmark app, the runner and analysis scripts, and the complete raw per-frame data, so every number in the report can be regenerated without rebuilding anything. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
FlViewRendererSubsurface is the default renderer on Wayland, so Flutter
apps running with Impeller on Mesa drivers currently show nothing but a
black window.
It picked its framebuffer format from
epoxy_has_gl_extension("GL_EXT_texture_format_BGRA8888"), which asks
what the driver is capable of rather than what the engine actually
rendered. The frame was composited into a BGRA framebuffer while the
engine had rendered RGBA, so nothing reached the screen. The failure is
silent: the framebuffer is complete, no GL errors are raised, and the
Wayland surface is committed as normal.
That check used to be correct, and was invalidated by 5f97c7f
("Fixes MSAA on the linux embedder", flutter#191379) in two ways:
- It replaced the identical check in fl_opengl_frame.cc with one that
reads the format the engine reported in the layer's backing store,
making the extension check the stale copy of a rule that had moved on.
- It made the engine render RGBA even where the extension is advertised.
With Impeller the backing store is now allocated by
fl_framebuffer_new_multisample(), whose offscreen MSAA path attaches a
multisample renderbuffer of GL_RGBA8 and no texture, and fl_engine.cc
reports GL_RGBA8 for those. Driver capability and rendered format are
therefore no longer the same question.
FlViewRendererSubsurface was written before that landed and merged
cleanly after it, in 706edcd ("Add FlViewRendererSubsurface",
flutter#191389), because the two changes touch different files and so never
conflicted textually.
Move the rule into fl_compositor_opengl_get_frame_format() and use it
from both paths so they cannot disagree again. fl_engine.cc remains the
only place that chooses a format; both consumers now follow what it
reports. Every backing store in a frame is created from context-wide
capabilities, so they all share a format, and the first one describes
the frame. Take it from the first backing store rather than the first
layer, as platform views carry no format and would otherwise decide it
by being drawn first.
The bug is not reachable from a unit test, as presenting a frame
requires a realized Wayland subsurface and the tests run on X11, so test
the shared function directly, including that an advertised extension
does not change its result.
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
Add a Wayland subsurface based view renderer that blits engine frames directly to a subsurface using an EGL context that shares resources with the engine. The EGL context and window surface are managed by a new FlSubsurfaceEGL class, and window resizing is synchronized with the subsurface so the two stay in step.
Add FlSubsurface, expose the engine's EGL display and context through FlOpenGLManager, wire up the wayland-client and wayland-egl build configs, and use this renderer automatically whenever running on Wayland (falling back to the standard OpenGL renderer otherwise).