Skip to content

[Bug] Black flickering on Android Auto and frame stuttering on mobile with Samsung Exynos/Mali devices (Exynos 9611/9820/9810) starting from Mapbox v11.21.0 #2722

@minhtv15

Description

@minhtv15

Environment

  • Android OS version: Android 10, 11, 12
  • Devices affected:
    • Samsung Galaxy A51 (Exynos 9611 SoC, Mali-G72 GPU)
    • Samsung Galaxy S10 / S10+ (Exynos 9820/9825 SoC, Mali-G76 GPU)
    • Samsung Galaxy S9 / S9+ / Note 9 (Exynos 9810 SoC, Mali-G72 GPU)
  • Maps SDK Version:
    • Affected Configuration (With Flickering/Stuttering):
      val mapBoxVersion = "11.21.0"
      implementation("com.mapbox.maps:android-ndk27:$mapBoxVersion")
      implementation("com.mapbox.extension:maps-androidauto-ndk27:$mapBoxVersion")
    • Working Configuration (No Flickering/Stuttering):
      val mapBoxVersion = "11.3.0"
      implementation("com.mapbox.maps:android:$mapBoxVersion")
      implementation("com.mapbox.extension:maps-androidauto:$mapBoxVersion")

Observed behavior and steps to reproduce

Observed behavior:

  • On Android Auto Projection (Car Screen): The MapView continuously flashes/flickers black during user interaction (zoom, drag, rotation) or whenever there are GPS location updates. Framebuffer synchronization with Android Auto's virtual display/video encoder appears broken.
  • On Standalone Mobile Device Screen: The map does not flash black, but experiences significant performance degradation, micro-stutters, and frame drops during map interactions.

Steps to reproduce:

  1. Initialize a Mapbox MapView with the default configuration on Mapbox SDK 11.21.0-ndk27.
  2. Connect one of the affected Samsung devices to an Android Auto Head Unit (or DHU simulator).
  3. Pan, zoom, or drag the map.
  4. Observe continuous heavy black flashing on the Car Screen, and frame stutters on the Mobile Screen.

Expected behavior

The MapView should render smoothly at 30 FPS without any black flashing on Android Auto or stuttering on mobile screens on all Samsung devices using Exynos chipsets and ARM Mali GPUs.

Notes / preliminary analysis

  • The bug is highly correlated with the transition to Android NDK r27 which enforces 16 KB memory page size alignment in newer Mapbox v11 releases (specifically the -ndk27 variants of the SDK and Android Auto extension).
  • The older ARM Mali GPU drivers (Mali-G72, Mali-G76) running on 4 KB page size kernels seem to struggle with memory page allocation and sync fences in virtual display environments (Android Auto projections), which breaks the video encoder pipeline. On the local screen, it manifests as pipeline stalls leading to visual stutters.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🪲Something isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions