Skip to content

[Impeller] slow performance of DRRect on Adreno GPU due to primitive restart. #160593

@khoadng

Description

@khoadng

Steps to reproduce

Adding a border seems to have a performance issue on my device Xiaomi 11 Lite, removing it makes things return to normal. I also tested this on the master branch, the issue is still there.

Expected results

No janks

Actual results

Heavy janks

Code sample

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: SingleChildScrollView(
            child: Wrap(
              children: [
                for (int i = 0; i < 200; i++)
                  Padding(
                    padding: const EdgeInsets.all(8),
                    child: Material(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(8),
                        // This seems to cause performance issues
                        side: BorderSide(
                          color: Colors.red,
                        ),
                      ),
                      child: Text(
                        'Item $i',
                      ),
                    ),
                  ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration

With border

Screenrecorder-2024-12-19-19-42-14-746.mp4

No border

Screenrecorder-2024-12-19-19-42-49-521.mp4

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.27.1, on macOS 15.1 24B2083 darwin-arm64, locale en-VN)
    • Flutter version 3.27.1 on channel stable at /Users/khoa/fvm/versions/stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 17025dd882 (3 days ago), 2024-12-17 03:23:09 +0900
    • Engine revision cb4b5fff73
    • Dart version 3.6.0
    • DevTools version 2.40.2

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at /Users/khoa/Library/Android/sdk
    • Platform android-35, build-tools 35.0.0
    • Java binary at: /Users/khoa/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16C5032a
    • CocoaPods version 1.16.2

[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Android Studio (version 2024.2)
    • Android Studio at /Users/khoa/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

[✓] VS Code (version 1.96.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.102.0

[✓] Connected device (5 available)
    • 2109119DG (mobile)              • 192.168.1.167:42171                  • android-arm64 • Android 14 (API 34)
    • sdk gphone64 arm64 (mobile)     • emulator-5554                        • android-arm64 • Android 15 (API 35) (emulator)
    • iPhone 16 Pro Max (mobile)      • 33B397ED-CCA5-4780-BD6C-E3EF3C8CCE0A • ios           • com.apple.CoreSimulator.SimRuntime.iOS-18-2 (simulator)
    • macOS (desktop)                 • macos                                • darwin-arm64  • macOS 15.1 24B2083 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad                • darwin        • macOS 15.1 24B2083 darwin-arm64

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

No one assigned

    Labels

    e: impellerImpeller rendering backend issues and features requeststeam-engineOwned by Engine team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions