diff options
| author | Marcin Juszkiewicz <marcin@juszkiewicz.com.pl> | 2009-07-28 14:30:47 +0200 |
|---|---|---|
| committer | Marcin Juszkiewicz <marcin@juszkiewicz.com.pl> | 2009-10-26 17:28:43 +0100 |
| commit | 083679cd9634449aff829be751cfb236e1175956 (patch) | |
| tree | 885f0892d1935f90bc02bc6bbe72c69ff534796f | |
| parent | 6cb806430f8a66630f960bf0570c49fddacfe98d (diff) | |
xserver-kdrive-nomadik: added 1.3.0.0 version
This version has hardware acceleration working.
NOTE: patches were applied and refreshed - thats why they differ from ST
ones.
3 files changed, 6118 insertions, 0 deletions
diff --git a/recipes/xorg-xserver/xserver-kdrive-nomadik/nomadik_xserver_1300.patch b/recipes/xorg-xserver/xserver-kdrive-nomadik/nomadik_xserver_1300.patch new file mode 100644 index 0000000000..2a52072748 --- /dev/null +++ b/recipes/xorg-xserver/xserver-kdrive-nomadik/nomadik_xserver_1300.patch @@ -0,0 +1,6052 @@ +--- + Makefile.am | 6 + Xext/Makefile.am | 6 + Xext/xcalibrate.c | 47 + configure.ac | 51 + dix/dixfonts.c | 2 + dix/window.c | 142 ++ + exa/exa.c | 6 + exa/exa_offscreen.c | 2 + hw/kdrive/Makefile.am | 9 + hw/kdrive/fbdev/fbdev.c | 59 + + hw/kdrive/fbdev/fbinit.c | 7 + hw/kdrive/linux/evdev.c | 385 +++++++ + hw/kdrive/linux/linux.c | 4 + hw/kdrive/linux/mouse.c | 2 + hw/kdrive/nomadik/Makefile.am | 29 + hw/kdrive/nomadik/nomadik-exa.c | 957 ++++++++++++++++++ + hw/kdrive/nomadik/nomadik-exa.h | 147 ++ + hw/kdrive/nomadik/nomadik-init.c | 194 +++ + hw/kdrive/nomadik/nomadik-log.h | 70 + + hw/kdrive/nomadik/nomadik-sva.c | 626 ++++++++++++ + hw/kdrive/nomadik/nomadik-sva.h | 193 +++ + hw/kdrive/nomadik/nomadik-video.c | 1956 ++++++++++++++++++++++++++++++++++++++ + hw/kdrive/nomadik/nomadik-video.h | 26 + hw/kdrive/src/kdrive.c | 41 + hw/kdrive/src/kdrive.h | 7 + hw/kdrive/src/kinput.c | 14 + hw/kdrive/src/kmode.c | 49 + include/kdrive-config.h.in | 3 + mi/miinitext.c | 6 + xfixes/cursor.c | 25 + 30 files changed, 5034 insertions(+), 37 deletions(-) + +--- xorg-server-1.3.0.0.orig/Makefile.am ++++ xorg-server-1.3.0.0/Makefile.am +@@ -28,10 +28,14 @@ endif + + if XINPUT + XINPUT_DIR=Xi + endif + ++if XKB ++XKB_DIR=xkb ++endif ++ + if DBE + DBE_DIR=dbe + endif + + SUBDIRS = \ +@@ -44,11 +48,11 @@ SUBDIRS = \ + miext \ + os \ + randr \ + render \ + $(XINPUT_DIR) \ +- xkb \ ++ $(XKB_DIR) \ + $(DBE_DIR) \ + $(MFB_DIR) \ + $(AFB_DIR) \ + $(CFB_DIR) \ + $(CFB32_DIR) \ +--- xorg-server-1.3.0.0.orig/Xext/Makefile.am ++++ xorg-server-1.3.0.0/Xext/Makefile.am +@@ -89,10 +89,15 @@ XCALIBRATE_SRCS = xcalibrate.c + if XCALIBRATE + BUILTIN_SRCS += $(XCALIBRATE_SRCS) + # XCalibrare needs tslib + endif + ++XCALIBRATE_SRCS = xcalibrate.c ++if XCALIBRATE ++BUILTIN_SRCS += $(XCALIBRATE_SRCS) ++endif ++ + # X EVent Interception Extension: allows accessibility helpers & composite + # managers to intercept events from input devices and transform as needed + # before the clients see them. + XEVIE_SRCS = xevie.c + if XEVIE +@@ -167,10 +172,11 @@ EXTRA_DIST = \ + $(SCREENSAVER_SRCS) \ + $(XACE_SRCS) \ + $(XCSECURITY_SRCS) \ + $(XCALIBRATE_SRCS) \ + $(XINERAMA_SRCS) \ ++ $(XCALIBRATE_SRCS) \ + $(XEVIE_SRCS) \ + $(XPRINT_SRCS) \ + $(APPGROUP_SRCS) \ + $(CUP_SRCS) \ + $(EVI_SRCS) \ +--- xorg-server-1.3.0.0.orig/Xext/xcalibrate.c ++++ xorg-server-1.3.0.0/Xext/xcalibrate.c +@@ -164,11 +164,10 @@ ProcXCalibrateSetRawMode (ClientPtr clie + } + WriteToClient(client, sizeof (rep), (char *) &rep); + return (client->noClientException); + } + +- + static int + SProcXCalibrateSetRawMode (ClientPtr client) + { + REQUEST(xXCalibrateRawModeReq); + int n; +@@ -178,10 +177,51 @@ SProcXCalibrateSetRawMode (ClientPtr cli + swaps(&stuff->on, n); + + return ProcXCalibrateSetRawMode(client); + } + ++static int ++ProcXCalibrateScreenToCoord (ClientPtr client) ++{ ++ REQUEST(xXCalibrateScreenToCoordReq); ++ xXCalibrateScreenToCoordReply rep; ++ ++ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq); ++ ++ memset (&rep, 0, sizeof (rep)); ++ rep.type = X_Reply; ++ rep.sequenceNumber = client->sequence; ++ rep.x = stuff->x; ++ rep.y = stuff->y; ++ ++ KdScreenToMouseCoords(&rep.x, &rep.y); ++ ++ if (client->swapped) ++ { ++ int n; ++ ++ swaps (&rep.x, n); ++ swaps (&rep.y, n); ++ } ++ WriteToClient(client, sizeof (rep), (char *) &rep); ++ return (client->noClientException); ++} ++ ++static int ++SProcXCalibrateScreenToCoord (ClientPtr client) ++{ ++ REQUEST(xXCalibrateScreenToCoordReq); ++ int n; ++ ++ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq); ++ ++ swaps(&stuff->x, n); ++ swaps(&stuff->y, n); ++ ++ return ProcXCalibrateScreenToCoord(client); ++} ++ + static void + XCalibrateResetProc (ExtensionEntry *extEntry) + { + } + +@@ -192,10 +232,13 @@ ProcXCalibrateDispatch (ClientPtr client + switch (stuff->data) { + case X_XCalibrateQueryVersion: + return ProcXCalibrateQueryVersion(client); + case X_XCalibrateRawMode: + return ProcXCalibrateSetRawMode(client); ++ case X_XCalibrateScreenToCoord: ++ return ProcXCalibrateScreenToCoord(client); ++ + default: break; + } + + return BadRequest; + } +@@ -211,10 +254,12 @@ SProcXCalibrateDispatch (ClientPtr clien + switch (stuff->data) { + case X_XCalibrateQueryVersion: + return SProcXCalibrateQueryVersion(client); + case X_XCalibrateRawMode: + return SProcXCalibrateSetRawMode(client); ++ case X_XCalibrateScreenToCoord: ++ return SProcXCalibrateScreenToCoord(client); + + default: break; + } + + return BadRequest; +--- xorg-server-1.3.0.0.orig/configure.ac ++++ xorg-server-1.3.0.0/configure.ac +@@ -389,10 +389,16 @@ AC_ARG_WITH(rgb-path, AS_HELP_ST + [ RGBPATH="$withval" ], + [ RGBPATH="${datadir}/X11/rgb" ]) + AC_ARG_WITH(dri-driver-path, AS_HELP_STRING([--with-dri-driver-path=PATH], [Path to DRI drivers (default: ${libdir}/dri)]), + [ DRI_DRIVER_PATH="$withval" ], + [ DRI_DRIVER_PATH="${libdir}/dri" ]) ++KERNEL_HEADERS_PATH="${libdir}/linux" ++AC_ARG_WITH(kernel-headers-path, ++ AS_HELP_STRING([--with-kernel-headers=PATH], ++ [Path to kernel headers (default: ${includedir}/linux)]), ++ [KERNEL_HEADERS_PATH="$withval"], ++ [KERNEL_HEADERS_PATH="${libdir}/linux"]) + AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]), + [BUILDDOCS=$enableval], + [BUILDDOCS=no]) + AC_ARG_ENABLE(install-libxf86config, + AS_HELP_STRING([--enable-install-libxf86config], +@@ -419,10 +425,11 @@ AC_ARG_ENABLE(dri, AS_HELP_ST + AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes]) + 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(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes]) + AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE]) ++AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no]) + AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY]) + AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no]) + AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no]) + AC_ARG_ENABLE(xevie, AS_HELP_STRING([--disable-xevie], [Build XEvIE extension (default: enabled)]), [XEVIE=$enableval], [XEVIE=yes]) + AC_ARG_ENABLE(cup, AS_HELP_STRING([--disable-cup], [Build TOG-CUP extension (default: enabled)]), [CUP=$enableval], [CUP=yes]) +@@ -432,10 +439,11 @@ AC_ARG_ENABLE(fontcache, AS_HELP_ST + AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes]) + AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes]) + 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]) + AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto]) + AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) +@@ -446,10 +454,11 @@ AC_ARG_ENABLE(xgl, AS_HELP_ST + AC_ARG_ENABLE(xglx, AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no]) + AC_ARG_ENABLE(xegl, AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no]) + dnl kdrive and its subsystems + AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no]) + AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto]) ++AC_ARG_ENABLE(nomadik, AS_HELP_STRING([--enable-nomadik],[Build the kdrive Xnomadik server (default: auto)]), [NOMADIK=$enableval], [NOMADIK=auto]) + AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto]) + dnl xprint + AC_ARG_ENABLE(freetype, AS_HELP_STRING([ --enable-freetype], [Build Xprint FreeType backend (default: yes)]), [XP_USE_FREETYPE=$enableval],[XP_USE_FREETYPE=no]) + AC_ARG_WITH(freetype-config, AS_HELP_STRING([ --with-freetype-config=PROG], [Use FreeType configuration program PROG (default: auto)]), freetype_config=$withval, freetype_config=auto) + +@@ -518,11 +527,15 @@ dnl ------------------------------------ + XEXT_INC='-I$(top_srcdir)/Xext' + XEXT_LIB='$(top_builddir)/Xext/libXext.la' + 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]) + if test "x$XV" = xyes; then + AC_DEFINE(XV, 1, [Support Xv extension]) +@@ -646,10 +659,16 @@ if test "x$XCSECURITY" = xyes; then + AC_MSG_ERROR([cannot build Security extension without X-ACE]) + fi + AC_DEFINE(XCSECURITY, 1, [Build Security extension]) + fi + ++AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes]) ++if test "x$XCALIBRATE" = xyes; then ++ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension]) ++ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto" ++fi ++ + AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes]) + if test "x$XEVIE" = xyes; then + AC_DEFINE(XEVIE, 1, [Build XEvIE extension]) + REQUIRED_MODULES="$REQUIRED_MODULES evieproto" + fi +@@ -758,16 +777,19 @@ fi + + AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes) + + 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'.])) + + PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"]) +@@ -1509,15 +1531,16 @@ if test "$KDRIVE" = yes; then + AC_DEFINE(KDRIVEFBDEV, 1, [Build fbdev-based kdrive server]) + fi + + # tslib... + if test "x$TSLIB" = xyes; then +- PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) ++ PKG_CHECK_MODULES([TSLIB], [tslib-1.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) + if test "x$HAVE_TSLIB" = xno; then + 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 + KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src' + KDRIVE_PURE_INCS="$KDRIVE_INC $MIEXT_DAMAGE_INC $MIEXT_SHADOW_INC $XEXT_INC $FB_INC $MI_INC" +@@ -1536,14 +1559,18 @@ if test "$KDRIVE" = yes; then + KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a' + KDRIVELINUX=yes + ;; + 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"]) ++ ++ #check if we can build Xnomadik ++ AC_CHECK_HEADER([nomadik/sga_lib.h], nomadik="yes") ++ + + # check for SDL SDK + AC_CHECK_HEADERS([SDL/SDL.h]) + if test "x$XSDL" = xauto; then + XSDL="$ac_cv_header_SDL_SDL_h" +@@ -1567,10 +1594,13 @@ AC_CHECK_FUNC([nanosleep], [], + AM_CONDITIONAL(XEPHYR, [test x"$xephyr" = xyes]) + XEPHYR_LIBS="$XEPHYR_LIBS $XSERVER_LIBS" + AC_SUBST([XEPHYR_LIBS]) + AC_SUBST([XEPHYR_INCS]) + ++AM_CONDITIONAL(NOMADIK,[test x"$nomadik" = xyes]) ++AC_SUBST([KERNEL_HEADERS_PATH]) ++ + if test x"$XSDL" = xyes; then + AC_DEFINE(XSDLSERVER,,[Build Xsdl server]) + XSDL_LIBS="`sdl-config --libs` $XSERVER_LIBS" + XSDL_INCS="`sdl-config --cflags` $XSERVER_CFLAGS" + fi +@@ -1601,11 +1631,13 @@ XKB_COMPILED_DIR=`echo $XKBOUTPUT | sed + AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir]) + + 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([ + #include <features.h> + #ifndef __GLIBC__ +@@ -1614,14 +1646,16 @@ AC_TRY_COMPILE([ + ], [], [AC_DEFINE(_GNU_SOURCE, 1, + [ Enable GNU and other extensions to the C environment for glibc])]) + + 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], + [Build xorgcfg GUI configuration utility (default: yes)]), + [XORGCFG=$enableval],[XORGCFG=yes]) +@@ -1813,10 +1847,11 @@ hw/kdrive/sdl/Makefile + hw/kdrive/sis300/Makefile + hw/kdrive/smi/Makefile + hw/kdrive/src/Makefile + hw/kdrive/vesa/Makefile + hw/kdrive/via/Makefile ++hw/kdrive/nomadik/Makefile + hw/xprint/Makefile + hw/xprint/doc/Makefile + hw/xprint/pcl/Makefile + hw/xprint/pcl-mono/Makefile + hw/xprint/raster/Makefile +--- xorg-server-1.3.0.0.orig/dix/dixfonts.c ++++ xorg-server-1.3.0.0/dix/dixfonts.c +@@ -48,11 +48,11 @@ Equipment Corporation. + + ******************************************************************/ + + #define NEED_REPLIES + #ifdef HAVE_DIX_CONFIG_H +-#include <dix-config.h> ++#include <kdrive-config.h> + #endif + + #include <X11/X.h> + #include <X11/Xmd.h> + #include <X11/Xproto.h> +--- xorg-server-1.3.0.0.orig/dix/window.c ++++ xorg-server-1.3.0.0/dix/window.c +@@ -179,10 +179,12 @@ static Bool TileScreenSaver(int i, int k + + + _X_EXPORT int numSaveUndersViewable = 0; + _X_EXPORT int deltaSaveUndersViewable = 0; + ++char* RootPPM = NULL; ++ + #ifdef DEBUG + /****** + * PrintWindowTree + * For debugging only + ******/ +@@ -305,20 +307,159 @@ SetWindowToDefaults(register WindowPtr p + #ifdef COMPOSITE + pWin->redirectDraw = 0; + #endif + } + ++static int ++get_int(FILE *fp) ++{ ++ int c = 0; ++ ++ while ((c = getc(fp)) != EOF) ++ { ++ if (isspace(c)) ++ continue; ++ ++ if (c == '#') ++ while (c = getc(fp)) ++ if (c == EOF) ++ return 0; ++ else if (c == '\n') ++ break; ++ ++ if (isdigit(c)) ++ { ++ int val = c - '0'; ++ while ((c = getc(fp)) && isdigit(c)) ++ val = (val * 10) + (c - '0'); ++ return val; ++ } ++ } ++ ++ return 0; ++} ++ ++static unsigned char* ++ppm_load (const char* path, int depth, int *width, int *height) ++{ ++ FILE *fp; ++ int max, n = 0, w, h, i, j, bytes_per_line; ++ unsigned char *data, *res, h1, h2; ++ ++ if (depth < 16 || depth > 32) ++ return NULL; ++ ++ if (depth > 16) ++ depth = 32; ++ ++ fp = fopen (path, "r"); ++ if (fp == NULL) ++ return FALSE; ++ ++ h1 = getc(fp); ++ h2 = getc(fp); ++ ++ /* magic is 'P6' for raw ppm */ ++ if (h1 != 'P' && h2 != '6') ++ goto fail; ++ ++ w = get_int(fp); ++ h = get_int(fp); ++ ++ if (w == 0 || h == 0) ++ goto fail; ++ ++ max = get_int(fp); ++ ++ if (max != 255) ++ goto fail; ++ ++ bytes_per_line = ((w * depth + 31) >> 5) << 2; ++ ++ res = data = malloc(bytes_per_line * h); ++ ++ for (i=0; i<h; i++) ++ { ++ for (j=0; j<w; j++) ++ { ++ unsigned char buf[3]; ++ fread(buf, 1, 3, fp); ++ ++ switch (depth) ++ { ++ case 24: ++ case 32: ++ *data = buf[2]; ++ *(data+1) = buf[1]; ++ *(data+2) = buf[0]; ++ data += 4; ++ break; ++ case 16: ++ default: ++ *(unsigned short*)data ++ = ((buf[0] >> 3) << 11) | ((buf[1] >> 2) << 5) | (buf[2] >> 3); ++ data += 2; ++ break; ++ } ++ } ++ data += (bytes_per_line - (w*(depth>>3))); ++ } ++ ++ data = res; ++ ++ *width = w; ++ *height = h; ++ ++ fclose(fp); ++ ++ return res; ++ ++ fail: ++ fclose(fp); ++ return NULL; ++} ++ + static void + MakeRootTile(WindowPtr pWin) + { + ScreenPtr pScreen = pWin->drawable.pScreen; + GCPtr pGC; + unsigned char back[128]; + int len = BitmapBytePad(sizeof(long)); + register unsigned char *from, *to; + register int i, j; + ++ if (RootPPM != NULL) ++ { ++ int w, h; ++ unsigned char *data; ++ ++ if ((data = ppm_load (RootPPM, pScreen->rootDepth, &w, &h)) != NULL) ++ { ++ pWin->background.pixmap ++ = (*pScreen->CreatePixmap)(pScreen, w, h, pScreen->rootDepth); ++ ++ pWin->backgroundState = BackgroundPixmap; ++ pGC = GetScratchGC(pScreen->rootDepth, pScreen); ++ if (!pWin->background.pixmap || !pGC) ++ FatalError("could not create root tile"); ++ ++ ValidateGC((DrawablePtr)pWin->background.pixmap, pGC); ++ ++ (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, ++ pGC, ++ pScreen->rootDepth, ++ 0, 0, w, h, 0, ZPixmap, (char *)data); ++ FreeScratchGC(pGC); ++ ++ free(data); ++ return; ++ } ++ else ++ ErrorF("Unable to load root window image."); ++ } ++ + pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4, + pScreen->rootDepth); + + pWin->backgroundState = BackgroundPixmap; + pGC = GetScratchGC(pScreen->rootDepth, pScreen); +@@ -348,10 +489,11 @@ MakeRootTile(WindowPtr pWin) + + FreeScratchGC(pGC); + + } + ++ + WindowPtr + AllocateWindow(ScreenPtr pScreen) + { + WindowPtr pWin; + register char *ptr; +--- xorg-server-1.3.0.0.orig/exa/exa.c ++++ xorg-server-1.3.0.0/exa/exa.c +@@ -781,10 +781,12 @@ void exaMarkSync(ScreenPtr pScreen) + */ + void exaWaitSync(ScreenPtr pScreen) + { + ExaScreenPriv(pScreen); + +- if (pExaScr->info->needsSync && !pExaScr->swappedOut) { +- (*pExaScr->info->WaitMarker)(pScreen, pExaScr->info->lastMarker); ++ if (pExaScr->info->needsSync ++ && !pExaScr->swappedOut) { ++ if (pExaScr->info->WaitMarker) ++ (*pExaScr->info->WaitMarker)(pScreen, pExaScr->info->lastMarker); + pExaScr->info->needsSync = FALSE; + } + } +--- xorg-server-1.3.0.0.orig/exa/exa_offscreen.c ++++ xorg-server-1.3.0.0/exa/exa_offscreen.c +@@ -425,11 +425,11 @@ ExaOffscreenMarkUsed (PixmapPtr pPixmap) + { + ExaPixmapPriv (pPixmap); + ExaScreenPriv (pPixmap->drawable.pScreen); + static int iter = 0; + +- if (!pExaPixmap->area) ++ if (!pExaPixmap || !pExaPixmap->area) + return; + + /* The numbers here are arbitrary. We may want to tune these. */ + pExaPixmap->area->score += 100; + if (++iter == 10) { +--- xorg-server-1.3.0.0.orig/hw/kdrive/Makefile.am ++++ xorg-server-1.3.0.0/hw/kdrive/Makefile.am +@@ -2,11 +2,11 @@ if KDRIVEVESA + VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \ + smi via + endif + + if KDRIVEFBDEV +-FBDEV_SUBDIRS = fbdev ++FBDEV_SUBDIRS = fbdev epson + endif + + if XSDLSERVER + XSDL_SUBDIRS = sdl + endif +@@ -17,16 +17,21 @@ endif + + if KDRIVELINUX + LINUX_SUBDIRS = linux + endif + ++if NOMADIK ++NOMADIK_SUBDIRS = nomadik ++endif ++ + SUBDIRS = \ + src \ + $(LINUX_SUBDIRS) \ + $(XSDL_SUBDIRS) \ + $(FBDEV_SUBDIRS) \ + $(VESA_SUBDIRS) \ + $(XEPHYR_SUBDIRS) \ ++ $(NOMADIK_SUBDIRS) \ + fake + + DIST_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \ +- smi via fbdev sdl ephyr src linux fake sis300 ++ smi via fbdev sdl ephyr src linux fake sis300 nomadik +--- xorg-server-1.3.0.0.orig/hw/kdrive/fbdev/fbdev.c ++++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c +@@ -30,10 +30,11 @@ + #include <sys/ioctl.h> + + #include <errno.h> + + extern int KdTsPhyScreen; ++Bool showMemInfo = FALSE ; + + char *fbdevDevicePath = NULL; + + Bool + fbdevInitialize (KdCardInfo *card, FbdevPriv *priv) +@@ -186,15 +187,34 @@ fbdevScreenInitialize (KdScreenInfo *scr + + t = KdFindMode (screen, fbdevModeSupported); + screen->rate = t->rate; + screen->width = t->horizontal; + screen->height = t->vertical; ++ fprintf(stderr, "%s, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d", __FUNCTION__, __LINE__, ++ var.xres, var.yres, var.xres_virtual, var.yres_virtual, ++ var.xoffset, var.yoffset, var.bits_per_pixel, var.grayscale, ++ var.nonstd, var.activate, var.height, var.width, ++ var.accel_flags, var.pixclock, var.left_margin, var.right_margin, ++ var.upper_margin, var.lower_margin, var.hsync_len, var.vsync_len, ++ var.sync, var.vmode); + + /* Now try setting the mode */ + if (k < 0 || (t->horizontal != var.xres || t->vertical != var.yres)) + fbdevConvertMonitorTiming (t, &var); + ++ fprintf(stderr, "%s, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d", __FUNCTION__, __LINE__, ++ var.xres, var.yres, var.xres_virtual, var.yres_virtual, ++ var.xoffset, var.yoffset, var.bits_per_pixel, var.grayscale, ++ var.nonstd, var.activate, var.height, var.width, ++ var.accel_flags, var.pixclock, var.left_margin, var.right_margin, ++ var.upper_margin, var.lower_margin, var.hsync_len, var.vsync_len, ++ var.sync, var.vmode); ++ + var.activate = FB_ACTIVATE_NOW; + var.bits_per_pixel = screen->fb[0].depth; + var.nonstd = 0; + var.grayscale = 0; + +@@ -209,10 +229,15 @@ fbdevScreenInitialize (KdScreenInfo *scr + /* Re-get the "fixed" parameters since they might have changed */ + k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix); + if (k < 0) + perror ("FBIOGET_FSCREENINFO"); + ++ /* Re-get the "fixed" parameters since they might have changed */ ++ k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix); ++ if (k < 0) ++ perror ("FBIOGET_FSCREENINFO"); ++ + /* Now get the new screeninfo */ + ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var); + depth = priv->var.bits_per_pixel; + gray = priv->var.grayscale; + +@@ -345,11 +370,11 @@ fbdevMapFramebuffer (KdScreenInfo *scree + + screen->width = priv->var.xres; + screen->height = priv->var.yres; + screen->memory_base = (CARD8 *) (priv->fb); + screen->memory_size = priv->fix.smem_len; +- ++ + if (scrpriv->shadow) + { + if (!KdShadowFbAlloc (screen, 0, + scrpriv->randr & (RR_Rotate_90|RR_Rotate_270))) + return FALSE; +@@ -361,10 +386,30 @@ fbdevMapFramebuffer (KdScreenInfo *scree + 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; + } ++ ++ if (showMemInfo) ++ { ++ LogMessageVerb (X_INFO, ++ 0, ++ "screen width: %d\n" ++ "screen height: %d\n" ++ "video mem base: %#x\n" ++ "offscreen mem offset %#x\n" ++ "video mem size: %#x\n" ++ "depth (in bits) %d\n", ++ screen->width, ++ screen->height, ++ screen->memory_base, ++ screen->off_screen_base, ++ screen->memory_size, ++ priv->var.bits_per_pixel) ; ++ exit(0) ; ++ } ++ + + return TRUE; + } + + void +@@ -664,18 +709,27 @@ fbdevEnable (ScreenPtr pScreen) + FbdevPriv *priv = pScreenPriv->card->driver; + int k; + + priv->var.activate = FB_ACTIVATE_NOW|FB_CHANGE_CMAP_VBL; + ++ fprintf(stderr, "%s, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, \ ++ %d, %d, %d, %d, %d, %d, %d, %d, %d", __FUNCTION__, __LINE__, ++ priv->var.xres, priv->var.yres, priv->var.xres_virtual, priv->var.yres_virtual, ++ priv->var.xoffset, priv->var.yoffset, priv->var.bits_per_pixel, priv->var.grayscale, ++ priv->var.nonstd, priv->var.activate, priv->var.height, priv->var.width, ++ priv->var.accel_flags, priv->var.pixclock, priv->var.left_margin, priv->var.right_margin, ++ priv->var.upper_margin, priv->var.lower_margin, priv->var.hsync_len, priv->var.vsync_len, ++ priv->var.sync, priv->var.vmode); + /* display it on the LCD */ ++#if 0 + k = ioctl (priv->fd, FBIOPUT_VSCREENINFO, &priv->var); + if (k < 0) + { + perror ("FBIOPUT_VSCREENINFO"); + return FALSE; + } +- + if (priv->fix.visual == FB_VISUAL_DIRECTCOLOR) + { + struct fb_cmap cmap; + int i; + +@@ -694,10 +748,11 @@ fbdevEnable (ScreenPtr pScreen) + cmap.green = &priv->green[0]; + cmap.blue = &priv->blue[0]; + cmap.transp = 0; + ioctl (priv->fd, FBIOPUTCMAP, &cmap); + } ++ #endif + return TRUE; + } + + Bool + fbdevDPMS (ScreenPtr pScreen, int mode) +--- xorg-server-1.3.0.0.orig/hw/kdrive/fbdev/fbinit.c ++++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbinit.c +@@ -26,10 +26,12 @@ + #ifdef HAVE_CONFIG_H + #include <kdrive-config.h> + #endif + #include <fbdev.h> + ++extern int use_evdev; ++ + void + InitCard (char *name) + { + KdCardAttr attr; + +@@ -43,11 +45,14 @@ InitOutput (ScreenInfo *pScreenInfo, int + } + + void + InitInput (int argc, char **argv) + { +- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); ++ if (use_evdev) ++ KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs); ++ else ++ KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); + #ifdef TOUCHSCREEN + KdAddMouseDriver (&TsFuncs); + #endif + } + +--- xorg-server-1.3.0.0.orig/hw/kdrive/linux/evdev.c ++++ xorg-server-1.3.0.0/hw/kdrive/linux/evdev.c +@@ -29,13 +29,15 @@ + #include <errno.h> + #include <linux/input.h> + #include <X11/X.h> + #include <X11/Xproto.h> + #include <X11/Xpoll.h> ++#include <X11/keysym.h> + #include "inputstr.h" + #include "scrnintstr.h" + #include "kdrive.h" ++#include "kkeymap.h" + + #define NUM_EVENTS 128 + #define ABS_UNSET -65535 + + #define BITS_PER_LONG (sizeof(long) * 8) +@@ -103,36 +105,79 @@ EvdevMotion (KdMouseInfo *mi) + static void + EvdevRead (int evdevPort, void *closure) + { + KdMouseInfo *mi = closure; + Kevdev *ke = mi->driver; +- int i; ++ int i, j; + struct input_event events[NUM_EVENTS]; + int n; ++ int flags; + + n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event)); + if (n <= 0) + return; + n /= sizeof (struct input_event); + for (i = 0; i < n; i++) + { ++ flags = KD_MOUSE_DELTA | kdMouseInfo->buttonState; + switch (events[i].type) { + case EV_SYN: + break; + case EV_KEY: +- EvdevMotion (mi); +- ASSIGNBIT(ke->key,events[i].code, events[i].value); +- if (events[i].code < 0x100) +- ErrorF ("key %d %d\n", events[i].code, events[i].value); +- else +- ErrorF ("key 0x%x %d\n", events[i].code, events[i].value); ++ if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) { ++ switch (events[i].code) { ++ case BTN_LEFT: ++ if (events[i].value == 1) ++ flags |= KD_BUTTON_1; ++ else ++ flags &= ~KD_BUTTON_1; ++ break; ++ case BTN_MIDDLE: ++ if (events[i].value == 1) ++ flags |= KD_BUTTON_2; ++ else ++ flags &= ~KD_BUTTON_2; ++ break; ++ case BTN_RIGHT: ++ if (events[i].value == 1) ++ flags |= KD_BUTTON_3; ++ else ++ flags &= ~KD_BUTTON_3; ++ break; ++ default: ++ /* Unknow button */ ++ break; ++ } ++ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); ++ } + break; + case EV_REL: +- ke->rel[events[i].code] += events[i].value; ++ if (events[i].code == REL_X) { ++ KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0); ++ } ++ else if (events[i].code == REL_Y) { ++ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value); ++ } ++ else if (events[i].code == REL_WHEEL) { ++ for (j = 0; j < abs (events[i].value); j++) { ++ if (events[i].value > 0) ++ flags |= KD_BUTTON_4; ++ else ++ flags |= KD_BUTTON_5; ++ ++ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); ++ ++ if (events[i].value > 0) ++ flags &= ~KD_BUTTON_4; ++ else ++ flags &= ~KD_BUTTON_5; ++ ++ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); ++ } /* events[i].code == REL_WHEEL */ ++ } + break; + case EV_ABS: +- ke->abs[events[i].code] = events[i].value; + break; + } + } + EvdevMotion (mi); + } +@@ -171,10 +216,16 @@ EvdevInit (void) + for (i = 0; i < NUM_DEFAULT_EVDEV; i++) + { + fd = open (kdefaultEvdev[i], 2); + if (fd >= 0) + { ++ if (ioctl (fd, EVIOCGRAB, 1) < 0) ++ { ++ close (fd); ++ continue; ++ } ++ + mi->name = KdSaveString (kdefaultEvdev[i]); + break; + } + } + } +@@ -285,15 +336,327 @@ EvdevFini (void) + KdMouseFuncs LinuxEvdevMouseFuncs = { + EvdevInit, + EvdevFini, + }; + +-#if 0 ++/* Keyboard */ ++ ++int kbd_fd = -1; ++int EvdevInputType = 0; ++ ++KeySym evdevKeymap[(194 - 1 + 1) * 2] = { ++/* These are directly mapped from DOS scanset 0 */ ++/* 1 8 */ XK_Escape, NoSymbol, ++/* 2 9 */ XK_1, XK_exclam, ++/* 3 10 */ XK_2, XK_at, ++/* 4 11 */ XK_3, XK_numbersign, ++/* 5 12 */ XK_4, XK_dollar, ++/* 6 13 */ XK_5, XK_percent, ++/* 7 14 */ XK_6, XK_asciicircum, ++/* 8 15 */ XK_7, XK_ampersand, ++/* 9 16 */ XK_8, XK_asterisk, ++/* 10 17 */ XK_9, XK_parenleft, ++/* 11 18 */ XK_0, XK_parenright, ++/* 12 19 */ XK_minus, XK_underscore, ++/* 13 20 */ XK_equal, XK_plus, ++/* 14 21 */ XK_BackSpace, NoSymbol, ++/* 15 22 */ XK_Tab, NoSymbol, ++/* 16 23 */ XK_Q, NoSymbol, ++/* 17 24 */ XK_W, NoSymbol, ++/* 18 25 */ XK_E, NoSymbol, ++/* 19 26 */ XK_R, NoSymbol, ++/* 20 27 */ XK_T, NoSymbol, ++/* 21 28 */ XK_Y, NoSymbol, ++/* 22 29 */ XK_U, NoSymbol, ++/* 23 30 */ XK_I, NoSymbol, ++/* 24 31 */ XK_O, NoSymbol, ++/* 25 32 */ XK_P, NoSymbol, ++/* 26 33 */ XK_bracketleft, XK_braceleft, ++/* 27 34 */ XK_bracketright, XK_braceright, ++/* 28 35 */ XK_Return, NoSymbol, ++/* 29 36 */ XK_Control_L, NoSymbol, ++/* 30 37 */ XK_A, NoSymbol |
