mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
Add xserver-kdrive-glamo from OE.dev
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4538 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
--- xserver/hw/kdrive/fbdev/fbdev.c~ 2004-09-15 00:08:10.000000000 +0100
|
||||
+++ xserver/hw/kdrive/fbdev/fbdev.c 2004-11-13 17:47:02.000000000 +0000
|
||||
@@ -198,6 +198,11 @@
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ /* 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;
|
||||
@@ -0,0 +1,15 @@
|
||||
# Reverse include order in render/picturestr.h to be able to compile against renderproto >= 0.9.3
|
||||
Index: xorg-server-1.2.0/render/picturestr.h
|
||||
===================================================================
|
||||
--- xorg-server-1.2.0.orig/render/picturestr.h 2008-02-09 22:54:46.000000000 +0100
|
||||
+++ xorg-server-1.2.0/render/picturestr.h 2008-02-09 22:54:50.000000000 +0100
|
||||
@@ -26,8 +26,8 @@
|
||||
#ifndef _PICTURESTR_H_
|
||||
#define _PICTURESTR_H_
|
||||
|
||||
-#include "glyphstr.h"
|
||||
#include "scrnintstr.h"
|
||||
+#include "glyphstr.h"
|
||||
#include "resource.h"
|
||||
|
||||
typedef struct _DirectFormat {
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
hw/kdrive/src/kmode.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: xorg-server-1.3.0.0/hw/kdrive/src/kmode.c
|
||||
===================================================================
|
||||
--- xorg-server-1.3.0.0.orig/hw/kdrive/src/kmode.c 2007-05-16 10:30:29.000000000 +0100
|
||||
+++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c 2007-05-16 10:31:08.000000000 +0100
|
||||
@@ -106,6 +106,8 @@ const KdMonitorTiming kdMonitorTimings[
|
||||
16, 120, 176, KdSyncNegative, /* 37.861 */
|
||||
1, 20, 24, KdSyncNegative, /* 72.809 */
|
||||
},
|
||||
+ /* DEFAULT */
|
||||
+#define MONITOR_TIMING_DEFAULT 13
|
||||
{ 640, 480, 60, 25175, /* VESA */
|
||||
16, 48, 160, KdSyncNegative, /* 31.469 */
|
||||
10, 33, 45, KdSyncNegative, /* 59.940 */
|
||||
@@ -127,8 +129,6 @@ const KdMonitorTiming kdMonitorTimings[
|
||||
16, 160, 256, KdSyncPositive, /* 46.875 */
|
||||
1, 21, 25, KdSyncPositive, /* 75.000 */
|
||||
},
|
||||
- /* DEFAULT */
|
||||
-#define MONITOR_TIMING_DEFAULT 9
|
||||
{ 800, 600, 72, 50000, /* VESA */
|
||||
56, 64, 240, KdSyncPositive, /* 48.077 */
|
||||
37, 23, 66, KdSyncPositive, /* 72.188 */
|
||||
@@ -0,0 +1,23 @@
|
||||
--- /tmp/kmode.c 2007-10-07 11:49:52.000000000 +0200
|
||||
+++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c 2007-10-07 11:51:57.962045000 +0200
|
||||
@@ -119,7 +119,19 @@
|
||||
0, 0, 0, KdSyncNegative, /* 59.940 */
|
||||
},
|
||||
|
||||
-
|
||||
+
|
||||
+/* gumstix console-vx */
|
||||
+ { 480, 272, 60, 0, /* VESA */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 31.469 */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 59.940 */
|
||||
+ },
|
||||
+
|
||||
+ { 272, 480, 60, 0, /* VESA */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 31.469 */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 59.940 */
|
||||
+ },
|
||||
+
|
||||
+
|
||||
/* 800x600 modes */
|
||||
{ 800, 600, 85, 56250, /* VESA */
|
||||
32, 152, 248, KdSyncPositive, /* 53.674 */
|
||||
@@ -0,0 +1,419 @@
|
||||
diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c
|
||||
--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2006-11-16 19:01:23.000000000 +0100
|
||||
+++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c 2007-09-15 16:53:20.152045000 +0200
|
||||
@@ -213,6 +213,24 @@
|
||||
|
||||
/* Now get the new screeninfo */
|
||||
ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var);
|
||||
+ /* Special treatment of 18bpp */
|
||||
+ if ((priv->var.red.length == 6) && (priv->var.green.length == 6) &&
|
||||
+ (priv->var.blue.length == 6))
|
||||
+ {
|
||||
+ priv->var.red.length = 8;
|
||||
+ if (priv->var.red.offset != 0)
|
||||
+ priv->var.red.offset = 16;
|
||||
+ priv->var.green.length = 8;
|
||||
+ priv->var.green.offset = 8;
|
||||
+ priv->var.blue.length = 8;
|
||||
+ if (priv->var.blue.offset != 0)
|
||||
+ priv->var.blue.offset = 16;
|
||||
+ priv->var.bits_per_pixel = 32;
|
||||
+ priv->Have18Bpp = TRUE;
|
||||
+ }
|
||||
+ else
|
||||
+ priv->Have18Bpp = FALSE;
|
||||
+
|
||||
depth = priv->var.bits_per_pixel;
|
||||
gray = priv->var.grayscale;
|
||||
|
||||
@@ -334,7 +352,7 @@
|
||||
KdMouseMatrix m;
|
||||
FbdevPriv *priv = screen->card->driver;
|
||||
|
||||
- if (scrpriv->randr != RR_Rotate_0)
|
||||
+ if (scrpriv->randr != RR_Rotate_0 || priv->Have18Bpp)
|
||||
scrpriv->shadow = TRUE;
|
||||
else
|
||||
scrpriv->shadow = FALSE;
|
||||
@@ -398,6 +416,354 @@
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+void
|
||||
+shadowUpdatePacked18 (ScreenPtr pScreen,
|
||||
+ shadowBufPtr pBuf)
|
||||
+{
|
||||
+ RegionPtr damage = shadowDamage (pBuf);
|
||||
+ PixmapPtr pShadow = pBuf->pPixmap;
|
||||
+ int nbox = REGION_NUM_RECTS (damage);
|
||||
+ BoxPtr pbox = REGION_RECTS (damage);
|
||||
+ FbBits *shaBase, *shaLine, *sha;
|
||||
+ FbStride shaStride;
|
||||
+ int scrBase, scrLine, scr;
|
||||
+ int shaBpp;
|
||||
+ int shaXoff, shaYoff; /* XXX assumed to be zero */
|
||||
+ int x, y, w, h, width;
|
||||
+ int i;
|
||||
+ char *winBase = NULL, *win;
|
||||
+ CARD32 winSize;
|
||||
+
|
||||
+ fbGetDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
|
||||
+ while (nbox--)
|
||||
+ {
|
||||
+ x = pbox->x1 * shaBpp;
|
||||
+ y = pbox->y1;
|
||||
+ w = (pbox->x2 - pbox->x1) * shaBpp;
|
||||
+ h = pbox->y2 - pbox->y1;
|
||||
+
|
||||
+ scrLine = (x >> FB_SHIFT);
|
||||
+ shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
|
||||
+
|
||||
+ x &= FB_MASK;
|
||||
+ w = (w + x + FB_MASK) >> FB_SHIFT;
|
||||
+
|
||||
+ while (h--)
|
||||
+ {
|
||||
+ winSize = 0;
|
||||
+ scrBase = 0;
|
||||
+ width = w;
|
||||
+ scr = scrLine;
|
||||
+ sha = shaLine;
|
||||
+ while (width) {
|
||||
+ /* how much remains in this window */
|
||||
+ i = scrBase + winSize - scr;
|
||||
+ if (i <= 0 || scr < scrBase)
|
||||
+ {
|
||||
+ winBase = (char *) (*pBuf->window) (pScreen,
|
||||
+ y,
|
||||
+ scr * 3,
|
||||
+ SHADOW_WINDOW_WRITE,
|
||||
+ &winSize,
|
||||
+ pBuf->closure);
|
||||
+ if(!winBase)
|
||||
+ return;
|
||||
+ scrBase = scr;
|
||||
+ winSize /= 3;
|
||||
+ i = winSize;
|
||||
+ }
|
||||
+ win = winBase + (scr - scrBase);
|
||||
+ if (i > width)
|
||||
+ i = width;
|
||||
+ width -= i;
|
||||
+ scr += i;
|
||||
+#define PickBit(a,i) (((a) >> (i)) & 1)
|
||||
+ while (i--)
|
||||
+ {
|
||||
+ FbBits bits = *sha++;
|
||||
+ *win++ = ((bits & 0xFC) >> 2) |
|
||||
+ ((bits & 0xC00) >> 4);
|
||||
+ *win++ = ((bits & 0xF000) >> 12) |
|
||||
+ ((bits & 0x3C0000) >> 14);
|
||||
+ *win++ = (bits & 0xC00000) >> 22;
|
||||
+ }
|
||||
+ }
|
||||
+ shaLine += shaStride;
|
||||
+ y++;
|
||||
+ }
|
||||
+ pbox++;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#define LEFT_TO_RIGHT 1
|
||||
+#define RIGHT_TO_LEFT -1
|
||||
+#define TOP_TO_BOTTOM 2
|
||||
+#define BOTTOM_TO_TOP -2
|
||||
+
|
||||
+void
|
||||
+shadowUpdateRotatePacked18 (ScreenPtr pScreen,
|
||||
+ shadowBufPtr pBuf)
|
||||
+{
|
||||
+ RegionPtr damage = shadowDamage (pBuf);
|
||||
+ PixmapPtr pShadow = pBuf->pPixmap;
|
||||
+ int nbox = REGION_NUM_RECTS (damage);
|
||||
+ BoxPtr pbox = REGION_RECTS (damage);
|
||||
+ FbBits *shaBits;
|
||||
+ FbStride shaStride;
|
||||
+ int shaBpp;
|
||||
+ int shaXoff, shaYoff;
|
||||
+ int box_x1, box_x2, box_y1, box_y2;
|
||||
+ int sha_x1 = 0, sha_y1 = 0;
|
||||
+ int scr_x1 = 0, scr_x2 = 0, scr_y1 = 0, scr_y2 = 0, scr_w, scr_h;
|
||||
+ int scr_x, scr_y;
|
||||
+ int w;
|
||||
+ int pixelsPerBits;
|
||||
+ int pixelsMask;
|
||||
+ FbStride shaStepOverY = 0, shaStepDownY = 0;
|
||||
+ FbStride shaStepOverX = 0, shaStepDownX = 0;
|
||||
+ FbBits *shaLine, *sha;
|
||||
+ int shaHeight = pShadow->drawable.height;
|
||||
+ int shaWidth = pShadow->drawable.width;
|
||||
+ FbBits shaMask;
|
||||
+ int shaFirstShift, shaShift;
|
||||
+ int o_x_dir;
|
||||
+ int o_y_dir;
|
||||
+ int x_dir;
|
||||
+ int y_dir;
|
||||
+
|
||||
+ fbGetDrawable (&pShadow->drawable, shaBits, shaStride, shaBpp, shaXoff, shaYoff);
|
||||
+ pixelsPerBits = (sizeof (FbBits) * 8) / shaBpp;
|
||||
+ pixelsMask = ~(pixelsPerBits - 1);
|
||||
+ shaMask = FbBitsMask (FB_UNIT-shaBpp, shaBpp);
|
||||
+ /*
|
||||
+ * Compute rotation related constants to walk the shadow
|
||||
+ */
|
||||
+ o_x_dir = LEFT_TO_RIGHT;
|
||||
+ o_y_dir = TOP_TO_BOTTOM;
|
||||
+ if (pBuf->randr & SHADOW_REFLECT_X)
|
||||
+ o_x_dir = -o_x_dir;
|
||||
+ if (pBuf->randr & SHADOW_REFLECT_Y)
|
||||
+ o_y_dir = -o_y_dir;
|
||||
+ switch (pBuf->randr & (SHADOW_ROTATE_ALL)) {
|
||||
+ case SHADOW_ROTATE_0: /* upper left shadow -> upper left screen */
|
||||
+ default:
|
||||
+ x_dir = o_x_dir;
|
||||
+ y_dir = o_y_dir;
|
||||
+ break;
|
||||
+ case SHADOW_ROTATE_90: /* upper right shadow -> upper left screen */
|
||||
+ x_dir = o_y_dir;
|
||||
+ y_dir = -o_x_dir;
|
||||
+ break;
|
||||
+ case SHADOW_ROTATE_180: /* lower right shadow -> upper left screen */
|
||||
+ x_dir = -o_x_dir;
|
||||
+ y_dir = -o_y_dir;
|
||||
+ break;
|
||||
+ case SHADOW_ROTATE_270: /* lower left shadow -> upper left screen */
|
||||
+ x_dir = -o_y_dir;
|
||||
+ y_dir = o_x_dir;
|
||||
+ break;
|
||||
+ }
|
||||
+ switch (x_dir) {
|
||||
+ case LEFT_TO_RIGHT:
|
||||
+ shaStepOverX = shaBpp;
|
||||
+ shaStepOverY = 0;
|
||||
+ break;
|
||||
+ case TOP_TO_BOTTOM:
|
||||
+ shaStepOverX = 0;
|
||||
+ shaStepOverY = shaStride;
|
||||
+ break;
|
||||
+ case RIGHT_TO_LEFT:
|
||||
+ shaStepOverX = -shaBpp;
|
||||
+ shaStepOverY = 0;
|
||||
+ break;
|
||||
+ case BOTTOM_TO_TOP:
|
||||
+ shaStepOverX = 0;
|
||||
+ shaStepOverY = -shaStride;
|
||||
+ break;
|
||||
+ }
|
||||
+ switch (y_dir) {
|
||||
+ case TOP_TO_BOTTOM:
|
||||
+ shaStepDownX = 0;
|
||||
+ shaStepDownY = shaStride;
|
||||
+ break;
|
||||
+ case RIGHT_TO_LEFT:
|
||||
+ shaStepDownX = -shaBpp;
|
||||
+ shaStepDownY = 0;
|
||||
+ break;
|
||||
+ case BOTTOM_TO_TOP:
|
||||
+ shaStepDownX = 0;
|
||||
+ shaStepDownY = -shaStride;
|
||||
+ break;
|
||||
+ case LEFT_TO_RIGHT:
|
||||
+ shaStepDownX = shaBpp;
|
||||
+ shaStepDownY = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ while (nbox--)
|
||||
+ {
|
||||
+ box_x1 = pbox->x1;
|
||||
+ box_y1 = pbox->y1;
|
||||
+ box_x2 = pbox->x2;
|
||||
+ box_y2 = pbox->y2;
|
||||
+ pbox++;
|
||||
+
|
||||
+ /*
|
||||
+ * Compute screen and shadow locations for this box
|
||||
+ */
|
||||
+ switch (x_dir) {
|
||||
+ case LEFT_TO_RIGHT:
|
||||
+ scr_x1 = box_x1 & pixelsMask;
|
||||
+ scr_x2 = (box_x2 + pixelsPerBits - 1) & pixelsMask;
|
||||
+
|
||||
+ sha_x1 = scr_x1;
|
||||
+ break;
|
||||
+ case TOP_TO_BOTTOM:
|
||||
+ scr_x1 = box_y1 & pixelsMask;
|
||||
+ scr_x2 = (box_y2 + pixelsPerBits - 1) & pixelsMask;
|
||||
+
|
||||
+ sha_y1 = scr_x1;
|
||||
+ break;
|
||||
+ case RIGHT_TO_LEFT:
|
||||
+ scr_x1 = (shaWidth - box_x2) & pixelsMask;
|
||||
+ scr_x2 = (shaWidth - box_x1 + pixelsPerBits - 1) & pixelsMask;
|
||||
+
|
||||
+ sha_x1 = (shaWidth - scr_x1 - 1);
|
||||
+ break;
|
||||
+ case BOTTOM_TO_TOP:
|
||||
+ scr_x1 = (shaHeight - box_y2) & pixelsMask;
|
||||
+ scr_x2 = (shaHeight - box_y1 + pixelsPerBits - 1) & pixelsMask;
|
||||
+
|
||||
+ sha_y1 = (shaHeight - scr_x1 - 1);
|
||||
+ break;
|
||||
+ }
|
||||
+ switch (y_dir) {
|
||||
+ case TOP_TO_BOTTOM:
|
||||
+ scr_y1 = box_y1;
|
||||
+ scr_y2 = box_y2;
|
||||
+
|
||||
+ sha_y1 = scr_y1;
|
||||
+ break;
|
||||
+ case RIGHT_TO_LEFT:
|
||||
+ scr_y1 = (shaWidth - box_x2);
|
||||
+ scr_y2 = (shaWidth - box_x1);
|
||||
+
|
||||
+ sha_x1 = box_x2 - 1;
|
||||
+ break;
|
||||
+ case BOTTOM_TO_TOP:
|
||||
+ scr_y1 = shaHeight - box_y2;
|
||||
+ scr_y2 = shaHeight - box_y1;
|
||||
+
|
||||
+ sha_y1 = box_y2 - 1;
|
||||
+ break;
|
||||
+ case LEFT_TO_RIGHT:
|
||||
+ scr_y1 = box_x1;
|
||||
+ scr_y2 = box_x2;
|
||||
+
|
||||
+ sha_x1 = box_x1;
|
||||
+ break;
|
||||
+ }
|
||||
+ scr_w = ((scr_x2 - scr_x1) * shaBpp) >> FB_SHIFT;
|
||||
+ scr_h = scr_y2 - scr_y1;
|
||||
+ scr_y = scr_y1;
|
||||
+
|
||||
+ /* shift amount for first pixel on screen */
|
||||
+ shaFirstShift = FB_UNIT - ((sha_x1 * shaBpp) & FB_MASK) - shaBpp;
|
||||
+
|
||||
+ /* pointer to shadow data first placed on screen */
|
||||
+ shaLine = (shaBits +
|
||||
+ sha_y1 * shaStride +
|
||||
+ ((sha_x1 * shaBpp) >> FB_SHIFT));
|
||||
+
|
||||
+ /*
|
||||
+ * Copy the bits, always write across the physical frame buffer
|
||||
+ * to take advantage of write combining.
|
||||
+ */
|
||||
+ while (scr_h--)
|
||||
+ {
|
||||
+ int p;
|
||||
+ FbBits bits;
|
||||
+ char *win;
|
||||
+ int i;
|
||||
+ CARD32 winSize;
|
||||
+
|
||||
+ sha = shaLine;
|
||||
+ shaShift = shaFirstShift;
|
||||
+ w = scr_w;
|
||||
+ scr_x = scr_x1 * shaBpp >> FB_SHIFT;
|
||||
+
|
||||
+ while (w)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Map some of this line
|
||||
+ */
|
||||
+ win = (char *) (*pBuf->window) (pScreen,
|
||||
+ scr_y,
|
||||
+ scr_x * 3,
|
||||
+ SHADOW_WINDOW_WRITE,
|
||||
+ &winSize,
|
||||
+ pBuf->closure);
|
||||
+ i = winSize / 3;
|
||||
+ if (i > w)
|
||||
+ i = w;
|
||||
+ w -= i;
|
||||
+ scr_x += i;
|
||||
+ /*
|
||||
+ * Copy the portion of the line mapped
|
||||
+ */
|
||||
+ while (i--)
|
||||
+ {
|
||||
+ bits = 0;
|
||||
+ p = pixelsPerBits;
|
||||
+ /*
|
||||
+ * Build one word of output from multiple inputs
|
||||
+ *
|
||||
+ * Note that for 90/270 rotations, this will walk
|
||||
+ * down the shadow hitting each scanline once.
|
||||
+ * This is probably not very efficient.
|
||||
+ */
|
||||
+ while (p--)
|
||||
+ {
|
||||
+ bits = FbScrLeft(bits, shaBpp);
|
||||
+ bits |= FbScrRight (*sha, shaShift) & shaMask;
|
||||
+
|
||||
+ shaShift -= shaStepOverX;
|
||||
+ if (shaShift >= FB_UNIT)
|
||||
+ {
|
||||
+ shaShift -= FB_UNIT;
|
||||
+ sha--;
|
||||
+ }
|
||||
+ else if (shaShift < 0)
|
||||
+ {
|
||||
+ shaShift += FB_UNIT;
|
||||
+ sha++;
|
||||
+ }
|
||||
+ sha += shaStepOverY;
|
||||
+ }
|
||||
+ *win++ = ((bits & 0xFC) >> 2) |
|
||||
+ ((bits & 0xC00) >> 4);
|
||||
+ *win++ = ((bits & 0xF000) >> 12) |
|
||||
+ ((bits & 0x3C0000) >> 14);
|
||||
+ *win++ = (bits & 0xC00000) >> 22;
|
||||
+ }
|
||||
+ }
|
||||
+ scr_y++;
|
||||
+ shaFirstShift -= shaStepDownX;
|
||||
+ if (shaFirstShift >= FB_UNIT)
|
||||
+ {
|
||||
+ shaFirstShift -= FB_UNIT;
|
||||
+ shaLine--;
|
||||
+ }
|
||||
+ else if (shaFirstShift < 0)
|
||||
+ {
|
||||
+ shaFirstShift += FB_UNIT;
|
||||
+ shaLine++;
|
||||
+ }
|
||||
+ shaLine += shaStepDownY;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
Bool
|
||||
fbdevSetShadow (ScreenPtr pScreen)
|
||||
{
|
||||
@@ -418,7 +784,14 @@
|
||||
|
||||
window = fbdevWindowLinear;
|
||||
update = 0;
|
||||
- if (scrpriv->randr)
|
||||
+ if (priv->Have18Bpp)
|
||||
+ {
|
||||
+ if (scrpriv->randr != RR_Rotate_0)
|
||||
+ update = shadowUpdateRotatePacked18;
|
||||
+ else
|
||||
+ update = shadowUpdatePacked18;
|
||||
+ }
|
||||
+ else if (scrpriv->randr)
|
||||
if (priv->var.bits_per_pixel == 16) {
|
||||
switch (scrpriv->randr) {
|
||||
case RR_Rotate_90:
|
||||
diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h
|
||||
--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h 2006-09-18 08:04:17.000000000 +0200
|
||||
+++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h 2007-09-15 16:45:07.362045000 +0200
|
||||
@@ -44,6 +44,7 @@
|
||||
int fd;
|
||||
char *fb;
|
||||
char *fb_base;
|
||||
+ Bool Have18Bpp;
|
||||
} FbdevPriv;
|
||||
|
||||
typedef struct _fbdevScrPriv {
|
||||
@@ -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,28 @@
|
||||
--- /tmp/kmode.c 2005-06-27 14:46:19.716843288 +0200
|
||||
+++ xserver/hw/kdrive/src/kmode.c 2005-06-27 14:46:30.070269328 +0200
|
||||
@@ -41,6 +41,11 @@
|
||||
1, 11, 14, KdSyncNegative,
|
||||
},
|
||||
|
||||
+ { 240, 320, 64, 0,
|
||||
+ 0, 0, 0, KdSyncNegative,
|
||||
+ 0, 0, 0, KdSyncNegative,
|
||||
+ },
|
||||
+
|
||||
/* Other VESA modes */
|
||||
{ 640, 350, 85, 31500, /* VESA */
|
||||
32, 96, 192, KdSyncPositive, /* 26.413 */
|
||||
@@ -80,6 +85,13 @@
|
||||
16, 48, 160, KdSyncNegative, /* 31.469 */
|
||||
10, 33, 45, KdSyncNegative, /* 59.940 */
|
||||
},
|
||||
+
|
||||
+
|
||||
+ { 480, 640, 60, 0, /* VESA */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 31.469 */
|
||||
+ 0, 0, 0, KdSyncNegative, /* 59.940 */
|
||||
+ },
|
||||
+
|
||||
|
||||
/* 800x600 modes */
|
||||
{ 800, 600, 85, 56250, /* VESA */
|
||||
@@ -0,0 +1,54 @@
|
||||
Index: git/hw/kdrive/Makefile.am
|
||||
===================================================================
|
||||
--- git.orig/hw/kdrive/Makefile.am 2006-09-02 12:12:13.000000000 +0200
|
||||
+++ git/hw/kdrive/Makefile.am 2006-09-02 12:12:14.000000000 +0200
|
||||
@@ -7,6 +7,10 @@
|
||||
FBDEV_SUBDIRS = fbdev epson
|
||||
endif
|
||||
|
||||
+if KDRIVEW100
|
||||
+W100_SUBDIRS = w100
|
||||
+endif
|
||||
+
|
||||
if XSDLSERVER
|
||||
XSDL_SUBDIRS = sdl
|
||||
endif
|
||||
@@ -20,6 +24,7 @@
|
||||
linux \
|
||||
$(XSDL_SUBDIRS) \
|
||||
$(FBDEV_SUBDIRS) \
|
||||
+ $(W100_SUBDIRS) \
|
||||
$(VESA_SUBDIRS) \
|
||||
$(XEPHYR_SUBDIRS) \
|
||||
fake
|
||||
Index: git/configure.ac
|
||||
===================================================================
|
||||
--- git.orig/configure.ac 2006-09-02 12:12:14.000000000 +0200
|
||||
+++ git/configure.ac 2006-09-02 12:12:14.000000000 +0200
|
||||
@@ -442,6 +442,7 @@
|
||||
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(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
|
||||
+AC_ARG_ENABLE(w100, AS_HELP_STRING([--enable-w100], [Build the kdrive Xw100 server (default: no)]), [KDRIVEW100=$enableval], [KDRIVEW100=no])
|
||||
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)
|
||||
@@ -1519,6 +1520,10 @@
|
||||
AC_SUBST([XSDL_LIBS])
|
||||
AC_SUBST([XSDL_INCS])
|
||||
|
||||
+AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes])
|
||||
+if test "x$KDRIVEW100" = xyes; then
|
||||
+ AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server])
|
||||
+fi
|
||||
|
||||
dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
|
||||
AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
|
||||
@@ -1753,6 +1758,7 @@
|
||||
hw/kdrive/epson/Makefile
|
||||
hw/kdrive/fake/Makefile
|
||||
hw/kdrive/fbdev/Makefile
|
||||
+hw/kdrive/w100/Makefile
|
||||
hw/kdrive/i810/Makefile
|
||||
hw/kdrive/linux/Makefile
|
||||
hw/kdrive/mach64/Makefile
|
||||
@@ -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;
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
Index: xorg-server-1.4/hw/kdrive/w100/ati_stub.c
|
||||
===================================================================
|
||||
--- xorg-server-1.4.orig/hw/kdrive/w100/ati_stub.c 2007-09-08 21:40:26.000000000 +0200
|
||||
+++ xorg-server-1.4/hw/kdrive/w100/ati_stub.c 2007-09-08 22:04:27.000000000 +0200
|
||||
@@ -74,10 +74,20 @@
|
||||
void
|
||||
InitInput(int argc, char **argv)
|
||||
{
|
||||
- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
|
||||
-#ifdef TOUCHSCREEN
|
||||
- KdAddMouseDriver(&TsFuncs);
|
||||
+ KdKeyboardInfo *ki;
|
||||
+
|
||||
+ KdAddKeyboardDriver (&LinuxKeyboardDriver);
|
||||
+ KdAddPointerDriver (&LinuxMouseDriver);
|
||||
+ KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver);
|
||||
+ KdAddPointerDriver (&LinuxEvdevMouseDriver);
|
||||
+#ifdef TSLIB
|
||||
+ KdAddPointerDriver (&TsDriver);
|
||||
#endif
|
||||
+
|
||||
+ ki = KdParseKeyboard ("keyboard");
|
||||
+ KdAddKeyboard(ki);
|
||||
+
|
||||
+ KdInitInput ();
|
||||
}
|
||||
|
||||
void
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,64 @@
|
||||
DESCRIPTION = "X server for glamo chip in GTA02"
|
||||
SECTION = "x11/base"
|
||||
LICENSE = "MIT"
|
||||
DEPENDS = "compositeproto damageproto fixesproto recordproto resourceproto \
|
||||
scrnsaverproto xineramaproto videoproto xextproto xproto \
|
||||
libxau libxext libxdmcp libxfont libxrandr tslib virtual/libx11 \
|
||||
xtrans libxkbfile libxcalibrate"
|
||||
DEPENDS += "libxkbfile libxcalibrate"
|
||||
RDEPENDS_${PN} = "xserver-kdrive"
|
||||
PROVIDES = "virtual/xserver"
|
||||
PE = "1"
|
||||
PR = "r6"
|
||||
PV = "1.3.0.0+git${SRCREV}"
|
||||
|
||||
SRC_URI = "git://people.freedesktop.org/~dodji/xglamo;protocol=git \
|
||||
file://kmode.patch;patch=1 \
|
||||
file://disable-apm.patch;patch=1 \
|
||||
file://no-serial-probing.patch;patch=1 \
|
||||
file://fbdev-not-fix.patch;patch=1 \
|
||||
file://optional-xkb.patch;patch=1 \
|
||||
file://enable-tslib.patch;patch=1 \
|
||||
file://kmode-palm.patch;patch=1 \
|
||||
file://enable-epson.patch;patch=1 \
|
||||
file://enable-builtin-fonts.patch;patch=1 \
|
||||
file://kdrive-evdev.patch;patch=1 \
|
||||
file://kdrive-use-evdev.patch;patch=1 \
|
||||
file://disable-xf86-dga-xorgcfg.patch;patch=1 \
|
||||
file://fix_default_mode.patch;patch=1 \
|
||||
file://enable-xcalibrate.patch;patch=1 \
|
||||
file://hide-cursor-and-ppm-root.patch;patch=1 \
|
||||
file://xcalibrate_coords.patch;patch=1 \
|
||||
file://w100.patch;patch=1 \
|
||||
file://w100-autofoo.patch;patch=1 \
|
||||
file://w100-fix-offscreen-bmp.patch;patch=1 \
|
||||
file://kdrive-1.3-18bpp.patch;patch=1 \
|
||||
file://gumstix-kmode.patch;patch=1 \
|
||||
file://fix-picturestr-include-order.patch;patch=1 \
|
||||
"
|
||||
|
||||
FILESPATH = "${FILE_DIRNAME}/xserver-kdrive-glamo:${FILE_DIRNAME}/xserver-kdrive-1.3.0.0:${FILE_DIRNAME}/xserver-kdrive:${FILE_DIRNAME}/files"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit autotools pkgconfig
|
||||
|
||||
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 \
|
||||
--with-default-font-path=built-ins \
|
||||
--enable-tslib --enable-xcalibrate \
|
||||
ac_cv_file__usr_share_sgml_X11_defs_ent=no"
|
||||
|
||||
do_configure_prepend() {
|
||||
sed -i -e 's/tslib-0.0/tslib-1.0/' ${S}/configure.ac
|
||||
}
|
||||
|
||||
FILES_${PN} = "${bindir}/Xglamo"
|
||||
FILES_${PN}-dbg = "${bindir}/.debug/Xglamo"
|
||||
|
||||
ARM_INSTRUCTION_SET = "arm"
|
||||
Reference in New Issue
Block a user