Skip to content

[Impeller] [Vulkan] Graphical artifacts while rendering images #137002

Closed

Description

@tvolkert

This video showing graphical artifacts while painting images was observed while running on the Impeller backend in profile mode against flutter-team-archive/engine@e57b5ba. The Vulkan renderer was in use:

E/flutter (12817): [ERROR:flutter/shell/platform/android/android_context_vulkan_impeller.cc(48)] Using the Impeller rendering backend (Vulkan).

I tried getting GPU info from https://vulkan.gpuinfo.org/download.php, but it wouldn't install on my TV:

adb: failed to install /Users/tvolkert/Downloads/vulkancapsviewer_3.32_arm.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

According to javax.microedition.khronos.opengles.GL10#glGetString(GL_RENDERER) (called here - basically I create a GLSurfaceView in order to then ask it info about itself), the GPU is a https://developer.arm.com/Processors/Mali-G52

In case it helps, these artifacts were also observed when I captured this systrace: https://drive.google.com/file/d/1bagpcY5wYprqMPmfTUJXeTAVuctbxHAv/view

Activity

  1. added
    engineflutter/engine related. See also e: labels.
    c: renderingUI glitches reported at the engine/skia or impeller rendering level
    e: impellerImpeller rendering backend issues and features requests
    on Oct 21, 2023
  2. moved this to 🤔 Needs Triage in Impelleron Oct 21, 2023
  3. moved this from 🤔 Needs Triage to 🖖 Vulkan in Impelleron Oct 23, 2023
  4. added
    P2Important issues not at the top of the work list
    on Oct 23, 2023
  5. tvolkert commented on May 25, 2024

    @tvolkert
    ContributorAuthor

    FYI, this still reproduces against cb26a01

  6. itsdax commented on Feb 11, 2025

    @itsdax

    My users have a similar issues on the following devices:

    Redmagic 10
    Samsung Galaxy S22+
    Honor HONOR Magic6 Lite 5G

    However, I am unable to reproduce with my set of devices:

    • IOS Simulator (All versions)
    • Samsung Galaxy S24
    • iPhone 13 Pro, 14 Pro Max, 15 Pro Max

    img.png

  7. spydon commented on Feb 11, 2025

    @spydon
    Contributor

    Redmagic 10
    Samsung Galaxy S22+
    Honor HONOR Magic6 Lite 5G

    I think all of these devices use the Snapdragon 8 chipset.

  8. itsdax commented on Feb 12, 2025

    @itsdax

    New report from a user on PORSCHE DESIGN HONOR Magic7 RSR with similar symptoms on Android 15 (SDK 35)

  9. spydon commented on Feb 12, 2025

    @spydon
    Contributor

    @tvolkert maybe these new ones are worth opening a new issue for, even though it looks very similar to your issue, what do you think?

  10. spydon commented on Feb 19, 2025

    @spydon
    Contributor

    Could this be related to this issue?
    #163452

  11. added
    slimpellerEngine binary size reduction. go/slimpeller
    e: impeller-naughty-driverDevices & drivers that may be behaving unexpectedly and may need workarounds.
    on Jul 9, 2025
  12. moved this from Needs Triage to Device/Vendor Specific in Slimpelleron Jul 9, 2025
  13. gaaclarke commented on Aug 26, 2025

    @gaaclarke
    Member

    The OP never listed the device used to reproduce the problem. Given the stated GPU here is the list of possible SoC's:

    Manufacturer Chip
    Amlogic S922X, A311D
    HiSilicon Kirin 810
    MediaTek MT6768 (Helio P65), MT6769 (Helio G70/G80/G85/G88)
    MediaTek Helio G91
    Rockchip RK3530, RK3566, RK3568
    Samsung Exynos 850

    Given the fact that the OP was in the united states and the device is an "Android TV", the most likely SoC was the Amlogic. HiSilicon has trade restrictions in the US and the MediaTek and Samsung SoC's are for mobile phones. The fact it was a TV also undermines any assertion that this issue shows up on phones too. Especially if they don't share a GPU.

    OP didn't directly mention it but the reproduction code appears to be at https://github.com/tvolkert/photos/tree/69b77905f07f9e6db752ff7081754dfd38a5265c

    I've attempted to run the code there and it has undergone considerable bitrot since it is inheriting from framework classes and was using old gradle settings. I've migrated it to run on the most version of flutter while trying to maintain the functionality but it crashes on startup (either through flutter run or launching it as a screensaver, as recommended in the README.md)

    Details
    The following _TypeError was thrown building PhotosApp(dirty, dependencies: [_ViewScope], state:
    _PhotosAppState#af874):
    Null check operator used on a null value
    
    The relevant error-causing widget was:
      PhotosApp PhotosApp:file:///Users/aaclarke/dev/flutter-examples/volkert_photos/lib/main.dart:31:18
    
    When the exception was thrown, this was the stack:
    #0      PhotosApp.of (package:photos/src/ui/photos/app.dart:22:90)
    #1      GooglePhotosContentProvider.buildHome (package:photos/src/model/google_photos.dart:25:23)
    #2      _PhotosAppState.build (package:photos/src/ui/photos/app.dart:199:53)
    #3      StatefulElement.build (package:flutter/src/widgets/framework.dart:5932:27)
    #4      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5818:15)
    #5      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5983:11)
    #6      Element.rebuild (package:flutter/src/widgets/framework.dart:5530:7)
    #7      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5800:5)
    #8      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5974:11)
    #9      ComponentElement.mount (package:flutter/src/widgets/framework.dart:5794:5)
    ...     Normal element mounting (63 frames)
    #72     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4588:20)
    #73     Element.updateChild (package:flutter/src/widgets/framework.dart:4057:18)
    #74     _RawViewElement._updateChild (package:flutter/src/widgets/view.dart:481:16)
    #75     _RawViewElement.mount (package:flutter/src/widgets/view.dart:504:5)
    ...     Normal element mounting (15 frames)
    #90     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4588:20)
    #91     Element.updateChild (package:flutter/src/widgets/framework.dart:4057:18)
    #92     RootElement._rebuild (package:flutter/src/widgets/binding.dart:1782:16)
    #93     RootElement.mount (package:flutter/src/widgets/binding.dart:1751:5)
    #94     RootWidget.attach.<anonymous closure> (package:flutter/src/widgets/binding.dart:1704:18)
    #95     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3099:19)
    #96     RootWidget.attach (package:flutter/src/widgets/binding.dart:1703:13)
    #97     WidgetsBinding.attachToBuildOwner (package:flutter/src/widgets/binding.dart:1379:27)
    #98     WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:1364:5)
    #99     WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:1350:7)
    #110    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:193:12)
    (elided 10 frames from class _Timer, dart:async, and dart:async-patch)
    

    Unfortunately this issue has been sitting around, probably because the esoteric setup and reproduction. What we need to make progress on this issue is:

    1. Knowledge about the specific SoC that was used
    2. A minimal reproducible example ( https://stackoverflow.com/help/minimal-reproducible-example ). I'm guessing just drawing an image would suffice? The OP never mentioned that.

    Realistically the only resolution here will be to denylist this device because we don't have reliable reproduction on any other device in the past 2 years. We cannot however denylist it without knowing the actual device used. A lot has changed since cb26a01, it may be fixed already. Without a clear device or reproduction it can't be verified though.

  14. added
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    on Aug 26, 2025
  15. moved this from Device/Vendor Specific to Done in Slimpelleron Aug 27, 2025
  16. github-actions commented on Sep 16, 2025

    @github-actions

    Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now.
    If you find this problem please file a new issue with the same description, what happens, logs and the output of 'flutter doctor -v'. All system setups can be slightly different so it's always better to open new issues and reference the related ones.
    Thanks for your contribution.

  17. github-actions commented on Sep 30, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  18. locked as resolved and limited conversation to collaborators on Sep 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: renderingUI glitches reported at the engine/skia or impeller rendering levele: impellerImpeller rendering backend issues and features requestse: impeller-naughty-driverDevices & drivers that may be behaving unexpectedly and may need workarounds.engineflutter/engine related. See also e: labels.slimpellerEngine binary size reduction. go/slimpellerteam-engineOwned by Engine teamtriaged-engineTriaged by Engine teamwaiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions