Skip to content

[Impeller] impeller_unittests aborts on a Windows host: "No PNG decoder registered" when rasterizing color emoji #189565

Description

@sero583

Steps to reproduce

  1. On a Windows host, build and run impeller_unittests.
  2. Run any of the color-emoji / color-glyph playground tests, for example --gtest_filter=*CanRenderEmojiTextFrame*Vulkan*.

Expected results

The color-emoji playground tests run and pass on a Windows host, as they do on Linux CI.

Actual results

The process aborts with a Skia fatal assert the first time a color glyph is decoded:

SkScalerContext_win_dw.cpp(1724): fatal error:
"assertf(SkCodecs::HasDecoder("png")): No PNG decoder registered.
A call to SkCodecs::Register is necessary."

Five tests are affected:

  • Play/AiksTest.CanRenderEmojiTextFrame/Vulkan
  • Play/AiksTest.CanRenderEmojiTextFrameWithBlur/Vulkan
  • Play/AiksTest.CanRenderEmojiTextFrameWithAlpha/Vulkan
  • Play/TypographerTest.LazyAtlasTracksColor/Vulkan
  • Play/TypographerTest.GlyphColorIsPartOfCacheKey/Vulkan

These rasterize color emoji with the host font stack. On Windows that is Skia's DirectWrite backend, which decodes PNG-format color glyphs (Segoe UI Emoji) through the SkCodecs registry. The engine runtime registers codecs in ImageGeneratorRegistry, but test binaries must register them for themselves; the playground harness never does, so the first color glyph aborts the process. Linux CI takes the FreeType scaler path and never decodes PNG glyphs, which is why this only surfaces on Windows hosts.

Code sample

Code sample
Not applicable: engine test-harness bug, reproduced by running
impeller_unittests on a Windows host. No Dart app is involved.

Screenshots or Video

Screenshots / Video demonstration

Not applicable.

Logs

Logs
SkScalerContext_win_dw.cpp(1724): fatal error:
"assertf(SkCodecs::HasDecoder("png")): No PNG decoder registered.
A call to SkCodecs::Register is necessary."

Flutter Doctor output

Doctor output
[√] Flutter (Channel stable, 3.44.4, on Microsoft Windows [Version 10.0.19045.6466], locale de-DE) [874ms]
    • Flutter version 3.44.4 on channel stable at C:\Users\serha\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ad70ec4617 (3 weeks ago), 2026-06-24 11:07:06 -0700
    • Engine revision 53bfd6d932
    • Dart version 3.12.0 (build 3.12.0-139.0.dev)
    • DevTools version 2.54.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration

[√] Windows Version (10 Pro 64-bit, 22H2, 2009) [5,4s]

[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [15,9s]
    • Android SDK at C:\Users\serha\AppData\Local\Android\sdk
    • Emulator version 31.2.9.0 (build_id 8316981) (CL:N/A)
    • Platform android-36, build-tools 36.1.0
    • Java binary at: C:\Program Files\Android\Android Studio1\jbr\bin\java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314)
    • All Android licenses accepted.

[√] Chrome - develop for the web [294ms]
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2022 17.14.20) [292ms]
    • Visual Studio at F:\VS_CPP_Tools
    • Visual Studio Build Tools 2022 version 17.14.36705.20
    • Windows 10 SDK version 10.0.26100.0

[√] Connected device (3 available) [281ms]
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19045.6466]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 150.0.7871.115
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 150.0.4078.65

[√] Network resources [752ms]
    • All expected network resources are available.

• No issues found!

Reproduces on current master; the playground harness does not register Skia codecs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: tests"flutter test", flutter_test, or one of our testse: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-windowsBuilding on or for Windows specificallyteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions