这是indexloc提供的服务,不要输入任何密码
Skip to content

[Impeller] Update partial repaint to use a fullsize onscreen. #161626

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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 repository. 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 737941+loic-sharma@users.noreply.github.com Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 matanlurey@users.noreply.github.com Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 jonahwilliams@google.com [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 lukepighetti@gmail.com revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 yjbanov@google.com fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 kevinjchisholm@google.com [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 victorsanniay@gmail.com Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 a-siva@users.noreply.github.com Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 jonahwilliams@google.com [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 jonahwilliams@google.com [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 robert.ancell@canonical.com Refactor event redispatching (flutter/flutter#161701)
2025-01-17 jonahwilliams@google.com [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 jason-simmons@users.noreply.github.com Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 robert.ancell@canonical.com Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 kevmoo@users.noreply.github.com Update social links in readme (flutter/flutter#161778)
2025-01-16 robert.ancell@canonical.com Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 58529443+srujzs@users.noreply.github.com Set meta tag in default index (flutter/flutter#161493)
2025-01-16 andrewrkolos@gmail.com remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 andrewrkolos@gmail.com route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 matanlurey@users.noreply.github.com Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 58190796+MitchellGoodwin@users.noreply.github.com Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 jonahwilliams@google.com [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 stuartmorgan@google.com 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 737941+loic-sharma@users.noreply.github.com Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 matanlurey@users.noreply.github.com Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 jonahwilliams@google.com [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 lukepighetti@gmail.com revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 yjbanov@google.com fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 kevinjchisholm@google.com [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 victorsanniay@gmail.com Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 a-siva@users.noreply.github.com Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 jonahwilliams@google.com [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 jonahwilliams@google.com [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 robert.ancell@canonical.com Refactor event redispatching (flutter/flutter#161701)
2025-01-17 jonahwilliams@google.com [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 jason-simmons@users.noreply.github.com Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 robert.ancell@canonical.com Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 kevmoo@users.noreply.github.com Update social links in readme (flutter/flutter#161778)
2025-01-16 robert.ancell@canonical.com Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 58529443+srujzs@users.noreply.github.com Set meta tag in default index (flutter/flutter#161493)
2025-01-16 andrewrkolos@gmail.com remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 andrewrkolos@gmail.com route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 matanlurey@users.noreply.github.com Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 58190796+MitchellGoodwin@users.noreply.github.com Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 jonahwilliams@google.com [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 stuartmorgan@google.com 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 737941+loic-sharma@users.noreply.github.com Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 matanlurey@users.noreply.github.com Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 jonahwilliams@google.com [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 lukepighetti@gmail.com revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 yjbanov@google.com fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 kevinjchisholm@google.com [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 victorsanniay@gmail.com Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 a-siva@users.noreply.github.com Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 jonahwilliams@google.com [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 jonahwilliams@google.com [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 robert.ancell@canonical.com Refactor event redispatching (flutter/flutter#161701)
2025-01-17 jonahwilliams@google.com [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 jason-simmons@users.noreply.github.com Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 robert.ancell@canonical.com Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 kevmoo@users.noreply.github.com Update social links in readme (flutter/flutter#161778)
2025-01-16 robert.ancell@canonical.com Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 58529443+srujzs@users.noreply.github.com Set meta tag in default index (flutter/flutter#161493)
2025-01-16 andrewrkolos@gmail.com remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 andrewrkolos@gmail.com route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 matanlurey@users.noreply.github.com Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 58190796+MitchellGoodwin@users.noreply.github.com Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 jonahwilliams@google.com [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 stuartmorgan@google.com 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 repository. See also e: labels.
Projects
None yet
2 participants