egl/wayland: Remove EGL_WL_create_wayland_buffer_from_image
This extension was originally intended to complement EGL_WL_bind_wayland_display. The idea behind bind_wayland_display was that libEGL.so on the server side could register Wayland extensions for libEGL.so on the client side to use to create buffers, with eglQueryWaylandBufferWL being used to query the buffer properties, and EGL_WAYLAND_BUFFER_WL added as an EGLImage target for texturing. eglCreateWaylandBufferFromImageWL was then to be used for nested compositors to perform passthrough: it would take an EGLImage created by the magical libEGL secret handshake, and make it usable in the parent compositor by doing the same secret handshake again. Since that original idea, we've just standardised dmabuf across the Wayland ecosystem instead. The last known user of this extension was a sample client in the Weston tree, which was broken quite some years ago and never ported to the Meson build system when we moved. Given it won't affect anyone, let's just remove this extension so no-one thinks it would be a good idea to use it. Signed-off-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27793>
This commit is contained in:
@@ -2393,20 +2393,6 @@ dri2_query_surface(_EGLDisplay *disp, _EGLSurface *surf, EGLint attribute,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct wl_buffer *
|
||||
dri2_create_wayland_buffer_from_image(_EGLDisplay *disp, _EGLImage *img)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display_lock(disp);
|
||||
struct wl_buffer *ret = NULL;
|
||||
|
||||
if (dri2_dpy->vtbl->create_wayland_buffer_from_image)
|
||||
ret = dri2_dpy->vtbl->create_wayland_buffer_from_image(disp, img);
|
||||
|
||||
mtx_unlock(&dri2_dpy->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBDRM
|
||||
static _EGLImage *
|
||||
dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
@@ -3657,7 +3643,6 @@ const _EGLDriver _eglDriver = {
|
||||
.QueryBufferAge = dri2_query_buffer_age,
|
||||
.CreateImageKHR = dri2_create_image,
|
||||
.DestroyImageKHR = dri2_destroy_image_khr,
|
||||
.CreateWaylandBufferFromImageWL = dri2_create_wayland_buffer_from_image,
|
||||
.QuerySurface = dri2_query_surface,
|
||||
.QueryDriverName = dri2_query_driver_name,
|
||||
.QueryDriverConfig = dri2_query_driver_config,
|
||||
|
@@ -157,10 +157,6 @@ struct dri2_egl_display_vtbl {
|
||||
EGLBoolean (*query_surface)(_EGLDisplay *disp, _EGLSurface *surf,
|
||||
EGLint attribute, EGLint *value);
|
||||
|
||||
/* optional */
|
||||
struct wl_buffer *(*create_wayland_buffer_from_image)(_EGLDisplay *disp,
|
||||
_EGLImage *img);
|
||||
|
||||
/* optional */
|
||||
EGLBoolean (*get_sync_values)(_EGLDisplay *display, _EGLSurface *surface,
|
||||
EGLuint64KHR *ust, EGLuint64KHR *msc,
|
||||
|
@@ -260,12 +260,6 @@ server_supports_pipe_format(struct dri2_wl_formats *formats,
|
||||
dri2_wl_visual_idx_from_pipe_format(format));
|
||||
}
|
||||
|
||||
static bool
|
||||
server_supports_fourcc(struct dri2_wl_formats *formats, uint32_t fourcc)
|
||||
{
|
||||
return server_supports_format(formats, dri2_wl_visual_idx_from_fourcc(fourcc));
|
||||
}
|
||||
|
||||
static int
|
||||
roundtrip(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
@@ -1609,38 +1603,6 @@ dri2_wl_swap_buffers(_EGLDisplay *disp, _EGLSurface *draw)
|
||||
return dri2_wl_swap_buffers_with_damage(disp, draw, NULL, 0);
|
||||
}
|
||||
|
||||
static struct wl_buffer *
|
||||
dri2_wl_create_wayland_buffer_from_image(_EGLDisplay *disp, _EGLImage *img)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_image *dri2_img = dri2_egl_image(img);
|
||||
__DRIimage *image = dri2_img->dri_image;
|
||||
struct wl_buffer *buffer;
|
||||
int fourcc;
|
||||
|
||||
/* Check the upstream display supports this buffer's format. */
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FOURCC, &fourcc);
|
||||
if (!server_supports_fourcc(&dri2_dpy->formats, fourcc))
|
||||
goto bad_format;
|
||||
|
||||
buffer = create_wl_buffer(dri2_dpy, NULL, image);
|
||||
|
||||
/* The buffer object will have been created with our internal event queue
|
||||
* because it is using wl_dmabuf/wl_drm as a proxy factory. We want the
|
||||
* buffer to be used by the application so we'll reset it to the display's
|
||||
* default event queue. This isn't actually racy, as the only event the
|
||||
* buffer can get is a buffer release, which doesn't happen with an explicit
|
||||
* attach. */
|
||||
if (buffer)
|
||||
wl_proxy_set_queue((struct wl_proxy *)buffer, NULL);
|
||||
|
||||
return buffer;
|
||||
|
||||
bad_format:
|
||||
_eglError(EGL_BAD_MATCH, "unsupported image format");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
dri2_wl_authenticate(_EGLDisplay *disp, uint32_t id)
|
||||
{
|
||||
@@ -1957,7 +1919,6 @@ static const struct dri2_egl_display_vtbl dri2_wl_display_vtbl = {
|
||||
.swap_buffers = dri2_wl_swap_buffers,
|
||||
.swap_buffers_with_damage = dri2_wl_swap_buffers_with_damage,
|
||||
.query_buffer_age = dri2_wl_query_buffer_age,
|
||||
.create_wayland_buffer_from_image = dri2_wl_create_wayland_buffer_from_image,
|
||||
.get_dri_drawable = dri2_surface_get_dri_drawable,
|
||||
};
|
||||
|
||||
@@ -2178,12 +2139,6 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp)
|
||||
dri2_wl_add_configs_for_visuals(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 extension */
|
||||
if (dri2_dpy->fd_render_gpu == dri2_dpy->fd_display_gpu)
|
||||
disp->Extensions.WL_create_wayland_buffer_from_image = EGL_TRUE;
|
||||
|
||||
disp->Extensions.EXT_buffer_age = EGL_TRUE;
|
||||
|
||||
|
@@ -600,7 +600,6 @@ _eglCreateExtensionsString(_EGLDisplay *disp)
|
||||
_EGL_CHECK_EXTENSION(NV_post_sub_buffer);
|
||||
|
||||
_EGL_CHECK_EXTENSION(WL_bind_wayland_display);
|
||||
_EGL_CHECK_EXTENSION(WL_create_wayland_buffer_from_image);
|
||||
|
||||
#undef _EGL_CHECK_EXTENSION
|
||||
}
|
||||
@@ -2376,23 +2375,11 @@ static struct wl_buffer *EGLAPIENTRY
|
||||
eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImage image)
|
||||
{
|
||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||
_EGLImage *img;
|
||||
struct wl_buffer *ret;
|
||||
|
||||
_EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL);
|
||||
|
||||
_EGL_CHECK_DISPLAY(disp, NULL);
|
||||
if (!disp->Extensions.WL_create_wayland_buffer_from_image)
|
||||
RETURN_EGL_EVAL(disp, NULL);
|
||||
|
||||
img = _eglLookupImage(image, disp);
|
||||
|
||||
if (!img)
|
||||
RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, NULL);
|
||||
|
||||
ret = disp->Driver->CreateWaylandBufferFromImageWL(disp, img);
|
||||
|
||||
RETURN_EGL_EVAL(disp, ret);
|
||||
RETURN_EGL_EVAL(disp, NULL);
|
||||
}
|
||||
|
||||
static EGLBoolean EGLAPIENTRY
|
||||
|
@@ -152,7 +152,6 @@ struct _egl_extensions {
|
||||
EGLBoolean NV_post_sub_buffer;
|
||||
|
||||
EGLBoolean WL_bind_wayland_display;
|
||||
EGLBoolean WL_create_wayland_buffer_from_image;
|
||||
};
|
||||
|
||||
struct _egl_display {
|
||||
|
@@ -163,10 +163,6 @@ struct _egl_driver {
|
||||
struct wl_resource *buffer,
|
||||
EGLint attribute, EGLint *value);
|
||||
|
||||
/* for EGL_WL_create_wayland_buffer_from_image */
|
||||
struct wl_buffer *(*CreateWaylandBufferFromImageWL)(_EGLDisplay *disp,
|
||||
_EGLImage *img);
|
||||
|
||||
/* for EGL_EXT_swap_buffers_with_damage */
|
||||
EGLBoolean (*SwapBuffersWithDamageEXT)(_EGLDisplay *disp,
|
||||
_EGLSurface *surface,
|
||||
|
Reference in New Issue
Block a user