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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
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);
 | 
			
		||||
	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_export_drm_image_mesa = (PFNEGLEXPORTDRMIMAGEMESA)eglGetProcAddress("eglExportDRMImageMESA");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue