![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Surface
文章平均质量分 75
一个学渣的自我救赎
这个作者很懒,什么都没留下…
展开
-
Android13 Choreographer
Choreographer 直译为:舞蹈编导、编舞者,本质是一个 Java 类。简单来说,Choreographer 主要作用是协调输入、动画、和绘制等任务的执行时机,它从显示子系统接收定时脉冲(如垂直同步),然后安排渲染下一个显示 Frame 的部分工作。Android为了提供一个稳定的帧率输出机制,让软件层和硬件层可以以共同的频率一起工作,引入了 Vsync + TripleBuffer + Choreographer 的刷帧机制。原创 2024-05-05 16:59:18 · 640 阅读 · 0 评论 -
Android13 BufferQueueConsumer releaseBuffer流程分析
当应用程序使用图形缓冲区进行绘制或渲染操作时,需要从BufferQueueConsumer中获取可用的缓冲区。使用完毕后,可以通过调用releaseBuffer方法将缓冲区释放回给BufferQueueConsumer。releaseBuffer方法的作用是将指定的缓冲区添加到可用缓冲区队列中,以便其他应用程序或系统可以继续使用该缓冲区进行绘制或渲染操作。释放缓冲区后,应用程序不再拥有该缓冲区的所有权。BufferQueueConsumer的releaseBuffer方法用于释放图形缓冲区。原创 2024-05-05 16:32:30 · 271 阅读 · 0 评论 -
Android13 BufferQueueConsumer acquireBuffer流程分析
BufferQueueConsumer的acquireBuffer方法的主要作用是从BufferQueue中获取一个可用的图像缓冲区,并返回一个GraphicBuffer对象。它可以用于在应用程序中进行图像处理、渲染或显示等操作。在调用acquireBuffer方法时,它会首先检查是否有可用的图像缓冲区。如果有可用的缓冲区,则会将其标记为“已使用”,并返回该缓冲区的GraphicBuffer对象。如果没有可用的缓冲区,则会等待直到有可用的缓冲区为止。原创 2024-05-05 16:31:34 · 209 阅读 · 0 评论 -
Android13 BufferQueueProducer queueBuffer流程分析
BufferQueueProducer的queueBuffer方法用于将图形缓冲区添加到队列中。当应用程序完成对图形缓冲区的绘制后,可以调用queueBuffer方法将其提交给SurfaceFlinger进行显示。将Surface进程数据传过来,然后封装成BufferItem,放入BufferQueueCore的mQueue中,再通过frameAvailableListener通知消费者去消费。原创 2024-05-05 16:30:14 · 431 阅读 · 0 评论 -
Android13 BufferQueueProducer dequeueBuffer流程分析
BufferQueueProducer的dequeueBuffer方法是Android系统中用于从BufferQueue中获取可用的缓冲区的方法。BufferQueue是一个用于在不同线程之间传递图像数据的队列,它通常用于图像渲染和视频编解码等场景。dequeueBuffer方法的作用是从BufferQueue中获取一个可用的缓冲区,并返回该缓冲区的索引。如果没有可用的缓冲区,则该方法会阻塞,直到有可用的缓冲区为止。原创 2024-05-05 16:27:28 · 516 阅读 · 0 评论 -
Android13 BufferQueueLayer updateTexImage流程分析
1、调用BufferLayerConsumer的acquireBufferLocked方法,从BufferQueue中获取一个可用的图像缓冲区。2、调用BufferLayerConsumer的updateAndReleaseLocked方法,释放图像缓冲区。调用mConsumer(IGraphicBufferConsumer)的relea。原创 2024-05-05 15:34:08 · 851 阅读 · 0 评论 -
Android13 BufferQueueLayer onLayerDisplayed流程分析
【代码】Android13 BufferQueueLayer onLayerDisplayed流程分析。原创 2024-05-05 15:29:03 · 233 阅读 · 0 评论 -
Android13 BufferQueueLayer onFrameAvailable流程分析
上面方法主要处理如下:1、调用mFlinger(SurfaceFlinger)内mScheduler(Scheduler)的recordLayerHistory方法。2、调用Layer的createSurfaceFrameForBuffer方法,创建Layer。3、调用mFlinger(SurfaceFlinger)内mInterceptor(SurfaceInterceptor)的saveBufferUpdate方法。原创 2024-05-05 15:27:42 · 595 阅读 · 0 评论 -
Android13 BufferQueueLayer onFirstRef流程分析
BufferQueueLayer是Android系统中的一个图层,用于管理图像缓冲区的队列。它是SurfaceFlinger系统服务的一部分,负责接收应用程序或系统组件提交的图像缓冲区,并将其显示在屏幕上。onFirstRef是BufferQueueLayer类的一个方法,它是在第一次引用BufferQueueLayer对象时被调用的。在这个方法中,可以进行一些初始化操作,例如创建和配置图像缓冲区队列。原创 2024-05-05 15:19:10 · 912 阅读 · 0 评论 -
Android13 GraphicBuffer 创建流程
【代码】Android13 GraphicBuffer 创建流程。原创 2024-05-05 15:15:30 · 238 阅读 · 0 评论 -
Android BufferQueue&GraphicBuffer
GraphicBuffer是Android系统中用于图形缓冲区的类,它提供了一个用于存储图像数据的内存缓冲区。它是在底层图形驱动程序和应用程序之间传递图像数据的一种机制。GraphicBuffer可以用于在不同的图形组件之间共享图像数据,例如SurfaceFlinger和MediaCodec等。BufferQueue是Android系统中用于管理图像缓冲区的类,它提供了一个先进先出(FIFO)队列,用于存储和管理GraphicBuffer对象。原创 2024-05-05 15:13:21 · 1075 阅读 · 0 评论 -
Android SurfaceTexture
SurfaceTexture是Android平台上的一个类,用于在OpenGL ES中将纹理与图像进行交互。它提供了一种机制,可以将图像数据流直接传递给OpenGL ES进行渲染,而无需将图像数据复制到CPU内存中。SurfaceTexture可以从相机、视频解码器或其他图像源中接收图像数据,并将其作为OpenGL ES纹理提供给应用程序。它还可以用于实现视频播放、相机预览和实时图像处理等功能。原创 2024-05-05 15:03:45 · 678 阅读 · 0 评论 -
Android DisplayHardware
DisplayHardware是SurfaceFlinger中的组件,它代表了物理的显示硬件设备。它负责与显示设备进行通信,并提供了一些操作接口,如设置显示模式、刷新显示缓冲区等。DisplayHardware还负责管理显示缓冲区的内存,及处理与硬件相关的图形操作。原创 2024-05-05 14:47:24 · 322 阅读 · 0 评论 -
Android CompositionEngine
SurfaceFlinger是Android系统中的一个重要组件,它负责管理和渲染所有的图形界面。CompositionEngine是SurfaceFlinger中的一个子模块,它负责处理图层的合成和渲染。CompositionEngine的主要功能包括:图层合成:CompositionEngine通过将多个图层按照一定的规则进行合成,生成最终的显示帧。这些图层可以是应用程序的窗口、系统UI元素、动画效果等。原创 2024-05-05 14:44:40 · 671 阅读 · 0 评论 -
Android13 EventThread threadMain流程分析
EventThread的threadMain方法无限循环处理pendingEvents,对Vsync类型的Event分发到消费者,通过往消费者的FD写数据,通知APP有Vsync信号到来。原创 2024-05-05 14:39:49 · 457 阅读 · 0 评论 -
Android13 SurfaceFlinger onComposerHalRefresh流程分析
onComposerHalRefresh方法是SurfaceFlinger中的一个函数。该方法的作用是在Composer HAL刷新时被调用,用于更新显示内容。onComposerHalRefresh方法会在SurfaceFlinger接收到Composer HAL刷新事件时被调用。Composer HAL是硬件抽象层的一部分,负责与硬件显示设备进行通信。当Composer HAL完成一次刷新操作后,会通知SurfaceFlinger进行相应的处理。原创 2024-05-05 14:35:13 · 341 阅读 · 0 评论 -
Android13 SurfaceFlinger onComposerHalHotplug流程分析
onComposerHalHotplug是一个Android系统中的一个事件回调函数,用于处理Composer HAL(Hardware Abstraction Layer)的热插拔事件。Composer HAL是Android系统中负责处理图形渲染和显示的硬件抽象层,它与硬件驱动程序和图形服务之间进行通信。当发生Composer HAL的热插拔事件时,系统会调用onComposerHalHotplug函数来通知相关的应用程序。这个函数可以在应用程序中实现,以便在热插拔事件发生时执行相应的操作。原创 2024-05-05 14:32:53 · 688 阅读 · 0 评论 -
Android13 SurfaceFlinger onComposerHalVsync流程分析
onComposerHalVsync是一个Android系统中的一个回调函数,用于在垂直同步(Vsync)事件发生时通知应用程序。Vsync是指显示器刷新的时间点,它通常以固定的频率发生,比如60Hz。应用程序可以通过注册onComposerHalVsync回调函数来获取Vsync事件的通知。当Vsync事件发生时,系统会调用注册了onComposerHalVsync回调函数的应用程序,并传递一个时间戳参数,表示Vsync事件发生的时间点。原创 2024-05-05 14:28:51 · 652 阅读 · 0 评论 -
Android13 SurfaceFlinger onLayerUpdate流程分析
上面方法主要处理如下:1、调用mCompositor(ICompositor)的commit方法。2、调用mCompositor(ICompositor)的composite方法。原创 2024-05-05 14:25:21 · 361 阅读 · 1 评论 -
Android13 SurfaceFlinger composite(合成)流程分析
SurfaceFlinger的composite方法,用于将多个窗口的图像进行合成,主要负责对相关要进行上帧的layer进行,识别排序好,然后合成,有hwc合成的会构建对应OutputLayer传递hwc,GPU合成则直接合成,再传递到hwc中,它主要完成以下几个步骤:从队列中获取所有待合成的缓冲区。将这些缓冲区按照一定的顺序进行合成,生成最终的图像。将合成后的图像提交给HWC进行显示。原创 2024-05-05 14:21:09 · 1902 阅读 · 0 评论 -
Android13 SurfaceFlinger commit(提交)流程分析
SurfaceFlinger的commit方法用于将应用程序的绘制结果提交到屏幕上显示。上面方法主要处理如下:1、调用SurfaceFlinger的commitCreatedLayers,创建的layer。2、调用SurfaceFlinger的flushTransactionQueues方法。3、调用SurfaceFlinger的commitTransactions方法,进行Transaction提交。原创 2024-05-05 13:59:00 · 1136 阅读 · 0 评论 -
Android13 SurfaceFlinger启动流程分析
在Android13版本中,SurfaceFlinger是由Android.bp去启动init.rc文件,然后再解析文件去加载SurfaceFlinger。上面方法主要处理如下:1、调用surfaceflinger的createSurfaceFlinger方法,实例化surfaceflinger。2、调用flinger(surfaceflinger)的init()方法,在客户端连接之前进行初始化。原创 2024-05-05 13:46:20 · 997 阅读 · 0 评论 -
Android SurfaceFlinger
SurfaceFlinger是Android系统中的一个重要组件,它主要负责窗口管理与界面显示。具体来说,SurfaceFlinger作为系统的显示引擎,负责接收各应用程序发来的图像数据,并组合成一张完整的画面,并输出到显示屏上。SurfaceFlinger通过重绘整个屏幕或部分屏幕来更新UI界面。它还提供了多种硬件加速技术,如OpenGL ES、Vulkan等,使应用程序能够更快地渲染UI界面。SurfaceFlinger还支持窗口叠加、透明度、混合模式等特性,以支持复杂的多层UI界面。原创 2024-05-05 13:36:23 · 1462 阅读 · 0 评论 -
Android13 Surface queueBuffer流程分析
Surface::queueBuffer是Android系统中Surface类的一个成员函数,用于将图像数据放入Surface的缓冲区中。它的调用地方主要包括以下几个:应用程序:应用程序可以通过Surface对象的queueBuffer函数将图像数据发送给SurfaceFlinger服务。这样,SurfaceFlinger就可以将图像数据进行合成和显示。SurfaceFlinger服务:SurfaceFlinger是Android系统中负责显示合成的服务。原创 2024-05-05 12:27:33 · 683 阅读 · 0 评论 -
Android13 Surface dequeueBuffer流程分析
Surface::dequeueBuffer是Android系统中Surface类的一个方法,用于从Surface中获取一个可用的Buffer。它通常在图形渲染或视频播放等场景中使用。Surface::dequeueBuffer的调用地方可以有多个,具体取决于应用程序的实现和使用场景。以下是一些可能的调用地方:图形渲染引擎:在图形渲染引擎中,Surface::dequeueBuffer通常用于获取一个可用的绘制缓冲区,以便进行图形绘制操作。这样可以实现流畅的图形渲染效果。原创 2024-05-05 12:16:29 · 963 阅读 · 1 评论 -
Android13 Surface unlockCanvasAndPost流程分析
【代码】Android13 Surface unlockCanvasAndPost流程分析。原创 2024-05-05 12:13:32 · 248 阅读 · 0 评论 -
Android13 Surface lockCanvas流程分析
上面方法主要处理如下:1、调用Surface的connect方法,建立与BufferQueueCore的连接。2、调用Surface的dequeueBuffer方法,从Surface中获取一个可用的Buffer。原创 2024-05-05 12:11:24 · 468 阅读 · 0 评论 -
Android13 Surface connect流程分析
【代码】Android13 Surface connect流程分析。原创 2024-05-05 12:09:24 · 364 阅读 · 0 评论 -
Android13 SurfaceSession创建流程分析
【代码】Android13 SurfaceSession创建流程分析。原创 2024-05-05 12:06:03 · 144 阅读 · 0 评论 -
Android13 SurfaceControl创建流程分析
SurfaceControl是Android系统中的一个类,用于管理和控制Surface的创建、显示和销毁,SurfaceControl的创建过程如下:下面分析WindowManagerService创建SurfaceControl的步骤:首先应用进程会new一个java层SurfaceControl,什么都没做,然后传递到WMS进程,因为SurfaceControl在AIDL中是out类型,所以在WMS进程赋值。原创 2024-05-05 11:55:50 · 1367 阅读 · 0 评论 -
Android13 Surface创建流程分析
上面函数的核心代码就是根据应用请求不同的flag创建不同的显示Layer,从上面代码看创建的Layer有四种类型,我们看看系统中大多数界面的Layer ,flage 为eFXSurfaceBufferQueueyer,我们就大致看看createBufferQueueLayer函数。原创 2024-05-05 11:52:16 · 395 阅读 · 0 评论 -
Android Surface
在Android系统中,Surface是一种用于图形和视频渲染的抽象概念,它可以用来将应用程序绘制的图形或视频显示在屏幕上。一个Surface代表一个屏幕表面,可以是整个屏幕或者应用程序UI的一个独立窗口。Surface通过一个SurfaceHolder对象来提供访问接口。原创 2024-05-05 11:49:06 · 851 阅读 · 0 评论