Android

时间:2015-04-28 03:41:11

标签: android opengl-es egl surfaceflinger

据我所知,到目前为止,surfaceflinger提供者会向APP表面渲染,然后将所有曲面合成到最终屏幕。 (如果有任何错误,请指出Thx)。

第一个问题:surfaceflinger创建的曲面是全局可用的,可供所有进程使用。 (表面的记忆是在GPU内存中吗?)

虽然我用Google搜索时无法在进程之间共享openGL上下文(这里我指的是APP进程和surfaceflinger进程)。我不确定表面使用的GPU内存是否存在?

如果我的第一个问题的答案是肯定的,那么当APP渲染到表面时,是否有任何openGL资源共享到surfaceflinger? 那些碎片的东西,包括表面的记忆是如何起作用的?

1 个答案:

答案 0 :(得分:0)

Android Surface和EGL Surface之间存在差异。它们密切相关,但不是一回事。

eglCreateWindowSurface()等方法创建的EGL曲面可以与EGL上下文关联,并用作渲染的目标。它们不能在进程之间共享。

Android Surfaces只是BufferQueue对象的包装器,它提供了一种在系统周围移动图形缓冲区的方法。应用程序呈现的缓冲区可以在app和SurfaceFlinger之间传递,但不会传递任何EGL状态。所有SurfaceFlinger得到的都是成品。

graphics architecture document中详细介绍了该系统。