[Feat|Fix] (MG_State/EGLState|MG_Backend|MG_Impl/EGLImpl): Initial implemention of EGL API.

This commit is contained in:
BZLZHH
2026-02-22 18:22:21 +08:00
parent bd8bc1e251
commit d22d2d64f2
13 changed files with 2125 additions and 108 deletions
+15 -2
View File
@@ -91,8 +91,13 @@ namespace MobileGL {
virtual ~BackendObject() = default;
virtual void Initialize() = 0;
virtual void InitCapabilities() = 0;
virtual void InitWindowSurface() = 0;
virtual Bool InitCapabilities() = 0;
virtual Bool InitWindowSurface() = 0;
virtual Bool InitializeEGLDisplay(EGLDisplay dpy, EGLint* major, EGLint* minor);
virtual Bool CreateEGLWindowSurface(const WindowHandle& handle);
virtual Bool MakeEGLCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
virtual Bool SwapEGLBuffers(EGLDisplay dpy, EGLSurface draw);
void SetWindowHandle(const WindowHandle& handle);
@@ -103,7 +108,15 @@ namespace MobileGL {
virtual BackendType GetBackendType() const = 0;
protected:
void ResetEGLRuntimeState();
mutable std::recursive_mutex m_eglStateMutex;
WindowHandle m_windowHandle;
EGLDisplay m_eglDisplay = EGL_NO_DISPLAY;
Bool m_eglDisplayInitialized = false;
Bool m_eglWindowSurfaceInitialized = false;
Bool m_backendCapabilitiesInitialized = false;
UnorderedMap<std::thread::id, Bool> m_eglCurrentThreads;
};
} // namespace MG_Backend
} // namespace MobileGL