Emenlow Removal from Poky Core: meta-emenlow

Removing Emenlow from poky core as it is now in meta-intel as a BSP layer

[BUGID #769]

Signed-off-by: Beth Flanagan <elizabeth.flanagan@intel.com>
This commit is contained in:
Beth Flanagan 2011-02-24 14:34:59 -08:00 committed by Saul Wold
parent 0897b00452
commit 020967ed0d
67 changed files with 2 additions and 9380 deletions

View File

@ -1,17 +0,0 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -1,78 +0,0 @@
This README file contains information on building the meta-emenlow
BSP layer using any of the supported machine configurations, and
booting the images contained in the /binary directory.
If you're only interested in booting the images in the /binary
directory of a BSP tarball you've downloaded, there's nothing special
to do - the appropriate images are already in the /binary directory
depending on which BSP tarball you downloaded.
Please see the corresponding sections below for details.
Table of Contents
=================
I. Building the meta-emenlow BSP layer
II. Booting the images in /binary
I. Building the meta-emenlow BSP layer
=======================================
In order to build an image with BSP support for emenlow, you just need
to check out the poky master branch.
Having done that, you can build an emenlow image by adding the
location of the meta-emenlow layer to bblayers.conf e.g.:
yocto/meta-emenlow \
To enable the emenlow layer, add the emenlow MACHINE to local.conf:
MACHINE ?= "emenlow"
You should then be able to build an emenlow image as such:
$ source poky-init-build-env
$ bitbake poky-image-sato-live
At the end of a successful build, you should have a live image that
you can boot from a USB flash drive (see instructions on how to do
that below, in the section 'Booting the images from /binary').
II. Booting the images in /binary
=================================
This BSP contains bootable live images, which can be used to directly
boot Yocto off of a USB flash drive.
Under Linux, insert a USB flash drive. Assuming the USB flash drive
takes device /dev/sdf, use dd to copy the live image to it. For
example:
# dd if=poky-image-sato-live-emenlow-20101207053738.hddimg of=/dev/sdf
# sync
# eject /dev/sdf
This should give you a bootable USB flash device. Insert the device
into a bootable USB socket on the target, and power on. This should
result in a system booted to the Sato graphical desktop.
If you want a terminal, use the arrows at the top of the UI to move to
different pages of available applications, one of which is named
'Terminal'. Clicking that should give you a root terminal.
If you want to ssh into the system, you can use the root terminal to
ifconfig the IP address and use that to ssh in. The root password is
empty, so to log in type 'root' for the user name and hit 'Enter' at
the Password prompt: and you should be in.
----
If you find you're getting corrupt images on the USB (it doesn't show
the syslinux boot: prompt, or the boot: prompt contains strange
characters), try doing this first:
# dd if=/dev/zero of=/dev/sdf bs=1M count=512

View File

View File

@ -1,23 +0,0 @@
[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

View File

@ -1,10 +0,0 @@
# We have a conf and classes directory, add to BBPATH
BBPATH := "${BBPATH}:${LAYERDIR}"
# We have a packages directory, add to BBFILES
BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "emenlow"
BBFILE_PATTERN_emenlow := "^${LAYERDIR}/"
BBFILE_PRIORITY_emenlow = "6"

View File

@ -1,48 +0,0 @@
#@TYPE: Machine
#@NAME: emenlow
#@DESCRIPTION: Machine configuration for eMenlow based systems, like the
# Webs-2120 box.
TARGET_ARCH = "i586"
PACKAGE_EXTRA_ARCHS = "x86 core2"
include conf/machine/include/tune-atom.inc
BASE_PACKAGE_ARCH="core2"
MACHINE_FEATURES = "kernel26 screen keyboard pci usbhost ext2 ext3 x86 \
acpi serial usbgadget"
KERNEL_IMAGETYPE = "bzImage"
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-stable"
#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
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"
SRCREV_machine_pn-linux-yocto-stable_emenlow ?= "aae69fdf104b0a9d7b3710f808aac6ab303490f7"
SRCREV_meta_pn-linux-yocto-stable_emenlow ?= "50ccd2b3213b6a1bacb3f898c035119802dac420"

View File

@ -1,3 +0,0 @@
# Assume a USB mouse and keyboard are connected
HAVE_TOUCHSCREEN=0
HAVE_KEYBOARD=1

View File

@ -1,3 +0,0 @@
FILESEXTRAPATHS := "${THISDIR}/${PN}"
PRINC = "1"

View File

@ -1,61 +0,0 @@
# Make this package produce libdrm-poulsbo instead of libdrm so that the
# emenlow libdrm can coexist with the normal libdrm.
# jdike@linux.intel.com
Index: libdrm-poulsbo-2.3.0/configure.ac
===================================================================
--- libdrm-poulsbo-2.3.0.orig/configure.ac
+++ libdrm-poulsbo-2.3.0/configure.ac
@@ -19,7 +19,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AC_PREREQ(2.57)
-AC_INIT([libdrm], 2.3.1, [dri-devel@lists.sourceforge.net], libdrm)
+AC_INIT([libdrm_poulsbo], 2.3.1, [dri-devel@lists.sourceforge.net], libdrm_poulsbo)
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2])
@@ -35,4 +35,4 @@ AC_SYS_LARGEFILE
pkgconfigdir=${libdir}/pkgconfig
AC_SUBST(pkgconfigdir)
-AC_OUTPUT([Makefile libdrm/Makefile shared-core/Makefile libdrm.pc])
+AC_OUTPUT([Makefile libdrm/Makefile shared-core/Makefile libdrm_poulsbo.pc])
Index: libdrm-poulsbo-2.3.0/Makefile.am
===================================================================
--- libdrm-poulsbo-2.3.0.orig/Makefile.am
+++ libdrm-poulsbo-2.3.0/Makefile.am
@@ -25,6 +25,6 @@ AUTOMAKE_OPTIONS = foreign
SUBDIRS = libdrm shared-core
pkgconfigdir = @pkgconfigdir@
-pkgconfig_DATA = libdrm.pc
+pkgconfig_DATA = libdrm_poulsbo.pc
-EXTRA_DIST = libdrm.pc.in
+EXTRA_DIST = libdrm_poulsbo.pc.in
Index: libdrm-poulsbo-2.3.0/libdrm/Makefile.am
===================================================================
--- libdrm-poulsbo-2.3.0.orig/libdrm/Makefile.am
+++ libdrm-poulsbo-2.3.0/libdrm/Makefile.am
@@ -18,14 +18,14 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-libdrm_la_LTLIBRARIES = libdrm.la
-libdrm_ladir = $(libdir)
-libdrm_la_LDFLAGS = -version-number 2:3:0 -no-undefined
+libdrm_poulsbo_la_LTLIBRARIES = libdrm_poulsbo.la
+libdrm_poulsbo_ladir = $(libdir)
+libdrm_poulsbo_la_LDFLAGS = -version-number 2:3:0 -no-undefined
AM_CFLAGS = -I$(top_srcdir)/shared-core
-libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c xf86drmMode.c
+libdrm_poulsbo_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c xf86drmMode.c
-libdrmincludedir = ${includedir}/psb
-libdrminclude_HEADERS = xf86drm.h xf86mm.h xf86drmMode.h
+libdrm_poulsboincludedir = ${includedir}/psb
+libdrm_poulsboinclude_HEADERS = xf86drm.h xf86mm.h xf86drmMode.h
EXTRA_DIST = ChangeLog TODO

View File

@ -1,19 +0,0 @@
DESCRIPTION = "Userspace interface to kernel DRM services"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://MIT_License.txt;md5=732825ecdcf420261531d935fcd914a7"
PR = "r4"
PROVIDES = "libdrm-poulsbo"
inherit autotools pkgconfig
SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/libdrm-poulsbo_2.3.0-1ubuntu0sarvatt4~1004um1ubuntu1.tar.gz \
file://libdrm-poulsbo.patch"
SRC_URI[md5sum] = "82c00bb9f1239f1d00b18411b89c2380"
SRC_URI[sha256sum] = "335d4ac6694687475efe07b44a2d77a9a9fadcbc16946d01ea8a02339ae7d9ec"
do_configure_prepend() {
sed -e 's/-ldrm/-ldrm_poulsbo/' -e 's/libdrm/libdrm_poulsbo/' \
< ${S}/libdrm.pc.in > ${S}/libdrm_poulsbo.pc.in
}

View File

@ -1,111 +0,0 @@
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

View File

@ -1,83 +0,0 @@
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

View File

@ -1,102 +0,0 @@
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 I965_MAX_DISPLAY_ATTRIBUTES 4
#define I965_STR_VENDOR "i965 Driver 0.1"
--
1.5.4.3

View File

@ -1,71 +0,0 @@
From 37f40c0cdc9667907dfb784874b42fb16c2c9bde Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed, 4 Nov 2009 13:16:34 +0000
Subject: [PATCH] =?utf-8?q?[G45]=C2=A0Implement=20vaGetImage()=20for=20full-sized=20surface=20readback.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
---
i965_drv_video/i965_drv_video.c | 45 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 8558d0e..10baffb 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -1388,7 +1388,50 @@ i965_GetImage(VADriverContextP ctx,
unsigned int height,
VAImageID image)
{
- return VA_STATUS_SUCCESS;
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ struct object_surface *obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
+ struct object_image *obj_image = IMAGE(image);
+ if (!obj_image)
+ return VA_STATUS_ERROR_INVALID_IMAGE;
+
+ /* XXX: we only support full-size surface readback */
+ if (x != 0 ||
+ y != 0 ||
+ width != obj_surface->width ||
+ height != obj_surface->height)
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+ /* XXX: we only support 1:1 image copies */
+ if (width != obj_image->image.width ||
+ height != obj_image->image.height)
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+ VAStatus va_status;
+ void *image_data = NULL;
+
+ va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
+ if (va_status != VA_STATUS_SUCCESS)
+ return va_status;
+
+ dri_bo_map(obj_surface->bo, 0);
+
+ switch (obj_image->image.format.fourcc) {
+ case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ memcpy(image_data, obj_surface->bo->virtual, obj_surface->bo->size);
+ break;
+ default:
+ va_status = VA_STATUS_ERROR_OPERATION_FAILED;
+ break;
+ }
+
+ dri_bo_unmap(obj_surface->bo);
+
+ i965_UnmapBuffer(ctx, obj_image->image.buf);
+ return va_status;
}
VAStatus
--
1.5.4.3

View File

@ -1,111 +0,0 @@
From 000807cfbd8bcbc9cd4bf28a066087fee43396b4 Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed, 4 Nov 2009 13:36:39 +0000
Subject: [PATCH] =?utf-8?q?[G45]=C2=A0Implement=20vaPutImage()=20for=20full-sized=20surface=20uploads.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
---
i965_drv_video/i965_drv_video.c | 78 +++++++++++++++++++++++++++++++--------
1 files changed, 62 insertions(+), 16 deletions(-)
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index d8a7bd1..e8f638c 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -443,22 +443,6 @@ i965_QueryImageFormats(VADriverContextP ctx,
}
VAStatus
-i965_PutImage(VADriverContextP ctx,
- VASurfaceID surface,
- VAImageID image,
- int src_x,
- int src_y,
- unsigned int src_width,
- unsigned int src_height,
- int dest_x,
- int dest_y,
- unsigned int dest_width,
- unsigned int dest_height)
-{
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
i965_QuerySubpictureFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
unsigned int *flags, /* out */
@@ -1439,6 +1423,68 @@ i965_GetImage(VADriverContextP ctx,
}
VAStatus
+i965_PutImage(VADriverContextP ctx,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y,
+ unsigned int dest_width,
+ unsigned int dest_height)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ struct object_surface *obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
+ struct object_image *obj_image = IMAGE(image);
+ if (!obj_image)
+ return VA_STATUS_ERROR_INVALID_IMAGE;
+
+ /* XXX: we don't support partial video surface updates */
+ if (src_x != 0 ||
+ src_y != 0 ||
+ src_width != obj_image->image.width ||
+ src_height != obj_image->image.height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+ if (dest_x != 0 ||
+ dest_y != 0 ||
+ dest_width != obj_surface->width ||
+ dest_height != obj_surface->height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+ if (src_width != dest_width ||
+ src_height != dest_height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+
+ VAStatus va_status;
+ void *image_data = NULL;
+
+ va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
+ if (va_status != VA_STATUS_SUCCESS)
+ return va_status;
+
+ dri_bo_map(obj_surface->bo, 1);
+
+ switch (obj_image->image.format.fourcc) {
+ case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ memcpy(obj_surface->bo->virtual, image_data, obj_surface->bo->size);
+ break;
+ default:
+ va_status = VA_STATUS_ERROR_OPERATION_FAILED;
+ break;
+ }
+
+ dri_bo_unmap(obj_surface->bo);
+
+ i965_UnmapBuffer(ctx, obj_image->image.buf);
+ return va_status;
+}
+
+VAStatus
i965_PutSurface(VADriverContextP ctx,
VASurfaceID surface,
Drawable draw, /* X Drawable */
--
1.5.4.3

View File

@ -1,531 +0,0 @@
From 90de12a47e26ccc0b4cc8189c76991609481870d Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed, 4 Nov 2009 17:34:53 +0000
Subject: [PATCH] [G45] Handle cliprects in vaPutSurface().
---
i965_drv_video/i965_drv_video.c | 39 ++++--
i965_drv_video/i965_render.c | 284 +++++++++++++++++++--------------------
i965_drv_video/i965_render.h | 30 ++---
3 files changed, 176 insertions(+), 177 deletions(-)
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index e8f638c..20d6bab 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -1507,13 +1507,23 @@ i965_PutSurface(VADriverContextP ctx,
union dri_buffer *buffer;
struct intel_region *dest_region;
struct object_surface *obj_surface;
- int ret;
+ int ret;
uint32_t name;
+ VARectangle src_rect, dst_rect;
Bool new_region = False;
+
/* Currently don't support DRI1 */
if (dri_state->driConnectedFlag != VA_DRI2)
return VA_STATUS_ERROR_UNKNOWN;
+ /* XXX: we currently only support up to 64 cliprects */
+ if (number_cliprects > MAX_CLIP_RECTS)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+
+ obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
dri_drawable = dri_get_drawable(ctx, draw);
assert(dri_drawable);
@@ -1552,17 +1562,24 @@ i965_PutSurface(VADriverContextP ctx,
assert(ret == 0);
}
- i965_render_put_surface(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- obj_surface = SURFACE(surface);
- if(obj_surface->subpic != VA_INVALID_ID) {
- i965_render_put_subpic(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- }
- dri_swap_buffer(ctx, dri_drawable);
+ src_rect.x = srcx;
+ src_rect.y = srcy;
+ src_rect.width = srcw;
+ src_rect.height = srch;
+
+ dst_rect.x = destx;
+ dst_rect.y = desty;
+ dst_rect.width = destw;
+ dst_rect.height = desth;
+ i965_render_put_surface(ctx, surface, &src_rect, &dst_rect,
+ cliprects, number_cliprects);
+
+ if (obj_surface->subpic != VA_INVALID_ID)
+ i965_render_put_subpic(ctx, surface, &src_rect, &dst_rect,
+ cliprects, number_cliprects);
+
+ dri_swap_buffer(ctx, dri_drawable);
return VA_STATUS_SUCCESS;
}
diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
index 0476087..d7cd8fe 100644
--- a/i965_drv_video/i965_render.c
+++ b/i965_drv_video/i965_render.c
@@ -787,13 +787,81 @@ i965_render_binding_table(VADriverContextP ctx)
dri_bo_unmap(render_state->wm.binding_table);
}
-static void
+static unsigned int
+i965_render_do_upload_vertex(VADriverContextP ctx,
+ unsigned int width,
+ unsigned int height,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+ struct i965_render_state *render_state = &i965->render_state;
+ struct intel_region *dest_region = render_state->draw_region;
+ float *vb, tx1, tx2, ty1, ty2;
+ int x1, x2, y1, y2;
+ unsigned int i, n;
+
+ if (!cliprects || num_cliprects == 0) {
+ cliprects = dst_rect;
+ num_cliprects = 1;
+ }
+
+ dri_bo_map(render_state->vb.vertex_buffer, 1);
+ assert(render_state->vb.vertex_buffer->virtual);
+ vb = render_state->vb.vertex_buffer->virtual;
+
+ for (n = 0, i = 0; i < num_cliprects; i++) {
+ x1 = dest_region->x + cliprects[i].x;
+ y1 = dest_region->y + cliprects[i].y;
+ x2 = x1 + cliprects[i].width;
+ y2 = y1 + cliprects[i].height;
+ x1 = MAX(x1, dst_rect->x);
+ y1 = MAX(y1, dst_rect->y);
+ x2 = MIN(x2, dst_rect->x + dst_rect->width);
+ y2 = MIN(y2, dst_rect->y + dst_rect->height);
+
+ if (x2 <= x1 || y2 <= y1)
+ continue;
+
+ const float sx1 = (float)(x1 - dst_rect->x) / (float)dst_rect->width;
+ const float sy1 = (float)(y1 - dst_rect->y) / (float)dst_rect->height;
+ const float sx2 = (float)(x2 - dst_rect->x) / (float)dst_rect->width;
+ const float sy2 = (float)(y2 - dst_rect->y) / (float)dst_rect->height;
+ tx1 = ((float)src_rect->x + sx1 * (float)src_rect->width) / width;
+ ty1 = ((float)src_rect->y + sy1 * (float)src_rect->height) / height;
+ tx2 = ((float)src_rect->x + sx2 * (float)src_rect->width) / width;
+ ty2 = ((float)src_rect->y + sy2 * (float)src_rect->height) / height;
+
+ vb[n++] = tx2;
+ vb[n++] = ty2;
+ vb[n++] = x2;
+ vb[n++] = y2;
+
+ vb[n++] = tx1;
+ vb[n++] = ty2;
+ vb[n++] = x1;
+ vb[n++] = y2;
+
+ vb[n++] = tx1;
+ vb[n++] = ty1;
+ vb[n++] = x1;
+ vb[n++] = y1;
+ }
+
+ dri_bo_unmap(render_state->vb.vertex_buffer);
+ return n / 12;
+}
+
+static unsigned int
i965_subpic_render_upload_vertex(VADriverContextP ctx,
VASurfaceID surface,
- const VARectangle *output_rect)
-{
+ const VARectangle *output_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
+{
struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
struct object_surface *obj_surface = SURFACE(surface);
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
@@ -803,8 +871,6 @@ i965_subpic_render_upload_vertex(VADriverContextP ctx,
const float ssy = (float)output_rect->height / (float)obj_surface->height;
const float sx = psx * ssx;
const float sy = psy * ssy;
- float *vb, tx1, tx2, ty1, ty2, x1, x2, y1, y2;
- int i = 0;
VARectangle dst_rect;
dst_rect.x = output_rect->x + sx * (float)obj_subpic->dst_rect.x;
@@ -812,106 +878,38 @@ i965_subpic_render_upload_vertex(VADriverContextP ctx,
dst_rect.width = sx * (float)obj_subpic->dst_rect.width;
dst_rect.height = sy * (float)obj_subpic->dst_rect.height;
- dri_bo_map(render_state->vb.vertex_buffer, 1);
- assert(render_state->vb.vertex_buffer->virtual);
- vb = render_state->vb.vertex_buffer->virtual;
-
- tx1 = (float)obj_subpic->src_rect.x / (float)obj_subpic->width;
- ty1 = (float)obj_subpic->src_rect.y / (float)obj_subpic->height;
- tx2 = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / (float)obj_subpic->width;
- ty2 = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / (float)obj_subpic->height;
-
- x1 = (float)dst_rect.x;
- y1 = (float)dst_rect.y;
- x2 = (float)(dst_rect.x + dst_rect.width);
- y2 = (float)(dst_rect.y + dst_rect.height);
-
- vb[i++] = tx2;
- vb[i++] = ty2;
- vb[i++] = x2;
- vb[i++] = y2;
-
- vb[i++] = tx1;
- vb[i++] = ty2;
- vb[i++] = x1;
- vb[i++] = y2;
-
- vb[i++] = tx1;
- vb[i++] = ty1;
- vb[i++] = x1;
- vb[i++] = y1;
- dri_bo_unmap(render_state->vb.vertex_buffer);
+ return i965_render_do_upload_vertex(ctx,
+ obj_subpic->width, obj_subpic->height,
+ &obj_subpic->src_rect, &dst_rect,
+ cliprects, num_cliprects);
}
-static void
+static unsigned int
i965_render_upload_vertex(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- struct object_surface *obj_surface;
- float *vb;
-
- float u1, v1, u2, v2;
- int i, width, height;
- int box_x1 = dest_region->x + destx;
- int box_y1 = dest_region->y + desty;
- int box_x2 = box_x1 + destw;
- int box_y2 = box_y1 + desth;
-
- obj_surface = SURFACE(surface);
- assert(surface);
- width = obj_surface->width;
- height = obj_surface->height;
-
- u1 = (float)srcx / width;
- v1 = (float)srcy / height;
- u2 = (float)(srcx + srcw) / width;
- v2 = (float)(srcy + srch) / height;
-
- dri_bo_map(render_state->vb.vertex_buffer, 1);
- assert(render_state->vb.vertex_buffer->virtual);
- vb = render_state->vb.vertex_buffer->virtual;
-
- i = 0;
- vb[i++] = u2;
- vb[i++] = v2;
- vb[i++] = (float)box_x2;
- vb[i++] = (float)box_y2;
-
- vb[i++] = u1;
- vb[i++] = v2;
- vb[i++] = (float)box_x1;
- vb[i++] = (float)box_y2;
-
- vb[i++] = u1;
- vb[i++] = v1;
- vb[i++] = (float)box_x1;
- vb[i++] = (float)box_y1;
+ struct object_surface *obj_surface = SURFACE(surface);
+ assert(obj_surface);
- dri_bo_unmap(render_state->vb.vertex_buffer);
+ return i965_render_do_upload_vertex(ctx,
+ obj_surface->width, obj_surface->height,
+ src_rect,
+ dst_rect,
+ cliprects, num_cliprects);
}
-static void
+static unsigned int
i965_surface_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
@@ -922,21 +920,17 @@ i965_surface_render_state_setup(VADriverContextP ctx,
i965_render_cc_viewport(ctx);
i965_render_cc_unit(ctx);
i965_render_binding_table(ctx);
- i965_render_upload_vertex(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ return i965_render_upload_vertex(ctx, surface, src_rect, dst_rect,
+ cliprects, num_cliprects);
}
-static void
+
+static unsigned int
i965_subpic_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
@@ -947,16 +941,10 @@ i965_subpic_render_state_setup(VADriverContextP ctx,
i965_render_cc_viewport(ctx);
i965_subpic_render_cc_unit(ctx);
i965_render_binding_table(ctx);
-
- VARectangle output_rect;
- output_rect.x = destx;
- output_rect.y = desty;
- output_rect.width = destw;
- output_rect.height = desth;
- i965_subpic_render_upload_vertex(ctx, surface, &output_rect);
+ return i965_subpic_render_upload_vertex(ctx, surface, dst_rect,
+ cliprects, num_cliprects);
}
-
static void
i965_render_pipeline_select(VADriverContextP ctx)
{
@@ -1192,7 +1180,7 @@ i965_render_upload_image_palette(
}
static void
-i965_render_startup(VADriverContextP ctx)
+i965_render_startup(VADriverContextP ctx, unsigned int vb_offset)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
@@ -1203,7 +1191,7 @@ i965_render_startup(VADriverContextP ctx)
(0 << VB0_BUFFER_INDEX_SHIFT) |
VB0_VERTEXDATA |
((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
+ OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, vb_offset);
if (IS_IGDNG(i965->intel.device_id))
OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
@@ -1268,8 +1256,10 @@ i965_clear_dest_region(VADriverContextP ctx)
}
static void
-i965_surface_render_pipeline_setup(VADriverContextP ctx)
+i965_surface_render_pipeline_setup(VADriverContextP ctx, unsigned int n_rects)
{
+ unsigned int i;
+
intel_batchbuffer_start_atomic(ctx, 0x1000);
intel_batchbuffer_emit_mi_flush(ctx);
i965_clear_dest_region(ctx);
@@ -1283,13 +1273,16 @@ i965_surface_render_pipeline_setup(VADriverContextP ctx)
i965_render_cs_urb_layout(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
+ for (i = 0; i < n_rects; i++)
+ i965_render_startup(ctx, 48 * i);
intel_batchbuffer_end_atomic(ctx);
}
static void
-i965_subpic_render_pipeline_setup(VADriverContextP ctx)
+i965_subpic_render_pipeline_setup(VADriverContextP ctx, unsigned int n_rects)
{
+ unsigned int i;
+
intel_batchbuffer_start_atomic(ctx, 0x1000);
intel_batchbuffer_emit_mi_flush(ctx);
i965_render_pipeline_select(ctx);
@@ -1302,7 +1295,8 @@ i965_subpic_render_pipeline_setup(VADriverContextP ctx)
i965_render_cs_urb_layout(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
+ for (i = 0; i < n_rects; i++)
+ i965_render_startup(ctx, 48 * i);
intel_batchbuffer_end_atomic(ctx);
}
@@ -1396,45 +1390,39 @@ i965_render_initialize(VADriverContextP ctx)
void
i965_render_put_surface(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
+ unsigned int n_rects;
+
i965_render_initialize(ctx);
- i965_surface_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- i965_surface_render_pipeline_setup(ctx);
+ n_rects = i965_surface_render_state_setup(ctx, surface,
+ src_rect, dst_rect,
+ cliprects, num_cliprects);
+ i965_surface_render_pipeline_setup(ctx, n_rects);
intel_batchbuffer_flush(ctx);
}
void
i965_render_put_subpic(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(surface);
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
+ unsigned int n_rects;
assert(obj_subpic);
i965_render_initialize(ctx);
- i965_subpic_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- i965_subpic_render_pipeline_setup(ctx);
+ n_rects = i965_subpic_render_state_setup(ctx, surface, src_rect, dst_rect,
+ cliprects, num_cliprects);
+ i965_subpic_render_pipeline_setup(ctx, n_rects);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(ctx);
}
diff --git a/i965_drv_video/i965_render.h b/i965_drv_video/i965_render.h
index e3dce02..d2e23f1 100644
--- a/i965_drv_video/i965_render.h
+++ b/i965_drv_video/i965_render.h
@@ -28,6 +28,7 @@
#ifndef _I965_RENDER_H_
#define _I965_RENDER_H_
+#define MAX_CLIP_RECTS 80 /* vb_bo:4096 / vb:(3*4*4) */
#define MAX_RENDER_SURFACES 16
#define MAX_SAMPLERS 16
@@ -65,27 +66,20 @@ struct i965_render_state
Bool i965_render_init(VADriverContextP ctx);
Bool i965_render_terminate(VADriverContextP ctx);
+
void i965_render_put_surface(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth);
-
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects);
void
i965_render_put_subpic(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth);
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects);
+
#endif /* _I965_RENDER_H_ */
--
1.5.4.3

View File

@ -1,47 +0,0 @@
commit 8d0004cbd40305114bbe8019122319b43d25a772
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 8 12:34:39 2009 +0000
Fix ATTRIBUTE_HIDDEN definition if __attribute__((visibility("hidden"))) is not supported.
commit 7a8bf489ffd436d853364dd0d3c9a6734b8cc7eb
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu Sep 3 15:46:37 2009 +0000
Check for __attribute__((visibility("hidden"))).
diff --git a/configure.ac b/configure.ac
index da96872..abef435 100644
--- a/configure.ac
+++ b/configure.ac
@@ -132,6 +132,30 @@ if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdr
fi
AM_CONDITIONAL(BUILD_I965_DRIVER, test x$enable_i965_driver = xyes)
+dnl Check for __attribute__((visibility()))
+AC_CACHE_CHECK([whether __attribute__((visibility())) is supported],
+ libva_cv_visibility_attribute,
+ [cat > conftest.c <<EOF
+int foo __attribute__ ((visibility ("hidden"))) = 1;
+int bar __attribute__ ((visibility ("protected"))) = 1;
+EOF
+ libva_cv_visibility_attribute=no
+ if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ if grep '\.protected.*bar' conftest.s >/dev/null; then
+ libva_cv_visibility_attribute=yes
+ fi
+ fi
+ fi
+ rm -f conftest.[cs]
+])
+ATTRIBUTE_HIDDEN=""
+if test $libva_cv_visibility_attribute = yes; then
+ ATTRIBUTE_HIDDEN="__attribute__((visibility(\"hidden\")))"
+fi
+AC_DEFINE_UNQUOTED([ATTRIBUTE_HIDDEN], [$ATTRIBUTE_HIDDEN],
+ [Defined to __attribute__((visibility("hidden"))) when available])
+
# We only need the headers, we don't link against the DRM libraries
LIBVA_CFLAGS="$DRM_CFLAGS"
AC_SUBST(LIBVA_CFLAGS)

View File

@ -1,24 +0,0 @@
commit 11e626a3610daf0fce253ef48ab8736bce6178f9
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 12:29:56 2009 +0000
Fix vainfo dependencies (Konstantin Pavlov).
diff --git a/test/Makefile.am b/test/Makefile.am
index 58e1677..ee78d34 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -31,10 +31,10 @@ AM_CFLAGS = -I$(top_srcdir)/../../include/external/ -I$(top_srcdir)/src -I$(top_
TESTS = $(check_PROGRAMS)
-TEST_LIBS = $(top_srcdir)/src/$(libvabackendlib)
+TEST_LIBS = $(top_srcdir)/src/libva.la $(top_srcdir)/src/$(libvabackendlib)
-vainfo_LDADD = $(top_srcdir)/src/$(libvabackendlib)
-vainfo_DEPENDENCIES = $(top_srcdir)/src/$(libvabackendlib)
+vainfo_LDADD = $(top_srcdir)/src/libva.la $(top_srcdir)/src/$(libvabackendlib)
+vainfo_DEPENDENCIES = $(top_srcdir)/src/libva.la $(top_srcdir)/src/$(libvabackendlib)
vainfo_SOURCES = vainfo.c
test_01_LDADD = $(TEST_LIBS)

View File

@ -1,18 +0,0 @@
commit f0b352251894becfcec50de1430bda12c314a464
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 13:00:34 2009 +0000
Fix libva-x11 pkgconfig dependencies.
diff --git a/libva-x11.pc.in b/libva-x11.pc.in
index 75e4f0b..6dde07f 100644
--- a/libva-x11.pc.in
+++ b/libva-x11.pc.in
@@ -6,6 +6,7 @@ display=x11
Name: libva-${display}
Description: Userspace Video Acceleration (VA) ${display} interface
+Requires: libva
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lva-${display}
Cflags: -I${includedir}

View File

@ -1,21 +0,0 @@
commit 035374378644216fb3a7d3974a8c46b1bd425918
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 13:03:23 2009 +0000
Don't search LIBGL_DRIVERS_PATH, stick to LIBVA_DRIVERS_PATH only or the default path.
diff --git a/src/va.c b/src/va.c
index 12662cd..723235e 100644
--- a/src/va.c
+++ b/src/va.c
@@ -134,10 +134,6 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
{
/* don't allow setuid apps to use LIBVA_DRIVERS_PATH */
search_path = getenv("LIBVA_DRIVERS_PATH");
- if (!search_path)
- {
- search_path = getenv("LIBGL_DRIVERS_PATH");
- }
}
if (!search_path)
{

View File

@ -1,25 +0,0 @@
From 332bfec6020b5cfcef5d655f4bf525dab67c0b92 Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed, 24 Jun 2009 08:12:13 +0000
Subject: [PATCH] Install drivers into pkglibdir/va/.
---
configure.ac | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4be2b56..d595ac9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,7 @@ AC_ARG_ENABLE(i965-driver,
AC_ARG_WITH(drivers-path,
[AC_HELP_STRING([--with-drivers-path=[[path]]], [drivers path])],,
- [with_drivers_path="$libdir/dri"])
+ [with_drivers_path="$libdir/va/drivers"])
LIBVA_DRIVERS_PATH="$with_drivers_path"
AC_SUBST(LIBVA_DRIVERS_PATH)
--
1.5.4.3

View File

@ -1,542 +0,0 @@
commit fb6ccda5984eda96bcb394b23255143dcbc21f18
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu Sep 10 12:22:17 2009 +0000
Don't link against libdrm to workaround XvBA / fglrx >= 8.66-RC1 bugs.
commit ab3c0f65182462b54729d2d82d4d645c8be5b2d1
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Sep 9 13:24:46 2009 +0000
Fix DRM device opening with fglrx >= 8.66-RC1.
diff --git a/src/x11/Makefile.am b/src/x11/Makefile.am
index c70380d..b6916f2 100644
--- a/src/x11/Makefile.am
+++ b/src/x11/Makefile.am
@@ -25,6 +25,6 @@ noinst_LTLIBRARIES = libva_x11.la
libva_x11includedir = ${includedir}/va
libva_x11include_HEADERS = va_x11.h va_dri.h va_dri2.h va_dricommon.h
-libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c
+libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c libdrm_glue.c
-EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h
+EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h libdrm_glue.h
diff --git a/src/x11/dri1_util.c b/src/x11/dri1_util.c
index b3db5b4..3bd490f 100644
--- a/src/x11/dri1_util.c
+++ b/src/x11/dri1_util.c
@@ -1,10 +1,12 @@
+#include "config.h"
+#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <assert.h>
-#include <xf86drm.h>
+#include "libdrm_glue.h"
#include "X11/Xlib.h"
#include "va.h"
@@ -21,6 +23,75 @@ struct dri1_drawable
int height;
};
+static int
+firegl_drmOpenMinor(int minor)
+{
+ char buf[64];
+ int fd;
+
+ sprintf(buf, "/dev/ati/card%d", minor);
+ if ((fd = open(buf, O_RDWR, 0)) >= 0)
+ return fd;
+ return -1;
+}
+
+static int
+firegl_drmOpenByBusID(const char *busid)
+{
+ int i, fd;
+ drmSetVersion sv;
+ const char *buf;
+
+ for (i = 0; i < DRM_MAX_MINOR; i++) {
+ if ((fd = firegl_drmOpenMinor(i)) < 0)
+ continue;
+ sv.drm_di_major = 1;
+ sv.drm_di_minor = 1;
+ sv.drm_dd_major = -1;
+ sv.drm_dd_minor = -1;
+ libdrm_drmSetInterfaceVersion(fd, &sv);
+ buf = libdrm_drmGetBusid(fd);
+ if (buf && strcasecmp(buf, busid) == 0) { /* XXX: drmMatchBusID() */
+ libdrm_drmFreeBusid(buf);
+ return fd;
+ }
+ if (buf)
+ libdrm_drmFreeBusid(buf);
+ close(fd);
+ }
+ return -1;
+}
+
+static int
+drm_open_once(struct dri_state *dri_state, const char *BusID, int *newlyopened)
+{
+ dri_state->driConnectedFlag = VA_NONE;
+ dri_state->fd = libdrm_drmOpenOnce(NULL, BusID, newlyopened);
+ if (dri_state->fd < 0) {
+ dri_state->fd = firegl_drmOpenByBusID(BusID);
+ if (dri_state->fd >= 0) {
+ *newlyopened = 1;
+ dri_state->driConnectedFlag |= VA_DRI_AMD;
+ }
+ }
+ return dri_state->fd;
+}
+
+static void
+drm_close_once(struct dri_state *dri_state)
+{
+ /* XXX: dri_state->close() doesn't seem to be called, thus this
+ function is never called either */
+ if (dri_state->fd < 0)
+ return;
+ if (dri_state->driConnectedFlag & VA_DRI_AMD)
+ close(dri_state->fd);
+ else
+ libdrm_drmCloseOnce(dri_state->fd);
+ dri_state->fd = -1;
+ dri_state->driConnectedFlag = VA_NONE;
+}
+
static struct dri_drawable *
dri1CreateDrawable(VADriverContextP ctx, XID x_drawable)
{
@@ -64,9 +135,9 @@ dri1Close(VADriverContextP ctx)
free_drawable_hashtable(ctx);
VA_DRIDestroyContext(ctx->x11_dpy, ctx->x11_screen, dri_state->hwContextID);
assert(dri_state->pSAREA != MAP_FAILED);
- drmUnmap(dri_state->pSAREA, SAREA_MAX);
+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX);
assert(dri_state->fd >= 0);
- drmCloseOnce(dri_state->fd);
+ drm_close_once(dri_state);
VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
}
@@ -104,21 +175,20 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
&dri_state->hSAREA, &BusID))
goto err_out0;
-
- dri_state->fd = drmOpenOnce(NULL, BusID, &newlyopened);
+ drm_open_once(dri_state, BusID, &newlyopened);
XFree(BusID);
if (dri_state->fd < 0)
goto err_out1;
- if (drmGetMagic(dri_state->fd, &magic))
+ if (libdrm_drmGetMagic(dri_state->fd, &magic))
goto err_out1;
if (newlyopened && !VA_DRIAuthConnection(ctx->x11_dpy, ctx->x11_screen, magic))
goto err_out1;
- if (drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA))
+ if (libdrm_drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA))
goto err_out1;
if (!VA_DRICreateContext(ctx->x11_dpy, ctx->x11_screen,
@@ -127,7 +196,8 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
&dri_state->hwContextID, &dri_state->hwContext))
goto err_out1;
- dri_state->driConnectedFlag = VA_DRI1;
+ dri_state->driConnectedFlag &= VA_DRI_AMD; /* clear flags but AMD bit */
+ dri_state->driConnectedFlag |= VA_DRI1;
dri_state->createDrawable = dri1CreateDrawable;
dri_state->destroyDrawable = dri1DestroyDrawable;
dri_state->swapBuffer = dri1SwapBuffer;
@@ -138,10 +208,10 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
err_out1:
if (dri_state->pSAREA != MAP_FAILED)
- drmUnmap(dri_state->pSAREA, SAREA_MAX);
+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX);
if (dri_state->fd >= 0)
- drmCloseOnce(dri_state->fd);
+ drm_close_once(dri_state);
VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
diff --git a/src/x11/dri2_util.c b/src/x11/dri2_util.c
index ebe7a2c..b727e97 100644
--- a/src/x11/dri2_util.c
+++ b/src/x11/dri2_util.c
@@ -3,7 +3,7 @@
#include <unistd.h>
#include <assert.h>
-#include <xf86drm.h>
+#include "libdrm_glue.h"
#include <X11/Xlibint.h>
#include <X11/Xlib.h>
@@ -166,7 +166,7 @@ isDRI2Connected(VADriverContextP ctx, char **driver_name)
if (dri_state->fd < 0)
goto err_out;
- if (drmGetMagic(dri_state->fd, &magic))
+ if (libdrm_drmGetMagic(dri_state->fd, &magic))
goto err_out;
if (!VA_DRI2Authenticate(ctx->x11_dpy, RootWindow(ctx->x11_dpy, ctx->x11_screen),
diff --git a/src/x11/libdrm_glue.c b/src/x11/libdrm_glue.c
new file mode 100644
index 0000000..b72a2d1
--- /dev/null
+++ b/src/x11/libdrm_glue.c
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#define _GNU_SOURCE 1
+#include "libdrm_glue.h"
+#include <stdio.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <assert.h>
+
+#define LOAD_FUNC_(NAME, RET, ARGS, FALLBACK) \
+ static RET (*lib_##NAME) ARGS; \
+ if (lib_##NAME == NULL) { \
+ lib_##NAME = libdrm_symbol(#NAME); \
+ if (!lib_##NAME) \
+ lib_##NAME = FALLBACK; \
+ } \
+ assert(lib_##NAME != NULL)
+
+#define LOAD_FUNC(NAME, RET, ARGS) \
+ LOAD_FUNC_(NAME, RET, ARGS, NULL)
+
+static void *libdrm_handle;
+static int libdrm_handle_ok = -1;
+
+static inline void *libdrm_symbol(const char *name)
+{
+ if (!libdrm_open())
+ return NULL;
+ return dlsym(libdrm_handle, name);
+}
+
+int libdrm_open(void)
+{
+ if (libdrm_handle_ok < 0) {
+ libdrm_handle = dlopen("libdrm.so.2", RTLD_LOCAL|RTLD_LAZY);
+ libdrm_handle_ok = libdrm_handle != NULL;
+ }
+ assert(libdrm_handle);
+ return libdrm_handle_ok;
+}
+
+void libdrm_close(void)
+{
+ if (libdrm_handle)
+ dlclose(libdrm_handle);
+}
+
+// Default drmOpenOnce() and drmCloseOnce() implementations based on current GIT
+#define DRM_MAX_FDS 16
+static struct {
+ char *BusID;
+ int fd;
+ int refcount;
+} connection[DRM_MAX_FDS];
+
+static int nr_fds = 0;
+
+// Default implementation for drmOpenOnce() if none exists in the library
+static int
+libdrm_default_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+{
+ int i;
+ int fd;
+
+ for (i = 0; i < nr_fds; i++)
+ if (strcmp(BusID, connection[i].BusID) == 0) {
+ connection[i].refcount++;
+ *newlyopened = 0;
+ return connection[i].fd;
+ }
+
+ fd = libdrm_drmOpen(unused, BusID);
+ if (fd <= 0 || nr_fds == DRM_MAX_FDS)
+ return fd;
+
+ connection[nr_fds].BusID = strdup(BusID);
+ connection[nr_fds].fd = fd;
+ connection[nr_fds].refcount = 1;
+ *newlyopened = 1;
+
+ if (0)
+ fprintf(stderr, "saved connection %d for %s %d\n",
+ nr_fds, connection[nr_fds].BusID,
+ strcmp(BusID, connection[nr_fds].BusID));
+ nr_fds++;
+ return fd;
+}
+
+// Default implementation for drmCloseOnce() if none exists in the library
+static void libdrm_default_drmCloseOnce(int fd)
+{
+ int i;
+
+ for (i = 0; i < nr_fds; i++) {
+ if (fd == connection[i].fd) {
+ if (--connection[i].refcount == 0) {
+ libdrm_drmClose(connection[i].fd);
+ free(connection[i].BusID);
+ if (i < --nr_fds)
+ connection[i] = connection[nr_fds];
+ return;
+ }
+ }
+ }
+}
+
+// Determine whether the DRM kernel driver has been loaded
+int libdrm_drmAvailable(void)
+{
+ LOAD_FUNC(drmAvailable, int, (void));
+ return lib_drmAvailable();
+}
+
+// Open the DRM device
+int libdrm_drmOpen(const char *name, const char *busid)
+{
+ LOAD_FUNC(drmOpen, int, (const char *, const char *));
+ return lib_drmOpen(name, busid);
+}
+
+// Close the device
+int libdrm_drmClose(int fd)
+{
+ LOAD_FUNC(drmClose, int, (int));
+ return lib_drmClose(fd);
+}
+
+// Open the DRM device (re-use an existing connection)
+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+{
+ LOAD_FUNC_(drmOpenOnce, int, (void *, const char *, int *),
+ libdrm_default_drmOpenOnce);
+ return lib_drmOpenOnce(unused, BusID, newlyopened);
+}
+
+// Close the device (unref an existing connection prior to actually closing it)
+void libdrm_drmCloseOnce(int fd)
+{
+ LOAD_FUNC_(drmCloseOnce, void, (int), libdrm_default_drmCloseOnce);
+ lib_drmCloseOnce(fd);
+}
+
+// DRM connection cookie
+int libdrm_drmGetMagic(int fd, drm_magic_t * magic)
+{
+ LOAD_FUNC(drmGetMagic, int, (int, drm_magic_t *));
+ return lib_drmGetMagic(fd, magic);
+}
+
+// Issue a set-version ioctl
+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version)
+{
+ LOAD_FUNC(drmSetInterfaceVersion, int, (int, drmSetVersion *));
+ return lib_drmSetInterfaceVersion(fd, version);
+}
+
+// Get the bus ID of the device
+char *libdrm_drmGetBusid(int fd)
+{
+ LOAD_FUNC(drmGetBusid, char *, (int));
+ return lib_drmGetBusid(fd);
+}
+
+// Free the bus ID information
+void libdrm_drmFreeBusid(const char *busid)
+{
+ LOAD_FUNC(drmFreeBusid, void, (const char *));
+ lib_drmFreeBusid(busid);
+}
+
+// Map a region of memory
+int libdrm_drmMap(int fd,
+ drm_handle_t handle,
+ drmSize size,
+ drmAddressPtr address)
+{
+ LOAD_FUNC(drmMap, int, (int, drm_handle_t, drmSize, drmAddressPtr));
+ return lib_drmMap(fd, handle, size, address);
+}
+
+// Unmap mappings obtained with drmMap()
+int libdrm_drmUnmap(drmAddress address, drmSize size)
+{
+ LOAD_FUNC(drmUnmap, int, (drmAddress, drmSize));
+ return lib_drmUnmap(address, size);
+}
diff --git a/src/x11/libdrm_glue.h b/src/x11/libdrm_glue.h
new file mode 100644
index 0000000..878470b
--- /dev/null
+++ b/src/x11/libdrm_glue.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef LIBDRM_GLUE_H
+#define LIBDRM_GLUE_H
+
+#include "config.h"
+#include <xf86drm.h>
+
+int libdrm_open(void)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_close(void)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmAvailable(void)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmOpen(const char *name, const char *busid)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmClose(int fd)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_drmCloseOnce(int fd)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmGetMagic(int fd, drm_magic_t * magic)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version)
+ ATTRIBUTE_HIDDEN;
+
+char *libdrm_drmGetBusid(int fd)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_drmFreeBusid(const char *busid)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmMap(int fd,
+ drm_handle_t handle,
+ drmSize size,
+ drmAddressPtr address)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmUnmap(drmAddress address, drmSize size)
+ ATTRIBUTE_HIDDEN;
+
+#endif /* LIBDRM_GLUE_H */
diff --git a/src/x11/va_dricommon.h b/src/x11/va_dricommon.h
index a2a51a6..0da35fe 100644
--- a/src/x11/va_dricommon.h
+++ b/src/x11/va_dricommon.h
@@ -13,7 +13,8 @@ enum
{
VA_NONE = 0,
VA_DRI1 = 1,
- VA_DRI2 = 2
+ VA_DRI2 = 2,
+ VA_DRI_AMD = 4 /* AMD DRI implementation */
};
union dri_buffer
diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c
index b8c60fa..414c261 100644
--- a/src/x11/va_x11.c
+++ b/src/x11/va_x11.c
@@ -31,6 +31,7 @@
#include "va_dri2.h"
#include "va_dricommon.h"
#include "va_nvctrl.h"
+#include "libdrm_glue.h"
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
@@ -94,6 +75,8 @@ static void va_DisplayContextDestroy (
}
ctx = &((*ctx)->pNext);
}
+
+ libdrm_close();
free(pDisplayContext->pDriverContext->dri_state);
free(pDisplayContext->pDriverContext);
free(pDisplayContext);
diff --git a/src/Makefile.am b/src/Makefile.am
index e50a15f..d1f8f70 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -45,7 +45,7 @@ libva_la_LDFLAGS = $(LDADD) -no-undefined
libva_la_LIBADD = $(LIBVA_LIBS) -ldl
libva_x11_la_SOURCES =
-libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(DRM_LIBS) $(XFIXES_LIBS)
+libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(XFIXES_LIBS) -ldl
libva_x11_la_LDFLAGS = $(LDADD)
libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la

View File

@ -1,312 +0,0 @@
commit d91645f8b37aa43bafa76da3146dcdc9c17963ff
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Nov 20 15:51:22 2009 +0000
Fix detection of fglrx.
diff --git a/src/x11/Makefile.am b/src/x11/Makefile.am
index b6916f2..0b61c33 100644
--- a/src/x11/Makefile.am
+++ b/src/x11/Makefile.am
@@ -25,6 +25,23 @@ noinst_LTLIBRARIES = libva_x11.la
libva_x11includedir = ${includedir}/va
libva_x11include_HEADERS = va_x11.h va_dri.h va_dri2.h va_dricommon.h
-libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c libdrm_glue.c
+libva_x11_la_SOURCES = \
+ dri1_util.c \
+ dri2_util.c \
+ libdrm_glue.c \
+ va_dri.c \
+ va_dri2.c \
+ va_dricommon.c \
+ va_fglext.c \
+ va_nvctrl.c \
+ va_x11.c \
+ $(NULL)
-EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h libdrm_glue.h
+EXTRA_DIST = \
+ libdrm_glue.h \
+ va_dri2str.h \
+ va_dri2tokens.h \
+ va_dristr.h \
+ va_fglext.h \
+ va_nvctrl.h \
+ $(NULL)
diff --git a/src/x11/va_fglext.c b/src/x11/va_fglext.c
new file mode 100644
index 0000000..bc58e8b
--- /dev/null
+++ b/src/x11/va_fglext.c
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#define _GNU_SOURCE 1
+#include <string.h>
+
+#define NEED_REPLIES
+#include <stdlib.h>
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include "va_fglext.h"
+
+#define ATIFGL_EXTENSION_NAME "ATIFGLEXTENSION"
+#define ATIFGL_EXTENSION_EVENTS 0
+
+typedef struct _FGLGetDriverData {
+ CARD8 reqType;
+ CARD8 fireglReqType;
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD16 size B16;
+ CARD16 pad1;
+} xFGLGetDriverDataReq;
+#define sz_xFGLGetDriverDataReq sizeof(xFGLGetDriverDataReq)
+
+typedef struct {
+ BYTE type;
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD8 majorVersion;
+ CARD8 minorVersion;
+ CARD8 patchlevel B16;
+ CARD8 BIOSVersionMajor;
+ CARD8 BIOSVersionMinor;
+ CARD8 HasSecondary;
+ CARD16 pad3 B16;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+ // ... there are more fields
+} xFGLGetDriverDataReply;
+#define sz_xFGLGetDriverDataReply sizeof(xFGLGetDriverDataReply)
+
+#define X_FGLGetDriverData 0
+
+static XExtensionInfo _fglext_ext_info_data;
+static XExtensionInfo *fglext_ext_info = &_fglext_ext_info_data;
+static /* const */ char *fglext_extension_name = ATIFGL_EXTENSION_NAME;
+
+#define xFGLCheckExtension(dpy,i,val) \
+ XextCheckExtension (dpy, i, fglext_extension_name, val)
+
+static int close_display();
+static /* const */ XExtensionHooks fglext_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ NULL, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, fglext_ext_info,
+ fglext_extension_name,
+ &fglext_extension_hooks,
+ ATIFGL_EXTENSION_EVENTS, NULL)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, fglext_ext_info)
+
+Bool VA_FGLEXTQueryDirectRenderingCapable( Display *dpy, int screen,
+ Bool *isCapable )
+{
+ char **extensions;
+ int i, n_extensions, has_fglext = 0, has_fglrxdri = 0;
+
+ if (isCapable)
+ *isCapable = False;
+
+ extensions = XListExtensions(dpy, &n_extensions);
+ if (!extensions)
+ return False;
+
+ for (i = 0; i < n_extensions; i++) {
+ if (strcmp(extensions[i], ATIFGL_EXTENSION_NAME) == 0)
+ has_fglext = 1;
+ if (strcmp(extensions[i], "ATIFGLRXDRI") == 0)
+ has_fglrxdri = 1;
+ }
+ XFreeExtensionList(extensions);
+
+ if (!has_fglext)
+ return False;
+
+ if (isCapable)
+ *isCapable = has_fglrxdri;
+
+ return True;
+}
+
+Bool VA_FGLEXTGetClientDriverName( Display *dpy, int screen,
+ int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+ int *ddxDriverPatchVersion, char **clientDriverName )
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xFGLGetDriverDataReply rep;
+ xFGLGetDriverDataReq *req;
+
+ if (ddxDriverMajorVersion)
+ *ddxDriverMajorVersion = 0;
+ if (ddxDriverMinorVersion)
+ *ddxDriverMinorVersion = 0;
+ if (ddxDriverPatchVersion)
+ *ddxDriverPatchVersion = 0;
+ if (clientDriverName)
+ *clientDriverName = NULL;
+
+ if(!XextHasExtension(info))
+ return False;
+
+ xFGLCheckExtension (dpy, info, False);
+
+ LockDisplay (dpy);
+ GetReq (FGLGetDriverData, req);
+ req->reqType = info->codes->major_opcode;
+ req->fireglReqType = X_FGLGetDriverData;
+ req->screen = screen;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return False;
+ }
+ UnlockDisplay (dpy);
+ SyncHandle ();
+
+ if (ddxDriverMajorVersion)
+ *ddxDriverMajorVersion = rep.majorVersion;
+ if (ddxDriverMinorVersion)
+ *ddxDriverMinorVersion = rep.minorVersion;
+ if (ddxDriverPatchVersion)
+ *ddxDriverPatchVersion = rep.patchlevel;
+ if (clientDriverName)
+ *clientDriverName = strdup("fglrx");
+
+ return True;
+}
diff --git a/src/x11/va_fglext.h b/src/x11/va_fglext.h
new file mode 100644
index 0000000..f2d87c3
--- /dev/null
+++ b/src/x11/va_fglext.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef VA_FGLEXTLIB_H
+#define VA_FGLEXTLIB_H
+
+#include <X11/Xlib.h>
+
+Bool VA_FGLEXTQueryDirectRenderingCapable( Display *dpy, int screen,
+ Bool *isCapable );
+
+Bool VA_FGLEXTGetClientDriverName( Display *dpy, int screen,
+ int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+ int *ddxDriverPatchVersion, char **clientDriverName );
+
+#endif /* VA_FGLEXTLIB_H */
diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c
index 414c261..0510e00 100644
--- a/src/x11/va_x11.c
+++ b/src/x11/va_x11.c
@@ -31,6 +31,7 @@
#include "va_dri2.h"
#include "va_dricommon.h"
#include "va_nvctrl.h"
+#include "va_fglext.h"
#include "libdrm_glue.h"
#include <stdio.h>
#include <stdarg.h>
@@ -132,6 +133,29 @@ static VAStatus va_NVCTRL_GetDriverName (
return VA_STATUS_SUCCESS;
}
+static VAStatus va_FGLEXT_GetDriverName(
+ VADisplayContextP pDisplayContext,
+ char **driver_name
+)
+{
+ VADriverContextP ctx = pDisplayContext->pDriverContext;
+ int direct_capable, driver_major, driver_minor, driver_patch;
+ Bool result;
+
+ result = VA_FGLEXTQueryDirectRenderingCapable(ctx->x11_dpy, ctx->x11_screen,
+ &direct_capable);
+ if (!result || !direct_capable)
+ return VA_STATUS_ERROR_UNKNOWN;
+
+ result = VA_FGLEXTGetClientDriverName(ctx->x11_dpy, ctx->x11_screen,
+ &driver_major, &driver_minor,
+ &driver_patch, driver_name);
+ if (!result)
+ return VA_STATUS_ERROR_UNKNOWN;
+
+ return VA_STATUS_SUCCESS;
+}
+
static VAStatus va_DisplayContextGetDriverName (
VADisplayContextP pDisplayContext,
char **driver_name
@@ -156,7 +180,8 @@ static VAStatus va_DisplayContextGetDriverName (
vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name);
if (vaStatus != VA_STATUS_SUCCESS)
vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name);
-
+ if (vaStatus != VA_STATUS_SUCCESS)
+ vaStatus = va_FGLEXT_GetDriverName(pDisplayContext, driver_name);
return vaStatus;
}

View File

@ -1,87 +0,0 @@
commit 890acc1975ed9f6b7173ff6fbf9d689943590913
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Jun 24 11:32:40 2009 +0000
Explicit API extensions from SDS.
diff --git a/configure.ac b/configure.ac
index 3999dc4..17b0403 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,9 @@ m4_define([libva_micro_version], [0])
m4_define([libva_version],
[libva_major_version.libva_minor_version.libva_micro_version])
+# increase this number for each API change
+m4_define([libva_sds_version], [4])
+
# if the library source code has changed, increment revision
m4_define([libva_lt_revision], [0])
# if any interface was added/removed/changed, then inc current, reset revision
@@ -52,11 +55,14 @@ AC_SUBST(LIBVA_MINOR_VERSION)
AC_SUBST(LIBVA_MICRO_VERSION)
AC_SUBST(LIBVA_VERSION)
+LIBVA_SDS_VERSION=libva_sds_version
+AC_SUBST(LIBVA_SDS_VERSION)
+
LIBVA_LT_CURRENT=libva_lt_current
LIBVA_LT_REV=libva_lt_revision
LIBVA_LT_AGE=libva_lt_age
LIBVA_LT_VERSION="$LIBVA_LT_CURRENT:$LIBVA_LT_REV:$LIBVA_LT_AGE"
-LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION"
+LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION -release $LIBVA_VERSION.$LIBVA_SDS_VERSION"
AC_SUBST(LIBVA_LT_VERSION)
AC_SUBST(LIBVA_LT_LDFLAGS)
diff --git a/src/va.c b/src/va.c
index f9791f8..b60ac12 100644
--- a/src/va.c
+++ b/src/va.c
@@ -35,6 +35,7 @@
#include <linux/videodev2.h>
#define DRIVER_INIT_FUNC "__vaDriverInit_0_31"
+#define DRIVER_INIT_FUNC_SDS "__vaDriverInit_0_31_sds"
#define DRIVER_EXTENSION "_drv_video.so"
@@ -160,6 +161,11 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
if (!init_func)
{
+ /* Then try SDS extensions (VDPAU and XvBA backends) */
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_SDS);
+ }
+ if (!init_func)
+ {
va_errorMessage("%s has no function %s\n", driver_path, DRIVER_INIT_FUNC);
dlclose(handle);
}
diff --git a/src/va_version.h.in b/src/va_version.h.in
index c9ea97a..197c482 100644
--- a/src/va_version.h.in
+++ b/src/va_version.h.in
@@ -47,6 +47,13 @@
#define VA_MICRO_VERSION (@LIBVA_MICRO_VERSION@)
/**
+ * VA_SDS_VERSION:
+ *
+ * The version of the SDS API extensions to the VA library
+ */
+#define VA_SDS_VERSION (@LIBVA_SDS_VERSION@)
+
+/**
* VA_VERSION:
*
* The full version of the VA library, like 1.2.3
@@ -59,7 +66,7 @@
* The full version of the VA library, in string form (suited for
* string concatenation)
*/
-#define VA_VERSION_S "@LIBVA_VERSION@"
+#define VA_VERSION_S "@LIBVA_VERSION@-sds@LIBVA_SDS_VERSION@"
/**
* VA_VERSION_HEX:

View File

@ -1,26 +0,0 @@
commit 3c2d45290e1369083a27d53a5f94276c82512974
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Mon Nov 23 12:21:24 2009 +0000
Add extra picture info fields for VDPAU/MPEG-4.
diff --git a/src/va.h b/src/va.h
index fa34850..f89a5cb 100755
--- a/src/va.h
+++ b/src/va.h
@@ -672,6 +672,7 @@ typedef struct _VAPictureParameterBufferMPEG4
unsigned int quarter_sample : 1;
unsigned int data_partitioned : 1;
unsigned int reversible_vlc : 1;
+ unsigned int resync_marker_disable : 1;
} bits;
unsigned int value;
} vol_fields;
@@ -692,6 +693,7 @@ typedef struct _VAPictureParameterBufferMPEG4
} vop_fields;
unsigned char vop_fcode_forward;
unsigned char vop_fcode_backward;
+ unsigned short vop_time_increment_resolution;
/* short header related */
unsigned char num_gobs_in_vop;
unsigned char num_macroblocks_in_gob;

View File

@ -1,60 +0,0 @@
commit c682fb5ebd1964638f90590f66edf49629e7481d
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Aug 21 11:34:50 2009 +0000
Move vaPutSurface() flags to <va/va.h> header.
diff --git a/src/va.h b/src/va.h
index 0519f6f..6b4bbd4 100755
--- a/src/va.h
+++ b/src/va.h
@@ -127,6 +127,22 @@ typedef int VAStatus; /* Return status type from functions */
#define VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED 0x00000013
#define VA_STATUS_ERROR_UNKNOWN 0xFFFFFFFF
+/* De-interlacing flags for vaPutSurface() */
+#define VA_FRAME_PICTURE 0x00000000
+#define VA_TOP_FIELD 0x00000001
+#define VA_BOTTOM_FIELD 0x00000002
+
+/*
+ * Clears the drawable with background color.
+ * for hardware overlay based implementation this flag
+ * can be used to turn off the overlay
+ */
+#define VA_CLEAR_DRAWABLE 0x00000008
+
+/* Color space conversion flags for vaPutSurface() */
+#define VA_SRC_BT601 0x00000010
+#define VA_SRC_BT709 0x00000020
+
/*
* Returns a short english description of error_status
*/
diff --git a/src/x11/va_x11.h b/src/x11/va_x11.h
index 2171ac6..5ab5200 100644
--- a/src/x11/va_x11.h
+++ b/src/x11/va_x11.h
@@ -27,22 +27,6 @@ VADisplay vaGetDisplay (
* color space conversion and scaling to the destination
* rectangle
*/
-/* de-interlacing flags for vaPutSurface */
-#define VA_FRAME_PICTURE 0x00000000
-#define VA_TOP_FIELD 0x00000001
-#define VA_BOTTOM_FIELD 0x00000002
-
-/*
- * clears the drawable with background color.
- * for hardware overlay based implementation this flag
- * can be used to turn off the overlay
- */
-#define VA_CLEAR_DRAWABLE 0x00000008
-
-/* color space conversion flags for vaPutSurface */
-#define VA_SRC_BT601 0x00000010
-#define VA_SRC_BT709 0x00000020
-
VAStatus vaPutSurface (
VADisplay dpy,
VASurfaceID surface,

View File

@ -1,212 +0,0 @@
commit f0b352251894becfcec50de1430bda12c314a464
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 13:00:34 2009 +0000
Fix libva-glx pkgconfig dependencies.
commit df0953a951d8a2e5e4b0a28a95ae0f1ac735726e
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 8 12:25:14 2009 +0000
Add generic VA/GLX implementation with TFP and FBO.
commit f640b1cf9eab4e5d478239b608ed0d8b68f6c5f6
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 8 12:15:35 2009 +0000
Move GLX VTable to a new file.
commit 70d9cb6d1aa2fc2dde6646f3b692433e0d93d431
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Aug 28 11:15:51 2009 +0000
Add OpenGL extensions (v3).
diff --git a/Makefile.am b/Makefile.am
index 07385e6..6fb4cae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,10 +32,13 @@ endif
pcfiles = libva.pc
pcfiles += libva-x11.pc
+if USE_GLX
+pcfiles += libva-glx.pc
+endif
pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = $(pcfiles)
-EXTRA_DIST = libva.pc.in libva-x11.pc.in
+EXTRA_DIST = libva.pc.in libva-x11.pc.in libva-glx.pc.in
CLEANFILES = $(pcfiles)
diff --git a/configure.ac b/configure.ac
index c3aba90..abef435 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,6 +55,11 @@ AC_SUBST(LIBVA_MINOR_VERSION)
AC_SUBST(LIBVA_LT_VERSION)
AC_SUBST(LIBVA_LT_LDFLAGS)
+AC_ARG_ENABLE(glx,
+ [AC_HELP_STRING([--enable-glx],
+ [build with OpenGL for X11 support])],
+ [], [enable_glx=yes])
+
AC_ARG_ENABLE(dummy-driver,
[AC_HELP_STRING([--enable-dummy-driver],
[build dummy video driver])],
@@ -100,6 +132,23 @@ if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdr
AC_DEFINE_UNQUOTED([ATTRIBUTE_HIDDEN], [$ATTRIBUTE_HIDDEN],
[Defined to __attribute__((visibility("hidden"))) when available])
+# Check for OpenGL (X11)
+USE_GLX="no"
+GL_DEPS_CFLAGS=""
+GL_DEPS_LIBS=""
+
+if test x$enable_glx = xyes; then
+ AC_CHECK_HEADERS([GL/gl.h])
+ AC_CHECK_HEADERS([GL/glx.h])
+ AC_CHECK_LIB(GL, glXCreateContext, [
+ USE_GLX="yes"
+ GL_DEPS_LIBS="-lX11 -lGL"
+ ])
+fi
+AC_SUBST(GL_DEPS_CFLAGS)
+AC_SUBST(GL_DEPS_LIBS)
+AM_CONDITIONAL(USE_GLX, test "$USE_GLX" = "yes")
+
# We only need the headers, we don't link against the DRM libraries
LIBVA_CFLAGS="$DRM_CFLAGS"
AC_SUBST(LIBVA_CFLAGS)
@@ -119,6 +192,7 @@ AC_OUTPUT([
src/Makefile
src/va_version.h
src/x11/Makefile
+ src/glx/Makefile
dummy_drv_video/Makefile
i965_drv_video/Makefile
i965_drv_video/shaders/Makefile
@@ -128,5 +202,6 @@ AC_OUTPUT([
test/Makefile
libva.pc
libva-x11.pc
+ libva-glx.pc
])
diff --git a/libva-glx.pc.in b/libva-glx.pc.in
new file mode 100644
index 0000000..20ba20a
--- /dev/null
+++ b/libva-glx.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+display=glx
+
+Name: libva-${display}
+Description: Userspace Video Acceleration (VA) ${display} interface
+Requires: libva
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lva-${display}
+Cflags: -I${includedir}
diff --git a/src/Makefile.am b/src/Makefile.am
index 2f4210a..e50a15f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -28,9 +28,17 @@ INCLUDES = \
LDADD = \
$(LIBVA_LT_LDFLAGS)
-lib_LTLIBRARIES = \
- libva.la \
- libva-x11.la
+libva_x11_backend = libva-x11.la
+libva_x11_backenddir = x11
+if USE_GLX
+libva_glx_backend = libva-glx.la
+libva_glx_backenddir = glx
+else
+libva_glx_backend =
+libva_glx_backenddir =
+endif
+
+lib_LTLIBRARIES = libva.la $(libva_x11_backend) $(libva_glx_backend)
libva_ladir = $(libdir)
libva_la_LDFLAGS = $(LDADD) -no-undefined
@@ -41,7 +49,14 @@ libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS
libva_x11_la_LDFLAGS = $(LDADD)
libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
-SUBDIRS = x11
+libva_glx_la_SOURCES =
+libva_glx_la_LIBADD = $(libvacorelib) glx/libva_glx.la libva-x11.la $(GL_DEPS_LIBS) -ldl
+libva_glx_la_LDFLAGS = $(LDADD)
+libva_glx_la_DEPENDENCIES = $(libvacorelib) glx/libva_glx.la libva-x11.la
+
+SUBDIRS = $(libva_x11_backenddir) $(libva_glx_backenddir)
+
+DIST_SUBDIRS = x11 glx
libva_la_SOURCES = va.c
diff --git a/src/va_backend.h b/src/va_backend.h
index 6f858f5..8f722a3 100644
--- a/src/va_backend.h
+++ b/src/va_backend.h
@@ -32,9 +32,11 @@
#ifdef IN_LIBVA
#include "va.h"
#include "x11/va_x11.h"
+#include "glx/va_backend_glx.h"
#else
#include <va/va.h>
#include <va/va_x11.h>
+#include <va/va_backend_glx.h>
#endif
#include <stdlib.h>
@@ -372,6 +374,9 @@ struct VADriverVTable
unsigned int *chroma_v_offset,
void **buffer
);
+
+ /* Optional: GLX support hooks */
+ struct VADriverVTableGLX glx;
};
struct VADriverContext
@@ -394,6 +399,7 @@ struct VADriverContext
void *handle; /* dlopen handle */
void *dri_state;
+ void *glx; /* opaque for GLX code */
};
struct VADisplayContext
@@ -413,6 +420,8 @@ struct VADisplayContext
VADisplayContextP ctx,
char **driver_name
);
+
+ void *opaque; /* opaque for display extensions (e.g. GLX) */
};
typedef VAStatus (*VADriverInit) (
diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c
index 9de904e..b8c60fa 100644
--- a/src/x11/va_x11.c
+++ b/src/x11/va_x11.c
@@ -243,6 +243,7 @@ VADisplay vaGetDisplay (
pDisplayContext->vaIsValid = va_DisplayContextIsValid;
pDisplayContext->vaDestroy = va_DisplayContextDestroy;
pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName;
+ pDisplayContext->opaque = NULL;
pDisplayContexts = pDisplayContext;
pDriverContext->dri_state = dri_state;
dpy = (VADisplay)pDisplayContext;

View File

@ -1,135 +0,0 @@
commit 483bc9e67afa9bcd8f99f08a74a78e7dfad4651f
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu Jul 2 09:24:04 2009 +0000
Fix make dist (va_compat_template.h).
commit 0e0da9ea861f14e8129767dbf6f11be5c051d85f
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Jun 24 11:40:56 2009 +0000
Add compatibility layer with original libva 0.29.
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -44,7 +44,7 @@ libva_x11_la_DEPENDENCIES = $(libvacorelib)
libva_x11_la_DEPENDENCIES = $(libvacorelib)
-libva_la_SOURCES = va.c
+libva_la_SOURCES = va.c va_compat.c
libvaincludedir = ${includedir}/va
libvainclude_HEADERS = va.h va_backend.h va_version.h
@@ -53,4 +53,8 @@ DISTCLEANFILES = \
va_version.h
EXTRA_DIST = \
- va_version.h.in
+ va_version.h.in \
+ va_compat.h \
+ va_compat_template.h
+
+va_compat.c: va_compat_template.h
--- a/src/va.c
+++ b/src/va.c
@@ -25,6 +25,7 @@
#define _GNU_SOURCE 1
#include "va.h"
#include "va_backend.h"
+#include "va_compat.h"
#include <assert.h>
#include <stdarg.h>
@@ -41,6 +42,8 @@
#define DRIVER_INIT_FUNC "__vaDriverInit_0_31"
#define DRIVER_INIT_FUNC_SDS "__vaDriverInit_0_31_sds"
+#define DRIVER_INIT_FUNC_0_29 "__vaDriverInit_0_29"
+#define DRIVER_INIT_FUNC_0_30 "__vaDriverInit_0_30"
#define DRIVER_EXTENSION "_drv_video.so"
@@ -168,11 +171,22 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
else
{
VADriverInit init_func;
- init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
+ int compat_version = 0;
+ /* First, try SDS extensions (VDPAU and XvBA backends) */
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_SDS);
if (!init_func)
{
- /* Then try SDS extensions (VDPAU and XvBA backends) */
- init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_SDS);
+ /* Otherwise, we need the compatibility layer for some buffers */
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
+ compat_version = VA_MINOR_VERSION;
+ if (!init_func) {
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_0_29);
+ compat_version = 29;
+ }
+ if (!init_func) {
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_0_30);
+ compat_version = 30;
+ }
}
if (!init_func)
{
@@ -181,7 +195,36 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
}
else
{
- vaStatus = (*init_func)(ctx);
+ struct VADriverContext_0_29 ctx_0_29;
+ struct VADriverContext_0_30 ctx_0_30;
+ void *compat_ctx = NULL;
+
+ switch (compat_version) {
+ case 29:
+ compat_ctx = &ctx_0_29;
+ ctx_0_29.pDriverData = NULL;
+ ctx_0_29.x11_dpy = ctx->x11_dpy;
+ ctx_0_29.x11_screen = ctx->x11_screen;
+ break;
+ case 30:
+ compat_ctx = &ctx_0_30;
+ ctx_0_30.pDriverData = NULL;
+ ctx_0_30.x11_dpy = ctx->x11_dpy;
+ ctx_0_30.x11_screen = ctx->x11_screen;
+ break;
+ case VA_MINOR_VERSION:
+ compat_ctx = ctx;
+ break;
+ default:
+ ASSERT(compat_version == 0);
+ vaStatus = VA_STATUS_ERROR_UNKNOWN;
+ break;
+ }
+
+ vaStatus = (*init_func)(compat_ctx ? compat_ctx : ctx);
+
+ if (VA_STATUS_SUCCESS == vaStatus)
+ vaStatus = va_compat_init(dpy, compat_version, compat_ctx);
if (VA_STATUS_SUCCESS == vaStatus)
{
@@ -377,6 +422,8 @@ VAStatus vaTerminate (
old_ctx->handle = NULL;
}
+ va_compat_fini(dpy);
+
if (VA_STATUS_SUCCESS == vaStatus)
pDisplayContext->vaDestroy(pDisplayContext);
return vaStatus;
--- a/src/va_backend.h
+++ b/src/va_backend.h
@@ -426,6 +426,7 @@ struct VADriverContext
void *dri_state;
void *glx; /* opaque for GLX code */
+ void *compat; /* opaque for compat code */
};
struct VADisplayContext

View File

@ -1,183 +0,0 @@
commit 389323f728fb2d6392d266d967eddde40465fd93
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Oct 16 12:35:27 2009 +0000
Fix compatibility with older programs linked against libva.so.0.
diff --git a/src/Makefile.am b/src/Makefile.am
index 232d8e8..2d696f1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -72,3 +72,8 @@ EXTRA_DIST = \
va_compat_template.h
va_compat.c: va_compat_template.h
+
+lib_LTLIBRARIES += libva-compat.la
+libva_compat_la_SOURCES = va_compat_lib.c
+libva_compat_la_LIBADD = libva-x11.la -ldl
+libva_compat_la_DEPENDENCIES = libva-x11.la
diff --git a/src/va_compat_lib.c b/src/va_compat_lib.c
new file mode 100644
index 0000000..b7e9ea5
--- /dev/null
+++ b/src/va_compat_lib.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#define _GNU_SOURCE 1
+#include <dlfcn.h>
+#include <assert.h>
+#include <stddef.h>
+
+typedef void *VADisplay;
+typedef int VAStatus;
+typedef unsigned int VAGenericID;
+typedef VAGenericID VAContextID;
+typedef VAGenericID VASurfaceID;
+typedef VAGenericID VAImageID;
+typedef VAGenericID VASubpictureID;
+
+#define PREPARE_FUNC(NAME, RET, ARGS) \
+ static RET (*lib_##NAME) ARGS; \
+ if (lib_##NAME == NULL) \
+ lib_##NAME = dlsym(RTLD_NEXT, #NAME); \
+ assert(lib_##NAME != NULL)
+
+VAStatus
+vaSyncSurface(
+ VADisplay dpy,
+ VAContextID context,
+ VASurfaceID render_target
+)
+{
+ PREPARE_FUNC(vaSyncSurface, VAStatus, (VADisplay, VASurfaceID));
+
+ return lib_vaSyncSurface(dpy, render_target);
+}
+
+VAStatus
+vaPutImage(
+ VADisplay dpy,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dest_x,
+ int dest_y
+)
+{
+ PREPARE_FUNC(vaPutImage, VAStatus, (VADisplay, VASurfaceID, VAImageID,
+ int, int, unsigned int, unsigned int,
+ int, int, unsigned int, unsigned int));
+
+ return lib_vaPutImage(dpy, surface, image,
+ src_x, src_y, width, height,
+ dest_x, dest_y, width, height);
+}
+
+VAStatus
+vaPutImage2(
+ VADisplay dpy,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y,
+ unsigned int dest_width,
+ unsigned int dest_height
+)
+{
+ PREPARE_FUNC(vaPutImage, VAStatus, (VADisplay, VASurfaceID, VAImageID,
+ int, int, unsigned int, unsigned int,
+ int, int, unsigned int, unsigned int));
+
+ return lib_vaPutImage(dpy, surface, image,
+ src_x, src_y, src_width, src_height,
+ dest_x, dest_y, dest_width, dest_height);
+}
+
+VAStatus
+vaAssociateSubpicture(
+ VADisplay dpy,
+ VASubpictureID subpicture,
+ VASurfaceID *target_surfaces,
+ int num_surfaces,
+ short src_x,
+ short src_y,
+ short dest_x,
+ short dest_y,
+ unsigned short width,
+ unsigned short height,
+ unsigned int flags
+)
+{
+ PREPARE_FUNC(vaAssociateSubpicture,
+ VAStatus, (VADisplay, VASubpictureID, VASurfaceID *, int,
+ short, short, unsigned short, unsigned short,
+ short, short, unsigned short, unsigned short,
+ unsigned int));
+
+ return lib_vaAssociateSubpicture(dpy, subpicture,
+ target_surfaces, num_surfaces,
+ src_x, src_y, width, height,
+ dest_x, dest_y, width, height,
+ flags);
+}
+
+VAStatus
+vaAssociateSubpicture2(
+ VADisplay dpy,
+ VASubpictureID subpicture,
+ VASurfaceID *target_surfaces,
+ int num_surfaces,
+ short src_x,
+ short src_y,
+ unsigned short src_width,
+ unsigned short src_height,
+ short dest_x,
+ short dest_y,
+ unsigned short dest_width,
+ unsigned short dest_height,
+ unsigned int flags
+)
+{
+ PREPARE_FUNC(vaAssociateSubpicture,
+ VAStatus, (VADisplay, VASubpictureID, VASurfaceID *, int,
+ short, short, unsigned short, unsigned short,
+ short, short, unsigned short, unsigned short,
+ unsigned int));
+
+ return lib_vaAssociateSubpicture(dpy, subpicture,
+ target_surfaces, num_surfaces,
+ src_x, src_y, src_width, src_height,
+ dest_x, dest_y, dest_width, dest_height,
+ flags);
+}

View File

@ -1,26 +0,0 @@
# Make the libva depend on libdrm-poulsbo instead of libdrm so that the
# emenlow libdrm can coexist with the normal libdrm.
# jdike@linux.intel.com
Index: libva-0.31.0/configure.ac
===================================================================
--- libva-0.31.0.orig/configure.ac
+++ libva-0.31.0/configure.ac
@@ -99,14 +99,14 @@ AC_SYS_LARGEFILE
PKG_CHECK_MODULES([X11], [x11])
PKG_CHECK_MODULES([XEXT],[xext])
PKG_CHECK_MODULES([XFIXES], [xfixes])
-PKG_CHECK_MODULES([DRM], [libdrm])
+PKG_CHECK_MODULES([DRM], [libdrm_poulsbo])
PKG_CHECK_MODULES(GEN4ASM, [intel-gen4asm >= 1.0], [gen4asm=yes], [gen4asm=no])
AM_CONDITIONAL(HAVE_GEN4ASM, test x$gen4asm = xyes)
# Check for libdrm >= 2.4 (needed for i965_drv_video.so)
-if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdrm; then
- AC_MSG_WARN([libdrm < 2.4 found, disabling build of i965 video driver])
+if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdrm_poulsbo; then
+ AC_MSG_WARN([libdrm_poulsbo < 2.4 found, disabling build of i965 video driver])
enable_i965_driver=no
fi
AM_CONDITIONAL(BUILD_I965_DRIVER, test x$enable_i965_driver = xyes)

View File

@ -1,40 +0,0 @@
DESCRIPTION = "Video Acceleration (VA) API for Linux"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=efc13a0998e678466e556756613c582e"
PR = "r1"
DEPENDS = "libxfixes libxext"
inherit autotools
SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/libva_0.31.0-1+sds9.1ubuntu1.tar.gz \
file://033_g45_add_rgba_subpic.patch \
file://034_g45_fix_return_for_unimpl.patch \
file://035_g45_add_yv12_image_format.patch \
file://036_g45_add_vaGetImage.patch \
file://037_g45_add_vaPutImage.patch \
file://038_g45_vaPutSurface_cliprects.patch \
file://102_attribute_visibility.patch \
file://103_fix_vainfo_deps.patch \
file://104_fix_libva_pkgconfig_deps.patch \
file://105_dont_search_LIBGL_DRIVERS_PATH.patch \
file://108_drivers_path.patch \
file://203_fix_fglrx_detection.patch \
file://204_check_ATIFGLEXTENSION.patch \
file://300_sds_version.patch \
file://301_vdpau_mpeg4.patch \
file://320_move_vaPutSurface_flags_def.patch \
file://321_libva_glx.base.patch \
file://322_libva_glx.patch \
file://390_compat.base.patch \
file://391_compat.patch \
file://392_compat.dso.patch \
file://libdrm-poulsbo.patch"
export LDFLAGS="-Wl,-z,defs"
EXTRA_OECONF = "--disable-i965-driver"
FILES_${PN} += "${libdir}/va/drivers/*"
COMPATIBLE_MACHINE = "emenlow"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@ -1,15 +0,0 @@
DESCRIPTION = "Binary firmware for the Poulsbo (psb) 3D X11 driver"
LICENSE = "Intel-binary-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=02c597a2f082b4581596065bb5a521a8"
PR = "r0"
SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/psb-firmware_0.30-0ubuntu1netbook1ubuntu1.tar.gz"
do_install() {
install -d ${D}${base_libdir}/firmware/
install -m 0644 ${WORKDIR}/psb-firmware-0.30/msvdx_fw.bin ${D}${base_libdir}/firmware/
}
FILES_${PN} += "${base_libdir}/firmware/msvdx_fw.bin"
COMPATIBLE_MACHINE = "emenlow"

View File

@ -1,175 +0,0 @@
# These are various fixes needed to make the psb kernel driver build against
# 2.6.33.2.
# The Makefile patch is specific to the Poky environment - the external kernel
# module build expects the kernel tree it's building against to have fixdep
# and modpost built, which isn't the case here. So, the modules rule makes
# sure that they are built before the module is built.
# Aside from that, the changes involve adding missing header files and
# compensating for a structure field changing name and type.
Index: psb-kernel-source-4.42.0/drm_os_linux.h
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_os_linux.h
+++ psb-kernel-source-4.42.0/drm_os_linux.h
@@ -50,12 +50,6 @@
/** IRQ handler arguments and return type and values */
#define DRM_IRQ_ARGS int irq, void *arg
-/** backwards compatibility with old irq return values */
-#ifndef IRQ_HANDLED
-typedef void irqreturn_t;
-#define IRQ_HANDLED /* nothing */
-#define IRQ_NONE /* nothing */
-#endif
/** AGP types */
#if __OS_HAS_AGP
Index: psb-kernel-source-4.42.0/Makefile
===================================================================
--- psb-kernel-source-4.42.0.orig/Makefile
+++ psb-kernel-source-4.42.0/Makefile
@@ -165,7 +165,10 @@ endif
all: modules
modules: includes
- +make -C $(LINUXDIR) $(GETCONFIG) SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules
+ +make -C $(LINUXDIR)/scripts/basic fixdep
+# +make -C $(LINUXDIR) SUBDIRS=scripts/mod modpost
+ +make -C $(LINUXDIR) SUBDIRS=scripts
+ +make -k -C $(LINUXDIR) $(GETCONFIG) SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules
ifeq ($(HEADERFROMBOOT),1)
@@ -243,7 +246,7 @@ dristat: dristat.c
drmstat: drmstat.c
$(CC) $(PRGCFLAGS) $< -o $@ $(DRMSTATLIBS)
-install:
+modules_install:
make -C $(LINUXDIR) $(GETCONFIG) SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules_install
else
Index: psb-kernel-source-4.42.0/drm_edid.c
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_edid.c
+++ psb-kernel-source-4.42.0/drm_edid.c
@@ -11,6 +11,7 @@
#include "drm_edid.h"
#include <acpi/acpi_drivers.h>
+#include <linux/i2c.h>
/* Valid EDID header has these bytes */
static u8 edid_header[] = { 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 };
@@ -39,7 +40,7 @@ int drm_get_acpi_edid(char *method, char
if (obj && obj->type == ACPI_TYPE_BUFFER)
memcpy(edid, obj->buffer.pointer, obj->buffer.length);
else {
- printk(KERN_ERR PREFIX "Invalid _DDC data\n");
+ printk(KERN_ERR "Invalid _DDC data\n");
status = -EFAULT;
kfree(obj);
}
Index: psb-kernel-source-4.42.0/drm_ttm.c
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_ttm.c
+++ psb-kernel-source-4.42.0/drm_ttm.c
@@ -28,6 +28,8 @@
* Authors: Thomas Hellström <thomas-at-tungstengraphics-dot-com>
*/
+#include "linux/spinlock.h"
+#include "asm/agp.h"
#include "drmP.h"
static void drm_ttm_ipi_handler(void *null)
Index: psb-kernel-source-4.42.0/psb_drv.c
===================================================================
--- psb-kernel-source-4.42.0.orig/psb_drv.c
+++ psb-kernel-source-4.42.0/psb_drv.c
@@ -34,8 +34,10 @@
#include <linux/cpu.h>
#include <linux/notifier.h>
#include <linux/fb.h>
+#include "linux/spinlock.h"
+#include "asm/agp.h"
-int drm_psb_debug = 0;
+int drm_psb_debug = 255;
EXPORT_SYMBOL(drm_psb_debug);
static int drm_psb_trap_pagefaults = 0;
static int drm_psb_clock_gating = 0;
Index: psb-kernel-source-4.42.0/intel_lvds.c
===================================================================
--- psb-kernel-source-4.42.0.orig/intel_lvds.c
+++ psb-kernel-source-4.42.0/intel_lvds.c
@@ -29,6 +29,7 @@
#include <linux/i2c.h>
#include <linux/backlight.h>
+#include <linux/i2c.h>
#include "drm_crtc.h"
#include "drm_edid.h"
#include "intel_lvds.h"
Index: psb-kernel-source-4.42.0/drm_memory.c
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_memory.c
+++ psb-kernel-source-4.42.0/drm_memory.c
@@ -264,9 +264,9 @@ static void *agp_remap(unsigned long off
return NULL;
phys_addr_map =
- agpmem->memory->memory + (offset - agpmem->bound) / PAGE_SIZE;
+ agpmem->memory->pages + (offset - agpmem->bound) / PAGE_SIZE;
for (i = 0; i < num_pages; ++i)
- page_map[i] = pfn_to_page(phys_addr_map[i] >> PAGE_SHIFT);
+ page_map[i] = phys_addr_map[i];
addr = vmap(page_map, num_pages, VM_IOREMAP, PAGE_AGP);
vfree(page_map);
Index: psb-kernel-source-4.42.0/drm_agpsupport.c
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_agpsupport.c
+++ psb-kernel-source-4.42.0/drm_agpsupport.c
@@ -524,7 +524,7 @@ static int drm_agp_populate(struct drm_t
DRM_DEBUG("Current page count is %ld\n", (long) mem->page_count);
mem->page_count = 0;
for (cur_page = pages; cur_page < last_page; ++cur_page)
- mem->pages[mem->page_count++] = phys_to_gart(page_to_phys(*cur_page));
+ mem->pages[mem->page_count++] = page_to_phys(*cur_page);
agp_be->mem = mem;
return 0;
}
Index: psb-kernel-source-4.42.0/drm_vm.c
===================================================================
--- psb-kernel-source-4.42.0.orig/drm_vm.c
+++ psb-kernel-source-4.42.0/drm_vm.c
@@ -145,13 +145,13 @@ static int drm_do_vm_fault(struct vm_are
* Get the page, inc the use count, and return it
*/
offset = (baddr - agpmem->bound) >> PAGE_SHIFT;
- page = virt_to_page(__va(agpmem->memory->memory[offset]));
+ page = agpmem->memory->pages[offset];
get_page(page);
vmf->page = page;
DRM_DEBUG
("baddr = 0x%lx page = 0x%p, offset = 0x%lx, count=%d\n",
- baddr, __va(agpmem->memory->memory[offset]), offset,
+ baddr, agpmem->memory->pages[offset], offset,
page_count(page));
return 0;
}
Index: psb-kernel-source-4.42.0/psb_drv.h
===================================================================
--- psb-kernel-source-4.42.0.orig/psb_drv.h
+++ psb-kernel-source-4.42.0/psb_drv.h
@@ -809,7 +809,7 @@ extern int drm_psb_detear;
#define PSB_DEBUG(_flag, _fmt, _arg...) \
do { \
if (unlikely((_flag) & drm_psb_debug)) \
- printk(KERN_DEBUG \
+ printk(KERN_ERR \
"[psb:0x%02x:%s] " _fmt , _flag, \
__FUNCTION__ , ##_arg); \
} while (0)

View File

@ -1,24 +0,0 @@
DESCRIPTION = "Kernel module for the Poulsbo (psb) 2D X11 driver"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://GPLv2_License.txt;md5=f5ca3155cfeaa64a6ea228b11ad6916d"
PR = "r1"
inherit module
SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/psb-kernel-source_4.42.0-0ubuntu2~1004um2.tar.gz \
file://build.patch;patch=1"
do_compile () {
oe_runmake LINUXDIR=${STAGING_KERNEL_DIR} DRM_MODULES="psb"
}
do_install () {
mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/extra
cp ${WORKDIR}/${PN}-${PV}/*.ko ${D}/lib/modules/${KERNEL_VERSION}/extra
}
FILES_${PN} += "${base_libdir}/modules/${KERNEL_VERSION}/extra/*.ko"
DEPENDS += "virtual/kernel"
COMPATIBLE_MACHINE = "emenlow"

View File

@ -1,19 +0,0 @@
Index: xorg-server-1.7.99.2/configure.ac
===================================================================
--- xorg-server-1.7.99.2.orig/configure.ac 2010-01-29 16:38:49.000000000 +0000
+++ xorg-server-1.7.99.2/configure.ac 2010-01-29 16:42:39.000000000 +0000
@@ -503,14 +503,10 @@
dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
dnl otherwise uses standard subdirectories of FONTROOTDIR
-AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
- [DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],
- [
DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
case $host_os in
darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
esac
- ])
AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
[ FONTPATH="$withval" ],
[ FONTPATH="${DEFAULT_FONT_PATH}" ])

View File

@ -1,13 +0,0 @@
Index: git/os/osdep.h
===================================================================
--- git.orig/os/osdep.h 2008-10-07 18:38:21.000000000 +0100
+++ git/os/osdep.h 2008-10-07 18:39:36.000000000 +0100
@@ -92,7 +92,7 @@
* like sysconf(_SC_OPEN_MAX) is not supported.
*/
-#if OPEN_MAX <= 256
+#if 0
#define MAXSOCKS (OPEN_MAX - 1)
#else
#define MAXSOCKS 256

View File

@ -1,26 +0,0 @@
# Make the server depend on libdrm-poulsbo instead of libdrm so that the
# emenlow libdrm can coexist with the normal libdrm.
# jdike@linux.intel.com
Index: xorg-server-1.7.99.2/configure.ac
===================================================================
--- xorg-server-1.7.99.2.orig/configure.ac
+++ xorg-server-1.7.99.2/configure.ac
@@ -763,7 +763,7 @@ dnl List of libraries that require a spe
LIBAPPLEWM="applewm >= 1.4"
LIBDMX="dmx >= 1.0.99.1"
LIBDRI="dri >= 7.1.0"
-LIBDRM="libdrm >= 2.3.0"
+LIBDRM="libdrm_poulsbo >= 2.3.0"
LIBGL="gl >= 7.1.0"
LIBXEXT="xext >= 1.0.99.4"
LIBXI="xi >= 1.2.99.1"
@@ -2002,7 +2002,7 @@ if test "$KDRIVE" = yes; then
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
fi
if test "x$DRI" = xyes && test "x$GLX" = xyes; then
- XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm"
+ XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm_poulsbo"
fi
PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [xephyr="yes"], [xephyr="no"])

View File

@ -1,18 +0,0 @@
Index: xorg-server-1.5.0/xorg-server.m4
===================================================================
--- xorg-server-1.5.0.orig/xorg-server.m4 2007-05-29 20:36:51.000000000 +0100
+++ xorg-server-1.5.0/xorg-server.m4 2008-11-04 23:56:55.000000000 +0000
@@ -28,9 +28,12 @@
# Checks for the $1 define in xorg-server.h (from the sdk). If it
# is defined, then add $1 to $REQUIRED_MODULES.
+m4_pattern_allow(PKG_CONFIG_SYSROOT_DIR)
+
AC_DEFUN([XORG_DRIVER_CHECK_EXT],[
+ PKG_PROG_PKG_CONFIG
SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -I`pkg-config --variable=sdkdir xorg-server`"
+ CFLAGS="$CFLAGS -I$PKG_CONFIG_SYSROOT_DIR`pkg-config --variable=sdkdir xorg-server`"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include "xorg-server.h"
#if !defined $1

View File

@ -1,12 +0,0 @@
Index: git/configure.ac
===================================================================
--- git.orig/configure.ac 2009-01-15 20:35:31.000000000 +0000
+++ git/configure.ac 2009-01-15 20:35:38.000000000 +0000
@@ -62,7 +62,6 @@
AC_LIBTOOL_WIN32_DLL
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
-DOLT
AC_PROG_MAKE_SET
PKG_PROG_PKG_CONFIG
AC_PROG_LEX

View File

@ -1,21 +0,0 @@
require recipes-graphics/xorg-xserver/xserver-xf86-dri-lite.inc
PR = "r3"
PROTO_DEPS += "xf86driproto dri2proto"
DEPENDS += "font-util"
SRC_URI += "file://nodolt.patch \
file://crosscompile.patch \
file://libdrm-poulsbo.patch"
# Misc build failure for master HEAD
SRC_URI += "file://fix_open_max_preprocessor_error.patch"
EXTRA_OECONF += "--enable-dri --enable-dri2 --enable-dga --enable-glx"
RDEPENDS_${PN} += "xserver-xorg-video-psb psb-firmware xpsb-glx \
libdrm-poulsbo libva"
COMPATIBLE_MACHINE = "emenlow"

View File

@ -1,13 +0,0 @@
Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection
Section "Device"
Identifier "Configured Video Device"
Driver "psb"
Option "ShadowFB" "False"
EndSection
Section "DRI"
Mode 0666
EndSection

View File

@ -1,3 +0,0 @@
THISDIR := "${@os.path.dirname(bb.data.getVar('FILE', d, True))}"
FILESPATH =. "${@base_set_filespath(["${THISDIR}/${PN}"], d)}:"

View File

@ -1,58 +0,0 @@
Index: mesa/configs/linux-dri
===================================================================
--- mesa.orig/configs/linux-dri
+++ mesa/configs/linux-dri
@@ -3,11 +3,9 @@
include $(TOP)/configs/default
-CONFIG_NAME = linux-dri
+$(warning ENVIRONMENT = $(shell printenv))
-# Compiler and flags
-CC = gcc
-CXX = g++
+CONFIG_NAME = linux-dri
#MKDEP = /usr/X11R6/bin/makedepend
#MKDEP = gcc -M
@@ -25,8 +23,6 @@ DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOU
-DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \
-DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
-X11_INCLUDES = -I/usr/X11R6/include
-
CFLAGS = -Wall -Wmissing-prototypes -std=c99 -ffast-math \
$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) $(ASM_FLAGS)
@@ -40,9 +36,6 @@ CXXFLAGS += -fno-strict-aliasing
ASM_SOURCES =
-# Library/program dependencies
-EXTRA_LIB_PATH=-L/usr/X11R6/lib
-
LIBDRM_CFLAGS = `pkg-config --cflags libdrm-poulsbo`
LIBDRM_LIB = `pkg-config --libs libdrm-poulsbo`
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
Index: mesa/configs/default
===================================================================
--- mesa.orig/configs/default
+++ mesa/configs/default
@@ -17,8 +17,6 @@ MESA_VERSION = $(MESA_MAJOR).$(MESA_MINO
DRM_SOURCE_PATH=$(TOP)/../drm
# Compiler and flags
-CC = cc
-CXX = CC
CFLAGS = -O
CXXFLAGS = -O
LDFLAGS =
@@ -67,7 +65,6 @@ ASM_SOURCES =
# GLw widget sources (Append "GLwMDrawA.c" here and add -lXm to GLW_LIB_DEPS in
# order to build the Motif widget too)
GLW_SOURCES = GLwDrawA.c
-MOTIF_CFLAGS = -I/usr/include/Motif1.2
# Directories to build

View File

@ -1,63 +0,0 @@
Index: mesa/configure.ac
===================================================================
--- mesa.orig/configure.ac 2010-05-13 13:20:26.000000000 +0100
+++ mesa/configure.ac 2010-07-25 17:02:58.000000000 +0100
@@ -524,10 +524,10 @@
fi
# Check for libdrm
- PKG_CHECK_MODULES([LIBDRM], [libdrm-poulsbo >= $LIBDRM_REQUIRED])
+ PKG_CHECK_MODULES([LIBDRM], [libdrm_poulsbo >= $LIBDRM_REQUIRED])
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
- GL_PC_REQ_PRIV="libdrm-poulsbo >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
- DRI_PC_REQ_PRIV="libdrm-poulsbo >= $LIBDRM_REQUIRED"
+ GL_PC_REQ_PRIV="libdrm_poulsbo >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
+ DRI_PC_REQ_PRIV="libdrm_poulsbo >= $LIBDRM_REQUIRED"
# find the DRI deps for libGL
if test "$x11_pkgconfig" = yes; then
Index: mesa/configs/linux-dri
===================================================================
--- mesa.orig/configs/linux-dri 2010-07-25 17:08:01.000000000 +0100
+++ mesa/configs/linux-dri 2010-07-25 17:08:17.000000000 +0100
@@ -36,8 +36,8 @@
ASM_SOURCES =
-LIBDRM_CFLAGS = `pkg-config --cflags libdrm-poulsbo`
-LIBDRM_LIB = `pkg-config --libs libdrm-poulsbo`
+LIBDRM_CFLAGS = `pkg-config --cflags libdrm_poulsbo`
+LIBDRM_LIB = `pkg-config --libs libdrm_poulsbo`
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
-lm -lpthread -ldl $(LIBDRM_LIB)
Index: mesa/configs/linux-dri-xcb
===================================================================
--- mesa.orig/configs/linux-dri-xcb 2010-07-25 17:08:25.000000000 +0100
+++ mesa/configs/linux-dri-xcb 2010-07-25 17:08:44.000000000 +0100
@@ -41,8 +41,8 @@
# Library/program dependencies
EXTRA_LIB_PATH=`pkg-config --libs-only-L x11`
-LIBDRM_CFLAGS = `pkg-config --cflags libdrm-poulsbo`
-LIBDRM_LIB = `pkg-config --libs libdrm-poulsbo`
+LIBDRM_CFLAGS = `pkg-config --cflags libdrm_poulsbo`
+LIBDRM_LIB = `pkg-config --libs libdrm_poulsbo`
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
-lm -lpthread -ldl $(LIBDRM_LIB) `pkg-config --libs xcb` \
Index: mesa/configs/linux-solo
===================================================================
--- mesa.orig/configs/linux-solo 2010-07-25 17:09:03.000000000 +0100
+++ mesa/configs/linux-solo 2010-07-25 17:09:13.000000000 +0100
@@ -16,8 +16,8 @@
ARCH_FLAGS ?=
# DRM and pciaccess
-LIBDRM_CFLAGS = `pkg-config --cflags libdrm-poulsbo`
-LIBDRM_LIB = `pkg-config --libs libdrm-poulsbo`
+LIBDRM_CFLAGS = `pkg-config --cflags libdrm_poulsbo`
+LIBDRM_LIB = `pkg-config --libs libdrm_poulsbo`
PCIACCESS_CFLAGS = `pkg-config --cflags pciaccess`
PCIACCESS_LIB = `pkg-config --libs pciaccess`

View File

@ -1,20 +0,0 @@
Index: mesa/src/mesa/x86/Makefile
===================================================================
--- mesa.orig/src/mesa/x86/Makefile 2010-10-11 16:34:12.664960996 +0100
+++ mesa/src/mesa/x86/Makefile 2010-10-11 16:34:43.854960861 +0100
@@ -20,11 +20,12 @@
-rm -f matypes.h gen_matypes
-gen_matypes: gen_matypes.c
- $(CC) $(INCLUDE_DIRS) $(CFLAGS) gen_matypes.c -o gen_matypes
+#gen_matypes: gen_matypes.c
+# $(CC) $(INCLUDE_DIRS) $(CFLAGS) gen_matypes.c -o gen_matypes
# need some special rules here, unfortunately
-matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes
+matypes.h: ../main/mtypes.h ../tnl/t_context.h
+# gen_matypes
./gen_matypes > matypes.h
common_x86_asm.o: matypes.h

View File

@ -1,46 +0,0 @@
DESCRIPTION = "X11 drivers for Poulsbo (psb) 3D acceleration"
# There's a mesa implementation in this package, which is presumably
# not Intel proprietary, but it has no obvious license attached to it.
LICENSE = "Intel-binary-only"
LIC_FILES_CHKSUM = "file://${WORKDIR}/${PN}-${PV}/COPYING;md5=02c597a2f082b4581596065bb5a521a8"
PR = "r6"
inherit autotools
PROVIDES = "virtual/libgl mesa-dri"
SRC_URI="https://launchpad.net/~gma500/+archive/ppa/+files/xpsb-glx_0.18-0ubuntu1netbook2~1004um1ubuntu1.tar.gz \
file://cross-compile.patch \
file://libdrmname.patch \
file://native-matypes.patch"
do_configure () {
chmod +x autogen.sh && ./autogen.sh ${CONFIGUREOPTS} && make realclean
cd ${S}/src/mesa/x86/
${BUILD_CC} -I../../../include/GL -I../../../include -I.. -I../main -I../math -I../glapi -I../tnl -Wall -Wmissing-prototypes -std=c99 -ffast-math -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -fno-strict-aliasing gen_matypes.c -o gen_matypes
}
do_install() {
make DESTDIR=${D} install
install -d -m 0755 ${D}/${libdir}/xorg/modules/dri \
${D}/${libdir}/xorg/modules/drivers
install -m 0644 ${WORKDIR}/${PN}-${PV}/dri/* \
${D}/${libdir}/xorg/modules/dri
install -m 0644 ${WORKDIR}/${PN}-${PV}/drivers/* \
${D}/${libdir}/xorg/modules/drivers
}
S = "${WORKDIR}/${PN}-${PV}/mesa"
EXTRA_OEMAKE = "linux-dri-x86"
DEPENDS += "libxfixes libxdamage libdrm-poulsbo libxxf86vm dri2proto libxmu libxi glproto makedepend-native"
FILES_${PN} = "${libdir}/* ${libdir}/xorg/modules/dri/* \
${libdir}/xorg/modules/drivers/*"
# Multiple virtual/gl providers being built breaks staging
EXCLUDE_FROM_WORLD = "1"
COMPATIBLE_MACHINE = "emenlow"

View File

@ -1,12 +0,0 @@
diff -Nurp xserver-xorg-video-psb-0.30.0+repack.orig/src/psb_driver.c xserver-xorg-video-psb-0.30.0+repack/src/psb_driver.c
--- xserver-xorg-video-psb-0.30.0+repack.orig/src/psb_driver.c 2009-04-17 00:00:46.000000000 +0200
+++ xserver-xorg-video-psb-0.30.0+repack/src/psb_driver.c 2009-08-06 18:13:43.000000000 +0200
@@ -753,7 +753,7 @@ psbInitOutputs(ScrnInfoPtr pScrn)
xf86GetOptValBool(pPsb->options, OPTION_NOPANEL, &pPsb->noPanel);
- pPsb->lidTimer = TRUE;
+ pPsb->lidTimer = FALSE;
xf86GetOptValBool(pPsb->options, OPTION_LIDTIMER, &pPsb->lidTimer);
xf86GetOptValBool(pPsb->options, OPTION_NOFITTING, &pPsb->noFitting);

View File

@ -1,20 +0,0 @@
Index: xserver-xorg-video-psb-0.32.1/configure.ac
===================================================================
--- xserver-xorg-video-psb-0.32.1.orig/configure.ac
+++ xserver-xorg-video-psb-0.32.1/configure.ac
@@ -75,12 +75,9 @@ AM_CONDITIONAL(BUILD_EXA, [test "$build_
AC_HEADER_STDC
if test "$DRI" != no; then
- AC_CHECK_FILE([${sdkdir}/dri.h],
- [have_dri_h="yes"], [have_dri_h="no"])
- AC_CHECK_FILE([${sdkdir}/sarea.h],
- [have_sarea_h="yes"], [have_sarea_h="no"])
- AC_CHECK_FILE([${sdkdir}/dristruct.h],
- [have_dristruct_h="yes"], [have_dristruct_h="no"])
+ have_dri_h="yes"
+ have_sarea_h="yes"
+ have_dristruct_h="yes"
fi
AC_MSG_CHECKING([whether to include DRI support])

View File

@ -1,13 +0,0 @@
Index: xserver-xorg-video-psb-0.32.1/configure.ac
===================================================================
--- xserver-xorg-video-psb-0.32.1.orig/configure.ac
+++ xserver-xorg-video-psb-0.32.1/configure.ac
@@ -94,7 +94,7 @@ AC_MSG_RESULT([$DRI])
AM_CONDITIONAL(DRI, test x$DRI = xyes)
if test "$DRI" = yes; then
- PKG_CHECK_MODULES(DRI, [libdrm-poulsbo >= 2.0 xf86driproto])
+ PKG_CHECK_MODULES(DRI, [libdrm_poulsbo >= 2.0 xf86driproto])
AC_DEFINE(XF86DRI,1,[Enable DRI driver support])
AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
fi

View File

@ -1,35 +0,0 @@
--- xserver-xorg-video-psb-0.32.1/src/psb_accel.c.orig 2010-07-04 19:27:48.691227698 +0200
+++ xserver-xorg-video-psb-0.32.1/src/psb_accel.c 2010-07-04 19:27:15.338230809 +0200
@@ -308,6 +308,14 @@
}
#endif
+static void*
+psbExaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, int usage_hint, int bpp, int* new_pitch )
+{
+ return NULL;
+}
+static void
+psbExaDestroyPixmap(ScreenPtr pScreen, void* driverPriv ){
+}
static Bool
psbExaPixmapIsOffscreen(PixmapPtr p)
{
@@ -1313,6 +1321,7 @@
pExa->pixmapOffsetAlign = 8;
pExa->pixmapPitchAlign = 32 * 4;
pExa->flags = EXA_OFFSCREEN_PIXMAPS;
+ pExa->flags |= EXA_HANDLES_PIXMAPS | EXA_MIXED_PIXMAPS;
pExa->maxX = 2047;
pExa->maxY = 2047;
pExa->WaitMarker = psbExaWaitMarker;
@@ -1328,6 +1337,9 @@
pExa->Composite = psbExaSuperComposite;
pExa->DoneComposite = psbExaDoneComposite;
pExa->PixmapIsOffscreen = psbExaPixmapIsOffscreen;
+ pExa->CreatePixmap = NULL;
+ pExa->CreatePixmap2 = psbExaCreatePixmap;
+ pExa->DestroyPixmap = psbExaDestroyPixmap;
pExa->PrepareAccess = psbExaPrepareAccess;
pExa->FinishAccess = psbExaFinishAccess;
pExa->UploadToScreen = psbExaUploadToScreen;

View File

@ -1,17 +0,0 @@
--- xserver-xorg-video-psb-0.36.0-ref/src/psb_video.c 2010-06-07 22:17:46.302760345 +0200
+++ xserver-xorg-video-psb-0.32/src/psb_video.c 2010-06-10 17:29:23.400003434 +0200
@@ -686,8 +684,13 @@
* coordinates) to the backing pixmap.
*/
- while (!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf))
+ if(!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf)){
exaMoveInPixmap(pPixmap);
+ if(!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf)){
+ return FALSE;
+ }
+ }
+
dst.buffer = mmKernelBuf(dstBuf);
dst.offset = pre_add;

View File

@ -1,23 +0,0 @@
diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_driver.c.orig xserver-xorg-video-psb-0.31.0/src/psb_driver.c
--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c.orig 2010-04-30 08:58:06.798598457 +0200
+++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2010-04-30 09:03:04.186597975 +0200
@@ -643,6 +643,19 @@ psbPreInitDRI(ScrnInfoPtr pScrn)
return TRUE;
}
+/* removed in Xserver 1.7, add it again so that proprietary Xpsb can be loaded */
+void
+xf86AddModuleInfo(pointer info, pointer module)
+{
+}
+
+/* removed in mesa, add it again so that proprietary Xpsb can be loaded */
+typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
+void
+_glapi_set_warning_func( _glapi_warning_func func )
+{
+}
+
static Bool
psbPreInitXpsb(ScrnInfoPtr pScrn)
{

View File

@ -1,12 +0,0 @@
Index: xserver-xorg-video-psb-0.32.1/configure.ac
===================================================================
--- xserver-xorg-video-psb-0.32.1.orig/configure.ac
+++ xserver-xorg-video-psb-0.32.1/configure.ac
@@ -107,6 +107,7 @@ AC_DEFINE(INTEL_PSB_DRIVER, 1, [Compatib
AC_SUBST([DRI_CFLAGS])
AC_SUBST([XORG_CFLAGS])
+XORG_CFLAGS = `echo $XORG_CFLAGS | sed 's/hidden/default/'`
AC_SUBST([moduledir])
DRIVER_NAME=psb

View File

@ -1,11 +0,0 @@
--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2009-04-17 11:22:26.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c.new 2009-08-14 15:41:35.047596131 -0700
@@ -909,7 +909,7 @@
xf86DrvMsg(pScrn->scrnIndex, from, "Use %s cursor.\n",
pPsb->sWCursor ? "software" : "hardware");
- pPsb->ignoreACPI = FALSE;
+ pPsb->ignoreACPI = TRUE;
from =
xf86GetOptValBool(pPsb->options, OPTION_IGNORE_ACPI,
&pPsb->ignoreACPI)

View File

@ -1,85 +0,0 @@
--- xserver-xorg-video-psb-0.31.0/src/Xpsb.h 2009-04-17 11:22:26.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/Xpsb.h.new 2009-08-28 09:24:16.333677591 -0700
@@ -38,7 +38,9 @@
#include "xf86drm.h"
#include "xf86.h"
#include "xf86_OSproc.h"
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
#include "xf86Resources.h"
+#endif
#include "compiler.h"
#define XPSB_VOFFSET_X 0
--- xserver-xorg-video-psb-0.31.0/src/psb_driver.h 2009-04-17 11:22:25.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/psb_driver.h.new 2009-08-28 09:24:11.822679667 -0700
@@ -34,7 +34,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
-#include "xf86Resources.h"
#include "compiler.h"
#include "xf86PciInfo.h"
#include "vgaHW.h"
@@ -46,8 +45,10 @@
#include "xf86int10.h"
#include "mibank.h"
#include "dgaproc.h"
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
#include "xf86Resources.h"
#include "xf86RAC.h"
+#endif
#include "fb.h"
#include "xaa.h"
#include "xf86xv.h"
--- xserver-xorg-video-psb-0.31.0/src/i830_i2c.c 2009-04-17 11:22:24.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/i830_i2c.c.new 2009-08-28 09:33:06.789804272 -0700
@@ -31,8 +31,10 @@
#include "xf86.h"
#include "xf86_OSproc.h"
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
#include "xf86Resources.h"
#include "xf86RAC.h"
+#endif
#include "xf86cmap.h"
#include "compiler.h"
#include "mibstore.h"
--- xserver-xorg-video-psb-0.31.0/src/psb_video.c 2009-04-17 11:22:26.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/psb_video.c.new 2009-08-28 09:35:03.874805663 -0700
@@ -36,7 +36,9 @@
#include "xf86.h"
#include "xf86_OSproc.h"
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
#include "xf86Resources.h"
+#endif
#include "compiler.h"
#include "xf86xv.h"
--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2009-04-17 11:22:26.000000000 -0700
+++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c.new 2009-08-28 10:30:32.325553685 -0700
@@ -317,7 +317,7 @@
* This data is accessed by the loader. The name must be the module name
* followed by "ModuleData".
*/
-XF86ModuleData psbModuleData = { &psbVersionRec, psbSetup, NULL };
+_X_EXPORT XF86ModuleData psbModuleData = { &psbVersionRec, psbSetup, NULL };
static pointer
psbSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor)
@@ -1023,11 +1023,13 @@
PSB_DEBUG(scrnIndex, 3, "Initializing device\n");
+#ifndef XSERVER_LIBPCIACCESS
if (xf86RegisterResources(pDevice->pEnt->index, NULL, ResExclusive)) {
xf86DrvMsg(scrnIndex, X_ERROR,
"Could not registrer device. Resource conflict.\n");
return FALSE;
}
+#endif
if (!xf86LoadSubModule(pDevice->pScrns[0], "vgahw"))
return FALSE;

View File

@ -1,11 +0,0 @@
diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.assert xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c
--- xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.assert 2010-04-26 13:40:50.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c 2010-04-26 13:48:28.000000000 +0200
@@ -30,6 +30,7 @@
#include "xf86mm.h"
#include "xf86drm.h"
#include "stdio.h"
+#include <assert.h>
/*
* This is a simple wrapper around libdrm's buffer interface to be used

View File

@ -1,75 +0,0 @@
diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c
--- xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.comment_unused 2009-04-17 20:22:26.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c 2010-04-26 13:40:50.000000000 +0200
@@ -277,6 +277,7 @@ createFence(struct _MMManager *mm,
return &dFence->mf;
}
+/*
static void
fenceDestroy(struct _MMFence *mf)
{
@@ -288,6 +289,7 @@ fenceDestroy(struct _MMFence *mf)
assert(ret == 0);
free(dFence);
}
+*/
static int
fenceEmit(struct _MMFence *mf, unsigned fence_class,
@@ -369,7 +371,7 @@ mmCreateDRM(int drmFD)
mm->fenceSignaled = fenceSignaled;
mm->fenceWait = fenceWait;
mm->fenceError = NULL;
- mm->fenceDestroy = fenceDestroy;
+ /* mm->fenceDestroy = fenceDestroy; */
mm->destroy = destroy;
return mm;
diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h
--- xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h.comment_unused 2009-04-17 20:22:26.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h 2010-04-26 13:45:22.000000000 +0200
@@ -141,7 +141,7 @@ typedef struct _MMManager
int (*fenceWait) (struct _MMFence * mf, unsigned flushMask,
unsigned flags);
unsigned (*fenceError) (struct _MMFence * mf);
- void (*fenceDestroy) (struct _MMFence * mf);
+ /* void (*fenceDestroy) (struct _MMFence * mf); */
} MMManager;
/*
@@ -204,6 +204,7 @@ mmFenceEmit(struct _MMFence *mf, unsigne
return mf->man->fenceEmit(mf, class, type, flags);
}
+/*
static inline void
mmFenceUnReference(struct _MMFence **mfP)
{
@@ -214,6 +215,7 @@ mmFenceUnReference(struct _MMFence **mfP
}
*mfP = NULL;
}
+*/
static inline struct _MMFence *
mmFenceReference(struct _MMFence *mf)
diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_user.c.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_user.c
--- xserver-xorg-video-psb-0.31.0/libmm/mm_user.c.comment_unused 2009-04-17 20:22:26.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/libmm/mm_user.c 2010-04-26 13:05:15.000000000 +0200
@@ -77,6 +77,7 @@ typedef struct _UserSignal
UserManager *man;
} UserSignal;
+/*
void
mmFenceSignal(struct _MMSignal *signal, unsigned class,
unsigned type, unsigned sequence, unsigned error,
@@ -148,6 +149,7 @@ mmFenceSignal(struct _MMSignal *signal,
type |= fence->signalPrevious;
}
}
+*/
static int
fenceEmit(struct _MMFence *mf, unsigned class, unsigned type, unsigned flags)

View File

@ -1,19 +0,0 @@
diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_accel.c.greedy xserver-xorg-video-psb-0.31.0/src/psb_accel.c
--- xserver-xorg-video-psb-0.31.0/src/psb_accel.c.greedy 2009-04-17 20:22:24.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/src/psb_accel.c 2010-04-23 14:52:47.000000000 +0200
@@ -1331,6 +1331,15 @@ psbExaInit(ScrnInfoPtr pScrn)
pExa->FinishAccess = psbExaFinishAccess;
pExa->UploadToScreen = psbExaUploadToScreen;
+ if (!xf86FindOptionValue(pScrn->options, "MigrationHeuristic")) {
+ const char *default_migration = "greedy";
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Using default MigrationHeuristic: %s\n",
+ default_migration);
+ xf86ReplaceStrOption(pScrn->options, "MigrationHeuristic", default_migration);
+ }
+
+
if (!exaDriverInit(pScrn->pScreen, pExa)) {
goto out_err;
}

View File

@ -1,84 +0,0 @@
diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_dri.c.loader xserver-xorg-video-psb-0.31.0/src/psb_dri.c
--- xserver-xorg-video-psb-0.31.0/src/psb_dri.c.loader 2009-04-17 20:22:24.000000000 +0200
+++ xserver-xorg-video-psb-0.31.0/src/psb_dri.c 2010-03-12 15:03:33.000000000 +0100
@@ -548,8 +548,6 @@ psbDRIScreenInit(ScreenPtr pScreen)
PSB_DEBUG(pScrn->scrnIndex, 3, "psbDRIScreenInit\n");
- xf86LoaderReqSymLists(driReqSymbols, NULL);
-
pPsb->pDRIInfo = NULL;
/*
diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_driver.c.loader xserver-xorg-video-psb-0.31.0/src/psb_driver.c
--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c.loader 2010-03-12 13:48:52.000000000 +0100
+++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2010-03-12 15:03:26.000000000 +0100
@@ -329,12 +329,6 @@ psbSetup(pointer Module, pointer Options
if (!Initialised) {
Initialised = TRUE;
xf86AddDriver(&psb, Module, 0);
- LoaderRefSymLists(fbSymbols, ddcSymbols, shadowSymbols,
- psbvgahwSymbols,
-#ifdef XF86DRI
- psbDRMSymbols, psbDRISymbols,
-#endif
- NULL);
return (pointer) TRUE;
}
@@ -639,7 +633,6 @@ psbPreInitDRI(ScrnInfoPtr pScrn)
if (!xf86LoadSubModule(pScrn, "dri"))
return FALSE;
- xf86LoaderReqSymLists(psbDRISymbols, psbDRMSymbols, NULL);
return TRUE;
}
@@ -660,7 +653,6 @@ psbPreInitXpsb(ScrnInfoPtr pScrn)
pPsb->xpsb = TRUE;
- xf86LoaderReqSymLists(psbXpsbSymbols, NULL);
return TRUE;
}
#endif
@@ -680,7 +672,6 @@ psbPreInitAccel(ScrnInfoPtr pScrn)
if (!xf86LoadSubModule(pScrn, "exa"))
return FALSE;
- xf86LoaderReqSymLists(exaSymbols, NULL);
}
xf86DrvMsg(pScrn->scrnIndex, from, "Acceleration %sabled\n",
@@ -720,7 +711,6 @@ psbPreInitShadowFB(ScrnInfoPtr pScrn)
if (!xf86LoadSubModule(pScrn, "shadow"))
return FALSE;
- xf86LoaderReqSymLists(shadowSymbols, NULL);
}
xf86DrvMsg(pScrn->scrnIndex, from, "Shadow framebuffer %sabled\n",
@@ -854,7 +844,6 @@ psbPreInit(ScrnInfoPtr pScrn, int flags)
if (!xf86LoadSubModule(pScrn, "vbe"))
return FALSE;
- xf86LoaderReqSymLists(vbeSymbols, NULL);
/*
* Parse options and load required modules here.
@@ -874,7 +863,6 @@ psbPreInit(ScrnInfoPtr pScrn, int flags)
if (!xf86LoadSubModule(pScrn, "fb"))
return (FALSE);
- xf86LoaderReqSymLists(fbSymbols, NULL);
pScrn->chipset = "Intel GMA500";
pScrn->monitor = pScrn->confScreen->monitor;
@@ -1033,7 +1021,6 @@ psbDeviceInit(PsbDevicePtr pDevice, int
if (!xf86LoadSubModule(pDevice->pScrns[0], "vgahw"))
return FALSE;
- xf86LoaderReqSymLists(psbvgahwSymbols, NULL);
if (!vgaHWGetHWRec(pDevice->pScrns[0]))
return FALSE;

View File

@ -1,34 +0,0 @@
DESCRIPTION = "2D graphics driver for Poulsbo"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://MIT_License.txt;md5=732825ecdcf420261531d935fcd914a7"
PR = "r2"
inherit autotools
SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/xserver-xorg-video-psb_0.36.0-0ubuntu3~1004um9.tar.gz \
file://xorg-x11-drv-psb-0.31.0-ignoreacpi.patch;patch=1 \
file://xorg-x11-drv-psb-0.31.0-xserver17.patch;patch=1 \
file://xserver-xorg-video-psb-0.31.0-assert.patch;patch=1 \
file://xserver-xorg-video-psb-0.31.0-comment_unused.patch;patch=1 \
file://xserver-xorg-video-psb-0.31.0-greedy.patch;patch=1 \
file://xserver-xorg-video-psb-0.31.0-loader.patch;patch=1 \
file://stubs.patch;patch=1 \
file://01_disable_lid_timer.patch;patch=1 \
file://psb_xvtempfix.patch;patch=1 \
file://psb_mixed.patch;patch=1 \
file://dri-h.patch \
file://libdrm-poulsbo.patch"
export DRI_CFLAGS="-I${STAGING_INCDIR}/psb -I${STAGING_INCDIR}/psb/drm \
-I${STAGING_INCDIR}/X11/dri"
export CFLAGS = "-fvisibility=default"
export XORG_CFLAGS="-fvisibility=default -I${STAGING_INCDIR}/xorg \
-I${STAGING_INCDIR}/pixman-1"
FILES_${PN} += "${libdir}/xorg/modules/drivers/libmm.so \
${libdir}/xorg/modules/drivers/psb_drv.so"
DEPENDS += "virtual/libgl virtual/xserver"
COMPATIBLE_MACHINE = "emenlow"

View File

@ -1,68 +0,0 @@
CONFIG_X86_32=y
CONFIG_PRINTK=y
# Basic hardware support for the box - network, USB, PCI, sound
CONFIG_NETDEVICES=y
CONFIG_NETDEV_1000=y
CONFIG_ATA=y
CONFIG_ATA_GENERIC=y
CONFIG_ATA_SFF=y
CONFIG_PCI=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_E1000E=y
CONFIG_R8169=y
CONFIG_PATA_SCH=y
CONFIG_MMC_SDHCI_PCI=y
CONFIG_USB_EHCI_HCD=y
CONFIG_PCIEPORTBUS=y
CONFIG_NET=y
CONFIG_USB_UHCI_HCD=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_HDA_INTEL=y
# Make sure these are on, otherwise the bootup won't be fun
CONFIG_EXT3_FS=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_MODULES=y
CONFIG_SHMEM=y
CONFIG_TMPFS=y
CONFIG_PACKET=y
# These are needed for the Poulsbo kernel modules
CONFIG_I2C=y
CONFIG_AGP=y
CONFIG_VFAT_FS=y
CONFIG_PM=y
CONFIG_ACPI=y
CONFIG_FB=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_INPUT=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_IVTV=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2_COMMON=y
CONFIG_I2C_ALGOBIT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_VIDEO_FB_IVTV=y
# Needed for booting (and using) USB memory sticks
CONFIG_USB_STORAGE=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_RD_GZIP=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y

View File

@ -1,3 +0,0 @@
FILESEXTRAPATHS := "${THISDIR}/${PN}"
COMPATIBLE_MACHINE_emenlow = "emenlow"
KMACHINE_emenlow = "emenlow"

View File

@ -1,3 +0,0 @@
FILESPATH := "${FILESPATH}:${@os.path.dirname(bb.data.getVar('FILE', d, True))}"
SRC_URI += "file://defconfig"
COMPATIBLE_MACHINE_emenlow = "emenlow"

View File

@ -1,9 +1,8 @@
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "3"
LCONF_VERSION = "4"
BBFILES ?= ""
BBLAYERS = " \
##POKYBASE##/meta \
##POKYBASE##/meta-emenlow \
"

View File

@ -9,7 +9,7 @@ SANITY_ABIFILE = "${TMPDIR}/abi_version"
SANITY_VERSION = "1"
POKY_CONF_VERSION = "1"
LAYER_CONF_VERSION = "3"
LAYER_CONF_VERSION = "4"
SITE_CONF_VERSION = "1"
INHERIT += "sanity"