[Mesa-dev] [PATCH 03/11 v4] egl wayland: add YUYV support
Zhao Halley
halley.zhao at intel.com
Wed Jun 27 00:52:20 PDT 2012
---
src/egl/drivers/dri2/egl_dri2.c | 17 ++++++++++++++---
src/egl/drivers/dri2/platform_wayland.c | 8 +++++++-
2 files changed, 21 insertions(+), 4 deletions(-)
mode change 100644 => 100755 src/egl/drivers/dri2/egl_dri2.c
mode change 100644 => 100755 src/egl/drivers/dri2/platform_wayland.c
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
old mode 100644
new mode 100755
index 4a02838..a058046
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1096,9 +1096,15 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay *disp, _EGLContext *ctx,
switch (wayland_drm_buffer_get_format(buffer)) {
case WL_DRM_FORMAT_ARGB8888:
format = __DRI_IMAGE_FORMAT_ARGB8888;
+ pitch = stride / 4;
break;
case WL_DRM_FORMAT_XRGB8888:
format = __DRI_IMAGE_FORMAT_XRGB8888;
+ pitch = stride / 4;
+ break;
+ case WL_DRM_FORMAT_YUYV:
+ format = __DRI_IMAGE_FORMAT_YUYV;
+ pitch = stride / 2;
break;
default:
_eglError(EGL_BAD_PARAMETER,
@@ -1106,8 +1112,6 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay *disp, _EGLContext *ctx,
return NULL;
}
- pitch = stride / 4;
-
return dri2_create_image_drm_name(disp, ctx, name, &attrs, format, pitch);
}
#endif
@@ -1270,21 +1274,28 @@ dri2_wl_reference_buffer(void *user_data, uint32_t name,
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
__DRIimage *image;
int dri_format;
+ int pitch = 0;
switch (format) {
case WL_DRM_FORMAT_ARGB8888:
dri_format =__DRI_IMAGE_FORMAT_ARGB8888;
+ pitch = stride/4;
break;
case WL_DRM_FORMAT_XRGB8888:
dri_format = __DRI_IMAGE_FORMAT_XRGB8888;
+ pitch = stride/4;
break;
+ case WL_DRM_FORMAT_YUYV:
+ dri_format = __DRI_IMAGE_FORMAT_YUYV;
+ pitch = stride/2;
+ break;
default:
return NULL;
}
image = dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen,
width, height,
- dri_format, name, stride / 4,
+ dri_format, name, pitch,
NULL);
return image;
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
old mode 100644
new mode 100755
index d291f0f..6d330b7
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -42,7 +42,9 @@
enum wl_drm_format_flags {
HAS_ARGB8888 = 1,
- HAS_XRGB8888 = 2
+ HAS_XRGB8888 = (1 << 1),
+ HAS_YUYV = (1 << 2)
+
};
static void
@@ -778,6 +780,9 @@ drm_handle_format(void *data, struct wl_drm *drm, uint32_t format)
case WL_DRM_FORMAT_XRGB8888:
dri2_dpy->formats |= HAS_XRGB8888;
break;
+ case WL_DRM_FORMAT_YUYV:
+ dri2_dpy->formats |= HAS_YUYV;
+ break;
}
}
@@ -878,6 +883,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
dri2_add_config(disp, config, i + 1, 0, types, NULL, rgb_masks);
if (dri2_dpy->formats & HAS_ARGB8888)
dri2_add_config(disp, config, i + 1, 0, types, NULL, argb_masks);
+ // XXXX, should we do something for YUYV here?
}
disp->Extensions.KHR_image_pixmap = EGL_TRUE;
--
1.7.5.4
More information about the mesa-dev
mailing list