#ifndef EGL_DRI2_INCLUDED
#define EGL_DRI2_INCLUDED
+#include <stdbool.h>
#include <stdint.h>
#ifdef HAVE_X11_PLATFORM
#ifdef HAVE_WAYLAND_PLATFORM
#include <wayland-client.h>
#include "wayland-egl-priv.h"
+/* forward declarations of protocol elements */
+struct zwp_linux_dmabuf_v1;
#endif
#include <GL/gl.h>
#include "eglimage.h"
#include "eglsync.h"
+#include "util/u_vector.h"
+
struct wl_buffer;
struct dri2_egl_driver
_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);
int dri2_major;
int dri2_minor;
__DRIscreen *dri_screen;
- int own_dri_screen;
+ bool own_dri_screen;
const __DRIconfig **driver_configs;
void *driver;
const __DRIcoreExtension *core;
const __DRItexBufferExtension *tex_buffer;
const __DRIimageExtension *image;
const __DRIrobustnessExtension *robustness;
+ const __DRInoErrorExtension *no_error;
const __DRI2configQueryExtension *config;
const __DRI2fenceExtension *fence;
const __DRI2rendererQueryExtension *rendererQuery;
* dri2_make_current (tracks if there are active contexts/surfaces). */
int ref_count;
- int own_device;
- int invalidate_available;
+ bool own_device;
+ bool invalidate_available;
int min_swap_interval;
int max_swap_interval;
int default_swap_interval;
#ifdef HAVE_X11_PLATFORM
xcb_connection_t *conn;
xcb_screen_t *screen;
- int swap_available;
+ bool swap_available;
#ifdef HAVE_DRI3
struct loader_dri3_extensions loader_dri3_ext;
#endif
struct wl_drm *wl_drm;
struct wl_shm *wl_shm;
struct wl_event_queue *wl_queue;
- int authenticated;
+ struct zwp_linux_dmabuf_v1 *wl_dmabuf;
+ struct {
+ struct u_vector xrgb8888;
+ struct u_vector argb8888;
+ struct u_vector rgb565;
+ } wl_modifiers;
+ bool authenticated;
int formats;
uint32_t capabilities;
char *device_name;
const gralloc_module_t *gralloc;
#endif
- int is_render_node;
- int is_different_gpu;
+ bool is_render_node;
+ bool is_different_gpu;
};
struct dri2_egl_context
_EGLSurface base;
__DRIdrawable *dri_drawable;
__DRIbuffer buffers[5];
- int buffer_count;
- int have_fake_front;
+ bool have_fake_front;
#ifdef HAVE_X11_PLATFORM
xcb_drawable_t drawable;
#ifdef HAVE_DRM_PLATFORM
struct gbm_bo *bo;
#endif
- int locked;
+ bool locked;
int age;
} color_buffers[4], *back, *current;
#endif
struct dri2_egl_config
{
_EGLConfig base;
- const __DRIconfig *dri_single_config[2];
- const __DRIconfig *dri_double_config[2];
+ const __DRIconfig *dri_config[2][2];
};
struct dri2_egl_image
EGLBoolean
dri2_create_screen(_EGLDisplay *disp);
+EGLBoolean
+dri2_setup_extensions(_EGLDisplay *disp);
+
__DRIdrawable *
dri2_surface_get_dri_drawable(_EGLSurface *surf);
#endif
}
+void
+dri2_display_destroy(_EGLDisplay *disp);
+
#endif /* EGL_DRI2_INCLUDED */