mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 00:32:12 +02:00
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:
39
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch
vendored
Normal file
39
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/disable-xf86-dga-xorgcfg.patch
vendored
Normal 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],
|
||||
11
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch
vendored
Normal file
11
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch
vendored
Normal 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
|
||||
12
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch
vendored
Normal file
12
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch
vendored
Normal 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
|
||||
51
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch
vendored
Normal file
51
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch
vendored
Normal 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"])
|
||||
58
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch
vendored
Normal file
58
meta/packages/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch
vendored
Normal 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'.]))
|
||||
124
meta/packages/xorg-xserver/xserver-kdrive-common.inc
Normal file
124
meta/packages/xorg-xserver/xserver-kdrive-common.inc
Normal 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"
|
||||
@@ -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)
|
||||
11
meta/packages/xorg-xserver/xserver-kdrive/enable-epson.patch
Normal file
11
meta/packages/xorg-xserver/xserver-kdrive/enable-epson.patch
Normal 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
|
||||
8851
meta/packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch
Normal file
8851
meta/packages/xorg-xserver/xserver-kdrive/kdrive-imageon.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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"))
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
34
meta/packages/xorg-xserver/xserver-kdrive/kmode-palm.patch
Normal file
34
meta/packages/xorg-xserver/xserver-kdrive/kmode-palm.patch
Normal 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"
|
||||
@@ -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;
|
||||
|
||||
6388
meta/packages/xorg-xserver/xserver-kdrive/w100.patch
Normal file
6388
meta/packages/xorg-xserver/xserver-kdrive/w100.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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])
|
||||
|
||||
19
meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
Normal file
19
meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb
Normal 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"
|
||||
|
||||
Reference in New Issue
Block a user