Exemplo n.º 1
0
/**
 * Typical fallback routine for eglChooseConfig
 */
EGLBoolean
_eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list,
                 EGLConfig *configs, EGLint config_size, EGLint *num_configs)
{
   _EGLConfig criteria;

   if (!_eglParseConfigAttribList(&criteria, disp, attrib_list))
      return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");

   return _eglFilterConfigArray(disp->Configs,
         configs, config_size, num_configs,
         _eglFallbackMatch, _eglFallbackCompare,
         (void *) &criteria);
}
static EGLBoolean
egl_g3d_choose_config(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attribs,
                      EGLConfig *configs, EGLint size, EGLint *num_configs)
{
   struct egl_g3d_choose_config_data data;

   if (!_eglParseConfigAttribList(&data.criteria, dpy, attribs))
      return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");

   data.format = PIPE_FORMAT_NONE;
   if (data.criteria.MatchNativePixmap != EGL_NONE &&
       data.criteria.MatchNativePixmap != EGL_DONT_CARE) {
      struct egl_g3d_display *gdpy = egl_g3d_display(dpy);

      if (!gdpy->native->get_pixmap_format(gdpy->native,
               (EGLNativePixmapType) data.criteria.MatchNativePixmap,
               &data.format))
         return _eglError(EGL_BAD_NATIVE_PIXMAP, "eglChooseConfig");
   }

   return _eglFilterConfigArray(dpy->Configs, configs, size, num_configs,
         egl_g3d_match_config, egl_g3d_compare_config, &data);
}