Adapt the Metal shader library output list for debug versus release mode#185798
Conversation
flutter#185629 changed the metal_library build template to embed symbols within the shader library file when building in debug and profile modes. Release mode will continue to generate a separate symbol file. This PR updates the template's output list to match the actual outputs so that rebuilds will not run unncessary actions. It also changes the metal_library build script to pass only one value for the "-frecord-sources" flag that controls the output of symbols.
|
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 modifies the Metal library build tools to conditionally generate symbol files and include the -frecord-sources=flat flag only when debug mode is disabled. Feedback suggests restoring a variable for the symbol path in the GN template to avoid string duplication and adding a trailing comma to a multi-line list in the Python script to align with style guidelines.
| metal_library_path, | ||
| metal_library_symbols_path, | ||
| ] | ||
| outputs = [ metal_library_path ] |
There was a problem hiding this comment.
The variable metal_library_symbols_path was removed, but the path string is now duplicated in the else block on line 60. It is better to keep the variable definition here to maintain a single source of truth for the output paths and improve maintainability, as per the Flutter style guide.
| outputs = [ metal_library_path ] | |
| metal_library_symbols_path = | |
| "$root_out_dir/shaders/$metal_library_name.metallibsym" | |
| outputs = [ metal_library_path ] |
References
- Avoid duplicating state: Keep only one source of truth. (link)
There was a problem hiding this comment.
The metal_library_symbols_path is not used anywhere else. Keeping the variable will produce warnings from GN about unused variables when building in debug mode.
| } else { | ||
| outputs += [ "$root_out_dir/shaders/$metal_library_name.metallibsym" ] | ||
| } |
There was a problem hiding this comment.
Use the metal_library_symbols_path variable here instead of hardcoding the path string again. This ensures consistency with the definition at the top of the template and adheres to the principle of avoiding state duplication.
| } else { | |
| outputs += [ "$root_out_dir/shaders/$metal_library_name.metallibsym" ] | |
| } | |
| } else { | |
| outputs += [ metal_library_symbols_path ] | |
| } |
References
- Avoid duplicating state: Keep only one source of truth. (link)
| command += [ | ||
| # Record symbols in a separate *.metallibsym file. | ||
| '-frecord-sources=flat' | ||
| ] |
There was a problem hiding this comment.
Add a trailing comma to the list element for consistency with the if block above and to follow common Python style practices for multi-line lists, as recommended by the Google Python Style Guide.
| command += [ | |
| # Record symbols in a separate *.metallibsym file. | |
| '-frecord-sources=flat' | |
| ] | |
| command += [ | |
| # Record symbols in a separate *.metallibsym file. | |
| '-frecord-sources=flat', | |
| ] |
References
- Python code should follow the Google Python Style Guide, which recommends trailing commas in multi-line lists. (link)
Roll Flutter from 81bc3d69535f to 707dbc0420a3 (85 revisions) flutter/flutter@81bc3d6...707dbc0 2026-05-01 Rusino@users.noreply.github.com Removing TODOs from the WebParagraph code and addressing technical debts. (flutter/flutter#185168) 2026-05-01 mbrase@google.com Ensure that vulkan_interface.h gets included before vk_mem_alloc.h (flutter/flutter#185777) 2026-05-01 nshahan@google.com [flutter_tools] Bump dwds dependency to v27.1.1 (flutter/flutter#185357) 2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from 6d4a319cbdac to 9aa7097f2e3e (3 revisions) (flutter/flutter#185888) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from fa1dcb289709 to 7ac6d42f2fd0 (1 revision) (flutter/flutter#185887) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 54cc00adde38 to fa1dcb289709 (3 revisions) (flutter/flutter#185880) 2026-05-01 chris@bracken.jp [iOS] Migrate to FlutterFMLTaskRunner(s) (flutter/flutter#185815) 2026-05-01 ad13dtu@gmail.com Remove material imports from navigator_on_did_remove_page_test and scrollable_in_overlay_test (flutter/flutter#182546) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 2e279266f06a to 54cc00adde38 (3 revisions) (flutter/flutter#185872) 2026-05-01 srawlins@google.com dev: Remove unused parameters (flutter/flutter#185345) 2026-05-01 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from HN5VYzftnf_B8T-n9... to VnzuUefDQR0UhQ1L1... (flutter/flutter#185870) 2026-05-01 robert.ancell@canonical.com Use g_free when using glib memory allocation (flutter/flutter#185519) 2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from d30df3428f2e to 6d4a319cbdac (2 revisions) (flutter/flutter#185862) 2026-05-01 73785960+xfce0@users.noreply.github.com Remove trivial test utility cross-imports from material and cupertino… (flutter/flutter#184295) 2026-05-01 129008657+DaveT1991@users.noreply.github.com Inline test callback painter in tab scaffold test (flutter/flutter#184851) 2026-05-01 jhy03261997@gmail.com [a11y] Add support for high contrast themes in the a11y assessments app (flutter/flutter#185801) 2026-05-01 jhy03261997@gmail.com [a11y assessment app] Use default color for banner (flutter/flutter#185804) 2026-04-30 73091075+MohamedRisaldarTA@users.noreply.github.com Added name to AUTHORS (flutter/flutter#185586) 2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from raw_material_button_test.dart (flutter/flutter#184806) 2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from user_accounts_drawer_header_test.dart (flutter/flutter#184809) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 7b88c5c281e5 to 2e279266f06a (5 revisions) (flutter/flutter#185854) 2026-04-30 evanwall@buffalo.edu Handle symmetric rectangular and elliptical round super ellipses in the uber SDF renderer (flutter/flutter#185695) 2026-04-30 15619084+vashworth@users.noreply.github.com Match on process name before killing for SwiftPM (flutter/flutter#185774) 2026-04-30 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#185838) 2026-04-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 25910e31a6d2 to d30df3428f2e (5 revisions) (flutter/flutter#185839) 2026-04-30 brackenavaron@gmail.com Check cross imports test subfolders (flutter/flutter#185493) 2026-04-30 112751483+shivanshu877@users.noreply.github.com test: inline TestCallbackPainter in cupertino/picker_test.dart (flutter/flutter#185398) 2026-04-30 97480502+b-luk@users.noreply.github.com Update customer testing version (flutter/flutter#185830) 2026-04-30 jason-simmons@users.noreply.github.com Adapt the Metal shader library output list for debug versus release mode (flutter/flutter#185798) 2026-04-30 jason-simmons@users.noreply.github.com [Impeller] Port a recent Vulkan swapchain fence waiting fix to the AHB version of the swapchain (flutter/flutter#185763) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 26a59aa71eff to 7b88c5c281e5 (1 revision) (flutter/flutter#185821) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 6b4167b4e204 to 26a59aa71eff (4 revisions) (flutter/flutter#185808) 2026-04-30 jhy03261997@gmail.com [a11y] Mark SemanticsNode dirty when customSemanticsActions change (flutter/flutter#185707) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 1bd2f1cc2746 to 6b4167b4e204 (8 revisions) (flutter/flutter#185799) 2026-04-30 chris@bracken.jp [iOS] Extract FlutterVSyncClient from vsync_waiter_ios (flutter/flutter#185737) 2026-04-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from nnv8-SSam6yE8dw4z... to HN5VYzftnf_B8T-n9... (flutter/flutter#185782) 2026-04-29 chris@bracken.jp [iOS] Soften TaskRunner.postTask(delay:task:) delay check (flutter/flutter#185729) 2026-04-29 koji.wakamiya@gmail.com Add reportErrors to ImageStreamListener (flutter/flutter#180327) 2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from f5c781c083c7 to 1bd2f1cc2746 (5 revisions) (flutter/flutter#185761) 2026-04-29 47866232+chunhtai@users.noreply.github.com Update merge semantics logic to merge sibling nodes (flutter/flutter#183745) 2026-04-29 engine-flutter-autoroll@skia.org Roll Packages from ba80f8f to cde5b36 (12 revisions) (flutter/flutter#185748) 2026-04-29 srawlins@google.com examples: Remove unused parameters (flutter/flutter#185346) 2026-04-29 nate.w5687@gmail.com Update TickerMode.getValuesNotifier to handle initialization during State.dispose (flutter/flutter#185248) 2026-04-29 katelovett@google.com Update triage links (flutter/flutter#185714) 2026-04-29 42399845+xxxOVALxxx@users.noreply.github.com Add support for high contrast and color inversion on Android (flutter/flutter#182263) 2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from 05251260fda6 to f5c781c083c7 (2 revisions) (flutter/flutter#185743) ...
…r#11630) Roll Flutter from 81bc3d69535f to 707dbc0420a3 (85 revisions) flutter/flutter@81bc3d6...707dbc0 2026-05-01 Rusino@users.noreply.github.com Removing TODOs from the WebParagraph code and addressing technical debts. (flutter/flutter#185168) 2026-05-01 mbrase@google.com Ensure that vulkan_interface.h gets included before vk_mem_alloc.h (flutter/flutter#185777) 2026-05-01 nshahan@google.com [flutter_tools] Bump dwds dependency to v27.1.1 (flutter/flutter#185357) 2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from 6d4a319cbdac to 9aa7097f2e3e (3 revisions) (flutter/flutter#185888) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from fa1dcb289709 to 7ac6d42f2fd0 (1 revision) (flutter/flutter#185887) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 54cc00adde38 to fa1dcb289709 (3 revisions) (flutter/flutter#185880) 2026-05-01 chris@bracken.jp [iOS] Migrate to FlutterFMLTaskRunner(s) (flutter/flutter#185815) 2026-05-01 ad13dtu@gmail.com Remove material imports from navigator_on_did_remove_page_test and scrollable_in_overlay_test (flutter/flutter#182546) 2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 2e279266f06a to 54cc00adde38 (3 revisions) (flutter/flutter#185872) 2026-05-01 srawlins@google.com dev: Remove unused parameters (flutter/flutter#185345) 2026-05-01 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from HN5VYzftnf_B8T-n9... to VnzuUefDQR0UhQ1L1... (flutter/flutter#185870) 2026-05-01 robert.ancell@canonical.com Use g_free when using glib memory allocation (flutter/flutter#185519) 2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from d30df3428f2e to 6d4a319cbdac (2 revisions) (flutter/flutter#185862) 2026-05-01 73785960+xfce0@users.noreply.github.com Remove trivial test utility cross-imports from material and cupertino… (flutter/flutter#184295) 2026-05-01 129008657+DaveT1991@users.noreply.github.com Inline test callback painter in tab scaffold test (flutter/flutter#184851) 2026-05-01 jhy03261997@gmail.com [a11y] Add support for high contrast themes in the a11y assessments app (flutter/flutter#185801) 2026-05-01 jhy03261997@gmail.com [a11y assessment app] Use default color for banner (flutter/flutter#185804) 2026-04-30 73091075+MohamedRisaldarTA@users.noreply.github.com Added name to AUTHORS (flutter/flutter#185586) 2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from raw_material_button_test.dart (flutter/flutter#184806) 2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from user_accounts_drawer_header_test.dart (flutter/flutter#184809) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 7b88c5c281e5 to 2e279266f06a (5 revisions) (flutter/flutter#185854) 2026-04-30 evanwall@buffalo.edu Handle symmetric rectangular and elliptical round super ellipses in the uber SDF renderer (flutter/flutter#185695) 2026-04-30 15619084+vashworth@users.noreply.github.com Match on process name before killing for SwiftPM (flutter/flutter#185774) 2026-04-30 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#185838) 2026-04-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 25910e31a6d2 to d30df3428f2e (5 revisions) (flutter/flutter#185839) 2026-04-30 brackenavaron@gmail.com Check cross imports test subfolders (flutter/flutter#185493) 2026-04-30 112751483+shivanshu877@users.noreply.github.com test: inline TestCallbackPainter in cupertino/picker_test.dart (flutter/flutter#185398) 2026-04-30 97480502+b-luk@users.noreply.github.com Update customer testing version (flutter/flutter#185830) 2026-04-30 jason-simmons@users.noreply.github.com Adapt the Metal shader library output list for debug versus release mode (flutter/flutter#185798) 2026-04-30 jason-simmons@users.noreply.github.com [Impeller] Port a recent Vulkan swapchain fence waiting fix to the AHB version of the swapchain (flutter/flutter#185763) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 26a59aa71eff to 7b88c5c281e5 (1 revision) (flutter/flutter#185821) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 6b4167b4e204 to 26a59aa71eff (4 revisions) (flutter/flutter#185808) 2026-04-30 jhy03261997@gmail.com [a11y] Mark SemanticsNode dirty when customSemanticsActions change (flutter/flutter#185707) 2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 1bd2f1cc2746 to 6b4167b4e204 (8 revisions) (flutter/flutter#185799) 2026-04-30 chris@bracken.jp [iOS] Extract FlutterVSyncClient from vsync_waiter_ios (flutter/flutter#185737) 2026-04-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from nnv8-SSam6yE8dw4z... to HN5VYzftnf_B8T-n9... (flutter/flutter#185782) 2026-04-29 chris@bracken.jp [iOS] Soften TaskRunner.postTask(delay:task:) delay check (flutter/flutter#185729) 2026-04-29 koji.wakamiya@gmail.com Add reportErrors to ImageStreamListener (flutter/flutter#180327) 2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from f5c781c083c7 to 1bd2f1cc2746 (5 revisions) (flutter/flutter#185761) 2026-04-29 47866232+chunhtai@users.noreply.github.com Update merge semantics logic to merge sibling nodes (flutter/flutter#183745) 2026-04-29 engine-flutter-autoroll@skia.org Roll Packages from ba80f8f to cde5b36 (12 revisions) (flutter/flutter#185748) 2026-04-29 srawlins@google.com examples: Remove unused parameters (flutter/flutter#185346) 2026-04-29 nate.w5687@gmail.com Update TickerMode.getValuesNotifier to handle initialization during State.dispose (flutter/flutter#185248) 2026-04-29 katelovett@google.com Update triage links (flutter/flutter#185714) 2026-04-29 42399845+xxxOVALxxx@users.noreply.github.com Add support for high contrast and color inversion on Android (flutter/flutter#182263) 2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from 05251260fda6 to f5c781c083c7 (2 revisions) (flutter/flutter#185743) ...
#185629 changed the metal_library build template to embed symbols within the shader library file when building in debug and profile modes. Release mode will continue to generate a separate symbol file.
This PR updates the template's output list to match the actual outputs so that rebuilds will not run unncessary actions. It also changes the metal_library build script to pass only one value for the "-frecord-sources" flag that controls the output of symbols.