一、CompositionEngine介绍
SurfaceFlinger是Android系统中的一个重要组件,它负责管理和渲染所有的图形界面。CompositionEngine是SurfaceFlinger中的一个子模块,它负责处理图层的合成和渲染。
CompositionEngine的主要功能包括:
-
图层合成:CompositionEngine通过将多个图层按照一定的规则进行合成,生成最终的显示帧。这些图层可以是应用程序的窗口、系统UI元素、动画效果等。
-
硬件加速:CompositionEngine利用硬件加速功能,如GPU,来提高图层的渲染性能和效果。
-
显示管理:CompositionEngine负责管理显示设备的配置信息,如分辨率、刷新率等,并根据这些信息进行图层的适配和渲染。
-
动画效果:CompositionEngine支持各种动画效果,如平移、缩放、淡入淡出等,以提升用户界面的交互体验。
通过SurfaceFlinger和CompositionEngine的协同工作,Android系统可以实现流畅的界面渲染和动画效果,并提供给用户良好的交互体验。
二、CompositionEngine相关类
CompositionEngine
Android CompositionEngine是Android系统中的一个关键组件,它负责处理图形渲染和显示的工作。它的主要功能是将应用程序的UI元素(如视图、图形、动画等)合成到屏幕上,以实现流畅的用户界面体验。
CompositionEngine使用了硬件加速技术,通过利用GPU来加速图形渲染和合成操作。它采用了基于场景图(Scene Graph)的方式来管理UI元素,并通过多个图层(Layer)来组织和渲染这些元素。每个图层都可以包含一个或多个UI元素,并且可以应用不同的变换、透明度和混合模式等效果。
CompositionEngine还支持动画效果的处理,它可以根据动画的属性变化来更新图层的状态,并在每一帧中重新合成和渲染UI元素,以实现平滑的动画效果。
此外,CompositionEngine还提供了一些高级功能,如遮罩(Masking)、裁剪(Clipping)和深度测试(Depth Testing)等,以支持更复杂的UI效果和交互。
CompositionEngine代码位于:
frameworks/native/services/surfaceflinger/CompositionEngine/src/CompositionEngine.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/CompositionEngine.h
CompositionEngine的定义:
class CompositionEngine : public compositionengine::CompositionEngine {}
Output
实现类包含通用实现,但实际上不包含最终输出状态。
Output代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/Output.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/Output .h
Output的定义:
class Output {}
class Output final : public BaseOutput {}
class Output : public virtual compositionengine::Output {}
OutputLayer
输出层包含图层的输出相关合成状态。
OutputLayer 代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/OutputLayer.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayer .h
OutputLayer 的定义:
class OutputLayer {}
class OutputLayer : public virtual compositionengine::OutputLayer {}
class OutputLayer final : public BaseOutputLayer {}
RenderSurface
封装所有内容,以便使用 RenderEngine 合成渲染图面。
RenderSurface代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/RenderSurface.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/RenderSurface.h
RenderSurface的定义:
class RenderSurface {}
class RenderSurface : public compositionengine::RenderSurface {}
DisplaySurface
用于使用显示图面(缓冲区队列)的抽象
DisplaySurface代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/DisplaySurface.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/DisplaySurface.h
DisplaySurface的定义:
class DisplaySurface : public virtual RefBase {}
class DisplaySurface : public compositionengine::DisplaySurface {}
Planner
这是层缓存的顶级类。它负责启发式地确定当前层堆栈的组合策略,并将非活动层平展到覆盖缓冲区中,以便可以更有效地表示层堆栈的各个部分。
Planner代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/Planner.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Planner.h
Planner的定义:
class Planner {}
Predictor
Predictor代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/Predictor.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Predictor.h
Predictor的定义:
class LayerStack {}
class Plan {}
class Prediction {}
class Predictor {}
CachedSet
CachedSet代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/CachedSet.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/CachedSet.h
CachedSet的定义:
class CachedSet {}
Display
显示器是可以由硬件作曲家显示设备支持的合成目标
Display代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/Display.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/Display.h
Display的定义:
class Display : public virtual Output {}
class Display : public compositionengine::impl::Output, public virtual compositionengine::Display {}
class Display : public compositionengine::mock::Output, public compositionengine::Display {}
OutputCompositionState
OutputCompositionState代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/OutputCompositionState.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/OutputCompositionState.h
OutputCompositionState的定义:
struct OutputCompositionState {}
OutputLayerCompositionState
OutputLayerCompositionState代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/OutputLayerCompositionState.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayerCompositionState.h
OutputLayerCompositionState的定义:
struct OutputLayerCompositionState {}
HwcAsyncWorker
HwcAsyncWorker代码位于:
frameworks/native/services/surfaceflinger/CompositionEngin/src/HwcAsyncWorker.cpp
frameworks/native/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/HwcAsyncWorker.h
HwcAsyncWorker的定义:
class HwcAsyncWorker final {}