2016-12-27 147 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節)。