Android Qcom Display学习(三)

该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)

Android Display整体架构

Android 图形组件
Android Graphic analyze
display:高通display overview
MDP(mobile display processor) 简介
[RK3399][Android7.1] Display中的DRM模块介绍

Application

显示流程为在APP侧的主要流程为,当启动一个新的activity时,会创建一个窗口并在WindowManager service(WMS)中注册,当这个app切换到“最前台”时,WMS会要求SurfaceFlinger为这个window创建一个surface用来绘图。SurfaceFlinger创建一个“layer“(surface),这个layer的核心部分既是一个BufferQueue,这时候app就可以在这个layer上render了。

Framework

Android Qcom Display学习(三)_第1张图片
frameworks/native/services/surfaceflinger
SurfaceFlinger:当系统中存在多个应用程序时,这能保证它们都可以获得一个“本地窗口”,并且这些窗口最终也能显示到屏幕上,SurfaceFlinger会收集所有程序的显示需求,对它们做统一的图像混合操作。

Surface:SurfaceView中有独立与应用窗口的Surface,能直接显示在终端屏幕上的,Surface从中介BufferQueue申请一个bufferdequeueBuffer(例如Camera就是GraphicBuffer),最终会丢给SurfaceFlinger。

BufferQueue:BufferQueue是一个服务中心,producer和consumer必须要通过它来管理buffer。

Surface 表示缓冲区队列中的生产方,而缓冲区队列通常会被 SurfaceFlinger 消耗。在 Android 平台上创建的每个窗口都由 Surface 提供支持。所有被渲染的可见 Surface 都被 SurfaceFlinger 合成到屏幕。

Hardware Abstraction Layer

vendor/qcom/proprietary/display
hardware/libhardware/modules/gralloc

硬件混合渲染器 (HWC) HAL 用于确定通过可用硬件来合成缓冲区的最有效方法。假设有一部普通 Android 手机屏幕,其屏幕方向为纵向,状态栏在顶部,导航栏在底部,其他区域显示应用内容。每个层的内容都在单独的缓冲区中。您可以使用以下任一方法处理合成:

(1) 将应用内容渲染到暂存缓冲区中,然后在其上渲染状态栏,再在其上渲染导航栏,最后将暂存缓冲区传送到显示硬件。
(2) 将三个缓冲区全部传送到显示硬件,并指示它从不同的缓冲区读取屏幕不同部分的数据。

显然后一种方法可以显著提高效率,所以HWC用于将SurfaceFlinger 接收的图层进行合成,从而减少 OpenGL ES (GLES) 和 GPU 执行的合成量,其工作方式表现为为

(1) SurfaceFlinger 向 HWC 提供一个完整的层列表,并询问“您希望如何处理这些层?”
(2) HWC 的响应方式是将每个层标记为设备或客户端合成。
(3) SurfaceFlinger 会处理所有客户端,将输出缓冲区传送到 HWC,并让 HWC 处理其余部分。

HAL层的gralloc库负责了申请图形缓冲区的所有工作,HAL层之上的Surface、BufferQueue最终都是调用gralloc库去申请图形缓冲区。

Kernel Space

Android Qcom Display学习(三)_第2张图片

DRM(direct rendering manager)

各模块的位置及功能:
Plane:        一个Plane代表一个image layer, 最终的image由一个或者多个Planes组成。
CRTC:       主要用于显示控制,如display timings,resolution的配置,将framebuffer内容送到display,更新framebuffer等。
Encoder:    将数据转换成合适的格式,送给connector,比如HDMI需要TMDS信息, encoder就将数据转成HDMI需要的TMDS格式。
Connector: 代表具体外部接口,如edp, hdmi, mipi等。用于传输信号给外部硬件显示设备,探测外部显示设备接入。

对应dtsi中的qcom,mdss-dsi-display-timings中
    qcom,display-topology = <1 0 1>;  //Layer Mixer, DSC encoder, DSI MDP处理模块的数量
    qcom,default-topology-index = <0>;

SDE/MDP(mobile display processor)

DRM处理架构中的对应的硬件模块
SSPP(Source Surface Processor Pipes):Format conversion and quality improvement for source surface(video graphics)
Layer Mixer(LM):Blend and mix source surface together
DSPP(Destination Surface Processor Pipes):Conversion correction and adjustment based on panel charactersistics
Display interface:Timing generate and interface connectiong the display perpheral

你可能感兴趣的:(Android_Display,display)