render: remove wlr_renderer_check_import_dmabuf

It's possible to implement it outside the renderer, by creating a
texture and destroying it right away. This reduces the API surface
of the renderer.
This commit is contained in:
emersion 2018-05-30 14:18:07 +01:00
parent 41e53d1499
commit 135721118a
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
8 changed files with 32 additions and 63 deletions

View file

@ -198,6 +198,10 @@ struct wlr_texture *wlr_gles2_texture_from_wl_drm(struct wlr_egl *egl,
return &texture->wlr_texture;
}
#ifndef DRM_FORMAT_BIG_ENDIAN
#define DRM_FORMAT_BIG_ENDIAN 0x80000000
#endif
struct wlr_texture *wlr_gles2_texture_from_dmabuf(struct wlr_egl *egl,
struct wlr_dmabuf_attributes *attribs) {
assert(wlr_egl_is_current(egl));
@ -212,6 +216,18 @@ struct wlr_texture *wlr_gles2_texture_from_dmabuf(struct wlr_egl *egl,
return NULL;
}
switch (attribs->format & ~DRM_FORMAT_BIG_ENDIAN) {
case WL_SHM_FORMAT_YUYV:
case WL_SHM_FORMAT_YVYU:
case WL_SHM_FORMAT_UYVY:
case WL_SHM_FORMAT_VYUY:
case WL_SHM_FORMAT_AYUV:
// TODO: YUV based formats not yet supported, require multiple images
return false;
default:
break;
}
struct wlr_gles2_texture *texture =
calloc(1, sizeof(struct wlr_gles2_texture));
if (texture == NULL) {