Android Graphics Overview

Android Graphics

Android Stack

Android Stack

Android Graphics Stack

block-beta
  columns 3
  block:group1:3
    %% columns auto (default)   
    A["WindowManager"]
    B["SurfaceFlinger"]
    C["..."]
  end
  block:group2:3
    a["Gralloc"]
    b["HWComposer"]
    c["..."]
  end
  block:group3:3
    a1["GPU"]
    b1["DC"]
    c1["..."]
  end
  %% **蓝
  style group1 fill:#55AEF7
  %% **橙
  style group2 fill:#F87529
  %% **绿
  style group3 fill:#25A768

SurfaceFlinger (/f'lɪngər/:抛投器)

HAL

Gralloc

HWComposer

drm-hwcomposer

一个基于 KMS 的 HWComposer 实现。

ARM drm-hwcomposer

给 Mali DP 量身定制的 drm-hwcomposer.

Android Sync Framework

Android Sync Framework 实现的是显式同步 (Explicit Synchronization), 所谓显式同步,指的是用户态可见,与隐式同步 (Implicit Synchronization) 相对,隐式同步用户态应用程序是不感知的。虽然隐式同步完全由驱动和内核控制,无需应用程序干预(这对应用开发者来说可能更简单些,但有时简单的方案可能不是最高效的),但显式同步比隐式同步更能发挥硬件的并行性,这应该也是 Android 实现的是显式同步的主要原因。

  • sync_timeline
    • control ordering
  • sync_pt (point)
    • represent a fence
  • sync_fence (like sync file in Linux kernel)
    • for fd passing across userspace processes like SurfaceFlinger and 3D applications

References