eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC)eglGetProcAddress("eglUnlockSurfaceKHR");
}
- if (!GLPlatformContext::supportsGLExtension("GL_OES_EGL_image")) {
- LOG_ERROR("Platform doesn't support GL_OES_EGL_image. Support for this extension is required for Hardware Acceleration.");
- return;
- }
-
#if PLATFORM(WAYLAND)
if (GLPlatformContext::supportsEGLExtension(display, "EGL_KHR_image_base") && GLPlatformContext::supportsEGLExtension(display, "EGL_WL_bind_wayland_display")) {
#else
return;
EGLImageKHR tempHandle = EGL_NO_IMAGE_KHR;
- if (eglCreateImageKHR && eglImageTargetTexture2DOES && eglDestroyImageKHR)
+ if (eglCreateImageKHR && eglDestroyImageKHR)
tempHandle = eglCreateImageKHR(display, EGL_NO_CONTEXT, target, clientBuffer, attributes);
*image = tempHandle;
void EGLHelper::imageTargetTexture2DOES(const EGLImageKHR image)
{
- if (eglImageTargetTexture2DOES)
- eglImageTargetTexture2DOES(GL_TEXTURE_2D, static_cast<GLeglImageOES>(image));
+ if (!eglImageTargetTexture2DOES) {
+ static bool supportsEGLImageTarget = GLPlatformContext::supportsGLExtension("GL_OES_EGL_image");
+ if (!supportsEGLImageTarget) {
+ LOG_ERROR("Platform doesn't support GL_OES_EGL_image. Support for this extension is required for Hardware Acceleration.");
+ return;
+ }
+
+ eglImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)eglGetProcAddress("glEGLImageTargetTexture2DOES");
+ if (!eglImageTargetTexture2DOES) {
+ LOG_ERROR("Failed to resolve eglImageTargetTexture2DOES.");
+ return;
+ }
+ }
+
+ eglImageTargetTexture2DOES(GL_TEXTURE_2D, static_cast<GLeglImageOES>(image));
}
bool EGLHelper::lockSurface(EGLSurface surface, EGLint lockAttrib[], EGLDisplay eglDisplay)