Android CompositionEngine

一、CompositionEngine介绍

SurfaceFlinger是Android系统中的一个重要组件,它负责管理和渲染所有的图形界面。CompositionEngine是SurfaceFlinger中的一个子模块,它负责处理图层的合成和渲染。

CompositionEngine的主要功能包括:

  1. 图层合成:CompositionEngine通过将多个图层按照一定的规则进行合成,生成最终的显示帧。这些图层可以是应用程序的窗口、系统UI元素、动画效果等。

  2. 硬件加速:CompositionEngine利用硬件加速功能,如GPU,来提高图层的渲染性能和效果。

  3. 显示管理:CompositionEngine负责管理显示设备的配置信息,如分辨率、刷新率等,并根据这些信息进行图层的适配和渲染。

  4. 动画效果: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 {}
  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值