Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Impeller] Cleanup the build dependency graph.#35360

Merged
auto-submit[bot] merged 2 commits intoflutter:mainfrom
chinmaygarde:nomohugebuilds
Aug 12, 2022
Merged

[Impeller] Cleanup the build dependency graph.#35360
auto-submit[bot] merged 2 commits intoflutter:mainfrom
chinmaygarde:nomohugebuilds

Conversation

@chinmaygarde
Copy link
Contributor

@chinmaygarde chinmaygarde commented Aug 11, 2022

This was a recent observation that slowed down local development on Impeller.

Making small changes to //impeller/renderer and re-building would seemingly
build all Impeller related targets (~650 actions). Even with Goma, this was
getting annoying. Turns out that //impeller/compiler was including
//impeller/runtime_stage that pulled in //impeller/renderer. It did so only for
a couple of headers.

The downside of this dependency is that a compiler invalidation rebuilds all
shaders and also the targets containing the generated C++ headers with shader
metadata. This causes the huge number of actions invocations.

Another downside is that the compiler was pulling in the renderer making it
larger and taking longer to link. Hilariously, it also pulled in Skia because of
the SkParagraph shaper used for text layout.

This patch reworks the dependency so that runtime stage enums are separate and
inverts the runtime_stage dependency on the compiler and renderer.

Now, editing and invalidating a //impeller/renderer or related target only
invokes < 5 actions instead of the ~650 earlier.

This was a recent observation that slowed down local development on Impeller.

Making small changes to //impeller/renderer and re-building would seemingly
build all Impeller related targets (~650 actions). Even with Goma, this was
getting annoying. Turns out that //impeller/compiler was including
//impeller/runtime_stage that pulled in //impeller/renderer. It did so only for
a couple of headers.

The downside of this dependency is that a compiler invalidation rebuilds all
shaders and also the targets containing the generated C++ headers with shader
metadata. This causes the huge number of actions invocations.

Another downside is that the compiler was pulling in the renderer making it
larger and taking longer to link. Hilariously, it also pulled in Skia because of
the SkParagraph shaper used for text layout.

This patch reworks the dependency so that runtime stage enums are separate and
inverts the runtime_stage dependency on the compiler and renderer.

Now, editing and invalidating a //impeller/renderer or related target only
invokes < 5 actions instead of the ~650 earlier.
@chinmaygarde
Copy link
Contributor Author

chinmaygarde commented Aug 11, 2022

A no-op build will still build a few files today. But that is being tackled by @jonahwilliams in flutter/flutter#109257

@chinmaygarde chinmaygarde added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 11, 2022
@auto-submit
Copy link
Contributor

auto-submit bot commented Aug 11, 2022

  • The status or check suite Linux License has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 11, 2022
@chinmaygarde chinmaygarde added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 11, 2022
@auto-submit
Copy link
Contributor

auto-submit bot commented Aug 11, 2022

  • The status or check suite Mac Web Engine has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 11, 2022
@chinmaygarde chinmaygarde added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 12, 2022
@auto-submit auto-submit bot merged commit 1ff6966 into flutter:main Aug 12, 2022
@chinmaygarde chinmaygarde deleted the nomohugebuilds branch August 12, 2022 00:27
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 12, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

autosubmit Merge PR when tree becomes green via auto submit App e: impeller

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants