Skip to content

[flutter_tools] Watch transitive #include headers for FragmentProgram hot reload - #187945

Merged
auto-submit[bot] merged 7 commits into
flutter:masterfrom
bkonyi:shader-hot-reload-includes
Jul 8, 2026
Merged

[flutter_tools] Watch transitive #include headers for FragmentProgram hot reload#187945
auto-submit[bot] merged 7 commits into
flutter:masterfrom
bkonyi:shader-hot-reload-includes

Conversation

@bkonyi

Copy link
Copy Markdown
Contributor

Fixes#186343

This PR enables hot reloading of shaders when their transitive #include dependencies are modified.

Changes:

  • Pass --depfile to impellerc to generate dependency files.
  • Track shader dependencies in DevelopmentShaderCompiler using DepfileService.
  • Check if dependencies are modified during DevFS sync to trigger recompilation.
  • Added extensive test coverage for edge cases (missing depfile, malformed depfile, non-file content).

… hot reload
Pass --depfile to impellerc and track dependencies in DevelopmentShaderCompiler to trigger hot reload when transitive includes are modified.
Fixesflutter#186343
@flutter-dashboardflutter-dashboardBot added the CICD Run CI/CD label Jun 12, 2026
@github-actionsgithub-actionsBot added the tool Affects the "flutter" command-line tool. See also t: labels. label Jun 12, 2026

@gemini-code-assistgemini-code-assistBot 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 tracking of transitive shader dependencies in DevelopmentShaderCompiler to determine if shaders need recompilation during DevFS syncs. It parses depfiles generated by impellerc and exposes areDependenciesModified to check for modified dependencies. Feedback highlights a potential FileSystemException when calling dep.statSync() in areDependenciesModified, which could crash the sync process and should be wrapped in a try-catch block.

@bkonyibkonyi added CICD Run CI/CD and removed CICD Run CI/CD labels Jun 12, 2026
@fluttergithubbot

Copy link
Copy Markdown
Contributor

An existing Git SHA, 4aa826b5ba779a1fd90b4406815cfaf6ff5ba06e, was detected, and no actions were taken.

To re-trigger presubmits after closing or re-opeing a PR, or pushing a HEAD commit (i.e. with --force) that already was pushed before, push a blank commit (git commit --allow-empty -m "Trigger Build") or rebase to continue.

@github-actionsgithub-actionsBot removed the CICD Run CI/CD label Jun 15, 2026
@bkonyibkonyi added the CICD Run CI/CD label Jun 15, 2026
Wrap dependency existence and stat checks in a try-catch block in areDependenciesModified to prevent crashing the DevFS sync process if a FileSystemException occurs.
@github-actionsgithub-actionsBot removed the CICD Run CI/CD label Jun 19, 2026
@bkonyibkonyi added the CICD Run CI/CD label Jun 19, 2026
@bkonyi
bkonyi requested a review from chingjunJune 19, 2026 19:50
chingjun
chingjun previously approved these changes Jun 20, 2026
@bkonyibkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 23, 2026
@auto-submitauto-submitBot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 23, 2026
@auto-submit

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187945, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@github-actionsgithub-actionsBot removed the CICD Run CI/CD label Jun 23, 2026
@bkonyibkonyi added autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD labels Jun 23, 2026
@auto-submitauto-submitBot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 23, 2026
@auto-submit

Copy link
Copy Markdown
Contributor

auto label is removed for flutter/flutter/187945, Failed to enqueue flutter/flutter/187945 with HTTP 400: No merge queue found for branch 'main'.

@bkonyi
bkonyi changed the base branch from main to masterJune 23, 2026 17:11
@bkonyi
bkonyi dismissed chingjun’s stale reviewJune 23, 2026 17:11

The base branch was changed.

@bkonyi
bkonyi requested a review from chingjunJune 23, 2026 17:11
@bkonyibkonyi added CICD Run CI/CD and removed CICD Run CI/CD labels Jun 23, 2026
@fluttergithubbot

Copy link
Copy Markdown
Contributor

An existing Git SHA, 53e8ca93e01b12045b668c8694e3e7b161ba01f2, was detected, and no actions were taken.

To re-trigger presubmits after closing or re-opeing a PR, or pushing a HEAD commit (i.e. with --force) that already was pushed before, push a blank commit (git commit --allow-empty -m "Trigger Build") or rebase to continue.

@bkonyibkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 29, 2026
@auto-submit

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187945, because Pull request flutter/flutter/187945 is not in a mergeable state.

@auto-submitauto-submitBot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 29, 2026
# Conflicts:
#	packages/flutter_tools/lib/src/devfs.dart
chingjun
chingjun previously approved these changes Jul 6, 2026
@bkonyibkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 6, 2026
@auto-submit
auto-submitBot added this pull request to the merge queueJul 6, 2026
@github-merge-queue
github-merge-queueBot removed this pull request from the merge queue due to a conflict with the base branch Jul 6, 2026
@flutter-dashboardflutter-dashboardBot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 6, 2026
…r-187945
# Conflicts:
#	packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart
#	packages/flutter_tools/test/general.shard/build_system/targets/shader_compiler_test.dart
@bkonyibkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 8, 2026
@auto-submit
auto-submitBot added this pull request to the merge queueJul 8, 2026
Merged via the queue into flutter:master with commit 9977864Jul 8, 2026
163 checks passed
@flutter-dashboardflutter-dashboardBot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 8, 2026
auto-submitBot pushed a commit to flutter/packages that referenced this pull request Jul 10, 2026
…12169)
Manual roll Flutter from 91939cc4db78 to dc2a8703e12b (50 revisions)
Manual roll requested by bensonluk@google.com
flutter/flutter@91939cc...dc2a870
2026-07-09 chris@bracken.jp [ios,macos] Update swiftc.py flags to match swiftc (flutter/flutter#189174)
2026-07-09 jesswon@google.com [AGP 9] Update Warn Version to AGP 9+ (flutter/flutter#189109)
2026-07-09 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#189203)
2026-07-09 mdebbar@google.com [web] Roll Chrome to 145 (framework) (flutter/flutter#182861)
2026-07-09 engine-flutter-autoroll@skia.org Roll Packages from 52d84d6 to 20928d5 (6 revisions) (flutter/flutter#189194)
2026-07-09 zhongliu88889@gmail.com [web] Avoid absolute positioning for base CanvasKit canvas (flutter/flutter#188337)
2026-07-09 engine-flutter-autoroll@skia.org Roll Dart SDK from cdb7217e65aa to a11fb7ed40a5 (6 revisions) (flutter/flutter#189195)
2026-07-09 matt.kosarek@canonical.com Fix dereference of nullptr in the moved-to-rect signal in the Linux embedder (flutter/flutter#189152)
2026-07-09 katelovett@google.com Fix data for design packages (flutter/flutter#189140)
2026-07-09 engine-flutter-autoroll@skia.org Roll Skia from 7b42d1251d54 to ab3a7b98c94d (2 revisions) (flutter/flutter#189181)
2026-07-09 engine-flutter-autoroll@skia.org Roll Skia from 05d9d214e0b7 to 7b42d1251d54 (2 revisions) (flutter/flutter#189175)
2026-07-09 engine-flutter-autoroll@skia.org Roll Skia from 542c8bdd7f4f to 05d9d214e0b7 (4 revisions) (flutter/flutter#189169)
2026-07-09 97480502+b-luk@users.noreply.github.com UberSDF rect handling for thin (line-like) rectangles (flutter/flutter#188821)
2026-07-09 engine-flutter-autoroll@skia.org Roll Skia from dd572c07f63c to 542c8bdd7f4f (4 revisions) (flutter/flutter#189160)
2026-07-09 markzipan@google.com [flutter_tools] Fix hot restart for WASM web builds (flutter/flutter#187898)
2026-07-08 robert.ancell@canonical.com Split FlViewRenderer into OpenGL and software backends (flutter/flutter#188824)
2026-07-08 awolff@google.com Promote android_hardware_smoke_tests out of bringup in CI (flutter/flutter#189081)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 8df24be66531 to dd572c07f63c (4 revisions) (flutter/flutter#189150)
2026-07-08 matt.kosarek@canonical.com Expose LinuxWindowRegistrar on _window_linux.dart in order to better support out of tree LinuxWindowingOwners (flutter/flutter#188917)
2026-07-08 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#189149)
2026-07-08 codefu@google.com fix(ci): harden some workflows (flutter/flutter#189087)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 51a62da33da0 to 8df24be66531 (1 revision) (flutter/flutter#189139)
2026-07-08 iinozemtsev@google.com Roll Dart SDK to Dart 3.13 beta3 (flutter/flutter#189122)
2026-07-08 digvijaysinghiam@gmail.com [flutter_tools] Don't crash on non-UTF-8 plugin pubspec.yaml (flutter/flutter#188976)
2026-07-08 bkonyi@google.com [flutter_tools] Watch transitive #include headers for FragmentProgram hot reload (flutter/flutter#187945)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 040d9f55de00 to 51a62da33da0 (1 revision) (flutter/flutter#189135)
2026-07-08 engine-flutter-autoroll@skia.org Roll Packages from 92525f5 to 52d84d6 (7 revisions) (flutter/flutter#189134)
2026-07-08 bkonyi@google.com [flutter_tools] Forcefully kill hung subprocesses 5 seconds after timeout (flutter/flutter#187178)
2026-07-08 malo.allee@gmail.com Expose the app's build name and number as compile-time constants (flutter/flutter#187935)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 1ff92f879815 to 040d9f55de00 (1 revision) (flutter/flutter#189131)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 6137414bef5c to 1ff92f879815 (6 revisions) (flutter/flutter#189126)
2026-07-08 brackenavaron@gmail.com [test cross imports] More test/rendering + flutter_test/test fixes (flutter/flutter#188954)
2026-07-08 112751483+shivanshu877@users.noreply.github.com engine: explain why each candidate build was skipped in Flutter web loader (flutter/flutter#186254)
2026-07-08 chris@bracken.jp vscode: add missing unicode.h (flutter/flutter#189102)
2026-07-08 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 7RjQJBW3m-3Jl-7jr... to QcRFUtvCw2EobfJ8s... (flutter/flutter#189104)
2026-07-08 engine-flutter-autoroll@skia.org Roll Skia from 075fbe4778d9 to 6137414bef5c (10 revisions) (flutter/flutter#189106)
2026-07-08 112751483+shivanshu877@users.noreply.github.com engine: warn on WASM load failure when not crossOriginIsolated (flutter/flutter#186252)
2026-07-08 engine-flutter-autoroll@skia.org Roll Dart SDK from c9bccc09e733 to db2155f56bf3 (2 revisions) (flutter/flutter#189105)
2026-07-08 bkonyi@google.com [flutter_tools] Prevent interactive device selection in machine mode (flutter/flutter#188267)
2026-07-08 bkonyi@google.com [flutter_tools] Fix wireless ADB device discovery when serial contains spaces (flutter/flutter#187943)
2026-07-07 zhongliu88889@gmail.com [web] Fix grouped autofill on iOS Chrome (flutter/flutter#187459)
2026-07-07 rmolivares@renzo-olivares.dev Fix TextSelectionOverlay crash when layout is degenerate (flutter/flutter#188672)
2026-07-07 87962825+kyungilcho@users.noreply.github.com [flutter_tools] Provision Android NDK in the main Gradle invocation (flutter/flutter#186337)
2026-07-07 awolff@google.com Android_hardware_smoke_test: Migrate to AGP 9 (flutter/flutter#189082)
...
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICDRun CI/CDtoolAffects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[flutter_tools] FragmentProgram hot reload doesn't watch transitive #include headers

3 participants

@bkonyi@fluttergithubbot@chingjun