}
EGLBoolean
-dri2_add_pbuffer_configs_for_visuals(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_add_pbuffer_configs_for_visuals(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
unsigned int format_count[ARRAY_SIZE(dri2_pbuffer_visuals)] = { 0 };
* called many times (without a eglTerminate in between).
*/
static EGLBoolean
-dri2_initialize(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize(_EGLDisplay *disp)
{
EGLBoolean ret = EGL_FALSE;
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
switch (disp->Platform) {
case _EGL_PLATFORM_SURFACELESS:
- ret = dri2_initialize_surfaceless(drv, disp);
+ ret = dri2_initialize_surfaceless(disp);
break;
case _EGL_PLATFORM_DEVICE:
- ret = dri2_initialize_device(drv, disp);
+ ret = dri2_initialize_device(disp);
break;
case _EGL_PLATFORM_X11:
- ret = dri2_initialize_x11(drv, disp);
+ ret = dri2_initialize_x11(disp);
break;
case _EGL_PLATFORM_DRM:
- ret = dri2_initialize_drm(drv, disp);
+ ret = dri2_initialize_drm(disp);
break;
case _EGL_PLATFORM_WAYLAND:
- ret = dri2_initialize_wayland(drv, disp);
+ ret = dri2_initialize_wayland(disp);
break;
case _EGL_PLATFORM_ANDROID:
- ret = dri2_initialize_android(drv, disp);
+ ret = dri2_initialize_android(disp);
break;
default:
unreachable("Callers ensure we cannot get here.");
const int *rgba_shifts, const unsigned int *rgba_sizes);
EGLBoolean
-dri2_add_pbuffer_configs_for_visuals(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_add_pbuffer_configs_for_visuals(_EGLDisplay *disp);
_EGLImage *
dri2_create_image_khr(const _EGLDriver *drv, _EGLDisplay *disp,
#ifdef HAVE_X11_PLATFORM
EGLBoolean
-dri2_initialize_x11(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_x11(_EGLDisplay *disp);
void
dri2_teardown_x11(struct dri2_egl_display *dri2_dpy);
unsigned int
dri2_x11_get_red_mask_for_depth(struct dri2_egl_display *dri2_dpy, int depth);
#else
static inline EGLBoolean
-dri2_initialize_x11(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_x11(_EGLDisplay *disp)
{
return _eglError(EGL_NOT_INITIALIZED, "X11 platform not built");
}
#ifdef HAVE_DRM_PLATFORM
EGLBoolean
-dri2_initialize_drm(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_drm(_EGLDisplay *disp);
void
dri2_teardown_drm(struct dri2_egl_display *dri2_dpy);
#else
static inline EGLBoolean
-dri2_initialize_drm(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_drm(_EGLDisplay *disp)
{
return _eglError(EGL_NOT_INITIALIZED, "GBM/DRM platform not built");
}
#ifdef HAVE_WAYLAND_PLATFORM
EGLBoolean
-dri2_initialize_wayland(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_wayland(_EGLDisplay *disp);
void
dri2_teardown_wayland(struct dri2_egl_display *dri2_dpy);
bool
dri2_wl_is_format_supported(void* user_data, uint32_t format);
#else
static inline EGLBoolean
-dri2_initialize_wayland(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_wayland(_EGLDisplay *disp)
{
return _eglError(EGL_NOT_INITIALIZED, "Wayland platform not built");
}
#ifdef HAVE_ANDROID_PLATFORM
EGLBoolean
-dri2_initialize_android(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_android(_EGLDisplay *disp);
#else
static inline EGLBoolean
-dri2_initialize_android(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_android(_EGLDisplay *disp)
{
return _eglError(EGL_NOT_INITIALIZED, "Android platform not built");
}
#endif
EGLBoolean
-dri2_initialize_surfaceless(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_surfaceless(_EGLDisplay *disp);
EGLBoolean
-dri2_initialize_device(const _EGLDriver *drv, _EGLDisplay *disp);
+dri2_initialize_device(_EGLDisplay *disp);
static inline void
dri2_teardown_device(struct dri2_egl_display *dri2_dpy) { /* noop */ }
EGLenum colorspace);
static inline void
-dri2_set_WL_bind_wayland_display(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_set_WL_bind_wayland_display(_EGLDisplay *disp)
{
#ifdef HAVE_WAYLAND_PLATFORM
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
- (void) drv;
-
if (dri2_dpy->device_name && dri2_dpy->image) {
if (dri2_dpy->image->base.version >= 10 &&
dri2_dpy->image->getCapabilities != NULL) {
}
static EGLBoolean
-droid_add_configs_for_visuals(const _EGLDriver *drv, _EGLDisplay *disp)
+droid_add_configs_for_visuals(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
static const struct {
#endif
EGLBoolean
-dri2_initialize_android(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_android(_EGLDisplay *disp)
{
_EGLDevice *dev;
bool device_opened = false;
/* Create configs *after* enabling extensions because presence of DRI
* driver extensions can affect the capabilities of EGLConfigs.
*/
- if (!droid_add_configs_for_visuals(drv, disp)) {
+ if (!droid_add_configs_for_visuals(disp)) {
err = "DRI2: failed to add configs";
goto cleanup;
}
}
EGLBoolean
-dri2_initialize_device(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_device(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
dri2_setup_screen(disp);
- if (!dri2_add_pbuffer_configs_for_visuals(drv, disp)) {
+ if (!dri2_add_pbuffer_configs_for_visuals(disp)) {
err = "DRI2: failed to add configs";
goto cleanup;
}
}
static EGLBoolean
-drm_add_configs_for_visuals(const _EGLDriver *drv, _EGLDisplay *disp)
+drm_add_configs_for_visuals(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
const struct gbm_dri_visual *visuals = dri2_dpy->gbm_dri->visual_table;
};
EGLBoolean
-dri2_initialize_drm(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_drm(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
dri2_setup_screen(disp);
- if (!drm_add_configs_for_visuals(drv, disp)) {
+ if (!drm_add_configs_for_visuals(disp)) {
err = "DRI2: failed to add configs";
goto cleanup;
}
#ifdef HAVE_WAYLAND_PLATFORM
dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd);
#endif
- dri2_set_WL_bind_wayland_display(drv, disp);
+ dri2_set_WL_bind_wayland_display(disp);
/* Fill vtbl last to prevent accidentally calling virtual function during
* initialization.
}
EGLBoolean
-dri2_initialize_surfaceless(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_surfaceless(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy;
const char* err;
#ifdef HAVE_WAYLAND_PLATFORM
dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd);
#endif
- dri2_set_WL_bind_wayland_display(drv, disp);
+ dri2_set_WL_bind_wayland_display(disp);
- if (!dri2_add_pbuffer_configs_for_visuals(drv, disp)) {
+ if (!dri2_add_pbuffer_configs_for_visuals(disp)) {
err = "DRI2: failed to add configs";
goto cleanup;
}
};
static EGLBoolean
-dri2_wl_add_configs_for_visuals(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_wl_add_configs_for_visuals(_EGLDisplay *disp)
{
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
unsigned int format_count[ARRAY_SIZE(dri2_wl_visuals)] = { 0 };
}
static EGLBoolean
-dri2_initialize_wayland_drm(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_wayland_drm(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
goto cleanup;
}
- if (!dri2_wl_add_configs_for_visuals(drv, disp)) {
+ if (!dri2_wl_add_configs_for_visuals(disp)) {
_eglError(EGL_NOT_INITIALIZED, "DRI2: failed to add configs");
goto cleanup;
}
- dri2_set_WL_bind_wayland_display(drv, disp);
+ dri2_set_WL_bind_wayland_display(disp);
/* When cannot convert EGLImage to wl_buffer when on a different gpu,
* because the buffer of the EGLImage has likely a tiling mode the server
* gpu won't support. These is no way to check for now. Thus do not support the
};
static EGLBoolean
-dri2_initialize_wayland_swrast(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_wayland_swrast(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
dri2_wl_setup_swap_interval(disp);
- if (!dri2_wl_add_configs_for_visuals(drv, disp)) {
+ if (!dri2_wl_add_configs_for_visuals(disp)) {
_eglError(EGL_NOT_INITIALIZED, "DRI2: failed to add configs");
goto cleanup;
}
}
EGLBoolean
-dri2_initialize_wayland(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_wayland(_EGLDisplay *disp)
{
EGLBoolean initialized = EGL_FALSE;
if (!disp->Options.ForceSoftware)
- initialized = dri2_initialize_wayland_drm(drv, disp);
+ initialized = dri2_initialize_wayland_drm(disp);
if (!initialized)
- initialized = dri2_initialize_wayland_swrast(drv, disp);
+ initialized = dri2_initialize_wayland_swrast(disp);
return initialized;
}
static EGLBoolean
-dri2_get_xcb_connection(const _EGLDriver *drv, _EGLDisplay *disp,
+dri2_get_xcb_connection(_EGLDisplay *disp,
struct dri2_egl_display *dri2_dpy)
{
xcb_screen_iterator_t s;
}
static EGLBoolean
-dri2_initialize_x11_swrast(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_x11_swrast(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
dri2_dpy->fd = -1;
- if (!dri2_get_xcb_connection(drv, disp, dri2_dpy))
+ if (!dri2_get_xcb_connection(disp, dri2_dpy))
goto cleanup;
dev = _eglAddDevice(dri2_dpy->fd, true);
};
static EGLBoolean
-dri2_initialize_x11_dri3(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_x11_dri3(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
dri2_dpy->fd = -1;
- if (!dri2_get_xcb_connection(drv, disp, dri2_dpy))
+ if (!dri2_get_xcb_connection(disp, dri2_dpy))
goto cleanup;
if (!dri3_x11_connect(dri2_dpy))
disp->Extensions.CHROMIUM_sync_control = EGL_TRUE;
disp->Extensions.EXT_buffer_age = EGL_TRUE;
- dri2_set_WL_bind_wayland_display(drv, disp);
+ dri2_set_WL_bind_wayland_display(disp);
if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, false))
goto cleanup;
};
static EGLBoolean
-dri2_initialize_x11_dri2(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_x11_dri2(_EGLDisplay *disp)
{
_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
dri2_dpy->fd = -1;
- if (!dri2_get_xcb_connection(drv, disp, dri2_dpy))
+ if (!dri2_get_xcb_connection(disp, dri2_dpy))
goto cleanup;
if (!dri2_x11_connect(dri2_dpy))
disp->Extensions.NV_post_sub_buffer = EGL_TRUE;
disp->Extensions.CHROMIUM_sync_control = EGL_TRUE;
- dri2_set_WL_bind_wayland_display(drv, disp);
+ dri2_set_WL_bind_wayland_display(disp);
if (!dri2_x11_add_configs_for_visuals(dri2_dpy, disp, true))
goto cleanup;
}
EGLBoolean
-dri2_initialize_x11(const _EGLDriver *drv, _EGLDisplay *disp)
+dri2_initialize_x11(_EGLDisplay *disp)
{
EGLBoolean initialized = EGL_FALSE;
if (!disp->Options.ForceSoftware) {
#ifdef HAVE_DRI3
if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
- initialized = dri2_initialize_x11_dri3(drv, disp);
+ initialized = dri2_initialize_x11_dri3(disp);
#endif
if (!initialized)
- initialized = dri2_initialize_x11_dri2(drv, disp);
+ initialized = dri2_initialize_x11_dri2(disp);
}
if (!initialized)
- initialized = dri2_initialize_x11_swrast(drv, disp);
+ initialized = dri2_initialize_x11_swrast(disp);
return initialized;
}
extern "C"
EGLBoolean
-init_haiku(const _EGLDriver *drv, _EGLDisplay *disp)
+init_haiku(_EGLDisplay *disp)
{
_EGLDevice *dev;
CALLED();
if (disp->Options.ForceSoftware)
_eglLog(_EGL_DEBUG, "Found 'LIBGL_ALWAYS_SOFTWARE' set, will use a CPU renderer");
- if (_eglDriver.Initialize(&_eglDriver, disp)) {
+ if (_eglDriver.Initialize(disp)) {
disp->Driver = &_eglDriver;
disp->Initialized = EGL_TRUE;
return true;
return false;
disp->Options.ForceSoftware = EGL_TRUE;
- if (!_eglDriver.Initialize(&_eglDriver, disp))
+ if (!_eglDriver.Initialize(disp))
return false;
disp->Driver = &_eglDriver;
struct _egl_driver
{
/* driver funcs */
- EGLBoolean (*Initialize)(const _EGLDriver *, _EGLDisplay *disp);
+ EGLBoolean (*Initialize)(_EGLDisplay *disp);
EGLBoolean (*Terminate)(const _EGLDriver *, _EGLDisplay *disp);
const char *(*QueryDriverName)(_EGLDisplay *disp);
char *(*QueryDriverConfig)(_EGLDisplay *disp);