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-team-archive/engine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 7c603de2dca7
Choose a base ref
...
head repository: flutter-team-archive/engine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f21f2b232b8a
Choose a head ref
  • 6 commits
  • 8 files changed
  • 6 contributors

Commits on Sep 27, 2024

  1. [Impeller] hash even less stuff per frame. (#55092)

    Follow up to #55060
    
    Currently we have multiple stages of hashing while font rendering, which is relatively expensive for the actualy required workload. First, we hash the contents of all text frames to compute the unique set of glyphs per frame. Then we diff this hash set against the hashmap of glyphs within the atlas. Finally we hash and lookup the final rendered bounds for each glyph.
    
    We can simplify this to 2. hash lookups for glyphs not yet in the atlas and 1. hash lookup for glyphs that are in the atlas. This is done by combing the step where we uniquely compute glyphs per frame with the diff against the current atlas. When this lookup is performed, we also store the glyph position (if found) in the text_frame itself - which allows text contents to skip the last hash, as long as the glyph has already been rendered.
    
    ### Before
    
    ![flutter_03](https://github.com/user-attachments/assets/be9c4459-f0c8-426c-b152-38861acb207f)
    
    ### After
    
    ![flutter_04](https://github.com/user-attachments/assets/1aa7cbd1-6af7-4020-8966-7e3baaef102b)
    
    Using this handy dandy test app:
    
    ```dart
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
    
      Widget build(context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Platform View'),
            ),
            body: SafeArea(child: Stack(children: [
              SizedBox(
                width: 380,
                height: 380,
                child: LinearProgressIndicator(),
              ),
              Stack(
                children: List<Widget>.generate(1000, (index) {
                  // The problem already happens with a small amount of widgets.
                  // Using an excessive amount of widgets is just to make the problem more evident.
                  return Text("Lots of Texts represent a Widget with complex components.");
                }),
              ),
    
              Align(
                alignment: Alignment.bottomCenter,
                child:
                TextButton(
                  child: Text("Button"),
                  onPressed: () {
                    print("Tap ${DateTime.now()}");
                  },
                ),
              ),
            ],
            ),
            ),
          ),
        );
      }
    }
    ```
    Jonah Williams authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    d283bc8 View commit details
    Browse the repository at this point in the history
  2. [web] Update builder json generator to reflect recent changes (#55307)

    Recent [changes](#54584) affected our builder configs, but the script that generates those builder configs wasn't updated.
    mdebbar authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    3dfb462 View commit details
    Browse the repository at this point in the history
  3. Reverts "[Impeller] hash even less stuff per frame. (#55092)" (#55491)

    Reverts: #55092
    Initiated by: jonahwilliams
    Reason for reverting: framework golden failures.
    Original PR Author: jonahwilliams
    
    Reviewed By: {chinmaygarde, jtmcdole}
    
    This change reverts the following previous change:
    Follow up to #55060
    
    Currently we have multiple stages of hashing while font rendering, which is relatively expensive for the actualy required workload. First, we hash the contents of all text frames to compute the unique set of glyphs per frame. Then we diff this hash set against the hashmap of glyphs within the atlas. Finally we hash and lookup the final rendered bounds for each glyph.
    
    We can simplify this to 2. hash lookups for glyphs not yet in the atlas and 1. hash lookup for glyphs that are in the atlas. This is done by combing the step where we uniquely compute glyphs per frame with the diff against the current atlas. When this lookup is performed, we also store the glyph position (if found) in the text_frame itself - which allows text contents to skip the last hash, as long as the glyph has already been rendered.
    
    ### Before
    
    ![flutter_03](https://github.com/user-attachments/assets/be9c4459-f0c8-426c-b152-38861acb207f)
    
    ### After
    
    ![flutter_04](https://github.com/user-attachments/assets/1aa7cbd1-6af7-4020-8966-7e3baaef102b)
    
    Using this handy dandy test app:
    
    ```dart
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
    
      Widget build(context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Platform View'),
            ),
            body: SafeArea(child: Stack(children: [
              SizedBox(
                width: 380,
                height: 380,
                child: LinearProgressIndicator(),
              ),
              Stack(
                children: List<Widget>.generate(1000, (index) {
                  // The problem already happens with a small amount of widgets.
                  // Using an excessive amount of widgets is just to make the problem more evident.
                  return Text("Lots of Texts represent a Widget with complex components.");
                }),
              ),
    
              Align(
                alignment: Alignment.bottomCenter,
                child:
                TextButton(
                  child: Text("Button"),
                  onPressed: () {
                    print("Tap ${DateTime.now()}");
                  },
                ),
              ),
            ],
            ),
            ),
          ),
        );
      }
    }
    ```
    auto-submit[bot] authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    852dd3a View commit details
    Browse the repository at this point in the history
  4. Listen for uncaught exceptions during loading of a web test suite in …

    …Chrome (#55166)
    
    Without this the test runner will hang if the compiled test is invalid and unable to execute.
    jason-simmons authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    4e1264f View commit details
    Browse the repository at this point in the history
  5. Roll Skia from e77818421e91 to 7efc11f2ea9e (6 revisions) (#55489)

    https://skia.googlesource.com/skia.git/+log/e77818421e91..7efc11f2ea9e
    
    2024-09-27 borenet@google.com [infra] Add jobs for Pixel9
    2024-09-27 robertphillips@google.com [ganesh] Add GrGLCaps setting to control GL/ANGLE Protectedness handling
    2024-09-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 64d149df26fd to 7bd80578336d (2 revisions)
    2024-09-27 bungeman@google.com Suppress function UBSan on macOS
    2024-09-27 drott@chromium.org [Fontations] Optimize generateMetrics() color glyph search
    2024-09-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 966739ac8b4c to 0ec8a7f1b588 (8 revisions)
    
    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 bdero@google.com,brianosman@google.com,bungeman@google.com 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://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
    skia-flutter-autoroll authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    570643c View commit details
    Browse the repository at this point in the history
  6. [docs] Fix broken links in docs/ (#55350)

    Fix broken links in docs/, specifically replaces ../ with https://github.com/flutter/flutter/blob/master/docs/
    
    [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
    Zuckjet authored Sep 27, 2024
    Configuration menu
    Copy the full SHA
    f21f2b2 View commit details
    Browse the repository at this point in the history
Loading