Skip to content

Conversation

@jonahwilliams
Copy link
Contributor

@jonahwilliams jonahwilliams commented Jan 14, 2025

The existing technique of offsetting a smaller texture is very vunerable to bugs in the renderer. Rather than this approach, we can allocate a new offscreen that is full sized and then blit a smaller region. To reduce the allocation costs, we can also set up a transients cache which will reuse this texture. In total, this should be more performant than the existing partial repaint (due to lack of continual re-allocation) at the cost of higher peak memory usage.

Fixes #140877
Fixes #160588
Fixes #156113

@github-actions github-actions bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Jan 14, 2025
@jonahwilliams jonahwilliams changed the title [Impeller] change how partial repaint works, WIP. [Impeller] Update partial repaint to use a fullsize onscreen. Jan 15, 2025
@jonahwilliams jonahwilliams marked this pull request as ready for review January 15, 2025 18:14
@jonahwilliams jonahwilliams added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 16, 2025
@jonahwilliams jonahwilliams added this pull request to the merge queue Jan 16, 2025
Merged via the queue into flutter:master with commit 90f926e Jan 16, 2025
179 of 180 checks passed
@jonahwilliams jonahwilliams deleted the change_partial_repaint_offset_once_and_for_all branch January 16, 2025 21:15
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 16, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 20, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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 [email protected] 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

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
jonahwilliams pushed a commit to jonahwilliams/flutter that referenced this pull request Jan 24, 2025
…r#161626)

The existing technique of offsetting a smaller texture is very vunerable
to bugs in the renderer. Rather than this approach, we can allocate a
new offscreen that is full sized and then blit a smaller region. To
reduce the allocation costs, we can also set up a transients cache which
will reuse this texture. In total, this should be more performant than
the existing partial repaint (due to lack of continual re-allocation) at
the cost of higher peak memory usage.

Fixes flutter#140877
Fixes flutter#160588
Fixes flutter#156113
auto-submit bot pushed a commit that referenced this pull request Jan 29, 2025
…61626) (#162194)

The existing technique of offsetting a smaller texture is very vunerable to bugs in the renderer. Rather than this approach, we can allocate a new offscreen that is full sized and then blit a smaller region. To reduce the allocation costs, we can also set up a transients cache which will reuse this texture. In total, this should be more performant than the existing partial repaint (due to lack of continual re-allocation) at the cost of higher peak memory usage.

Fixes #140877 Fixes #160588 Fixes #156113
@reidbaker reidbaker mentioned this pull request Jan 30, 2025
9 tasks
@reidbaker reidbaker mentioned this pull request Apr 4, 2025
9 tasks
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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 [email protected] 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

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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 [email protected] 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

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e: impeller Impeller rendering backend issues and features requests engine flutter/engine related. See also e: labels.

Projects

None yet

2 participants