Skip to content

opts the linux embedder into sdf rendering#186909

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
gaaclarke:linux-sdfs
May 22, 2026
Merged

opts the linux embedder into sdf rendering#186909
auto-submit[bot] merged 3 commits into
flutter:masterfrom
gaaclarke:linux-sdfs

Conversation

@gaaclarke

@gaaclarke gaaclarke commented May 21, 2026

Copy link
Copy Markdown
Member

fixes #186709
fixes #186710

fyi @robert-ancell

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 21, 2026
@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. d: examples Sample code and demos platform-linux Building on or for Linux specifically a: desktop Running on desktop team-linux Owned by the Linux platform team labels May 21, 2026
@gaaclarke gaaclarke changed the title Linux sdfs opts the linux embedder into sdf rendering May 21, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label May 21, 2026
@gaaclarke gaaclarke added the CICD Run CI/CD label May 21, 2026
@gaaclarke gaaclarke marked this pull request as ready for review May 21, 2026 21:28
@gaaclarke gaaclarke requested a review from a team as a code owner May 21, 2026 21:28
@gaaclarke gaaclarke requested a review from walley892 May 21, 2026 21:29

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new integration test for textures using Impeller on Linux and updates the Flutter embedder to support and log the use of Signed Distance Fields (SDFs). Review feedback identifies naming inconsistencies in the log messages for OpenGL backends when SDFs are enabled, specifically suggesting 'OpenGLSDF' instead of 'OpenGLESSDF' for consistency with Vulkan. Additionally, the reviewer notes that changing the base log message from 'OpenGL' to 'OpenGLES' could potentially break existing log-scraping tests on other platforms.

Comment on lines +33 to +34
const vulkanBackendMessage = 'Using the Impeller rendering backend (VulkanSDF).';
const openGLBackendMessage = 'Using the Impeller rendering backend (OpenGLESSDF).';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The expected log message for OpenGL with SDFs enabled uses OpenGLESSDF, which is inconsistent with the Vulkan naming convention (VulkanSDF) and the previous naming (OpenGL). For consistency across backends and to match the naming used in the embedder API (which uses kOpenGL), it is recommended to use OpenGLSDF.

Suggested change
const vulkanBackendMessage = 'Using the Impeller rendering backend (VulkanSDF).';
const openGLBackendMessage = 'Using the Impeller rendering backend (OpenGLESSDF).';
const vulkanBackendMessage = 'Using the Impeller rendering backend (VulkanSDF).';
const openGLBackendMessage = 'Using the Impeller rendering backend (OpenGLSDF).';
References
  1. Optimize for readability and maintain consistency across the codebase. (link)

Comment on lines +125 to +129
if (impeller_flags.use_sdfs) {
FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGLESSDF).";
} else {
FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGLES).";
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The log message for the non-SDF case has been changed from (OpenGL) to (OpenGLES). This change is inconsistent with the previous behavior and may break existing log-scraping tests on other platforms (like Windows) that use this embedder surface but have not opted into SDFs. Additionally, the Vulkan implementation maintains the (Vulkan) string when SDFs are disabled.

Furthermore, using OpenGLESSDF for the SDF case is inconsistent with the VulkanSDF pattern. It is recommended to keep (OpenGL) for the base case and use (OpenGLSDF) for the SDF case to maintain naming consistency and avoid regressions.

  if (impeller_flags.use_sdfs) {
    FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGLSDF).";
  } else {
    FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGL).";
  }
References
  1. Check for potential regressions: Look for changes that might break existing functionality or introduce unexpected behavior in related areas. (link)

@github-actions github-actions Bot removed d: examples Sample code and demos CICD Run CI/CD labels May 21, 2026
@gaaclarke gaaclarke requested a review from andywolff May 21, 2026 21:31
@flutter-dashboard

Copy link
Copy Markdown

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.

@gaaclarke gaaclarke added the CICD Run CI/CD label May 21, 2026
Comment thread engine/src/flutter/shell/platform/linux/fl_engine.cc
@github-actions github-actions Bot removed the CICD Run CI/CD label May 22, 2026
@gaaclarke gaaclarke requested a review from robert-ancell May 22, 2026 04:26

@robert-ancell robert-ancell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@andywolff andywolff left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@gaaclarke gaaclarke added CICD Run CI/CD autosubmit Merge PR when tree becomes green via auto submit App labels May 22, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue May 22, 2026
Merged via the queue into flutter:master with commit a760f44 May 22, 2026
205 of 206 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 22, 2026
@cbracken

cbracken commented May 22, 2026

Copy link
Copy Markdown
Member

Looks like this breaks the embedder tests on Fuchsia.

Example failures:

[ RUN      ] EmbedderTest.CanGetVulkanEmbedderContext
[stderr - main]
embedder.cc (2047): 'FlutterEngineInitialize' returned 'kInvalidArguments'. The assets path in the Flutter project arguments was missing.
embedder.cc (3040): 'FlutterEngineSendPlatformMessage' returned 'kInvalidArguments'. Message size was non-zero but the message data was nullptr.
embedder.cc (2510): 'FlutterEngineRunInitialized' returned 'kInvalidArguments'. Engine handle was invalid.
embedder.cc (2510): 'FlutterEngineRunInitialized' returned 'kInvalidArguments'. Engine handle was invalid.
embedder.cc (2719): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Viewport metrics were invalid.
embedder.cc (2613): 'FlutterEngineRemoveView' returned 'kInvalidArguments'. Remove view info was invalid. The implicit view cannot be removed.
embedder.cc (3436): 'FlutterEngineUpdateLocales' returned 'kInvalidArguments'. Language code is required but not present in FlutterLocale.
embedder.cc (2510): 'FlutterEngineRunInitialized' returned 'kInvalidArguments'. Engine handle was invalid.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Device pixel ratio was invalid. It must be greater than zero.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Physical view insets are invalid. They must be non-negative.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Physical view insets are invalid. They cannot be greater than physical height or width.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Window metrics are invalid. Width and height must be within the specified constraints.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Window metrics are invalid. Width and height must be within the specified constraints.
embedder.cc (2710): 'FlutterEngineSendWindowMetricsEvent' returned 'kInvalidArguments'. Window metrics are invalid. Width and height must be within the specified constraints.
[FAILED]	main

@cbracken cbracken added the revert Autorevert PR (with "Reason for revert:" comment) label May 22, 2026
@cbracken cbracken removed the revert Autorevert PR (with "Reason for revert:" comment) label May 22, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request May 26, 2026
Roll Flutter from e03b91f1fe34 to f3a4b9897834 (63 revisions)

flutter/flutter@e03b91f...f3a4b98

2026-05-26 [email protected] Update batch release doc to reflect latest workflow (flutter/flutter#186979)
2026-05-26 [email protected] Roll Skia from 0442274cc696 to 27a819894f7c (5 revisions) (flutter/flutter#187094)
2026-05-26 [email protected] [Tool Robustness] Gracefully handle asynchronous subprocess crashes and connection timeouts (flutter/flutter#186964)
2026-05-26 [email protected] [pubspec] Bump Dart SDK constraint to ^3.13.0 (flutter/flutter#186957)
2026-05-26 [email protected] Roll Dart SDK from 7eb54169841d to 00e625453c43 (1 revision) (flutter/flutter#187086)
2026-05-26 [email protected] [Impeller] Retire Y-coord-scale plumbing by flipping GLES at the vertex stage (flutter/flutter#186556)
2026-05-26 [email protected] Roll Skia from f4f294bdf98d to 0442274cc696 (2 revisions) (flutter/flutter#187079)
2026-05-26 [email protected] [flutter_tools] Fix version cache poisoning from git environment variables (flutter/flutter#186595)
2026-05-26 [email protected] [Tool] Handle DTD connection failures gracefully in widget-preview (flutter/flutter#186952)
2026-05-25 [email protected] Roll Skia from 9d1adb5f2427 to f4f294bdf98d (1 revision) (flutter/flutter#187056)
2026-05-25 [email protected] Roll Skia from 4dd78179e6ec to 9d1adb5f2427 (1 revision) (flutter/flutter#187048)
2026-05-25 [email protected] Roll Skia from 1f26101197bf to 4dd78179e6ec (4 revisions) (flutter/flutter#187044)
2026-05-24 [email protected] Roll Skia from bbe9ccc2bdbf to 1f26101197bf (1 revision) (flutter/flutter#187016)
2026-05-24 [email protected] Roll Fuchsia Linux SDK from nsgcNDlZOuweOvy3Q... to Itd2Jq_ZIABH2rW7B... (flutter/flutter#187032)
2026-05-23 [email protected] Roll Dart SDK from 7e0f28eb5315 to 7eb54169841d (1 revision) (flutter/flutter#187005)
2026-05-23 [email protected] Roll Dart SDK from 90e55fa88456 to 7e0f28eb5315 (1 revision) (flutter/flutter#186990)
2026-05-23 [email protected] Roll Fuchsia Linux SDK from 6T6BY9PTftoG3vP_1... to nsgcNDlZOuweOvy3Q... (flutter/flutter#186984)
2026-05-23 [email protected] iOS] Migrate VSyncClient to a pure Obj-C implementation (#186166) (flutter/flutter#186935)
2026-05-23 [email protected] Disables embedder_tests.cm for fuchsia (flutter/flutter#186969)
2026-05-23 [email protected] Roll Dart SDK from b8414c46f6c7 to 90e55fa88456 (2 revisions) (flutter/flutter#186977)
2026-05-22 [email protected] Roll Skia from 6fdb013d1953 to bbe9ccc2bdbf (1 revision) (flutter/flutter#186980)
2026-05-22 [email protected] [web] Fix cutoff text in WebParagraph (flutter/flutter#186819)
2026-05-22 [email protected] fix(web): Removes the iterative downscaling hack (flutter/flutter#186914)
2026-05-22 [email protected] opts the linux embedder into sdf rendering (flutter/flutter#186909)
2026-05-22 [email protected] Roll Skia from dae8778ca40d to 6fdb013d1953 (5 revisions) (flutter/flutter#186970)
2026-05-22 [email protected] Fix hooks inputs outputs rebuilt (flutter/flutter#186701)
2026-05-22 [email protected] adds linux impeller integration test for external textures (flutter/flutter#186759)
2026-05-22 [email protected] fix(flutter_tools): defensively catch DWDS unregistered service extension errors (flutter/flutter#186896)
2026-05-22 [email protected] [Impeller] Add golden harness support to the renderer test layer (flutter/flutter#186735)
2026-05-22 [email protected] [web] Remove image codecs from canvaskit_chromium (flutter/flutter#178133)
2026-05-22 [email protected] opts all macos into wide gamut (flutter/flutter#186277)
2026-05-22 [email protected] Roll Skia from 356185490a75 to dae8778ca40d (9 revisions) (flutter/flutter#186949)
2026-05-22 [email protected] Filter out SwiftPM schemes when fetching schemes (flutter/flutter#186006)
2026-05-22 [email protected] Roll Packages from 3754d04 to 69cf959 (1 revision) (flutter/flutter#186950)
2026-05-22 [email protected] Roll Dart SDK from eca46bec956d to b8414c46f6c7 (2 revisions) (flutter/flutter#186944)
2026-05-22 [email protected] Saves a DeviceHolderVK with the CommandPoolVK (flutter/flutter#186749)
2026-05-22 [email protected] Roll Dart SDK from e0d509fd676e to eca46bec956d (1 revision) (flutter/flutter#186922)
2026-05-22 [email protected] [ Tool ] Stop generating widget preview scaffold under $TMP (flutter/flutter#186476)
2026-05-21 [email protected] Fix typo in StretchingOverscrollIndicator docs (flutter/flutter#186897)
2026-05-21 [email protected] Roll Dart SDK from 28c7cb5a8e8d to e0d509fd676e (1 revision) (flutter/flutter#186903)
2026-05-21 [email protected] Fix some issues in the integration between EmbedderExternalViewEmbedder and Impeller (flutter/flutter#184905)
2026-05-21 [email protected] Fix a potential buffer overflow in the animated PNG decoder when parsing malformed fdAT chunks (flutter/flutter#186700)
2026-05-21 [email protected] Roll Skia from 2ff20950975d to 356185490a75 (5 revisions) (flutter/flutter#186892)
2026-05-21 [email protected] Add primitive shadows to rendering benchmark (flutter/flutter#186779)
2026-05-21 [email protected] Move prefetchSwiftPackages to be per platform (flutter/flutter#186468)
2026-05-21 [email protected] Upgrade iOS version (flutter/flutter#186889)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: desktop Running on desktop CICD Run CI/CD engine flutter/engine related. See also e: labels. platform-linux Building on or for Linux specifically team-linux Owned by the Linux platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[linux] Fix listed impeller backend [linux] Switch impeller to use SDFs

4 participants