Android 中 APP 和 surfaceflinger 之间的 OpenGL 上下文



据我所知,表面投掷器将表面提供给APP渲染,然后将所有表面合成到最终屏幕。(如果有任何错误,请指出谢谢)。

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

虽然当我在谷歌上搜索时,不可能在进程之间共享 openGL 上下文(这里我指的是 APP 进程和 surfaceflinger 进程)。我不确定表面使用的GPU内存是否如此?

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

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

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

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

图形体系结构文档中对系统进行了较详细的描述。

相关内容

  • 没有找到相关文章

最新更新