jjzjj

surfaceflinger

全部标签

显示框架之app与SurfaceFlinger通信

SurfaceFlinger是android显示的核心进程,在整个显示框架中起到一个承上启下的作用,“承上”指的是与app进程间的通信,“启下”指的是与Composer进程的通信。Surfaceflinger本身不进行绘制,是app数据上屏的中枢通路,先来看下SurfaceFlinger在整个显示流程中的位置。显示流程图.png从显示流程图看可知,SurfaceFlinger位于中间层的位置,目前的应用会调起renderthread使用GPU来渲染,应用侧使用surface来管理显示数据,surfaceflinger使用layer来对应应用侧的surface,surfaceflinger会根据

Android Surfaceflinger 和 openGL ES

我有几个关于SurfaceFlinger的问题:1)我知道应用程序会写入Surface本身,然后将缓冲区移动到SurfaceFlinger(假设我使用的是HardwareCanvas或EGL)。缓冲区里面有什么?原始像素?编译openGL代码?缓冲区能否在一次交易中保存像素而在另一次交易中保存另一种类型的数据?2)我在某处读到SurfaceFlinger使用OpenGLES1.0API写入HWC/DisplayController命令。是真的吗?如果是,那么3.0版命令是如何翻译成1.0版命令的,在哪里?谢谢 最佳答案 (1)假设您

android - android.graphics包和SurfaceFlinger的关系

我试图了解android.graphicspackage和SurfaceFlinger之间的关系。基于AndroidGraphicsDocumentation有两种绘制二维图形的方法。一种是使用VIEW对象,另一种是直接绘制到Canvas。正如我从文档中读到的那样,当直接绘制到Canvas时,可以创建一个线程来管理链接到SurfaceFlinger的SurfaceView。我还在代码中注意到android.graphics包只是SKIA库的包装器。使用JNI调用SKIA函数。因此,我无法确定调用是否仍转到SurfaceFlinger。这是否意味着当使用View对象进行简单的2D图形时,

android - SurfaceFlinger、SurfaceView、Surface、SurfaceHolder 和 Bitmap 是 Android

我正在从Suface、SufaceFlinger、SurfaceView、SurfaceHolder和Bitmap的文档中学习。我找到了以下定义:表面表面是像素的集合。Surface是一个包含像素的对象,这些像素正在合成到屏幕上。您在屏幕上看到的每个窗口(对话框、全屏Activity、状态栏)都有自己的绘制表面,SurfaceFlinger以正确的Z顺序将它们渲染到最终显示。表面通常有多个缓冲区(通常是两个)来进行双缓冲渲染:应用程序可以绘制其下一个UI状态,而表面转换器正在使用最后一个缓冲区合成屏幕,而无需等待应用程序完成绘图。表面View此类用于向用户呈现实时相机预览。Surfac

安卓 SurfaceFlinger

我想问一下,是否总是调用SurfaceFlinger来在屏幕上进行任何类型的绘图?例如,在屏幕上显示JPG文件。 最佳答案 SurfaceFlinger不是绘制你的窗口的东西。它为您的窗口分配一个帧缓冲区,在您的应用程序中运行的框架直接绘制到该窗口,而不与SurfaceFlinger交互。绘制窗口时,SurfaceFlinger所涉及的唯一交互是在绘制完帧后将最终的新帧缓冲区合成到屏幕上。 关于安卓SurfaceFlinger,我们在StackOverflow上找到一个类似的问题:

显示框架之VirtualDisplay 的数据源

Android支持多个屏幕,主屏(主显的物理屏),虚拟屏(非物理屏),外部显示屏(折叠屏),其中主屏和外部显示屏是实实在在的硬件物理屏,这两者在SurfaceFlinger侧的显示流程相差不大,而VirtualDisplay虽然也是走的SurfaceFlinger流程,但数据源的方式有较大的不同,本文就分析下VirtualDisplay的数据源。对VirtualDisplay框架层的分析可以看下这篇文章:https://www.jianshu.com/p/c4ea60bc73d2这里主要探索一下VirtualDisplay的数据源。CreateDisplay首先框架层会通过DMS来创建虚拟屏,

显示框架之VirtualDisplay 的数据源

Android支持多个屏幕,主屏(主显的物理屏),虚拟屏(非物理屏),外部显示屏(折叠屏),其中主屏和外部显示屏是实实在在的硬件物理屏,这两者在SurfaceFlinger侧的显示流程相差不大,而VirtualDisplay虽然也是走的SurfaceFlinger流程,但数据源的方式有较大的不同,本文就分析下VirtualDisplay的数据源。对VirtualDisplay框架层的分析可以看下这篇文章:https://www.jianshu.com/p/c4ea60bc73d2这里主要探索一下VirtualDisplay的数据源。CreateDisplay首先框架层会通过DMS来创建虚拟屏,
12