glamor-ddx: Add code to check required egl extensions.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
This commit is contained in:
parent
eaa07998c4
commit
3648e35b5d
|
@ -304,6 +304,31 @@ glamor_close_screen_ddx(int scrnIndex, ScreenPtr screen)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
glamor_egl_has_extension(struct glamor_screen_private *glamor, char *extension)
|
||||||
|
{
|
||||||
|
const char *egl_extensions;
|
||||||
|
char *pext;
|
||||||
|
int ext_len;
|
||||||
|
ext_len = strlen(extension);
|
||||||
|
|
||||||
|
egl_extensions = (const char*)eglQueryString(glamor->display, EGL_EXTENSIONS);
|
||||||
|
pext = (char*)egl_extensions;
|
||||||
|
|
||||||
|
if (pext == NULL || extension == NULL)
|
||||||
|
return FALSE;
|
||||||
|
while((pext = strstr(pext, extension)) != NULL) {
|
||||||
|
if (pext[ext_len] == ' ' || pext[ext_len] == '\0')
|
||||||
|
return TRUE;
|
||||||
|
pext += ext_len;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
glamor_screen_init_ddx(int scrnIndex, ScreenPtr screen, int argc, char **argv)
|
glamor_screen_init_ddx(int scrnIndex, ScreenPtr screen, int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -353,6 +378,20 @@ glamor_screen_init_ddx(int scrnIndex, ScreenPtr screen, int argc, char **argv)
|
||||||
version = eglQueryString(glamor->display, EGL_VERSION);
|
version = eglQueryString(glamor->display, EGL_VERSION);
|
||||||
xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version);
|
xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version);
|
||||||
|
|
||||||
|
#define GLAMOR_CHECK_EGL_EXTENSION(EXT) \
|
||||||
|
if (!glamor_egl_has_extension(glamor, "EGL_" #EXT)) { \
|
||||||
|
ErrorF("EGL_" #EXT "required.\n"); \
|
||||||
|
return FALSE; \
|
||||||
|
}
|
||||||
|
|
||||||
|
GLAMOR_CHECK_EGL_EXTENSION(MESA_drm_image);
|
||||||
|
GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_renderbuffer_image);
|
||||||
|
#ifdef GLAMOR_GLES2
|
||||||
|
GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_gles2);
|
||||||
|
#else
|
||||||
|
GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_opengl);
|
||||||
|
#endif
|
||||||
|
|
||||||
glamor->egl_create_drm_image_mesa = (PFNEGLCREATEDRMIMAGEMESA)eglGetProcAddress("eglCreateDRMImageMESA");
|
glamor->egl_create_drm_image_mesa = (PFNEGLCREATEDRMIMAGEMESA)eglGetProcAddress("eglCreateDRMImageMESA");
|
||||||
glamor->egl_export_drm_image_mesa = (PFNEGLEXPORTDRMIMAGEMESA)eglGetProcAddress("eglExportDRMImageMESA");
|
glamor->egl_export_drm_image_mesa = (PFNEGLEXPORTDRMIMAGEMESA)eglGetProcAddress("eglExportDRMImageMESA");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue