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

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: flutter/engine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: cf975417ce40
Choose a base ref
...
head repository: flutter/engine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: d4ca5240da52
Choose a head ref
  • 11 commits
  • 35 files changed
  • 6 contributors

Commits on Apr 26, 2023

  1. Download and use the goma client from cipd (#41488)

    In flutter/flutter#125361 we discovered that a
    new version of clang can require updating goma in order for goma to work
    properly. This PR adds a dependency on CIPD goma to the DEPS file so
    that we can update it for use in local builds when needed. Since CI does
    its own management of the goma client and the compiler proxy, and since
    goma can only be used by Googlers, the DEPS file download is guarded
    behind the `use_cipd_goma` gclient var. To use it one would update the
    engine `.gclient` file to be something like:
    ```
    ~/flutter/engine/src $ cat ../.gclient
    solutions = [
      {
        "managed": False,
        "name": "src/flutter",
        "url": "[email protected]:zanderso/engine.git",
        "custom_deps": {},
        "custom_vars": {
          "use_cipd_goma": True,
        },
        "deps_file": "DEPS",
        "safesync_url": "",
      },
    ]
    ```
    
    I'll update the wiki with these instructions after this PR lands.
    zanderso authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    aff8cbe View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ff92235 View commit details
    Browse the repository at this point in the history
  3. [Impeller] Use a device buffer for SkBitmap allocation, use Linear te…

    …xture on Metal backend. (#41374)
    
    This reduces the cost of uploading the glyph atlas, as we can exploit metal's capabilies to create a texture from a device buffer and share the underlying memory with a linear texture. This also means that subsequent updates don't require uploads or copies either.
    
    From scrolling through wonderous, this shaves off about 0.2 ms (0.6 ms -> 0.4 ms) of fresh atlas construction.
    Jonah Williams authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    fddd5ad View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    7c05f2d View commit details
    Browse the repository at this point in the history
  5. Updated todo with github issue link (#41517)

    followup from #41490
    
    ## Pre-launch Checklist
    
    - [x] I read the [Contributor Guide] and followed the process outlined
    there for submitting PRs.
    - [x] I read the [Tree Hygiene] wiki page, which explains my
    responsibilities.
    - [x] I read and followed the [Flutter Style Guide] and the [C++,
    Objective-C, Java style guides].
    - [ ] I listed at least one issue that this PR fixes in the description
    above.
    - [ ] I added new tests to check the change I am making or feature I am
    adding, or Hixie said the PR is test-exempt. See [testing the engine]
    for instructions on writing and running engine tests.
    - [x] I updated/added relevant documentation (doc comments with `///`).
    - [x] I signed the [CLA].
    - [x] All existing and new tests are passing.
    
    If you need help, consider asking for advice on the #hackers-new channel
    on [Discord].
    
    <!-- Links -->
    [Contributor Guide]:
    https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
    [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
    [Flutter Style Guide]:
    https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
    [C++, Objective-C, Java style guides]:
    https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
    [testing the engine]:
    https://github.com/flutter/flutter/wiki/Testing-the-engine
    [CLA]: https://cla.developers.google.com/
    [flutter/tests]: https://github.com/flutter/tests
    [breaking change policy]:
    https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
    [Discord]: https://github.com/flutter/flutter/wiki/Chat
    gaaclarke authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    fbef328 View commit details
    Browse the repository at this point in the history
  6. [Impeller] partial repaint for Impeller/iOS. (#40959)

    Implements partial repaint for Impeller.
    
    Fixes flutter/flutter#124526
    
    The new code that manages the damage regions is more or less a copy paste from the existing Skia implementation. Compared to Skia, there are a few differences:
    
    Normally Impeller wants to use the drawable as the resolve texture for the root MSAA pass. Unfortunately this will unconditonally clear that texture. Thus to do a partial repaint, we have to allocate a separate texture to resolve to and then blit into the drawable.
    
    The blit seems to take about 500ns for a full screen on an iPhone 13. That implies that partial repaint is likely not worth doing if the screen is significantly changed. Thus I've added code in compositor_context.cc that computes the percentage of width or height that is part of the dirty rect. Above a threshold of (abitrarily chosen) 70%, we just render as normal. This should mean there is only a very minor hit from performing the diff on screens that are highly changed.
    
    The other special case, is that sometimes we get damage rects that are empty - that is the drawable is already completely up to date with what we want to render. IN that case I shortcircuit all of the impeller code and just present immediately. I previously tried returning without a present but this resulted in Xcode reporting dropped frames. One caveat here is that if you use the XCode frame debugger and attempt to capture a frame where we early present, then it will claim it couldn't capture any command buffers (because we didn't create any).
    
    To facilitate all of this, I added some additonal plumbing so that the impeller surface can get the clip rect from the submit info. Additionally, rather than using a clip rect impeller will translate and then shrink the root surface texture. This reduces memory usage compared to just clippling.
    Jonah Williams authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    20be523 View commit details
    Browse the repository at this point in the history
  7. Roll Skia from 3fea88565a83 to 20a1c61c5597 (3 revisions) (#41530)

    skia-flutter-autoroll authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    526fd0d View commit details
    Browse the repository at this point in the history
  8. [Impeller] Coerce opaque ColorSourceContents to Source (#41525)

    This coercion happens when Entities are appended to a pass, which is the
    moment where we will need to perform depth sorting.
    bdero authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    a9fe542 View commit details
    Browse the repository at this point in the history
  9. [codesign] Add pinned xcode version as property to mac android aot en…

    …gine (#41518)
    
    context: flutter/flutter#125570 (comment)
    
    Pin xcode version for the six sub builds in mac android aot engine
    XilaiZhang authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    9c9d8da View commit details
    Browse the repository at this point in the history
  10. Revert "[Impeller] Use a device buffer for SkBitmap allocation, use L…

    …inear texture on Metal backend." (#41533)
    
    Reverts #41374
    
    Breaks on Simulators!
    Jonah Williams authored Apr 26, 2023
    Configuration menu
    Copy the full SHA
    464abc7 View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2023

  1. Roll Skia from 20a1c61c5597 to d315ab065af3 (5 revisions) (#41535)

    https://skia.googlesource.com/skia.git/+log/20a1c61c5597..d315ab065af3
    
    2023-04-26 [email protected] Remove SkBlitter::justAnOpaqueColor
    2023-04-26 [email protected] Wrap SkRP ops in #ifdef SK_ENABLE_SKSL_IN_RASTER_PIPELINE.
    2023-04-26 [email protected] Switch Bazel builds to use SkRP by default.
    2023-04-26 [email protected] Miscellaneous blitter cleanup
    2023-04-26 [email protected] Add difficult test cases for sk_doubles_nearly_equal_ulps
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/skia-flutter-autoroll
    Please CC [email protected],[email protected],[email protected],[email protected] on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
    To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
    
    To report a problem with the AutoRoller itself, please file a bug:
    https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
    
    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
    skia-flutter-autoroll authored Apr 27, 2023
    Configuration menu
    Copy the full SHA
    d4ca524 View commit details
    Browse the repository at this point in the history
Loading