xserver-kdrive: added 1.3.0.0

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1684 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Marcin Juszkiewicz
2007-05-09 17:05:25 +00:00
parent 082a34fa0b
commit fbf4ba6b29
16 changed files with 16391 additions and 3 deletions

View File

@@ -0,0 +1,39 @@
Index: xorg-server-1.3.0.0/configure.ac
===================================================================
--- xorg-server-1.3.0.0.orig/configure.ac 2007-04-20 03:23:40.000000000 +0200
+++ xorg-server-1.3.0.0/configure.ac 2007-05-09 16:51:34.000000000 +0200
@@ -520,7 +520,11 @@
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
dnl Core modules for most extensions, et al.
+if test "$KDRIVE" = yes; then
+REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto [kbproto >= 1.0.3]"
+else
REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]"
+fi
REQUIRED_LIBS="xfont xau fontenc"
AM_CONDITIONAL(XV, [test "x$XV" = xyes])
@@ -1603,7 +1607,9 @@
AC_SUBST(XKB_COMPILED_DIR)
dnl and the rest of these are generic, so they're in config.h
+if test ! x"$KDRIVE" = xyes; then
AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
+fi
AC_DEFINE(XResExtension, 1, [Build XRes extension])
AC_TRY_COMPILE([
@@ -1616,10 +1622,12 @@
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
+if test ! "x$KDRIVE" = xyes ; then
dnl xorgconfig CLI configuration utility
PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
AC_SUBST(XORGCONFIG_DEP_CFLAGS)
AC_SUBST(XORGCONFIG_DEP_LIBS)
+fi
dnl xorgcfg GUI configuration utility
AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg],

View File

@@ -0,0 +1,11 @@
Index: xorg-server-1.2.0/hw/kdrive/Makefile.am
===================================================================
--- xorg-server-1.2.0.orig/hw/kdrive/Makefile.am 2007-03-28 17:11:38.000000000 +0200
+++ xorg-server-1.2.0/hw/kdrive/Makefile.am 2007-03-28 17:12:28.000000000 +0200
@@ -1,5 +1,5 @@
if KDRIVEFBDEV
-FBDEV_SUBDIRS = fbdev
+FBDEV_SUBDIRS = fbdev epson
endif
if KDRIVEIMAGEON

View File

@@ -0,0 +1,12 @@
Index: xorg-server-1.2.0/configure.ac
===================================================================
--- xorg-server-1.2.0.orig/configure.ac 2007-03-29 13:28:10.000000000 +0200
+++ xorg-server-1.2.0/configure.ac 2007-03-29 13:28:35.000000000 +0200
@@ -1517,6 +1517,7 @@
AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
fi
AC_DEFINE(TSLIB, 1, [Have tslib support])
+ AC_DEFINE(TOUCHSCREEN, 1, [Have touchscreen support])
fi
# damage shadow extension glx (NOTYET) fb mi

View File

@@ -0,0 +1,51 @@
Index: xorg-server-1.2.0/mi/miinitext.c
===================================================================
--- xorg-server-1.2.0.orig/mi/miinitext.c 2007-01-23 06:39:17.000000000 +0100
+++ xorg-server-1.2.0/mi/miinitext.c 2007-03-30 11:28:44.000000000 +0200
@@ -372,6 +372,9 @@
#ifdef DMXEXT
extern void DMXExtensionInit(INITARGS);
#endif
+#ifdef XCALIBRATE
+extern void XCalibrateExtensionInit(INITARGS);
+#endif
#ifdef XEVIE
extern void XevieExtensionInit(INITARGS);
#endif
@@ -663,6 +666,9 @@
#ifdef DAMAGE
if (!noDamageExtension) DamageExtensionInit();
#endif
+#ifdef XCALIBRATE
+ XCalibrateExtensionInit ();
+#endif
}
void
Index: xorg-server-1.2.0/include/kdrive-config.h.in
===================================================================
--- xorg-server-1.2.0.orig/include/kdrive-config.h.in 2007-03-30 11:31:07.000000000 +0200
+++ xorg-server-1.2.0/include/kdrive-config.h.in 2007-03-30 11:34:09.000000000 +0200
@@ -22,6 +22,9 @@
/* Support tslib touchscreen abstraction library */
#undef TSLIB
+/* Build XCalibrate extension */
+#undef XCALIBRATE
+
/* Verbose debugging output hilarity */
#undef DEBUG
Index: xorg-server-1.2.0/configure.ac
===================================================================
--- xorg-server-1.2.0.orig/configure.ac 2007-03-30 12:47:25.000000000 +0200
+++ xorg-server-1.2.0/configure.ac 2007-03-30 12:39:01.000000000 +0200
@@ -1540,7 +1540,7 @@
;;
esac
KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
- KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB $TSLIB_LIBS"
+ KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB $TSLIB_LIBS"
# check if we can build Xephyr
PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])

View File

@@ -0,0 +1,58 @@
Index: xorg-server-1.2.0/Makefile.am
===================================================================
--- xorg-server-1.2.0.orig/Makefile.am 2007-01-23 06:39:15.000000000 +0100
+++ xorg-server-1.2.0/Makefile.am 2007-03-28 20:26:19.000000000 +0200
@@ -30,6 +30,10 @@
XINPUT_DIR=Xi
endif
+if XKB
+XKB_DIR=xkb
+endif
+
if DBE
DBE_DIR=dbe
endif
@@ -46,7 +50,7 @@
randr \
render \
$(XINPUT_DIR) \
- xkb \
+ $(XKB_DIR) \
$(DBE_DIR) \
$(MFB_DIR) \
$(AFB_DIR) \
Index: xorg-server-1.2.0/configure.ac
===================================================================
--- xorg-server-1.2.0.orig/configure.ac 2007-01-23 06:39:15.000000000 +0100
+++ xorg-server-1.2.0/configure.ac 2007-03-28 20:27:13.000000000 +0200
@@ -428,6 +428,7 @@
AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes])
AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
+AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
dnl DDXes.
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -754,12 +755,15 @@
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
-AC_DEFINE(XKB, 1, [Build XKB])
-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
+AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
+if test "x$XKB" = xyes; then
+ AC_DEFINE(XKB, 1, [Build XKB])
+ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+ XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
+fi
AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
[Do not have `strcasecmp'.]))

View File

@@ -0,0 +1,124 @@
LICENSE = "MIT"
DEPENDS = "compositeproto damageproto fixesproto recordproto resourceproto scrnsaverproto videoproto xextproto xproto \
libxau libxext libxdmcp libxfont libxrandr tslib virtual/libsdl virtual/libx11 xtrans"
PROVIDES = "virtual/xserver"
RPROVIDES = "virtual/xserver"
PACKAGES =+ "xserver-kdrive-fbdev \
xserver-kdrive-sdl \
xserver-kdrive-fake \
xserver-kdrive-xephyr \
xserver-kdrive-epson \
xserver-kdrive-ati \
xserver-kdrive-chips \
xserver-kdrive-i810 \
xserver-kdrive-mach64 \
xserver-kdrive-mga \
xserver-kdrive-neomagic \
xserver-kdrive-nvidia \
xserver-kdrive-pm2 \
xserver-kdrive-r128 \
xserver-kdrive-smi \
xserver-kdrive-vesa \
xserver-kdrive-via \
xserver-kdrive-w100 \
"
SECTION = "x11/base"
DESCRIPTION = "X server from freedesktop.org"
DESCRIPTION_xserver-kdrive-fbdev = "X server from freedesktop.org, supporting generic framebuffer devices"
DESCRIPTION_xserver-kdrive-fake = "Fake X server"
DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window"
DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Epson S1D13806 devices"
DESCRIPTION_xserver-kdrive-sdl = "X server from freedesktop.org, SDL version"
DESCRIPTION_xserver-kdrive-w100 = "X server from freedesktop.org, supporting the ATI imageon w100 chipset"
DESCRIPTION_xserver-kdrive-ati = "X server from freedesktop.org, supporting ATI devices"
DESCRIPTION_xserver-kdrive-chips = "X server from freedesktop.org, supporting Chips chipsets"
DESCRIPTION_xserver-kdrive-i810 = "X server from freedesktop.org, supporting Intel chipsets"
DESCRIPTION_xserver-kdrive-imageon = "X server from freedesktop.org, supporting the ATI imageon 100 chipset"
DESCRIPTION_xserver-kdrive-mach64 = "X server from freedesktop.org, supporting mach64 chipsets"
DESCRIPTION_xserver-kdrive-mga = "X server from freedesktop.org, supporting mga chipsets"
DESCRIPTION_xserver-kdrive-neomagic = "X server from freedesktop.org, supporting neomagic chipsets"
DESCRIPTION_xserver-kdrive-nvidia = "X server from freedesktop.org, supporting nvidia devices"
DESCRIPTION_xserver-kdrive-pm2 = "X server from freedesktop.org, supporting Permedia2 chipsets"
DESCRIPTION_xserver-kdrive-r128 = "X server from freedesktop.org, supporting rage128 chipsets"
DESCRIPTION_xserver-kdrive-smi = "X server from freedesktop.org, supporting Silicon Motion devices"
DESCRIPTION_xserver-kdrive-vesa = "X server from freedesktop.org, supporting any card with a VESA, VGA or even EGA BIOS. x86 hardware only"
DESCRIPTION_xserver-kdrive-via = "X server from freedesktop.org, supporting VIA chipsets"
FILES_${PN} += "${libdir}/xserver/SecurityPolicy"
FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev"
FILES_xserver-kdrive-fake = "${bindir}/Xfake"
FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
FILES_xserver-kdrive-epson = "${bindir}/Xepson"
FILES_xserver-kdrive-sdl = "${bindir}/Xsdl"
FILES_xserver-kdrive-w100 = "${bindir}/Xw100"
FILES_xserver-kdrive-ati = "${bindir}/Xati"
FILES_xserver-kdrive-chips = "${bindir}/Xchips"
FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
FILES_xserver-kdrive-imageon = "${bindir}/Ximageon"
FILES_xserver-kdrive-mach64 = "${bindir}/Xmach64"
FILES_xserver-kdrive-mga = "${bindir}/Xmga"
FILES_xserver-kdrive-neomagic = "${bindir}/Xneomagic"
FILES_xserver-kdrive-nvidia = "${bindir}/Xnvidia"
FILES_xserver-kdrive-pm2 = "${bindir}/Xpm2"
FILES_xserver-kdrive-r128 = "${bindir}/Xr128"
FILES_xserver-kdrive-smi = "${bindir}/Xsmi"
FILES_xserver-kdrive-vesa = "${bindir}/Xvesa"
FILES_xserver-kdrive-via = "${bindir}/Xvia"
RDEPENDS_xserver-kdrive-fbdev = "${PN}"
RDEPENDS_xserver-kdrive-fake = "${PN}"
RDEPENDS_xserver-kdrive-xephyr = "${PN}"
RDEPENDS_xserver-kdrive-epson = "${PN}"
RDEPENDS_xserver-kdrive-sdl = "${PN}"
RDEPENDS_xserver-kdrive-w100 = "${PN}"
RDEPENDS_xserver-kdrive-ati = "${PN}"
RDEPENDS_xserver-kdrive-chips = "${PN}"
RDEPENDS_xserver-kdrive-i810 = "${PN}"
RDEPENDS_xserver-kdrive-mach64 = "${PN}"
RDEPENDS_xserver-kdrive-mga = "${PN}"
RDEPENDS_xserver-kdrive-neomagic = "${PN}"
RDEPENDS_xserver-kdrive-nvidia = "${PN}"
RDEPENDS_xserver-kdrive-pm2 = "${PN}"
RDEPENDS_xserver-kdrive-r128 = "${PN}"
RDEPENDS_xserver-kdrive-smi = "${PN}"
RDEPENDS_xserver-kdrive-vesa = "${PN}"
RDEPENDS_xserver-kdrive-via = "${PN}"
SRC_URI ?= "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES}"
KDRIVE_COMMON_PATCHES = " \
file://kmode.patch;patch=1 \
file://disable-apm.patch;patch=1 \
file://no-serial-probing.patch;patch=1 \
file://kdrive-evdev.patch;patch=1 \
file://kdrive-use-evdev.patch;patch=1 \
file://fbdev-not-fix.patch;patch=1 \
file://enable-builtin-fonts.patch;patch=1 \
file://disable-xf86-dga-xorgcfg.patch;patch=1 \
file://optional-xkb.patch;patch=1 \
file://enable-epson.patch;patch=1 \
file://enable-tslib.patch;patch=1 \
file://kmode-palm.patch;patch=1 \
"
SRC_URI_append_mnci = " file://onlyfb.patch;patch=1"
SRC_URI_append_poodle = " file://xserver-kdrive-poodle.patch;patch=1"
PACKAGE_ARCH_poodle = "poodle"
inherit autotools pkgconfig
ARM_INSTRUCTION_SET = "arm"
EXTRA_OECONF = "--enable-composite --enable-kdrive \
--disable-dga --disable-dri --disable-xinerama \
--disable-xf86misc --disable-xf86vidmode \
--disable-xorg --disable-xorgcfg \
--disable-xkb --disable-xnest --disable-xvfb \
--disable-xevie --disable-xprint --disable-xtrap \
--disable-dmx ${W100_OECONF} ${IMAGEON_OECONF} \
--with-default-font-path=built-ins \
--enable-tslib --enable-xcalibrate \
ac_cv_file__usr_share_X11_sgml_defs_ent=no"

View File

@@ -0,0 +1,18 @@
Index: git/composite/compext.c
===================================================================
--- git.orig/composite/compext.c 2007-03-28 16:25:12.000000000 +0200
+++ git/composite/compext.c 2007-03-28 16:25:15.000000000 +0200
@@ -696,11 +696,13 @@
if (GetPictureScreenIfSet(pScreen) == NULL)
return;
}
+#ifdef PANORAMIX
/* Xinerama's rewriting of window drawing before Composite gets to it
* breaks Composite.
*/
if (!noPanoramiXExtension)
return;
+#endif
CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
if (!CompositeClientWindowType)

View File

@@ -0,0 +1,11 @@
--- /tmp/Makefile.am 2006-08-30 09:51:21.000000000 +0200
+++ git/hw/kdrive/Makefile.am 2006-08-30 09:51:44.425780000 +0200
@@ -4,7 +4,7 @@
endif
if KDRIVEFBDEV
-FBDEV_SUBDIRS = fbdev
+FBDEV_SUBDIRS = fbdev epson
endif
if XSDLSERVER

File diff suppressed because it is too large Load Diff

View File

@@ -40,13 +40,14 @@
ErrorF("-switchCmd Command to execute on vt switch\n");
ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n");
ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
@@ -796,6 +799,10 @@
@@ -796,6 +799,11 @@
UseMsg ();
return 2;
}
+ if (!strcmp (argv[i], "-use-evdev"))
+ {
+ use_evdev = 1;
+ return 1;
+ }
if (!strcmp (argv[i], "-keyboard"))
{

View File

@@ -0,0 +1,756 @@
# Author : Manuel Teira <manuel.teira@telefonica.net> (sirfred in #oe)
# Description: Support for multiple memory video zones in kdrive. Make offscreen
# areas aware of the memory video zone it belongs to. Change the fbdev driver to
# honour this new model.
#
# Patch managed by http://www.holgerschurig.de/patcher.html
#
--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c~kdrive-vidmemarea
+++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c
@@ -908,9 +908,10 @@
ret = (*pScreen->CloseScreen) (index, pScreen);
else
ret = TRUE;
-
- if (screen->off_screen_base < screen->memory_size)
- KdOffscreenFini (pScreen);
+
+ if (KdHasOffscreen(screen)) {
+ KdOffscreenFini(pScreen);
+ }
if (pScreenPriv->dpmsState != KD_DPMS_NORMAL)
(*card->cfuncs->dpms) (pScreen, KD_DPMS_NORMAL);
@@ -1219,8 +1220,9 @@
if (!(*card->cfuncs->initAccel) (pScreen))
screen->dumb = TRUE;
- if (screen->off_screen_base < screen->memory_size)
- KdOffscreenInit (pScreen);
+ if (KdHasOffscreen(screen)) {
+ KdOffscreenInit(pScreen);
+ }
#ifdef PSEUDO8
(void) p8Init (pScreen, PSEUDO8_USE_DEFAULT);
--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.h~kdrive-vidmemarea
+++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.h
@@ -63,6 +63,9 @@
#define KD_MAX_CARD_ADDRESS 8
#endif
+#define KD_VIDMEM_MINPRIO 0
+#define KD_VIDMEM_MAXPRIO 255
+
/*
* Configuration information per video card
*/
@@ -115,6 +118,13 @@
typedef void (*KdOffscreenSaveProc) (ScreenPtr pScreen, KdOffscreenArea *area);
+typedef struct _KdVideoMemArea {
+ CARD8 priority;
+ CARD8 *base;
+ CARD32 size;
+ CARD32 available_offset;
+} KdVideoMemArea;
+
typedef enum _KdOffscreenState {
KdOffscreenAvail,
KdOffscreenRemovable,
@@ -127,7 +137,8 @@
int size;
int score;
pointer privData;
-
+ KdVideoMemArea *vidmem;
+ int pool;
KdOffscreenSaveProc save;
KdOffscreenState state;
@@ -138,6 +149,7 @@
#define RR_Rotate_All (RR_Rotate_0|RR_Rotate_90|RR_Rotate_180|RR_Rotate_270)
#define RR_Reflect_All (RR_Reflect_X|RR_Reflect_Y)
+
typedef struct _KdScreenInfo {
struct _KdScreenInfo *next;
KdCardInfo *card;
@@ -155,9 +167,8 @@
int mynum;
DDXPointRec origin;
KdFrameBuffer fb[KD_MAX_FB];
- CARD8 *memory_base;
- unsigned long memory_size;
- unsigned long off_screen_base;
+ KdVideoMemArea **videomem_areas;
+ int num_videomem_areas;
} KdScreenInfo;
typedef struct _KdCardFuncs {
@@ -187,7 +198,6 @@
void (*getColors) (ScreenPtr, int, int, xColorItem *);
void (*putColors) (ScreenPtr, int, int, xColorItem *);
-
} KdCardFuncs;
#define KD_MAX_PSEUDO_DEPTH 8
@@ -203,7 +213,8 @@
int dpmsState;
- KdOffscreenArea *off_screen_areas;
+ KdOffscreenArea **offscreen_pools;
+ int num_offscreen_pools;
ColormapPtr pInstalledmap[KD_MAX_FB]; /* current colormap */
xColorItem systemPalette[KD_MAX_PSEUDO_SIZE];/* saved windows colors */
@@ -881,6 +892,15 @@
KdOffscreenInit (ScreenPtr pScreen);
KdOffscreenArea *
+KdOffscreenAllocPrio (ScreenPtr pScreen, int size, int align,
+ Bool locked,
+ KdOffscreenSaveProc save,
+ pointer privData,
+ int minPriority,
+ int maxPriority,
+ Bool allowEviction);
+
+KdOffscreenArea *
KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
Bool locked,
KdOffscreenSaveProc save,
--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kaa.c~kdrive-vidmemarea
+++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kaa.c
@@ -160,7 +160,7 @@
pPixmap->drawable.width,
pPixmap->drawable.height));
pPixmap->devKind = pitch;
- pPixmap->devPrivate.ptr = (pointer) ((CARD8 *) pScreenPriv->screen->memory_base + pKaaPixmap->area->offset);
+ pPixmap->devPrivate.ptr = (pointer) ((CARD8 *) pKaaPixmap->area->vidmem->base + pKaaPixmap->area->offset);
pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
return TRUE;
}
@@ -198,7 +198,7 @@
dst = pPixmap->devPrivate.ptr;
dst_pitch = pPixmap->devKind;
-
+
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
kaaWaitSync (pPixmap->drawable.pScreen);
@@ -336,10 +336,16 @@
{
ScreenPtr pScreen = p->drawable.pScreen;
KdScreenPriv(pScreen);
+ int index;
- return ((unsigned long) ((CARD8 *) p->devPrivate.ptr -
- (CARD8 *) pScreenPriv->screen->memory_base) <
- pScreenPriv->screen->memory_size);
+ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
+ KdVideoMemArea *vidmem = pScreenPriv->screen->videomem_areas[index];
+ if ((((CARD8 *)p->devPrivate.ptr) >= vidmem->base) &&
+ (((CARD8 *)p->devPrivate.ptr) <= (vidmem->base + vidmem->size))) {
+ return TRUE;
+ }
+ }
+ return FALSE;
}
PixmapPtr
@@ -1060,6 +1066,7 @@
KdCheckPaintWindow (pWin, pRegion, what);
}
+
Bool
kaaDrawInit (ScreenPtr pScreen,
KaaScreenInfoPtr pScreenInfo)
@@ -1109,7 +1116,7 @@
* Hookup offscreen pixmaps
*/
if ((pKaaScr->info->flags & KAA_OFFSCREEN_PIXMAPS) &&
- screen->off_screen_base < screen->memory_size)
+ KdHasOffscreen(screen))
{
if (!AllocatePixmapPrivate(pScreen, kaaPixmapPrivateIndex,
sizeof (KaaPixmapPrivRec)))
--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/koffscreen.c~kdrive-vidmemarea
+++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/koffscreen.c
@@ -41,16 +41,20 @@
{
KdScreenPriv (pScreen);
KdOffscreenArea *prev = 0, *area;
-
- assert (pScreenPriv->screen->off_screen_areas->area.offset == 0);
- for (area = pScreenPriv->off_screen_areas; area; area = area->next)
- {
- if (prev)
- assert (prev->offset + prev->size == area->offset);
+ int index;
+
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ area = pScreenPriv->offscreen_pools[index];
+ assert (area->vidmem->available_offset - area.offset == 0);
+ while(area) {
+ if (prev)
+ assert (prev->offset + prev->size == area->offset);
- prev = area;
+ prev = area;
+ area = area->next;
+ }
+ assert (prev->offset + prev->size == prev->vidmem->size);
}
- assert (prev->offset + prev->size == pScreenPriv->screen->memory_size);
}
#else
#define KdOffscreenValidate(s)
@@ -65,101 +69,133 @@
}
KdOffscreenArea *
-KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
- Bool locked,
- KdOffscreenSaveProc save,
- pointer privData)
+KdOffscreenAllocPrio (ScreenPtr pScreen, int size, int align,
+ Bool locked,
+ KdOffscreenSaveProc save,
+ pointer privData,
+ int minPriority,
+ int maxPriority,
+ Bool allowEviction)
{
KdOffscreenArea *area, *begin, *best;
KdScreenPriv (pScreen);
int tmp, real_size = 0, best_score;
+ int index;
+ Bool canFit = FALSE;
- KdOffscreenValidate (pScreen);
if (!align)
align = 1;
if (!size)
{
- DBG_OFFSCREEN (("Alloc 0x%x -> EMPTY\n", size));
+ DBG_OFFSCREEN(("Alloc 0x%x -> EMPTY\n", size));
return NULL;
}
/* throw out requests that cannot fit */
- if (size > (pScreenPriv->screen->memory_size - pScreenPriv->screen->off_screen_base))
- {
- DBG_OFFSCREEN (("Alloc 0x%x -> TOBIG\n", size));
- return NULL;
+ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
+ KdVideoMemArea *vidmem = pScreenPriv->screen->videomem_areas[index];
+ if ((vidmem->priority <= maxPriority) &&
+ (vidmem->priority >= minPriority)) {
+ if (size <= (vidmem->size - vidmem->available_offset)) {
+ canFit = TRUE;
+ break;
+ }
+ }
}
-
- /* Try to find a free space that'll fit. */
- for (area = pScreenPriv->off_screen_areas; area; area = area->next)
+ if (!canFit)
{
- /* skip allocated areas */
- if (area->state != KdOffscreenAvail)
- continue;
+ DBG_OFFSCREEN(("Alloc 0x%x -> TOOBIG\n", size));
+ return NULL;
+ }
- /* adjust size to match alignment requirement */
- real_size = size;
- tmp = area->offset % align;
- if (tmp)
- real_size += (align - tmp);
-
- /* does it fit? */
- if (real_size <= area->size)
- break;
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ /* Look just in the head, as all the areas of the pool have
+ the same vidmem */
+ area = pScreenPriv->offscreen_pools[index];
+ if ((area->vidmem->priority > maxPriority) ||
+ (area->vidmem->priority < minPriority))
+ continue;
+
+ /* Try to find a free space that'll fit. */
+ for (area = pScreenPriv->offscreen_pools[index]; area;
+ area = area->next) {
+ /* skip allocated areas */
+ if (area->state != KdOffscreenAvail)
+ continue;
+
+ /* adjust size to match alignment requirement */
+ real_size = size;
+ tmp = area->offset % align;
+ if (tmp)
+ real_size += (align - tmp);
+
+ /* does it fit? */
+ if (real_size <= area->size)
+ break;
+ }
+ if (area)
+ break;
}
-
- if (!area)
- {
+
+ if (!area && allowEviction) {
/*
* Kick out existing users to make space.
*
* First, locate a region which can hold the desired object.
*/
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ if ((area->vidmem->priority > maxPriority) ||
+ (area->vidmem->priority < minPriority))
+ continue;
- /* prev points at the first object to boot */
- best = NULL;
- best_score = MAXINT;
- for (begin = pScreenPriv->off_screen_areas; begin != NULL;
- begin = begin->next)
- {
- int avail, score;
- KdOffscreenArea *scan;
+ /* prev points at the first object to boot */
+ best = NULL;
+ best_score = MAXINT;
- if (begin->state == KdOffscreenLocked)
- continue;
+ for (begin = pScreenPriv->offscreen_pools[index]; begin != NULL;
+ begin = begin->next) {
+ int avail, score;
+ KdOffscreenArea *scan;
- /* adjust size to match alignment requirement */
- real_size = size;
- tmp = begin->offset % align;
- if (tmp)
- real_size += (align - tmp);
+ if (begin->state == KdOffscreenLocked)
+ continue;
+
+ /* adjust size to match alignment requirement */
+ real_size = size;
+ tmp = begin->offset % align;
+ if (tmp)
+ real_size += (align - tmp);
- avail = 0;
- score = 0;
- /* now see if we can make room here, and how "costly" it'll be. */
- for (scan = begin; scan != NULL; scan = scan->next)
- {
- if (scan->state == KdOffscreenLocked) {
- /* Can't make room here, start after this locked area. */
- begin = scan->next;
- break;
- }
- /* Score should only be non-zero for KdOffscreenRemovable */
- score += scan->score;
- avail += scan->size;
- if (avail >= real_size)
- break;
- }
- /* Is it the best option we've found so far? */
- if (avail >= real_size && score < best_score) {
- best = begin;
- best_score = score;
- }
- }
- area = best;
- if (!area)
- {
+ avail = 0;
+ score = 0;
+ /* now see if we can make room here,
+ and how "costly" it'll be. */
+ for (scan = begin; scan != NULL; scan = scan->next) {
+ if (scan->state == KdOffscreenLocked) {
+ /* Can't make room here,
+ start after this locked area. */
+ begin = scan->next;
+ break;
+ }
+ /* Score should only be non-zero for KdOffscreenRemovable */
+ score += scan->score;
+ avail += scan->size;
+ if (avail >= real_size)
+ break;
+ }
+ /* Is it the best option we've found so far? */
+ if (avail >= real_size && score < best_score) {
+ best = begin;
+ best_score = score;
+ }
+ }
+ area = best;
+ if (area)
+ break;
+ }
+
+ if (!area) {
DBG_OFFSCREEN (("Alloc 0x%x -> NOSPACE\n", size));
/* Could not allocate memory */
KdOffscreenValidate (pScreen);
@@ -180,16 +216,14 @@
/*
* Now get the system to merge the other needed areas together
*/
- while (area->size < real_size)
- {
- assert (area->next && area->next->state == KdOffscreenRemovable);
+ while (area->size < real_size) {
+ assert (area->next && area->next->state == KdOffscreenRemovable);
(void) KdOffscreenKickOut (pScreen, area->next);
}
}
-
+
/* save extra space in new area */
- if (real_size < area->size)
- {
+ if (real_size < area->size) {
KdOffscreenArea *new_area = xalloc (sizeof (KdOffscreenArea));
if (!new_area)
return NULL;
@@ -198,9 +232,14 @@
new_area->state = KdOffscreenAvail;
new_area->save = 0;
new_area->score = 0;
+ new_area->vidmem = area->vidmem;
+ new_area->pool = area->pool;
new_area->next = area->next;
area->next = new_area;
area->size = real_size;
+ DBG_OFFSCREEN (("New OffscreenArea at %p (offset:0x%08x, size:0x%08x, pool:%d\n", area, area->offset, area->size, area->pool));
+
+
}
/*
* Mark this area as in use
@@ -212,42 +251,80 @@
area->privData = privData;
area->save = save;
area->score = 0;
-
+
area->save_offset = area->offset;
{
int tmp = area->offset % align;
if (tmp)
area->offset += (align - tmp);
}
-
+
KdOffscreenValidate (pScreen);
DBG_OFFSCREEN (("Alloc 0x%x -> 0x%x\n", size, area->offset));
return area;
}
+Bool
+KdHasOffscreen(KdScreenInfo *screen)
+{
+ int index;
+ DBG_OFFSCREEN (("KdHasOffscreen\n"));
+
+ for (index = 0; index < screen->num_videomem_areas; index++) {
+ KdVideoMemArea *vidmem = screen->videomem_areas[index];
+ if (vidmem->available_offset < vidmem->size) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+KdOffscreenArea *
+KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
+ Bool locked,
+ KdOffscreenSaveProc save,
+ pointer privData)
+{
+ DBG_OFFSCREEN (("KdOffscreenAlloc(size:%d, align:%d, locked:%d)\n",
+ size, align, locked));
+ return KdOffscreenAllocPrio(pScreen, size, align,
+ locked,
+ save,
+ privData,
+ KD_VIDMEM_MINPRIO,
+ KD_VIDMEM_MAXPRIO,
+ TRUE);
+}
+
void
KdOffscreenSwapOut (ScreenPtr pScreen)
{
KdScreenPriv (pScreen);
+ int index;
+
+ DBG_OFFSCREEN (("KdOffscreenSwapOut\n"));
KdOffscreenValidate (pScreen);
- /* loop until a single free area spans the space */
- for (;;)
- {
- KdOffscreenArea *area = pScreenPriv->off_screen_areas;
+
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ /* loop until a single free area spans the space */
+ for (;;)
+ {
+ KdOffscreenArea *area = pScreenPriv->offscreen_pools[index];
- if (!area)
- break;
- if (area->state == KdOffscreenAvail)
- {
- area = area->next;
- if (!area)
- break;
- }
- assert (area->state != KdOffscreenAvail);
- (void) KdOffscreenKickOut (pScreen, area);
- KdOffscreenValidate (pScreen);
+ if (!area)
+ break;
+ if (area->state == KdOffscreenAvail)
+ {
+ area = area->next;
+ if (!area)
+ break;
+ }
+ assert (area->state != KdOffscreenAvail);
+ (void) KdOffscreenKickOut (pScreen, area);
+ KdOffscreenValidate (pScreen);
+ }
}
KdOffscreenValidate (pScreen);
KdOffscreenFini (pScreen);
@@ -256,6 +333,8 @@
void
KdOffscreenSwapIn (ScreenPtr pScreen)
{
+ KdScreenPriv (pScreen);
+ DBG_OFFSCREEN (("KdOffscreenSwapIn\n"));
KdOffscreenInit (pScreen);
}
@@ -264,7 +343,7 @@
KdOffscreenMerge (KdOffscreenArea *area)
{
KdOffscreenArea *next = area->next;
-
+ //DBG_OFFSCREEN (("KdOffscreenMerge %p\n", area));
/* account for space */
area->size += next->size;
/* frob pointer */
@@ -278,8 +357,9 @@
KdScreenPriv(pScreen);
KdOffscreenArea *next = area->next;
KdOffscreenArea *prev;
-
- DBG_OFFSCREEN (("Free 0x%x -> 0x%x\n", area->size, area->offset));
+
+ DBG_OFFSCREEN (("KdOffscreenFree 0x%x -> 0x%x\n",
+ area->size, area->offset));
KdOffscreenValidate (pScreen);
area->state = KdOffscreenAvail;
@@ -290,10 +370,11 @@
/*
* Find previous area
*/
- if (area == pScreenPriv->off_screen_areas)
+ if (area == pScreenPriv->offscreen_pools[area->pool])
prev = 0;
else
- for (prev = pScreenPriv->off_screen_areas; prev; prev = prev->next)
+ for (prev = pScreenPriv->offscreen_pools[area->pool];
+ prev; prev = prev->next)
if (prev->next == area)
break;
@@ -317,21 +398,30 @@
{
KaaPixmapPriv (pPixmap);
KdScreenPriv (pPixmap->drawable.pScreen);
+ int index;
static int iter = 0;
+
if (!pKaaPixmap->area)
return;
+ /*
+ DBG_OFFSCREEN(("KdOffscreenMarkUsed(offset:0x%08x, pool:%d)\n",
+ pKaaPixmap->area->offset,
+ pKaaPixmap->area->pool));
+ */
/* The numbers here are arbitrary. We may want to tune these. */
pKaaPixmap->area->score += 100;
if (++iter == 10) {
KdOffscreenArea *area;
- for (area = pScreenPriv->off_screen_areas; area != NULL;
- area = area->next)
- {
- if (area->state == KdOffscreenRemovable)
- area->score = (area->score * 7) / 8;
- }
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ for (area = pScreenPriv->offscreen_pools[index]; area != NULL;
+ area = area->next)
+ {
+ if (area->state == KdOffscreenRemovable)
+ area->score = (area->score * 7) / 8;
+ }
+ }
}
}
@@ -340,23 +430,41 @@
{
KdScreenPriv (pScreen);
KdOffscreenArea *area;
+ KdVideoMemArea *vidmem;
+ int index, num_offscreen;
- /* Allocate a big free area */
- area = xalloc (sizeof (KdOffscreenArea));
+ DBG_OFFSCREEN (("KdOffscreenInit\n"));
+ num_offscreen = 0;
+ pScreenPriv->num_offscreen_pools = 0;
+ pScreenPriv->offscreen_pools = NULL;
- if (!area)
- return FALSE;
+ for (index = 0; index < pScreenPriv->screen->num_videomem_areas; index++) {
+ vidmem = pScreenPriv->screen->videomem_areas[index];
+ DBG_OFFSCREEN (("Searching vidmemarea base:0x%p, size:0x%08x, available_offset:0x%08x\n", vidmem->base, vidmem->size, vidmem->available_offset));
+ if (vidmem->available_offset < vidmem->size) {
+ pScreenPriv->offscreen_pools = xrealloc(pScreenPriv->offscreen_pools,
+ sizeof(KdOffscreenArea*) * (pScreenPriv->num_offscreen_pools + 1));
+ if (!pScreenPriv->offscreen_pools) {
+ return FALSE;
+ }
+ pScreenPriv->offscreen_pools[pScreenPriv->num_offscreen_pools] =
+ area = xcalloc(sizeof(KdOffscreenArea), 1);
+ if (!area)
+ return FALSE;
+
+ area->state = KdOffscreenAvail;
+ area->vidmem = vidmem;
+ area->offset = vidmem->available_offset;
+ area->size = vidmem->size - vidmem->available_offset;
+ area->save = 0;
+ area->pool = pScreenPriv->num_offscreen_pools;
+ area->next = NULL;
+ area->score = 0;
+ pScreenPriv->num_offscreen_pools++;
+ DBG_OFFSCREEN (("New OffscreenArea at %p (offset:0x%08x, size:0x%08x, pool:%d)\n", area, area->offset, area->size, area->pool));
+ }
+ }
- area->state = KdOffscreenAvail;
- area->offset = pScreenPriv->screen->off_screen_base;
- area->size = pScreenPriv->screen->memory_size - area->offset;
- area->save = 0;
- area->next = NULL;
- area->score = 0;
-
- /* Add it to the free areas */
- pScreenPriv->off_screen_areas = area;
-
KdOffscreenValidate (pScreen);
return TRUE;
@@ -367,11 +475,17 @@
{
KdScreenPriv (pScreen);
KdOffscreenArea *area;
-
- /* just free all of the area records */
- while ((area = pScreenPriv->off_screen_areas))
- {
- pScreenPriv->off_screen_areas = area->next;
- xfree (area);
+ int index;
+
+ DBG_OFFSCREEN (("KdOffscreenFini\n"));
+ for (index = 0; index < pScreenPriv->num_offscreen_pools; index++) {
+ /* just free all of the area records */
+ while ((area = pScreenPriv->offscreen_pools[index])) {
+ pScreenPriv->offscreen_pools[index] = area->next;
+ xfree (area);
+ }
}
+ xfree(pScreenPriv->offscreen_pools);
+ pScreenPriv->offscreen_pools = NULL;
+ pScreenPriv->num_offscreen_pools = 0;
}
--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c~kdrive-vidmemarea
+++ xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c
@@ -330,6 +330,7 @@
FbdevScrPriv *scrpriv = screen->driver;
KdMouseMatrix m;
FbdevPriv *priv = screen->card->driver;
+ KdVideoMemArea *vidmem;
if (scrpriv->randr != RR_Rotate_0)
scrpriv->shadow = TRUE;
@@ -342,15 +343,20 @@
screen->width = priv->var.xres;
screen->height = priv->var.yres;
- screen->memory_base = (CARD8 *) (priv->fb);
- screen->memory_size = priv->fix.smem_len;
+ screen->videomem_areas = xcalloc(sizeof(KdVideoMemArea*), 1);
+ screen->videomem_areas[0] = vidmem = xcalloc(sizeof(KdVideoMemArea), 1);
+ screen->num_videomem_areas = 1;
+
+ vidmem->priority = KD_VIDMEM_MINPRIO;
+ vidmem->base = (CARD8 *) (priv->fb);
+ vidmem->size = priv->fix.smem_len;
if (scrpriv->shadow)
{
if (!KdShadowFbAlloc (screen, 0,
scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)))
return FALSE;
- screen->off_screen_base = screen->memory_size;
+ vidmem->available_offset = vidmem->size;
}
else
{
@@ -358,7 +364,7 @@
screen->fb[0].pixelStride = (priv->fix.line_length * 8 /
priv->var.bits_per_pixel);
screen->fb[0].frameBuffer = (CARD8 *) (priv->fb);
- screen->off_screen_base = screen->fb[0].byteStride * screen->height;
+ vidmem->available_offset = screen->fb[0].byteStride * screen->height;
}
return TRUE;

View File

@@ -0,0 +1,34 @@
--- kmode.c 2006-05-03 19:48:42.000000000 +0200
+++ xserver/hw/kdrive/src/kmode.c 2006-05-03 19:50:43.000000000 +0200
@@ -32,6 +32,31 @@
/* H V Hz KHz */
/* FP BP BLANK POLARITY */
+ /* Treo 650 */
+
+ { 320, 320, 64, 16256,
+ 17, 12, 32, KdSyncNegative,
+ 1, 11, 14, KdSyncNegative,
+ },
+
+ { 320, 320, 64, 0,
+ 0, 0, 0, KdSyncNegative,
+ 0, 0, 0, KdSyncNegative,
+ },
+
+ /* LifeDrive/T3/TX modes */
+
+ { 320, 480, 64, 16256,
+ 17, 12, 32, KdSyncNegative,
+ 1, 11, 14, KdSyncNegative,
+ },
+
+ { 480, 320, 64, 0,
+ 0, 0, 0, KdSyncNegative,
+ 0, 0, 0, KdSyncNegative,
+ },
+
+
/* IPAQ modeline:
*
* Modeline "320x240" 5.7222 320 337 340 352 240 241 244 254"

View File

@@ -0,0 +1,15 @@
Patch suggested by Manuel Teira to actually enable offscreen pixmap
acceleration in Xw100. Value 16 is empirical, works well on hx4700,
but in case of issues, consider double it (other accelerated drivers
use bigger values than 16).
--- xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c.org 2007-04-04 10:28:57.000000000 +0000
+++ xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c 2007-04-06 14:43:40.000000000 +0000
@@ -433,6 +433,7 @@
* or kaaPixmapUseScreen. But this is probably caused by some bug in this
* driver... */
atis->kaa.flags |= KAA_OFFSCREEN_PIXMAPS;
+ atis->kaa.pitchAlign = 16;
if (!kaaDrawInit(pScreen, &atis->kaa))
return FALSE;

File diff suppressed because it is too large Load Diff

View File

@@ -26,7 +26,7 @@
AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: enabled)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=yes])
AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: enabled)]), [XF86MISC=$enableval], [XF86MISC=yes])
AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=yes])
+AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--disable-xcalibrate], [Build XCalibrate extension (default: enabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=yes])
+AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
AC_ARG_ENABLE(xevie, AS_HELP_STRING([--disable-xevie], [Build XEvIE extension (default: enabled)]), [XEVIE=$enableval], [XEVIE=yes])
AC_ARG_ENABLE(lbx, AS_HELP_STRING([--disable-lbx], [Build LBX extension (default: no)]), [LBX=$enableval], [LBX=no])
AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=yes])
@@ -37,7 +37,7 @@
+AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
+if test "x$XCALIBRATE" = xyes; then
+ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateext"
+ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
+fi
+
AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes])

View File

@@ -0,0 +1,19 @@
require xserver-kdrive-common.inc
DEPENDS += "libxkbfile libxcalibrate"
PE = "1"
PR = "r6"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
file://enable-xcalibrate.patch;patch=1 \
file://w100.patch;patch=1 \
file://w100-fix-offscreen-bmp.patch;patch=1 \
"
S = "${WORKDIR}/xorg-server-${PV}"
W100_OECONF = "--disable-w100"
W100_OECONF_arm = "--enable-w100"