How to Inspect GPU Drivers and Updatable Graphics Packages on Android Using ADB dumpsys gpu

Modern mobile gaming, augmented reality, and 3D rendering engines demand rapid driver updates and specialised Vulkan optimisations. Historically, updating graphics drivers on Android required full over-the-air (OTA) system firmware upgrades issued by OEMs and silicon vendors. Starting with Android 10 and expanded in subsequent releases, Google introduced the Updatable GPU Drivers architecture (also known as Game Driver), allowing manufacturers to deliver targeted GPU driver updates directly through the Google Play Store or APK packages without modifying the system partition. To audit active GPU hardware drivers, inspect updatable graphics package bindings, and monitor app-specific driver opt-ins, Android provides the dumpsys gpu diagnostic service via ADB.

Android Updatable GPU Driver Architecture

The Android graphics stack separates GPU driver discovery and injection into distinct layers coordinated by GpuService (located within the native Android runtime framework):

  • System GPU Driver: The baseline factory driver baked into the vendor partition (e.g., /vendor/lib/egl/ or /vendor/lib64/hw/vulkan.*.so). This driver handles general system UI rendering via SurfaceFlinger and standard applications.
  • Updatable GPU Driver Package: An OEM-signed APK containing updated OpenGL ES and Vulkan driver libraries. When installed, GpuService verifies cryptographic signatures against system allowlists.
  • App-Specific Driver Selection: Developers and device manufacturers can configure individual applications (such as high-performance games) to load the updatable driver package while letting standard utility apps continue using the factory system driver.
  • Vulkan Layer Injection: GpuService coordinates the loading of Vulkan debugging, profiling, and validation layers (such as RenderDoc or Android GPU Inspector) without requiring rooted firmware.

Querying GPU Service Telemetry with dumpsys gpu

To inspect the active state of the GPU management subsystem, connect an Android device with USB debugging enabled and execute:

adb shell dumpsys gpu

The command dumps information regarding loaded graphics packages, active app opt-ins, and driver paths. A typical output structure includes:

GpuService global info:
  Target driver package: com.qualcomm.qti.gpudrivers.adreno660
  Driver path: /data/app/~~u-J39==/com.qualcomm.qti.gpudrivers.adreno660-==/lib/arm64
  Driver version code: 512440000
  Driver version name: OpenGL ES 3.2 [email protected]
  System driver path: /vendor/lib64/egl/libGLESv2_adreno.so
  Updatable driver allowed: true
  Game driver enabled: true
  Opt-in apps:
    com.epicgames.portal: opt-in
    com.miHoYo.GenshinImpact: opt-in
  Opt-out apps:
    none

Key architectural fields include:

  • Target driver package: The package name of the active updatable graphics driver APK currently recognized by GpuService.
  • Driver path: The filesystem path from which dynamic libraries (.so) are loaded for target processes.
  • Driver version code and name: Build metadata provided by the silicon vendor (Qualcomm Adreno, ARM Mali, or Imagination PowerVR).
  • Opt-in apps: Application package names explicitly mapped to receive the updatable driver pipeline rather than the baseline system driver.

Inspecting GPU Developer Settings and Driver Preferences

Android exposes user-facing graphics driver settings under Developer options > Graphics Driver Preferences. Through ADB, you can query and manipulate these settings programmatically using the system settings provider.

Auditing Global Graphics Driver Overrides

To query global GPU driver preference keys:

# Check whether game driver overrides are enabled globally
adb shell settings get global updatable_driver_all_apps

# Check app-specific driver production lists
adb shell settings get global updatable_driver_production_opt_in_apps
adb shell settings get global updatable_driver_production_opt_out_apps

Inspecting Prerelease Driver Allow-lists

During game development, studio engineers often receive beta or prerelease driver builds from silicon partners. Android manages these via distinct prerelease driver lists:

# Inspect prerelease driver package targets
adb shell settings get global updatable_driver_prerelease_opt_in_apps

Configuring App-Specific GPU Driver Selection via ADB

During performance benchmarking and debugging, developers need to toggle between the system driver and updated drivers to measure frame rates and verify bug fixes.

Forcing an Application to Use Updatable Drivers

To force a specific application package to load the updatable driver package:

# Set driver selection to game driver (value 1)
adb shell settings put global updatable_driver_production_opt_in_apps "com.example.renderingapp"

Forcing an Application to Use System Factory Drivers

To verify if a rendering glitch or crash is caused by a recently installed updatable driver update, force the application to fall back to the system factory driver:

adb shell settings put global updatable_driver_production_opt_out_apps "com.example.renderingapp"

Restoring Default Driver Behavior

To clear custom overrides and return to the system defaults:

adb shell settings delete global updatable_driver_production_opt_in_apps
adb shell settings delete global updatable_driver_production_opt_out_apps

Auditing Active Driver Loading via Logcat

When an application launches, the Android dynamic linker and EGL loader evaluate GpuService policies to choose the target driver binary. You can observe this resolution in real time using logcat:

adb logcat -s GraphicsEnvironment:V

Upon application startup, the GraphicsEnvironment tag outputs the driver selection decision:

GraphicsEnvironment: Package 'com.example.renderingapp' opted in to game driver
GraphicsEnvironment: Loading /data/app/.../lib/arm64/vulkan.adreno.so
GraphicsEnvironment: Successfully initialized graphics driver package

By leveraging dumpsys gpu and framework driver preference commands, developers and system architects can verify GPU driver distribution, diagnose hardware rendering regressions, and ensure mobile gaming workloads leverage cutting-edge silicon optimizations.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.