egl_dri2/wayland: handle creating xrgb8888 images
authorRobert Bragg <robert@linux.intel.com>
Tue, 10 Jan 2012 22:16:26 +0000 (22:16 +0000)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 11 Jan 2012 17:16:47 +0000 (12:16 -0500)
commit670f182a1f0401f34b1fb7ead50644589737f0d2
tree5160c24346db79d47699271e374ddba55be3add5
parent765ed3a6a9317607311bac1dcb0edee13ebcee16
egl_dri2/wayland: handle creating xrgb8888 images

When creating an EGLImage from a struct wl_buffer * this ensures
that we create an XRGB8888 image if the wayland buffer doesn't have an
alpha channel. To determine if a wl_buffer has a valid alpha channel
this patch adds an internal wayland_drm_buffer_has_alpha() function.

It's important to get the internal format for an EGLImage right so that
if a GL texture is later created from the image then the GL driver will
know if it should sample the alpha from the texture or flatten it to
a constant of 1.0.

This avoids needing fragment program workarounds in wayland compositors
to manually ignore the alpha component of textures created from wayland
buffers.

krh: Edited to use wl_buffer_get_format() instead of wl_buffer_has_alpha().

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/egl/drivers/dri2/egl_dri2.c
src/egl/wayland/wayland-drm/wayland-drm.c
src/egl/wayland/wayland-drm/wayland-drm.h