+struct dri2_egl_display_vtbl {
+ int (*authenticate)(_EGLDisplay *disp, uint32_t id);
+
+ _EGLSurface* (*create_window_surface)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLConfig *config,
+ void *native_window,
+ const EGLint *attrib_list);
+
+ _EGLSurface* (*create_pixmap_surface)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLConfig *config,
+ void *native_pixmap,
+ const EGLint *attrib_list);
+
+ _EGLSurface* (*create_pbuffer_surface)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLConfig *config,
+ const EGLint *attrib_list);
+
+ EGLBoolean (*destroy_surface)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surface);
+
+ EGLBoolean (*swap_interval)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf, EGLint interval);
+
+ _EGLImage* (*create_image)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLContext *ctx, EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint *attr_list);
+
+ EGLBoolean (*swap_buffers)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf);
+
+ EGLBoolean (*swap_buffers_with_damage)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surface,
+ const EGLint *rects, EGLint n_rects);
+
+ EGLBoolean (*set_damage_region)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surface,
+ const EGLint *rects, EGLint n_rects);
+
+ EGLBoolean (*swap_buffers_region)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf, EGLint numRects,
+ const EGLint *rects);
+
+ EGLBoolean (*post_sub_buffer)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf,
+ EGLint x, EGLint y,
+ EGLint width, EGLint height);
+
+ EGLBoolean (*copy_buffers)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf, void *native_pixmap_target);
+
+ EGLint (*query_buffer_age)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf);
+
+ EGLBoolean (*query_surface)(_EGLDriver *drv, _EGLDisplay *dpy,
+ _EGLSurface *surf, EGLint attribute,
+ EGLint *value);
+
+ struct wl_buffer* (*create_wayland_buffer_from_image)(
+ _EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *img);
+
+ EGLBoolean (*get_sync_values)(_EGLDisplay *display, _EGLSurface *surface,
+ EGLuint64KHR *ust, EGLuint64KHR *msc,
+ EGLuint64KHR *sbc);
+
+ __DRIdrawable *(*get_dri_drawable)(_EGLSurface *surf);
+
+ void (*close_screen_notify)(_EGLDisplay *dpy);
+};
+