SurfaceFlinger处理事务 app向surfaceflinger提交事务之后,surfaceflinger会缓存事务;当vsync到来之后,会执行进行处理。onMessageInvalidate的主要功能:处理事务刷新图像。
07 深入理解surface unlockAndPost app通过Surface unlockAndPost进行queueBuffer,进而调用onFrameAvailable;使用processNextBufferLocked进行Transaction事务提交到SurfaceFlinger,让SurfaceFlinger根据Transaction进行合成操作。
05 深入解析surfaceControl getSurface SurfaceControl::getSurface()返回的实际是BBQSurface,BBQSurface继承Surface,可以使用Surface表示。BBQSurface是对生产者,handle的封装,其中包含了对buffer的操作。并且本文对FrameAvailableListener的初始化进行了简要阐述
04 深入探究waitForService<ISurfaceComposer> 本文梳理了一下waitForService的内部机制,和Bpxxx的创建过程,并简单了解BpSurfaceComposer/BnSurfaceComposer之间的交互。
02 最简单的SurfaceFlinger应用程序 获取屏幕大小 SurfaceComposerClient::getActiveDisplayMode(displayToken, &displayMode);获取要显示的屏幕,这里获取的是主屏SurfaceComposerClient::getInternalDisplayToken。设置surface属性;推图 surface->unlockAndPost()创建SurfaceComposerClient。创建SurfaceControl。向buffer里填充图像数据。
01 Android12 surfaceflinger详解 SurfaceFlinger是Android操作系统中的一个Service,它负责接收所有Window的Surface作为输入,并根据ZOrder、透明度、大小、位置等参数,计算出每个Surface在最终合成图像中的位置,然后交由CPU或GPU生成最终的显示Buffer,最后显示到特定的显示设备上
DRM驱动(六)之atomic_check atomic_check主要用来检查应用设置的参数是否存在与驱动不相符的地方,drm框架会check通用的参数,并会调用各个由厂商实现组件的atomic_check来进行参数检查。
DRM驱动(四)之ADD_FB gem obj创建之后需要与一块drm_framebuffer进行绑定使用,因为最终刷图使用的是fb。使用接口drmModeAddFB会创建drm_framebuffer并与上节创建的gem obj进行绑定。本文阐述了内核创建drm_framebuffer的整个过程。