diff --git a/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.cpp b/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.cpp index 1ad583fe..f8d3790f 100644 --- a/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.cpp +++ b/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.cpp @@ -848,6 +848,29 @@ namespace MobileGL::MG_Backend::DiligentBackend { } } + Bool BackendObject_Diligent::CreateEGLWindowSurface(EGLSurface surface, const WindowHandle& handle) { + const std::lock_guard lock(m_eglStateMutex); + if (!m_initialized) { + MGLOG_E("BackendObject_Diligent::CreateEGLWindowSurface failed: backend not initialized"); + return false; + } + if (!handle.Handle || (handle.Backend != WindowBackend::Android && handle.Backend != WindowBackend::X11 && + handle.Backend != WindowBackend::MetalLayer && handle.Backend != WindowBackend::Win32)) { + MGLOG_E("BackendObject_Diligent::CreateEGLWindowSurface failed: unsupported native window backend"); + return false; + } + return RegisterEGLWindowSurface(surface, handle); + } + + Bool BackendObject_Diligent::CreateEGLPbufferSurface(EGLSurface surface, EGLint width, EGLint height) { + const std::lock_guard lock(m_eglStateMutex); + if (!m_initialized) { + MGLOG_E("BackendObject_Diligent::CreateEGLPbufferSurface failed: backend not initialized"); + return false; + } + return RegisterEGLPbufferSurface(surface, width, height); + } + Bool BackendObject_Diligent::ResizeEGLWindowSurface(EGLSurface surface, Uint32 width, Uint32 height) { const std::lock_guard lock(m_eglStateMutex); if (!BackendObject::ResizeEGLWindowSurface(surface, width, height)) { diff --git a/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.h b/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.h index 1bb21fd8..8802ffa9 100644 --- a/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.h +++ b/MobileGL/MG_Backend/Diligent/BackendObject_Diligent.h @@ -43,6 +43,8 @@ namespace MobileGL::MG_Backend::DiligentBackend { Bool InitCapabilities() override; Bool InitWindowSurface() override; Bool InitPbufferSurface(EGLint width, EGLint height) override; + Bool CreateEGLWindowSurface(EGLSurface surface, const WindowHandle& handle) override; + Bool CreateEGLPbufferSurface(EGLSurface surface, EGLint width, EGLint height) override; Bool ResizeEGLWindowSurface(EGLSurface surface, Uint32 width, Uint32 height) override; void OnEGLSurfaceReleased(EGLSurface surface) override;