2016-12-27 145 views
1

我正在开发一个运行在不同EGL实现上的应用程序,例如Mesa,ANGLE,AMD EGL等。该应用程序创建多个线程,每个线程都有一些EGLContexts。EGLContext资源是否自动释放?

当一个线程退出时,它是否应该释放在上下文中创建的所有纹理,缓冲区等,然后才能销毁它(eglDestroyContext),还是仅仅摧毁上下文就足够了?假设硬件可能是iGPU,它使用系统RAM作为其内存。

回答

2

你可以消灭他们,如果你想要的,但你不必:

EGL 1.5 spec,第3.7.2节 “销毁渲染上下文”,第57页(重点煤矿):

EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx);

ctx相关的所有资源都被标记为尽快删除。当多个上下文共享对象时(请参阅eglCreateContext),除非共享列表上的所有上下文都被销毁,否则这些共享对象不会被删除,除非应用程序首先明确删除了这些对象。在eglDestroyContext之后,上下文和引用它的句柄的处理方式与eglTerminate销毁的上下文相同(请参阅第3.2节)。