attrs.Height = buffer->height;
switch (wayland_drm_buffer_get_format(buffer)) {
- case WL_DRM_FORMAT_ARGB32:
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
+ case WL_DRM_FORMAT_ARGB8888:
format = __DRI_IMAGE_FORMAT_ARGB8888;
break;
- case WL_DRM_FORMAT_XRGB32:
+ case WL_DRM_FORMAT_XRGB8888:
format = __DRI_IMAGE_FORMAT_XRGB8888;
break;
default:
int dri_format;
switch (format) {
- case WL_DRM_FORMAT_ARGB32:
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
+ case WL_DRM_FORMAT_ARGB8888:
dri_format =__DRI_IMAGE_FORMAT_ARGB8888;
break;
- case WL_DRM_FORMAT_XRGB32:
+ case WL_DRM_FORMAT_XRGB8888:
dri_format = __DRI_IMAGE_FORMAT_XRGB8888;
break;
default:
#include "wayland-drm-client-protocol.h"
enum wl_drm_format_flags {
- HAS_ARGB32 = 1,
- HAS_PREMUL_ARGB32 = 2,
- HAS_XRGB32 = 4
+ HAS_ARGB8888 = 1,
+ HAS_XRGB8888 = 2
};
static void
dri2_surf->block_swap_buffers = EGL_FALSE;
if (conf->AlphaSize == 0)
- dri2_surf->format = WL_DRM_FORMAT_XRGB32;
- else if (dri2_surf->base.VGAlphaFormat == EGL_VG_ALPHA_FORMAT_PRE)
- dri2_surf->format = WL_DRM_FORMAT_PREMULTIPLIED_ARGB32;
+ dri2_surf->format = WL_DRM_FORMAT_XRGB8888;
else
- dri2_surf->format = WL_DRM_FORMAT_ARGB32;
+ dri2_surf->format = WL_DRM_FORMAT_ARGB8888;
switch (type) {
case EGL_WINDOW_BIT:
wl_egl_pixmap->width,
wl_egl_pixmap->height,
dri2_buf->dri_buffer->pitch,
- WL_DRM_FORMAT_PREMULTIPLIED_ARGB32);
+ WL_DRM_FORMAT_ARGB8888);
wl_attr_list[1] = wl_egl_pixmap->width;
wl_attr_list[3] = wl_egl_pixmap->height;
struct dri2_egl_display *dri2_dpy = data;
switch (format) {
- case WL_DRM_FORMAT_ARGB32:
- dri2_dpy->formats |= HAS_ARGB32;
+ case WL_DRM_FORMAT_ARGB8888:
+ dri2_dpy->formats |= HAS_ARGB8888;
break;
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
- dri2_dpy->formats |= HAS_PREMUL_ARGB32;
- break;
- case WL_DRM_FORMAT_XRGB32:
- dri2_dpy->formats |= HAS_XRGB32;
+ case WL_DRM_FORMAT_XRGB8888:
+ dri2_dpy->formats |= HAS_XRGB8888;
break;
}
}
goto cleanup_driver;
types = EGL_WINDOW_BIT | EGL_PIXMAP_BIT;
- if (dri2_dpy->formats & HAS_PREMUL_ARGB32)
- types |= EGL_VG_ALPHA_FORMAT_PRE_BIT;
-
for (i = 0; dri2_dpy->driver_configs[i]; i++) {
config = dri2_dpy->driver_configs[i];
- if (dri2_dpy->formats & HAS_XRGB32)
+ if (dri2_dpy->formats & HAS_XRGB8888)
dri2_add_config(disp, config, i + 1, 0, types, NULL, rgb_masks);
- if (dri2_dpy->formats & (HAS_ARGB32 | HAS_PREMUL_ARGB32))
+ if (dri2_dpy->formats & HAS_ARGB8888)
dri2_add_config(disp, config, i + 1, 0, types, NULL, argb_masks);
}
</enum>
<enum name="format">
- <entry name="argb32" value="0"/>
- <entry name="premultiplied_argb32" value="1"/>
- <entry name="xrgb32" value="2"/>
+ <!-- The drm format codes match the #defines in drm_fourcc.h.
+ The formats actually supported by the compositor will be
+ reported by the format event. -->
+ <entry name="c8" value="0x20203843"/>
+ <entry name="rgb332" value="0x38424752"/>
+ <entry name="bgr233" value="0x38524742"/>
+ <entry name="xrgb4444" value="0x32315258"/>
+ <entry name="xbgr4444" value="0x32314258"/>
+ <entry name="rgbx4444" value="0x32315852"/>
+ <entry name="bgrx4444" value="0x32315842"/>
+ <entry name="argb4444" value="0x32315241"/>
+ <entry name="abgr4444" value="0x32314241"/>
+ <entry name="rgba4444" value="0x32314152"/>
+ <entry name="bgra4444" value="0x32314142"/>
+ <entry name="xrgb1555" value="0x35315258"/>
+ <entry name="xbgr1555" value="0x35314258"/>
+ <entry name="rgbx5551" value="0x35315852"/>
+ <entry name="bgrx5551" value="0x35315842"/>
+ <entry name="argb1555" value="0x35315241"/>
+ <entry name="abgr1555" value="0x35314241"/>
+ <entry name="rgba5551" value="0x35314152"/>
+ <entry name="bgra5551" value="0x35314142"/>
+ <entry name="rgb565" value="0x36314752"/>
+ <entry name="bgr565" value="0x36314742"/>
+ <entry name="rgb888" value="0x34324752"/>
+ <entry name="bgr888" value="0x34324742"/>
+ <entry name="xrgb8888" value="0x34325258"/>
+ <entry name="xbgr8888" value="0x34324258"/>
+ <entry name="rgbx8888" value="0x34325852"/>
+ <entry name="bgrx8888" value="0x34325842"/>
+ <entry name="argb8888" value="0x34325241"/>
+ <entry name="abgr8888" value="0x34324241"/>
+ <entry name="rgba8888" value="0x34324152"/>
+ <entry name="bgra8888" value="0x34324142"/>
+ <entry name="xrgb2101010" value="0x30335258"/>
+ <entry name="xbgr2101010" value="0x30334258"/>
+ <entry name="rgbx1010102" value="0x30335852"/>
+ <entry name="bgrx1010102" value="0x30335842"/>
+ <entry name="argb2101010" value="0x30335241"/>
+ <entry name="abgr2101010" value="0x30334241"/>
+ <entry name="rgba1010102" value="0x30334152"/>
+ <entry name="bgra1010102" value="0x30334142"/>
+ <entry name="yuyv" value="0x56595559"/>
+ <entry name="yvyu" value="0x55595659"/>
+ <entry name="uyvy" value="0x59565955"/>
+ <entry name="vyuy" value="0x59555956"/>
+ <entry name="ayuv" value="0x56555941"/>
+ <entry name="nv12" value="0x3231564e"/>
+ <entry name="nv21" value="0x3132564e"/>
+ <entry name="nv16" value="0x3631564e"/>
+ <entry name="nv61" value="0x3136564e"/>
+ <entry name="yuv410" value="0x39565559"/>
+ <entry name="yvu410" value="0x39555659"/>
+ <entry name="yuv411" value="0x31315559"/>
+ <entry name="yvu411" value="0x31315659"/>
+ <entry name="yuv420" value="0x32315559"/>
+ <entry name="yvu420" value="0x32315659"/>
+ <entry name="yuv422" value="0x36315559"/>
+ <entry name="yvu422" value="0x36315659"/>
+ <entry name="yuv444" value="0x34325559"/>
+ <entry name="yvu444" value="0x34325659"/>
</enum>
<!-- Call this request with the magic received from drmGetMagic().
struct wl_drm_buffer *buffer;
switch (format) {
- case WL_DRM_FORMAT_ARGB32:
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
- case WL_DRM_FORMAT_XRGB32:
+ case WL_DRM_FORMAT_ARGB8888:
+ case WL_DRM_FORMAT_XRGB8888:
break;
default:
wl_resource_post_error(resource,
resource = wl_client_add_object(client, &wl_drm_interface,
&drm_interface, id, data);
wl_resource_post_event(resource, WL_DRM_DEVICE, drm->device_name);
- wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_ARGB32);
wl_resource_post_event(resource, WL_DRM_FORMAT,
- WL_DRM_FORMAT_PREMULTIPLIED_ARGB32);
- wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_XRGB32);
+ WL_DRM_FORMAT_ARGB8888);
+ wl_resource_post_event(resource, WL_DRM_FORMAT,
+ WL_DRM_FORMAT_XRGB8888);
}
struct wl_drm *
enum pipe_format pf;
switch (format) {
- case WL_DRM_FORMAT_ARGB32:
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
+ case WL_DRM_FORMAT_ARGB8888:
pf = PIPE_FORMAT_B8G8R8A8_UNORM;
break;
- case WL_DRM_FORMAT_XRGB32:
+ case WL_DRM_FORMAT_XRGB8888:
pf = PIPE_FORMAT_B8G8R8X8_UNORM;
break;
default:
switch (surface->color_format) {
case PIPE_FORMAT_B8G8R8A8_UNORM:
- format = (surface->premultiplied_alpha) ?
- WL_DRM_FORMAT_PREMULTIPLIED_ARGB32 : WL_DRM_FORMAT_ARGB32;
+ format = WL_DRM_FORMAT_ARGB8888;
break;
case PIPE_FORMAT_B8G8R8X8_UNORM:
- format = WL_DRM_FORMAT_XRGB32;
+ format = WL_DRM_FORMAT_XRGB8888;
break;
default:
return NULL;
struct wayland_drm_display *drmdpy = data;
switch (format) {
- case WL_DRM_FORMAT_ARGB32:
- drmdpy->base.formats |= HAS_ARGB32;
+ case WL_DRM_FORMAT_ARGB8888:
+ drmdpy->base.formats |= HAS_ARGB8888;
break;
- case WL_DRM_FORMAT_PREMULTIPLIED_ARGB32:
- drmdpy->base.formats |= HAS_PREMUL_ARGB32;
- break;
- case WL_DRM_FORMAT_XRGB32:
- drmdpy->base.formats |= HAS_XRGB32;
+ case WL_DRM_FORMAT_XRGB8888:
+ drmdpy->base.formats |= HAS_XRGB8888;
break;
}
}
switch (format) {
case WL_SHM_FORMAT_ARGB32:
- shmdpy->base.formats |= HAS_ARGB32;
+ shmdpy->base.formats |= HAS_ARGB8888;
break;
- case WL_SHM_FORMAT_PREMULTIPLIED_ARGB32:
- shmdpy->base.formats |= HAS_PREMUL_ARGB32;
- break;
- case WL_SHM_FORMAT_XRGB32:
- shmdpy->base.formats |= HAS_XRGB32;
+ case WL_SHM_FORMAT_XRGB8888:
+ shmdpy->base.formats |= HAS_XRGB8888;
break;
}
}
enum pipe_format format;
enum wayland_format_flag flag;
} wayland_formats[] = {
- /*
- * HAS_PREMUL_ARGB32 is ignored here. For the case that HAS_PREMUL_ARGB32
- * is set but HAS_ARGB32 isn't, we should not claim
- * PIPE_FORMAT_B8G8R8A8_UNORM support because we will not be able to present
- * a surface with non-premultiplied alpha.
- */
- { PIPE_FORMAT_B8G8R8A8_UNORM, HAS_ARGB32 },
- { PIPE_FORMAT_B8G8R8X8_UNORM, HAS_XRGB32 },
+ { PIPE_FORMAT_B8G8R8A8_UNORM, HAS_ARGB8888 },
+ { PIPE_FORMAT_B8G8R8X8_UNORM, HAS_XRGB8888 },
};
static const struct native_config **
switch (param) {
case NATIVE_PARAM_PREMULTIPLIED_ALPHA:
- val = ((display->formats & HAS_ARGB32) &&
- (display->formats & HAS_PREMUL_ARGB32));
+ val = 1;
break;
case NATIVE_PARAM_USE_NATIVE_BUFFER:
case NATIVE_PARAM_PRESERVE_BUFFER:
struct wayland_surface;
enum wayland_format_flag {
- HAS_ARGB32 = (1 << 0),
- HAS_PREMUL_ARGB32 = (1 << 1),
- HAS_XRGB32 = (1 << 2)
+ HAS_ARGB8888 = (1 << 0),
+ HAS_XRGB8888 = (1 << 1)
};
struct wayland_display {