#define MIN(x,y) (((x)<(y))?(x):(y))
-struct wl_drm {
- struct wl_display *display;
- struct wl_global *wl_drm_global;
-
- void *user_data;
- char *device_name;
- uint32_t flags;
-
- struct wayland_drm_callbacks callbacks;
-
- struct wl_buffer_interface buffer_interface;
-};
-
static void
destroy_buffer(struct wl_resource *resource)
{
uint32_t stride, uint32_t format)
{
switch (format) {
+ case WL_DRM_FORMAT_ABGR2101010:
+ case WL_DRM_FORMAT_XBGR2101010:
+ case WL_DRM_FORMAT_ARGB2101010:
+ case WL_DRM_FORMAT_XRGB2101010:
case WL_DRM_FORMAT_ARGB8888:
case WL_DRM_FORMAT_XRGB8888:
case WL_DRM_FORMAT_YUYV:
wl_resource_set_implementation(resource, &drm_interface, data, NULL);
wl_resource_post_event(resource, WL_DRM_DEVICE, drm->device_name);
+
+ if (drm->callbacks.is_format_supported(drm->user_data,
+ WL_DRM_FORMAT_ARGB2101010)) {
+ wl_resource_post_event(resource, WL_DRM_FORMAT,
+ WL_DRM_FORMAT_ARGB2101010);
+ }
+
+ if (drm->callbacks.is_format_supported(drm->user_data,
+ WL_DRM_FORMAT_XRGB2101010)) {
+ wl_resource_post_event(resource, WL_DRM_FORMAT,
+ WL_DRM_FORMAT_XRGB2101010);
+ }
+
+ if (drm->callbacks.is_format_supported(drm->user_data,
+ WL_DRM_FORMAT_ABGR2101010)) {
+ wl_resource_post_event(resource, WL_DRM_FORMAT,
+ WL_DRM_FORMAT_ABGR2101010);
+ }
+
+ if (drm->callbacks.is_format_supported(drm->user_data,
+ WL_DRM_FORMAT_XBGR2101010)) {
+ wl_resource_post_event(resource, WL_DRM_FORMAT,
+ WL_DRM_FORMAT_XBGR2101010);
+ }
+
wl_resource_post_event(resource, WL_DRM_FORMAT,
WL_DRM_FORMAT_ARGB8888);
wl_resource_post_event(resource, WL_DRM_FORMAT,
wl_resource_post_event(resource, WL_DRM_CAPABILITIES, capabilities);
}
-struct wl_drm_buffer *
-wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource)
-{
- if (resource == NULL)
- return NULL;
-
- if (wl_resource_instance_of(resource, &wl_buffer_interface,
- &drm->buffer_interface))
- return wl_resource_get_user_data(resource);
- else
- return NULL;
-}
-
struct wl_drm *
wayland_drm_init(struct wl_display *display, char *device_name,
const struct wayland_drm_callbacks *callbacks, void *user_data,