mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-22 05:27:20 +00:00
[client] egl: use eglCreateImage and eglDestroyImage indirectly
The dmabuf path is optional, so we shouldn't require those functions to link our program.
This commit is contained in:
parent
5c7f168370
commit
072c54977e
@ -38,6 +38,8 @@ struct EGLDynProcs
|
|||||||
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallback;
|
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallback;
|
||||||
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
|
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
|
||||||
PFNGLBUFFERSTORAGEEXTPROC glBufferStorageEXT;
|
PFNGLBUFFERSTORAGEEXTPROC glBufferStorageEXT;
|
||||||
|
PFNEGLCREATEIMAGEPROC eglCreateImage;
|
||||||
|
PFNEGLDESTROYIMAGEPROC eglDestroyImage;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct EGLDynProcs g_egl_dynProcs;
|
extern struct EGLDynProcs g_egl_dynProcs;
|
||||||
|
@ -781,15 +781,16 @@ static bool egl_renderStartup(LG_Renderer * renderer, bool useDMA)
|
|||||||
if (!this->hasBufferAge)
|
if (!this->hasBufferAge)
|
||||||
DEBUG_WARN("GL_EXT_buffer_age is not supported, will not perform as well.");
|
DEBUG_WARN("GL_EXT_buffer_age is not supported, will not perform as well.");
|
||||||
|
|
||||||
if (g_egl_dynProcs.glEGLImageTargetTexture2DOES)
|
if (!g_egl_dynProcs.glEGLImageTargetTexture2DOES)
|
||||||
{
|
|
||||||
if (util_hasGLExt(client_exts, "EGL_EXT_image_dma_buf_import"))
|
|
||||||
this->dmaSupport = true;
|
|
||||||
else
|
|
||||||
DEBUG_INFO("EGL_EXT_image_dma_buf_import unavailable, DMA support disabled");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
DEBUG_INFO("glEGLImageTargetTexture2DOES unavilable, DMA support disabled");
|
DEBUG_INFO("glEGLImageTargetTexture2DOES unavilable, DMA support disabled");
|
||||||
|
else if (!g_egl_dynProcs.eglCreateImage || !g_egl_dynProcs.eglDestroyImage)
|
||||||
|
DEBUG_INFO("eglCreateImage or eglDestroyImage unavailable, DMA support disabled");
|
||||||
|
else if (!util_hasGLExt(client_exts, "EGL_EXT_image_dma_buf_import"))
|
||||||
|
DEBUG_INFO("EGL_EXT_image_dma_buf_import unavailable, DMA support disabled");
|
||||||
|
else if ((maj < 1 || (maj == 1 && min < 5)) && !util_hasGLExt(client_exts, "EGL_KHR_image_base"))
|
||||||
|
DEBUG_INFO("Need EGL 1.5+ or EGL_KHR_image_base for eglCreateImage(KHR)");
|
||||||
|
else
|
||||||
|
this->dmaSupport = true;
|
||||||
|
|
||||||
if (!this->dmaSupport)
|
if (!this->dmaSupport)
|
||||||
useDMA = false;
|
useDMA = false;
|
||||||
|
@ -132,7 +132,7 @@ static bool egl_texDMABUFUpdate(EGL_Texture * texture,
|
|||||||
EGL_NONE , EGL_NONE
|
EGL_NONE , EGL_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
image = eglCreateImage(
|
image = g_egl_dynProcs.eglCreateImage(
|
||||||
this->display,
|
this->display,
|
||||||
EGL_NO_CONTEXT,
|
EGL_NO_CONTEXT,
|
||||||
EGL_LINUX_DMA_BUF_EXT,
|
EGL_LINUX_DMA_BUF_EXT,
|
||||||
@ -151,7 +151,7 @@ static bool egl_texDMABUFUpdate(EGL_Texture * texture,
|
|||||||
}))
|
}))
|
||||||
{
|
{
|
||||||
DEBUG_ERROR("Failed to store EGLImage");
|
DEBUG_ERROR("Failed to store EGLImage");
|
||||||
eglDestroyImage(this->display, image);
|
g_egl_dynProcs.eglDestroyImage(this->display, image);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,17 @@ void egl_dynProcsInit(void)
|
|||||||
eglGetProcAddress("glDebugMessageCallbackKHR");
|
eglGetProcAddress("glDebugMessageCallbackKHR");
|
||||||
g_egl_dynProcs.glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)
|
g_egl_dynProcs.glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)
|
||||||
eglGetProcAddress("glBufferStorageEXT");
|
eglGetProcAddress("glBufferStorageEXT");
|
||||||
|
g_egl_dynProcs.eglCreateImage = (PFNEGLCREATEIMAGEPROC)
|
||||||
|
eglGetProcAddress("eglCreateImage");
|
||||||
|
g_egl_dynProcs.eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)
|
||||||
|
eglGetProcAddress("eglDestroyImage");
|
||||||
|
|
||||||
|
if (!g_egl_dynProcs.eglCreateImage)
|
||||||
|
g_egl_dynProcs.eglCreateImage = (PFNEGLCREATEIMAGEPROC)
|
||||||
|
eglGetProcAddress("eglCreateImageKHR");
|
||||||
|
if (!g_egl_dynProcs.eglDestroyImage)
|
||||||
|
g_egl_dynProcs.eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)
|
||||||
|
eglGetProcAddress("eglDestroyImageKHR");
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user