据我所知,到目前为止,表面提供者表面,应用程序渲染,然后合成所有的表面到最后的屏幕。(如有任何错误,请指出)。
第一个问题:由surfaceflinger创建的表面是全局可用的,可供所有进程使用。(表面的内存是否在GPU内存中?)
虽然我在googled中搜索到了不可能在进程之间共享openGL上下文(这里我指的是APP进程和表面处理)。我不确定表面是否会用到GPU内存?
如果我的第一个问题的答案是肯定的,那么当应用程序呈现到表面时,是否有任何openGL资源共享?这些碎片,包括表面记忆,是如何运作的呢?
发布于 2015-04-28 05:17:44
安卓Surface和EGL Surface是有区别的。它们是密切相关的,但不是一回事。
由eglCreateWindowSurface()等方法创建的EGL曲面可以与EGL上下文相关联,并用作呈现的目标。它们不能在进程之间共享。
Android 曲面只是BufferQueue对象的包装器,它提供了一种在系统中移动图形缓冲区的方法。应用程序呈现的缓冲区可以在应用程序和SurfaceFlinger之间传递,但不传递任何EGL状态。所有SurfaceFlinger得到的都是成品。
该系统在图形体系结构文档中作了较为详细的描述。
https://stackoverflow.com/questions/29909877
复制相似问题