summaryrefslogtreecommitdiff
path: root/meta-emenlow
diff options
context:
space:
mode:
authorJeff Dike <jdike@x86_64.user-mode-linux.org>2010-07-21 17:31:45 -0400
committerRichard Purdie <rpurdie@linux.intel.com>2010-07-21 22:39:43 +0100
commite8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304 (patch)
treec8ed16e490e2e30de292c8a10eedb084d5abdea8 /meta-emenlow
parent0c3b1aa0a5461c9b5f3833feb091f7c8a459ca9b (diff)
downloadopenembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.tar.gz
openembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.tar.bz2
openembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.zip
meta-emenlow: Layer for eMenlow-based systems.
This layer provides a kernel suitable for booting on eMenlow-based systems, plus support for Poulsbo graphics. The Poulsbo support includes a kernel patch for the graphics driver, a couple of libraries, the 2D and 3D X drivers, and a properly configured X server. The closed portions of this support are in the 3D driver, xpsb-glx. This package contains the binaries for the libraries that communicate with the kernel driver and a mesa library which uses those libraries. There is a README in meta-emenlow/ describing how to enable this layer. Where possible, the recipes use bitbake's new .bbappend facility in order to avoid copying recipes from meta/. There are checksums and license information for all of the new packages. Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Diffstat (limited to 'meta-emenlow')
-rw-r--r--meta-emenlow/README16
-rw-r--r--meta-emenlow/conf/checksums.ini23
-rw-r--r--meta-emenlow/conf/layer.conf10
-rw-r--r--meta-emenlow/conf/machine/emenlow.conf41
-rw-r--r--meta-emenlow/packages/formfactor/files/emenlow/config1
-rw-r--r--meta-emenlow/packages/formfactor/formfactor_0.0.bbappend3
-rw-r--r--meta-emenlow/packages/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb14
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch111
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch83
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch102
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/036_g45_add_vaGetImage.patch71
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/037_g45_add_vaPutImage.patch111
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch531
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/102_attribute_visibility.patch47
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/103_fix_vainfo_deps.patch24
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch18
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch21
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/108_drivers_path.patch25
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/203_fix_fglrx_detection.patch542
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch312
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/300_sds_version.patch87
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/301_vdpau_mpeg4.patch26
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch60
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/321_libva_glx.base.patch212
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/322_libva_glx.patch2024
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/390_compat.base.patch135
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/391_compat.patch3273
-rw-r--r--meta-emenlow/packages/libva/libva-0.31.0/392_compat.dso.patch183
-rw-r--r--meta-emenlow/packages/libva/libva_0.31.0.bb35
-rw-r--r--meta-emenlow/packages/linux/linux-2.6.33.2/defconfig55
-rw-r--r--meta-emenlow/packages/linux/linux_2.6.33.2.bbappend3
-rw-r--r--meta-emenlow/packages/psb-firmware/psb-firmware_0.30.bb13
-rw-r--r--meta-emenlow/packages/psb-kernel-source/psb-kernel-source-4.42.0/build.patch175
-rw-r--r--meta-emenlow/packages/psb-kernel-source/psb-kernel-source_4.42.0.bb22
-rw-r--r--meta-emenlow/packages/xorg-xserver/files/crosscompile.patch19
-rw-r--r--meta-emenlow/packages/xorg-xserver/files/fix_open_max_preprocessor_error.patch13
-rw-r--r--meta-emenlow/packages/xorg-xserver/files/macro_tweak.patch18
-rw-r--r--meta-emenlow/packages/xorg-xserver/files/nodolt.patch12
-rw-r--r--meta-emenlow/packages/xorg-xserver/xserver-psb_1.7.99.2.bb17
-rw-r--r--meta-emenlow/packages/xorg-xserver/xserver-xf86-config/xorg.conf13
-rw-r--r--meta-emenlow/packages/xorg-xserver/xserver-xf86-config_0.1.bbappend1
-rw-r--r--meta-emenlow/packages/xpsb-glx/xpsb-glx-0.18/cross-compile.patch58
-rw-r--r--meta-emenlow/packages/xpsb-glx/xpsb-glx_0.18.bb40
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch12
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch20
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch35
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch17
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch23
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch12
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch11
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch85
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch11
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch75
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch19
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch84
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb31
56 files changed, 9035 insertions, 0 deletions
diff --git a/meta-emenlow/README b/meta-emenlow/README
new file mode 100644
index 0000000000..e87df35a61
--- /dev/null
+++ b/meta-emenlow/README
@@ -0,0 +1,16 @@
+To use this layer, you will need to add ${OEROOT}/meta-emenlow to the
+BBLAYERS variable in build/conf/bblayers.conf, like this:
+
+ BBLAYERS = " \
+ ${OEROOT}/meta-emenlow \
+ ${OEROOT}/meta \
+ "
+
+Also, per the comment, increment LCONF_VERSION in
+build/conf/bblayers.conf and build/conf/bblayers.conf.sample, and
+LAYER_CONF_VERSION in meta/conf/sanity.conf so that they all match.
+
+In conf/local.conf, set MACHINE to "emenlow".
+
+Then build the image of your choice (this was tested with sato), copy
+it to your device, and boot it.
diff --git a/meta-emenlow/conf/checksums.ini b/meta-emenlow/conf/checksums.ini
new file mode 100644
index 0000000000..e6fc77fb78
--- /dev/null
+++ b/meta-emenlow/conf/checksums.ini
@@ -0,0 +1,23 @@
+[https://launchpad.net/~gma500/+archive/ppa/+files/libdrm-poulsbo_2.3.0-1ubuntu0sarvatt4~1004um1ubuntu1.tar.gz]
+md5=82c00bb9f1239f1d00b18411b89c2380
+sha256=335d4ac6694687475efe07b44a2d77a9a9fadcbc16946d01ea8a02339ae7d9ec
+
+[https://launchpad.net/~gma500/+archive/ppa/+files/libva_0.31.0-1+sds9.1ubuntu1.tar.gz]
+md5=860f13e5a9d09511d7c6807b880e758b
+sha256=306468f87b9e13fdb3b6f0c6e2159b20198b33eed9eda4c31d7381a88911554f
+
+[https://launchpad.net/~gma500/+archive/ppa/+files/psb-firmware_0.30-0ubuntu1netbook1ubuntu1.tar.gz]
+md5=760005739edc64387240e56f6916e825
+sha256=714bc9162409b172caaabdaff5a942bc9d104a9b3a47a165754f7090803ba4b3
+
+[https://launchpad.net/~gma500/+archive/ppa/+files/psb-kernel-source_4.42.0-0ubuntu2~1004um2.tar.gz]
+md5=4f079e4f880bd45b281f5f3c017e8afa
+sha256=91ac0646ab02423a91b0a6027ffa1b0dbf1082588c03a3f7e4302c37c155f3fd
+
+[https://launchpad.net/~gma500/+archive/ppa/+files/xpsb-glx_0.18-0ubuntu1netbook2~1004um1ubuntu1.tar.gz]
+md5=50423a9e861ccff5814eb95a32494952
+sha256=03c958defef56ae0ec051c6f67620fa90733649925386824b7bf029f40bd7905
+
+[https://launchpad.net/~gma500/+archive/ppa/+files/xserver-xorg-video-psb_0.36.0-0ubuntu3~1004um9.tar.gz]
+md5=67bd808960db4fe9b3a7ff2582da1608
+sha256=deeaf6e4d059e709d8a4268bd013a172f7fbd70778236d7d1e2712d1951de72c
diff --git a/meta-emenlow/conf/layer.conf b/meta-emenlow/conf/layer.conf
new file mode 100644
index 0000000000..781df4b016
--- /dev/null
+++ b/meta-emenlow/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH := "${BBPATH}:${LAYERDIR}"
+
+# We have a packages directory, add to BBFILES
+BBFILES := "${BBFILES} ${LAYERDIR}/packages/*/*.bb \
+ ${LAYERDIR}/packages/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "emenlow"
+BBFILE_PATTERN_emenlow := "^${LAYERDIR}/"
+BBFILE_PRIORITY_emenlow = "6"
diff --git a/meta-emenlow/conf/machine/emenlow.conf b/meta-emenlow/conf/machine/emenlow.conf
new file mode 100644
index 0000000000..91fac7cec8
--- /dev/null
+++ b/meta-emenlow/conf/machine/emenlow.conf
@@ -0,0 +1,41 @@
+#@TYPE: Machine
+#@NAME: emenlow
+
+#@DESCRIPTION: Machine configuration for eMenlow based systems, like the
+# Webs-2120 box.
+
+TARGET_ARCH = "i686"
+PACKAGE_EXTRA_ARCHS = "x86 core2"
+
+include conf/machine/include/tune-atom.inc
+
+MACHINE_FEATURES = "kernel26 screen keyboard pci usbhost ext2 ext3 x86 \
+ acpi serial usbgadget"
+
+KERNEL_IMAGETYPE = "bzImage"
+
+PREFERRED_PROVIDER_libdrm = "libdrm-poulsbo"
+PREFERRED_PROVIDER_drm = "libdrm-poulsbo"
+PREFERRED_PROVIDER_virtual/libx11 = "libx11-trim"
+PREFERRED_PROVIDER_virtual/libgl = "xpsb-glx"
+PREFERRED_PROVIDER_virtual/xserver = "xserver-psb"
+PREFERRED_PROVIDER_virtual/xserver-xf86 = "xserver-psb"
+PREFERRED_PROVIDER_xserver-xf86-dri-lite = "xserver-psb"
+
+XSERVER ?= "xserver-psb \
+ xf86-input-mouse \
+ xf86-input-keyboard \
+ xf86-input-evdev"
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+MACHINE_EXTRA_RRECOMMENDS = "kernel-modules eee-acpi-scripts"
+
+GUI_MACHINE_CLASS = "bigscreen"
+
+IMAGE_ROOTFS_SIZE_ext3 = "2000000"
+
+IMAGE_FSTYPES ?= "ext3 cpio.gz"
+
+GLIBC_ADDONS = "nptl"
+GLIBC_EXTRA_OECONF = "--with-tls"
diff --git a/meta-emenlow/packages/formfactor/files/emenlow/config b/meta-emenlow/packages/formfactor/files/emenlow/config
new file mode 100644
index 0000000000..682348d8e6
--- /dev/null
+++ b/meta-emenlow/packages/formfactor/files/emenlow/config
@@ -0,0 +1 @@
+HAVE_TOUCHSCREEN=0
diff --git a/meta-emenlow/packages/formfactor/formfactor_0.0.bbappend b/meta-emenlow/packages/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 0000000000..77958e87cc
--- /dev/null
+++ b/meta-emenlow/packages/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1,3 @@
+FILESPATH := "${FILESPATH}:${@os.path.dirname(bb.data.getVar('FILE', d, True))}"
+
+PR = "r26"
diff --git a/meta-emenlow/packages/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb b/meta-emenlow/packages/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb
new file mode 100644
index 0000000000..8a06dce8cc
--- /dev/null
+++ b/meta-emenlow/packages/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Userspace interface to kernel DRM services"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://MIT_License.txt;md5=732825ecdcf420261531d935fcd914a7"
+PR="r1"
+
+PROVIDES = "libdrm-poulsbo libdrm drm"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/libdrm-poulsbo_2.3.0-1ubuntu0sarvatt4~1004um1ubuntu1.tar.gz"
+
+do_install_append() {
+ cp ${D}/${libdir}/pkgconfig/libdrm.pc ${D}/${libdir}/pkgconfig/libdrm-poulsbo.pc
+}
diff --git a/meta-emenlow/packages/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch b/meta-emenlow/packages/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
new file mode 100644
index 0000000000..1b928b4c09
--- /dev/null
+++ b/meta-emenlow/packages/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
@@ -0,0 +1,111 @@
+From 6622e8eba85cea476f8ef5b8c3620c4a0f024dcd Mon Sep 17 00:00:00 2001
+From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
+Date: Wed, 4 Nov 2009 10:56:54 +0000
+Subject: [PATCH] [G45] Add RGBA subpictures.
+
+---
+ i965_drv_video/i965_drv_video.c | 18 ++++++++++++++++++
+ i965_drv_video/i965_drv_video.h | 3 ++-
+ i965_drv_video/i965_render.c | 8 ++++----
+ 3 files changed, 24 insertions(+), 5 deletions(-)
+
+diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
+index 8f4bfc1..92c4785 100644
+--- a/i965_drv_video/i965_drv_video.c
++++ b/i965_drv_video/i965_drv_video.c
+@@ -70,6 +70,14 @@ i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = {
+ { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM,
+ { VA_FOURCC('A','I','4','4'), VA_MSB_FIRST, 8, },
+ 0 },
++ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM,
++ { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32,
++ 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
++ 0 },
++ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM,
++ { VA_FOURCC('R','G','B','A'), VA_LSB_FIRST, 32,
++ 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
++ 0 },
+ };
+
+ static const i965_subpic_format_map_t *
+@@ -467,6 +475,7 @@ i965_CreateSubpicture(VADriverContextP ctx,
+ obj_subpic->format = m->format;
+ obj_subpic->width = obj_image->image.width;
+ obj_subpic->height = obj_image->image.height;
++ obj_subpic->pitch = obj_image->image.pitches[0];
+ obj_subpic->bo = obj_image->bo;
+ return VA_STATUS_SUCCESS;
+ }
+@@ -1218,6 +1227,15 @@ i965_CreateImage(VADriverContextP ctx,
+ image->component_order[1] = 'G';
+ image->component_order[2] = 'B';
+ break;
++ case VA_FOURCC('A','R','G','B'):
++ case VA_FOURCC('A','B','G','R'):
++ case VA_FOURCC('B','G','R','A'):
++ case VA_FOURCC('R','G','B','A'):
++ image->num_planes = 1;
++ image->pitches[0] = width * 4;
++ image->offsets[0] = 0;
++ image->data_size = image->offsets[0] + image->pitches[0] * height;
++ break;
+ default:
+ goto error;
+ }
+diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
+index c95c799..4d775da 100644
+--- a/i965_drv_video/i965_drv_video.h
++++ b/i965_drv_video/i965_drv_video.h
+@@ -42,7 +42,7 @@
+ #define I965_MAX_ENTRYPOINTS 5
+ #define I965_MAX_CONFIG_ATTRIBUTES 10
+ #define I965_MAX_IMAGE_FORMATS 10
+-#define I965_MAX_SUBPIC_FORMATS 2
++#define I965_MAX_SUBPIC_FORMATS 4
+ #define I965_MAX_DISPLAY_ATTRIBUTES 4
+ #define I965_STR_VENDOR "i965 Driver 0.1"
+
+@@ -124,6 +124,7 @@ struct object_subpic
+ unsigned int format;
+ int width;
+ int height;
++ int pitch;
+ dri_bo *bo;
+ };
+
+diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
+index f105e90..0476087 100644
+--- a/i965_drv_video/i965_render.c
++++ b/i965_drv_video/i965_render.c
+@@ -586,7 +586,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
+ int index,
+ dri_bo *region,
+ unsigned long offset,
+- int w, int h, int format)
++ int w, int h, int p, int format)
+ {
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+ struct i965_render_state *render_state = &i965->render_state;
+@@ -620,7 +620,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
+ ss->ss2.mip_count = 0;
+ ss->ss2.render_target_rotation = 0;
+
+- ss->ss3.pitch = w - 1;
++ ss->ss3.pitch = p - 1;
+
+ dri_bo_emit_reloc(ss_bo,
+ I915_GEM_DOMAIN_SAMPLER, 0,
+@@ -678,8 +678,8 @@ i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
+ region = obj_surface->bo;
+ subpic_region = obj_image->bo;
+ /*subpicture surface*/
+- i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
+- i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
++ i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
++ i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
+ }
+
+ static void
+--
+1.5.4.3
+
diff --git a/meta-emenlow/packages/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch b/meta-emenlow/packages/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch
new file mode 100644
index 0000000000..a4612133bb
--- /dev/null
+++ b/meta-emenlow/packages/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch
@@ -0,0 +1,83 @@
+From 3935c6a836b8f90947f0af658a76b97a08a03c67 Mon Sep 17 00:00:00 2001
+From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
+Date: Wed, 4 Nov 2009 13:23:40 +0000
+Subject: [PATCH] [G45] Don't return VA_STATUS_SUCCESS for unimplemented functions.
+
+---
+ i965_drv_video/i965_drv_video.c | 18 +++++++++++-------
+ 1 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
+index 10baffb..d8a7bd1 100644
+--- a/i965_drv_video/i965_drv_video.c
++++ b/i965_drv_video/i965_drv_video.c
+@@ -534,7 +534,8 @@ i965_SetSubpictureImage(VADriverContextP ctx,
+ VASubpictureID subpicture,
+ VAImageID image)
+ {
+- return VA_STATUS_SUCCESS;
++ /* TODO */
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ VAStatus
+@@ -544,7 +545,8 @@ i965_SetSubpictureChromakey(VADriverContextP ctx,
+ unsigned int chromakey_max,
+ unsigned int chromakey_mask)
+ {
+- return VA_STATUS_SUCCESS;
++ /* TODO */
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ VAStatus
+@@ -552,7 +554,8 @@ i965_SetSubpictureGlobalAlpha(VADriverContextP ctx,
+ VASubpictureID subpicture,
+ float global_alpha)
+ {
+- return VA_STATUS_SUCCESS;
++ /* TODO */
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ VAStatus
+@@ -1141,7 +1144,7 @@ i965_GetDisplayAttributes(VADriverContextP ctx,
+ int num_attributes)
+ {
+ /* TODO */
+- return VA_STATUS_ERROR_UNKNOWN;
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ /*
+@@ -1156,7 +1159,7 @@ i965_SetDisplayAttributes(VADriverContextP ctx,
+ int num_attributes)
+ {
+ /* TODO */
+- return VA_STATUS_ERROR_UNKNOWN;
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ VAStatus
+@@ -1166,7 +1169,7 @@ i965_DbgCopySurfaceToBuffer(VADriverContextP ctx,
+ unsigned int *stride) /* out */
+ {
+ /* TODO */
+- return VA_STATUS_ERROR_UNKNOWN;
++ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ }
+
+ static VAStatus
+@@ -1318,7 +1321,8 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
+ VASurfaceID surface,
+ VAImage *image) /* out */
+ {
+- return VA_STATUS_SUCCESS;
++ /* TODO */
++ return VA_STATUS_ERROR_OPERATION_FAILED;
+ }
+
+ static void
+--
+1.5.4.3
+
diff --git a/meta-emenlow/packages/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch b/meta-emenlow/packages/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch
new file mode 100644
index 0000000000..92d814c1a8
--- /dev/null
+++ b/meta-emenlow/packages/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch
@@ -0,0 +1,102 @@
+From 23b23e8d65551779f10aedddee7882c2e71ac162 Mon Sep 17 00:00:00 2001
+From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
+Date: Wed, 4 Nov 2009 13:01:44 +0000
+Subject: [PATCH] [G45] Add YV12 image format.
+
+---
+ i965_drv_video/i965_drv_video.c | 50 ++++++++++++++++++++++++++++++++++++++-
+ i965_drv_video/i965_drv_video.h | 2 +-
+ 2 files changed, 50 insertions(+), 2 deletions(-)
+
+diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
+index 1f026bc..8558d0e 100644
+--- a/i965_drv_video/i965_drv_video.c
++++ b/i965_drv_video/i965_drv_video.c
+@@ -54,6 +54,36 @@ enum {
+ I965_SURFACETYPE_INDEXED
+ };
+
++/* List of supported image formats */
++typedef struct {
++ unsigned int type;
++ VAImageFormat va_format;
++} i965_image_format_map_t;
++
++static const i965_image_format_map_t
++i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
++ { I965_SURFACETYPE_YUV,
++ { VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
++};
++
++static const i965_image_format_map_t *
++get_image_format(const VAImageFormat *va_format)
++{
++ unsigned int i;
++ for (i = 0; i965_image_formats_map[i].type != 0; i++) {
++ const i965_image_format_map_t * const m = &i965_image_formats_map[i];
++ if (m->va_format.fourcc == va_format->fourcc &&
++ (m->type == I965_SURFACETYPE_RGBA ?
++ (m->va_format.byte_order == va_format->byte_order &&
++ m->va_format.red_mask == va_format->red_mask &&
++ m->va_format.green_mask == va_format->green_mask &&
++ m->va_format.blue_mask == va_format->blue_mask &&
++ m->va_format.alpha_mask == va_format->alpha_mask) : 1))
++ return m;
++ }
++ return NULL;
++}
++
+ /* List of supported subpicture formats */
+ typedef struct {
+ unsigned int type;
+@@ -398,8 +428,16 @@ i965_QueryImageFormats(VADriverContextP ctx,
+ VAImageFormat *format_list, /* out */
+ int *num_formats) /* out */
+ {
++ int n;
++
++ for (n = 0; i965_image_formats_map[n].va_format.fourcc != 0; n++) {
++ const i965_image_format_map_t * const m = &i965_image_formats_map[n];
++ if (format_list)
++ format_list[n] = m->va_format;
++ }
++
+ if (num_formats)
+- *num_formats = 0;
++ *num_formats = n;
+
+ return VA_STATUS_SUCCESS;
+ }
+@@ -1236,6 +1274,16 @@ i965_CreateImage(VADriverContextP ctx,
+ image->offsets[0] = 0;
+ image->data_size = image->offsets[0] + image->pitches[0] * height;
+ break;
++ case VA_FOURCC('Y','V','1','2'):
++ image->num_planes = 3;
++ image->pitches[0] = width;
++ image->offsets[0] = 0;
++ image->pitches[1] = width2;
++ image->offsets[1] = size;
++ image->pitches[2] = width2;
++ image->offsets[2] = size + size2;
++ image->data_size = size + 2 * size2;
++ break;
+ default:
+ goto error;
+ }
+diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
+index 4d775da..f512793 100644
+--- a/i965_drv_video/i965_drv_video.h
++++ b/i965_drv_video/i965_drv_video.h
+@@ -41,7 +41,7 @@
+ #define I965_MAX_PROFILES 11
+ #define I965_MAX_ENTRYPOINTS 5
+ #define I965_MAX_CONFIG_ATTRIBUTES 10
+-#define I965_MAX_IMAGE_FORMATS 10
++#define I965_MAX_IMAGE_FORMATS 1
+ #define I965_MAX_SUBPIC_FORMATS 4
+ #define