diff options
author | Graeme Gregory <dp@xora.org.uk> | 2007-12-03 12:37:48 +0000 |
---|---|---|
committer | Graeme Gregory <dp@xora.org.uk> | 2007-12-03 12:37:48 +0000 |
commit | 4b81a6a834ee03f8fd0dda8cab8370c20ca1e171 (patch) | |
tree | b1fb54352bbc4816e274b8aa57879ff9164fe124 /packages | |
parent | d1e8b3dd5b1af4c2be01833553fbc8c85b2d968b (diff) |
xserver-kdrive_1.3.0.0.bb : more glamo patches, have purposely not bumped
PR as this isnt a released device yet.
Diffstat (limited to 'packages')
5 files changed, 984 insertions, 0 deletions
diff --git a/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch b/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch new file mode 100644 index 0000000000..8fc8ff46b9 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/00-xglamo-logs.patch @@ -0,0 +1,386 @@ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/Makefile.am 2007-11-28 18:44:27.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/Makefile.am 2007-11-28 18:44:28.000000000 +0100 +@@ -20,6 +20,7 @@ + noinst_LIBRARIES = libglamo.a + + libglamo_a_SOURCES = \ ++ glamo-log.h \ + glamo_dma.c \ + glamo_dma.h \ + glamo_draw.c \ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo-log.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo-log.h 2007-11-29 09:05:53.000000000 +0100 +@@ -0,0 +1,63 @@ ++/* ++ * Copyright © 2007 OpenMoko, Inc. ++ * ++ * This driver is based on Xati, ++ * Copyright © 2004 Eric Anholt ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that copyright ++ * notice and this permission notice appear in supporting documentation, and ++ * that the name of the copyright holders not be used in advertising or ++ * publicity pertaining to distribution of the software without specific, ++ * written prior permission. The copyright holders make no representations ++ * about the suitability of this software for any purpose. It is provided "as ++ * is" without express or implied warranty. ++ * ++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, ++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO ++ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR ++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE ++ * OF THIS SOFTWARE. ++ * ++ * Author: Dodji Seketeli <dodji@openedhand.com> ++ */ ++#ifndef _GLAMO_LOG_H_ ++#define _GLAMO_LOG_H_ ++#ifdef HAVE_CONFIG_H ++#include <kdrive-config.h> ++#endif ++ ++#include <assert.h> ++#include "os.h" ++ ++#ifdef NDEBUG ++/*we are not in debug mode*/ ++#define GLAMO_LOG ++#define GLAMO_LOG_ERROR ++ ++#else /*NDEBUG*/ ++ ++#define ERROR_LOG_LEVEL 3 ++#define INFO_LOG_LEVEL 4 ++ ++#ifndef GLAMO_LOG ++#define GLAMO_LOG(...) \ ++LogMessageVerb(X_NOTICE, INFO_LOG_LEVEL, "in %s:%d:%s: ",\ ++ __FILE__, __LINE__, __func__) ; \ ++LogMessageVerb(X_NOTICE, INFO_LOG_LEVEL, __VA_ARGS__) ++#endif /*GLAMO_LOG*/ ++ ++#ifndef GLAMO_LOG_ERROR ++#define GLAMO_LOG_ERROR(...) \ ++LogMessageVerb(X_NOTICE, ERROR_LOG_LEVEL, "Error:in %s:%d:%s: ",\ ++ __FILE__, __LINE__, __func__) ; \ ++LogMessageVerb(X_NOTICE, ERROR_LOG_LEVEL, __VA_ARGS__) ++#endif /*GLAMO_LOG_ERROR*/ ++ ++#endif /*NDEBUG*/ ++ ++#endif /*_GLAMO_LOG_H_*/ ++ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-28 18:44:27.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-29 09:33:11.000000000 +0100 +@@ -26,6 +26,7 @@ + #ifdef HAVE_CONFIG_H + #include <kdrive-config.h> + #endif ++#include "glamo-log.h" + #include "glamo.h" + #include "glamo-regs.h" + #include "glamo_dma.h" +@@ -90,45 +91,11 @@ + KdScreenPriv(pScreen); + GLAMOScreenInfo(pScreenPriv); + +- ENTER_DRAW(0); ++ GLAMO_LOG("enter"); + GLAMOWaitIdle(glamos); +- LEAVE_DRAW(0); ++ GLAMO_LOG("leave"); + } + +-#if GLAMO_TRACE_DRAW +-void +-GLAMOEnterDraw (PixmapPtr pPix, const char *function) +-{ +- if (pPix != NULL) { +- KdScreenPriv(pPix->drawable.pScreen); +- CARD32 offset; +- +- offset = ((CARD8 *)pPix->devPrivate.ptr - +- pScreenPriv->screen->memory_base); +- +- ErrorF ("Enter %s 0x%x (%dx%dx%d/%d)\n", function, (unsigned int) offset, +- pPix->drawable.width, pPix->drawable.height, pPix->drawable.depth, +- (unsigned int) pPix->drawable.bitsPerPixel); +- } else +- ErrorF ("Enter %s\n", function); +-} +- +-void +-GLAMOLeaveDraw (PixmapPtr pPix, const char *function) +-{ +- if (pPix != NULL) { +- KdScreenPriv(pPix->drawable.pScreen); +- CARD32 offset; +- +- offset = ((CARD8 *)pPix->devPrivate.ptr - +- pScreenPriv->screen->memory_base); +- +- ErrorF ("Leave %s 0x%x\n", function, (unsigned int) offset); +- } else +- ErrorF ("Leave %s\n", function); +-} +-#endif +- + static Bool + GLAMOPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg) + { +@@ -152,7 +119,7 @@ + pScreenPriv->screen->memory_base); + pitch = pPix->devKind; + +- ENTER_DRAW(pPix); ++ GLAMO_LOG("enter"); + + BEGIN_DMA(12); + OUT_REG(GLAMO_REG_2D_DST_ADDRL, offset & 0xffff); +@@ -163,7 +130,7 @@ + OUT_REG(GLAMO_REG_2D_COMMAND2, settings); + END_DMA(); + +- LEAVE_DRAW(pPix); ++ GLAMO_LOG("leave"); + + return TRUE; + } +@@ -171,7 +138,7 @@ + static void + GLAMOSolid(int x1, int y1, int x2, int y2) + { +- ENTER_DRAW(0); ++ GLAMO_LOG("enter"); + GLAMOScreenInfo *glamos = accel_glamos; + RING_LOCALS; + +@@ -184,14 +151,12 @@ + OUT_REG(GLAMO_REG_2D_ID1, 0); + OUT_REG(GLAMO_REG_2D_ID2, 0); + END_DMA(); +- LEAVE_DRAW(0); ++ GLAMO_LOG("leave"); + } + + static void + GLAMODoneSolid(void) + { +- ENTER_DRAW(0); +- LEAVE_DRAW(0); + } + + static Bool +@@ -204,6 +169,8 @@ + FbBits mask; + RING_LOCALS; + ++ GLAMO_LOG("enter"); ++ + if (pSrc->drawable.bitsPerPixel != 16 || + pDst->drawable.bitsPerPixel != 16) + GLAMO_FALLBACK(("Only 16bpp is supported")); +@@ -224,8 +191,6 @@ + + settings = GLAMOBltRop[alu] << 8; + +- ENTER_DRAW (pDst); +- + BEGIN_DMA(16); + + OUT_REG(GLAMO_REG_2D_SRC_ADDRL, src_offset & 0xffff); +@@ -241,7 +206,7 @@ + + END_DMA(); + +- LEAVE_DRAW(pDst); ++ GLAMO_LOG("leave"); + + return TRUE; + } +@@ -268,8 +233,10 @@ + static void + GLAMODoneCopy(void) + { +- ENTER_DRAW(0); +- LEAVE_DRAW(0); ++ GLAMOScreenInfo *glamos = accel_glamos; ++ GLAMO_LOG("enter"); ++ GLAMOFlushIndirect(glamos, 1); ++ GLAMO_LOG("leave"); + } + + static Bool +@@ -279,6 +246,7 @@ + CARD8 *dst_offset; + int dst_pitch; + ++ GLAMO_LOG("enter"); + dst_offset = (CARD8 *)pDst->devPrivate.ptr; + dst_pitch = pDst->devKind; + width = pDst->drawable.width; +@@ -294,83 +262,9 @@ + src += src_pitch; + } + +- ErrorF("hostdata upload %d,%d %dbpp\n", width, height, bpp); +- + return TRUE; + } + +- +-#if 0 +-static Bool +-GLAMOUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst) +-{ +- KdScreenPriv(pSrc->drawable.pScreen); +- GLAMOCardInfo(pScreenPriv); +- GLAMOScreenInfo(pScreenPriv); +- int dst_pitch, src_pitch, w, i, size, bytes; +- unsigned char *dst, *src; +- RING_LOCALS; +- +- ENTER_DRAW(pSrc); +- /* Align width to log 2, useful for R128 composite. This should be a +- * KAA flag we check for (and supported in kaa.c in general) since many +- * older bits of hardware are going to want POT pitches. +- */ +- w = pSrc->drawable.width; +- if (glamos->kaa.flags & KAA_OFFSCREEN_ALIGN_POT) +- w = 1 << (GLAMOLog2(w - 1) + 1); +- dst_pitch = (w * pSrc->drawable.bitsPerPixel / 8 + +- glamos->kaa.pitchAlign - 1) & ~(glamos->kaa.pitchAlign - 1); +- +- size = dst_pitch * pSrc->drawable.height; +- if (size > glamos->scratch_area->size) +- GLAMO_FALLBACK(("Pixmap too large for scratch (%d,%d)\n", +- pSrc->drawable.width, pSrc->drawable.height)); +- +- glamos->scratch_next = (glamos->scratch_next + glamos->kaa.offsetAlign - 1) & +- ~(glamos->kaa.offsetAlign - 1); +- if (glamos->scratch_next + size > glamos->scratch_area->offset + +- glamos->scratch_area->size) { +- /* Only sync when we've used all of the scratch area. */ +- kaaWaitSync(pSrc->drawable.pScreen); +- glamos->scratch_next = glamos->scratch_area->offset; +- } +- memcpy(pDst, pSrc, sizeof(*pDst)); +- pDst->devKind = dst_pitch; +- pDst->devPrivate.ptr = pScreenPriv->screen->memory_base + +- glamos->scratch_next; +- glamos->scratch_next += size; +- +- src = pSrc->devPrivate.ptr; +- src_pitch = pSrc->devKind; +- dst = pDst->devPrivate.ptr; +- bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch; +- +- i = pSrc->drawable.height; +- while (i--) { +- memcpy(dst, src, bytes); +- dst += dst_pitch; +- src += src_pitch; +- } +- +- /* Flush the pixel cache */ +- if (glamoc->is_3362) { +- BEGIN_DMA(4); +- OUT_REG(RADEON_REG_RB3D_DSTCACHE_CTLSTAT, +- RADEON_RB3D_DC_FLUSH_ALL); +- OUT_REG(GLAMO_REG_WAIT_UNTIL, RADEON_WAIT_HOST_IDLECLEAN); +- END_DMA(); +- } else { +- BEGIN_DMA(2); +- OUT_REG(R128_REG_PC_GUI_CTLSTAT, R128_PC_FLUSH_ALL); +- END_DMA(); +- } +- +- LEAVE_DRAW(pSrc); +- return TRUE; +-} +-#endif +- + static void + GLAMOBlockHandler(pointer blockData, OSTimePtr timeout, pointer readmask) + { +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_dma.c 2007-11-28 18:44:27.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c 2007-11-28 22:13:23.000000000 +0100 +@@ -25,6 +25,7 @@ + + #include <sys/time.h> + ++#include "glamo-log.h" + #include "glamo.h" + #include "glamo-regs.h" + #include "glamo_dma.h" +@@ -35,9 +36,7 @@ + #include "glamo_sarea.h" + #endif /* USE_DRI */ + +-#define DEBUG_FIFO 1 +- +-#if DEBUG_FIFO ++#ifndef NDEBUG + static void + GLAMODebugFifo(GLAMOScreenInfo *glamos) + { +@@ -273,7 +272,7 @@ + count--; + } + if (TIMEDOUT()) { +- ErrorF("Timeout submitting packets, resetting...\n"); ++ GLAMO_LOG_ERROR("Timeout submitting packets, resetting...\n"); + GLAMOEngineReset(glamos->screen->pScreen, GLAMO_ENGINE_CQ); + GLAMODrawSetup(glamos->screen->pScreen); + } +@@ -292,11 +291,6 @@ + if ((glamos->indirectStart == buf->used) && !discard) + return; + +-#if DEBUG_FIFO +- ErrorF("Dispatching %d DWORDS\n", (buf->used - glamos->indirectStart) / +- 4); +-#endif +- + #ifdef USE_DRI + if (glamos->using_dri) { + buf->drmBuf->used = buf->used; +@@ -384,11 +378,6 @@ + glamos->indirectBuffer = GLAMOGetDMABuffer(glamos); + if (glamos->indirectBuffer == FALSE) + FatalError("Failed to allocate DMA buffer.\n"); +- +- if (glamos->using_dri) +- ErrorF("Initialized DRI DMA\n"); +- else +- ErrorF("Initialized DMA\n"); + } + + void +Index: xorg-server-1.3.0.0/configure.ac +=================================================================== +--- xorg-server-1.3.0.0.orig/configure.ac 2007-11-29 09:07:21.000000000 +0100 ++++ xorg-server-1.3.0.0/configure.ac 2007-11-29 09:15:38.000000000 +0100 +@@ -866,6 +866,10 @@ + + if ! test "x$DEBUGGING" = xyes; then + AC_DEFINE(NDEBUG, 1, [Disable some debugging code]) ++ AC_MSG_NOTICE([disabled debugging]) ++else ++ AC_MSG_NOTICE([enabled debugging]) ++ + fi + + AC_DEFINE(USE_RGB_TXT, 1, [Use rgb.txt directly]) diff --git a/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch b/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch new file mode 100644 index 0000000000..1ca96b954d --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/01-xglamo-scrolling-artifact-fix.patch @@ -0,0 +1,15 @@ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:54:00.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:55:05.000000000 +0100 +@@ -314,8 +314,8 @@ + */ + + glamos->kaa.flags = KAA_OFFSCREEN_PIXMAPS; +- glamos->kaa.offsetAlign = 2; +- glamos->kaa.pitchAlign = 2; ++ glamos->kaa.offsetAlign = 0; ++ glamos->kaa.pitchAlign = 0; + + kaaInitTrapOffsets(8, sample_offsets_x, sample_offsets_y, 0.0, 0.0); + sample_count = (1 << 8) - 1; diff --git a/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch b/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch new file mode 100644 index 0000000000..43315121da --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/02-xglamo-no-dri.patch @@ -0,0 +1,438 @@ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.c 2007-11-28 18:44:27.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c 2007-11-30 10:18:43.000000000 +0100 +@@ -27,9 +27,6 @@ + #include <kdrive-config.h> + #endif + #include "glamo.h" +-#if defined(USE_DRI) && defined(GLXEXT) +-#include "glamo_sarea.h" +-#endif + + static Bool + GLAMOCardInit(KdCardInfo *card) +@@ -89,13 +86,6 @@ + return FALSE; + } + +-#ifdef USE_DRI +- /* We demand identification by busid, not driver name */ +- glamoc->drmFd = drmOpen(NULL, glamoc->busid); +- if (glamoc->drmFd < 0) +- ErrorF("Failed to open DRM, DRI disabled.\n"); +-#endif /* USE_DRI */ +- + card->driver = glamoc; + + glamoc->is_3362 = TRUE; +@@ -122,10 +112,6 @@ + GLAMOSetOffscreen (KdScreenInfo *screen) + { + GLAMOCardInfo(screen); +-#if defined(USE_DRI) && defined(GLXEXT) +- GLAMOScreenInfo *glamos = (GLAMOScreenInfo *)screen->driver; +- int l; +-#endif + int screen_size; + char *mmio = glamoc->reg_base; + +@@ -152,57 +138,7 @@ + } + + screen_size = screen->fb[0].byteStride * screen->height; +- + screen->off_screen_base = screen_size; +- +-#if defined(USE_DRI) && defined(GLXEXT) +- /* Reserve a static area for the back buffer the same size as the +- * visible screen. XXX: This would be better initialized in glamo_dri.c +- * when GLX is set up, but the offscreen memory manager's allocations +- * don't last through VT switches, while the kernel's understanding of +- * offscreen locations does. +- */ +- glamos->frontOffset = 0; +- glamos->frontPitch = screen->fb[0].byteStride; +- +- if (screen->off_screen_base + screen_size <= screen->memory_size) { +- glamos->backOffset = screen->off_screen_base; +- glamos->backPitch = screen->fb[0].byteStride; +- screen->off_screen_base += screen_size; +- } +- +- /* Reserve the depth span for Rage 128 */ +- if (!glamoc->is_3362 && screen->off_screen_base + +- screen->fb[0].byteStride <= screen->memory_size) { +- glamos->spanOffset = screen->off_screen_base; +- screen->off_screen_base += screen->fb[0].byteStride; +- } +- +- /* Reserve the static depth buffer, which happens to be the same +- * bitsPerPixel as the screen. +- */ +- if (screen->off_screen_base + screen_size <= screen->memory_size) { +- glamos->depthOffset = screen->off_screen_base; +- glamos->depthPitch = screen->fb[0].byteStride; +- screen->off_screen_base += screen_size; +- } +- +- /* Reserve approx. half of remaining offscreen memory for local +- * textures. Round down to a whole number of texture regions. +- */ +- glamos->textureSize = (screen->memory_size - screen->off_screen_base) / 2; +- l = GLAMOLog2(glamos->textureSize / GLAMO_NR_TEX_REGIONS); +- if (l < GLAMO_LOG_TEX_GRANULARITY) +- l = GLAMO_LOG_TEX_GRANULARITY; +- glamos->textureSize = (glamos->textureSize >> l) << l; +- if (glamos->textureSize >= 512 * 1024) { +- glamos->textureOffset = screen->off_screen_base; +- screen->off_screen_base += glamos->textureSize; +- } else { +- /* Minimum texture size is for 2 256x256x32bpp textures */ +- glamos->textureSize = 0; +- } +-#endif /* USE_DRI && GLXEXT */ + } + + static Bool +@@ -413,9 +349,6 @@ + GLAMODisable(ScreenPtr pScreen) + { + KdScreenPriv(pScreen); +-#if defined(USE_DRI) && defined(GLXEXT) +- GLAMOScreenInfo(pScreenPriv); +-#endif /* USE_DRI && GLXEXT */ + GLAMOCardInfo(pScreenPriv); + + GLAMOUnmapReg(pScreenPriv->card, glamoc); +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_dma.c 2007-11-28 22:13:23.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_dma.c 2007-11-30 10:25:49.000000000 +0100 +@@ -31,11 +31,6 @@ + #include "glamo_dma.h" + #include "glamo_draw.h" + +-#ifdef USE_DRI +-#include "radeon_common.h" +-#include "glamo_sarea.h" +-#endif /* USE_DRI */ +- + #ifndef NDEBUG + static void + GLAMODebugFifo(GLAMOScreenInfo *glamos) +@@ -168,26 +163,6 @@ + if (glamos->indirectBuffer != NULL) + GLAMOFlushIndirect(glamos, 0); + +-#ifdef USE_DRI +- if (glamos->using_dri) { +- int ret = 0; +- int cmd = (glamoc->is_3362 ? DRM_RADEON_CP_IDLE : +- DRM_R128_CCE_IDLE); +- WHILE_NOT_TIMEOUT(2) { +- ret = drmCommandNone(glamoc->drmFd, cmd); +- if (ret != -EBUSY) +- break; +- } +- if (TIMEDOUT()) { +- GLAMODebugFifo(glamos); +- FatalError("Timed out idling CCE (card hung)\n"); +- } +- if (ret != 0) +- ErrorF("Failed to idle DMA, returned %d\n", ret); +- return; +- } +-#endif +- + WHILE_NOT_TIMEOUT(.5) { + status = MMIO_IN16(mmio, GLAMO_REG_CQ_STATUS); + if ((status & (1 << 2)) && !(status & (1 << 8))) +@@ -214,20 +189,6 @@ + if (buf == NULL) + return NULL; + +-#ifdef USE_DRI +- if (glamos->using_dri) { +- buf->drmBuf = GLAMODRIGetBuffer(glamos); +- if (buf->drmBuf == NULL) { +- xfree(buf); +- return NULL; +- } +- buf->size = buf->drmBuf->total; +- buf->used = buf->drmBuf->used; +- buf->address = buf->drmBuf->address; +- return buf; +- } +-#endif /* USE_DRI */ +- + buf->size = glamos->ring_len / 2; + buf->address = xalloc(buf->size); + if (buf->address == NULL) { +@@ -290,25 +251,6 @@ + + if ((glamos->indirectStart == buf->used) && !discard) + return; +- +-#ifdef USE_DRI +- if (glamos->using_dri) { +- buf->drmBuf->used = buf->used; +- GLAMODRIDispatchIndirect(glamos, discard); +- if (discard) { +- buf->drmBuf = GLAMODRIGetBuffer(glamos); +- buf->size = buf->drmBuf->total; +- buf->used = buf->drmBuf->used; +- buf->address = buf->drmBuf->address; +- glamos->indirectStart = 0; +- } else { +- /* Start on a double word boundary */ +- glamos->indirectStart = buf->used = (buf->used + 7) & ~7; +- } +- return; +- } +-#endif /* USE_DRI */ +- + GLAMODispatchIndirectDMA(glamos); + + buf->used = 0; +@@ -367,13 +309,7 @@ + KdScreenPriv(pScreen); + GLAMOScreenInfo(pScreenPriv); + +-#ifdef USE_DRI +- if (glamos->using_dri) +- GLAMODRIDMAStart(glamos); +-#endif /* USE_DRI */ +- +- if (!glamos->using_dri) +- GLAMODMAInit(pScreen); ++ GLAMODMAInit(pScreen); + + glamos->indirectBuffer = GLAMOGetDMABuffer(glamos); + if (glamos->indirectBuffer == FALSE) +@@ -388,11 +324,6 @@ + + GLAMOWaitIdle(glamos); + +-#ifdef USE_DRI +- if (glamos->using_dri) +- GLAMODRIDMAStop(glamos); +-#endif /* USE_DRI */ +- + xfree(glamos->indirectBuffer->address); + xfree(glamos->indirectBuffer); + glamos->indirectBuffer = NULL; +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.h 2007-11-30 10:24:13.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h 2007-11-30 10:25:06.000000000 +0100 +@@ -39,18 +39,6 @@ + + #include "kxv.h" + +-#undef XF86DRI +-#ifdef XF86DRI +-#define USE_DRI +-#include "xf86drm.h" +-#include "dri.h" +-#ifdef GLXEXT +-#include "GL/glxint.h" +-#include "GL/glxtokens.h" +-#include "glamo_dripriv.h" +-#endif +-#endif +- + #define GLAMO_REG_BASE(c) ((c)->attr.address[0]) + #define GLAMO_REG_SIZE(c) (0x2400) + +@@ -124,9 +112,6 @@ + Bool is_3362; + CARD32 crtc_pitch; + CARD32 crtc2_pitch; +-#ifdef USE_DRI +- int drmFd; +-#endif /* USE_DRI */ + Bool use_fbdev, use_vesa; + } GLAMOCardInfo; + +@@ -166,9 +151,6 @@ + int size; + int used; + void *address; +-#ifdef USE_DRI +- drmBufPtr drmBuf; +-#endif + } dmaBuf; + + typedef struct _GLAMOScreenInfo { +@@ -194,8 +176,6 @@ + KdVideoAdaptorPtr pAdaptor; + int num_texture_ports; + +- Bool using_dri; /* If we use the DRM for DMA. */ +- + KdOffscreenArea *dma_space; /* For "DMA" from framebuffer. */ + CARD16 *ring_addr; /* Beginning of ring buffer. */ + int ring_write; /* Index of write ptr in ring. */ +@@ -204,76 +184,6 @@ + + dmaBuf *indirectBuffer; + int indirectStart; +- +-#ifdef USE_DRI +- Bool dma_started; +- +- drmSize registerSize; +- drmHandle registerHandle; +- drmHandle fbHandle; +- +- drmSize gartSize; +- drmHandle agpMemHandle; /* Handle from drmAgpAlloc */ +- unsigned long gartOffset; +- unsigned char *AGP; /* Map */ +- int agpMode; +- drmSize pciSize; +- drmHandle pciMemHandle; +- +- /* ring buffer data */ +- unsigned long ringStart; /* Offset into AGP space */ +- drmHandle ringHandle; /* Handle from drmAddMap */ +- drmSize ringMapSize; /* Size of map */ +- int ringSize; /* Size of ring (MB) */ +- unsigned char *ring; /* Map */ +- +- unsigned long ringReadOffset; /* Offset into AGP space */ +- drmHandle ringReadPtrHandle; /* Handle from drmAddMap */ +- drmSize ringReadMapSize; /* Size of map */ +- unsigned char *ringReadPtr; /* Map */ +- +- /* vertex/indirect buffer data */ +- unsigned long bufStart; /* Offset into AGP space */ +- drmHandle bufHandle; /* Handle from drmAddMap */ +- drmSize bufMapSize; /* Size of map */ +- int bufSize; /* Size of buffers (MB) */ +- unsigned char *buf; /* Map */ +- int bufNumBufs; /* Number of buffers */ +- drmBufMapPtr buffers; /* Buffer map */ +- +- /* AGP Texture data */ +- unsigned long gartTexStart; /* Offset into AGP space */ +- drmHandle gartTexHandle; /* Handle from drmAddMap */ +- drmSize gartTexMapSize; /* Size of map */ +- int gartTexSize; /* Size of AGP tex space (MB) */ +- unsigned char *gartTex; /* Map */ +- int log2GARTTexGran; +- +- int DMAusecTimeout; /* CCE timeout in usecs */ +- +- /* DRI screen private data */ +- int frontOffset; +- int frontPitch; +- int backOffset; +- int backPitch; +- int depthOffset; +- int depthPitch; +- int spanOffset; +- int textureOffset; +- int textureSize; +- int log2TexGran; +- +- int irqEnabled; +- +- int serverContext; +- +- DRIInfoPtr pDRIInfo; +-#ifdef GLXEXT +- int numVisualConfigs; +- __GLXvisualConfig *pVisualConfigs; +- GLAMOConfigPrivPtr pVisualConfigsPriv; +-#endif /* GLXEXT */ +-#endif /* USE_DRI */ + } GLAMOScreenInfo; + + #define getGLAMOScreenInfo(kd) ((GLAMOScreenInfo *) ((kd)->screen->driver)) +@@ -330,31 +240,6 @@ + void + GLAMODrawFini(ScreenPtr pScreen); + +-/* glamo_dri.c */ +-#ifdef USE_DRI +-Bool +-GLAMODRIScreenInit(ScreenPtr pScreen); +- +-void +-GLAMODRICloseScreen(ScreenPtr pScreen); +- +-void +-GLAMODRIDMAStart(GLAMOScreenInfo *glamos); +- +-void +-GLAMODRIDMAStop(GLAMOScreenInfo *glamos); +- +-void +-GLAMODRIDMAReset(GLAMOScreenInfo *glamos); +- +-void +-GLAMODRIDispatchIndirect(GLAMOScreenInfo *glamos, Bool discard); +- +-drmBufPtr +-GLAMODRIGetBuffer(GLAMOScreenInfo *glamos); +- +-#endif /* USE_DRI */ +- + /* glamo_cursor.c */ + Bool + GLAMOCursorInit(ScreenPtr pScreen); +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_draw.c 2007-11-30 09:55:05.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_draw.c 2007-11-30 10:26:02.000000000 +0100 +@@ -296,11 +296,6 @@ + RegisterBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler, + pScreen); + +- glamos->using_dri = FALSE; +-#ifdef USE_DRI +- glamos->using_dri = GLAMODRIScreenInit(pScreen); +-#endif /* USE_DRI */ +- + memset(&glamos->kaa, 0, sizeof(KaaScreenInfoRec)); + glamos->kaa.waitMarker = GLAMOWaitMarker; + glamos->kaa.PrepareSolid = GLAMOPrepareSolid; +@@ -357,20 +352,6 @@ + glamos->kaa.UploadToScreen = NULL; + glamos->kaa.UploadToScratch = NULL; + +-#ifdef USE_DRI +- if (glamos->using_dri) { +- if (!glamoc->is_3362) { +- /*glamos->kaa.PrepareTrapezoids = R128PrepareTrapezoids; +- glamos->kaa.Trapezoids = R128Trapezoids; +- glamos->kaa.DoneTrapezoids = R128DoneTrapezoids;*/ +- } else if (glamoc->is_r100 || glamoc->is_r200) { +- glamos->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids; +- glamos->kaa.Trapezoids = RadeonTrapezoids; +- glamos->kaa.DoneTrapezoids = RadeonDoneTrapezoids; +- } +- } +-#endif /* USE_DRI */ +- + glamos->kaa.UploadToScreen = GLAMOUploadToScreen; + + /* Reserve a scratch area. It'll be used for storing glyph data during +@@ -399,15 +380,6 @@ + void + GLAMODrawFini(ScreenPtr pScreen) + { +-#ifdef USE_DRI +- KdScreenPriv(pScreen); +- GLAMOScreenInfo(pScreenPriv); +- if (glamos->using_dri) { +- GLAMODRICloseScreen(pScreen); +- glamos->using_dri = FALSE; +- } +-#endif /* USE_DRI */ +- + RemoveBlockAndWakeupHandlers(GLAMOBlockHandler, GLAMOWakeupHandler, + pScreen); + diff --git a/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch b/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch new file mode 100644 index 0000000000..2c44bd8d3d --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/03-xglamo-no-vesa.patch @@ -0,0 +1,141 @@ +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.c 2007-11-30 10:18:43.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.c 2007-11-30 10:35:27.000000000 +0100 +@@ -38,9 +38,7 @@ + if (glamoc == NULL) + return FALSE; + +-#ifdef KDRIVEFBDEV + if (!initialized && fbdevInitialize(card, &glamoc->backend_priv.fbdev)) { +- glamoc->use_fbdev = TRUE; + initialized = TRUE; + glamoc->backend_funcs.cardfini = fbdevCardFini; + glamoc->backend_funcs.scrfini = fbdevScreenFini; +@@ -58,29 +56,6 @@ + glamoc->backend_funcs.randrSetConfig = fbdevRandRSetConfig; + #endif + } +-#endif +-#ifdef KDRIVEVESA +- if (!initialized && vesaInitialize(card, &glamoc->backend_priv.vesa)) { +- glamoc->use_vesa = TRUE; +- initialized = TRUE; +- glamoc->backend_funcs.cardfini = vesaCardFini; +- glamoc->backend_funcs.scrfini = vesaScreenFini; +- glamoc->backend_funcs.initScreen = vesaInitScreen; +- glamoc->backend_funcs.finishInitScreen = vesaFinishInitScreen; +- glamoc->backend_funcs.createRes = vesaCreateResources; +- glamoc->backend_funcs.preserve = vesaPreserve; +- glamoc->backend_funcs.restore = vesaRestore; +- glamoc->backend_funcs.dpms = vesaDPMS; +- glamoc->backend_funcs.enable = vesaEnable; +- glamoc->backend_funcs.disable = vesaDisable; +- glamoc->backend_funcs.getColors = vesaGetColors; +- glamoc->backend_funcs.putColors = vesaPutColors; +-#ifdef RANDR +- glamoc->backend_funcs.randrSetConfig = vesaRandRSetConfig; +-#endif +- } +-#endif +- + if (!initialized || !GLAMOMapReg(card, glamoc)) { + xfree(glamoc); + return FALSE; +@@ -158,18 +133,8 @@ + + if (screen->fb[0].depth == 0) + screen->fb[0].depth = 16; +-#ifdef KDRIVEFBDEV +- if (glamoc->use_fbdev) { +- success = fbdevScreenInitialize(screen, +- &glamos->backend_priv.fbdev); +- } +-#endif +-#ifdef KDRIVEVESA +- if (glamoc->use_vesa) { +- success = vesaScreenInitialize(screen, +- &glamos->backend_priv.vesa); +- } +-#endif ++ ++ success = fbdevScreenInitialize(screen, &glamos->backend_priv.fbdev); + + if (!success) { + screen->driver = NULL; +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo.h 2007-11-30 10:25:06.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo.h 2007-11-30 10:35:17.000000000 +0100 +@@ -30,13 +30,7 @@ + #include <kdrive-config.h> + #endif + +-#ifdef KDRIVEFBDEV + #include <fbdev.h> +-#endif +-#ifdef KDRIVEVESA +-#include <vesa.h> +-#endif +- + #include "kxv.h" + + #define GLAMO_REG_BASE(c) ((c)->attr.address[0]) +@@ -99,12 +93,7 @@ + + typedef struct _GLAMOCardInfo { + union { +-#ifdef KDRIVEFBDEV + FbdevPriv fbdev; +-#endif +-#ifdef KDRIVEVESA +- VesaCardPrivRec vesa; +-#endif + } backend_priv; + struct backend_funcs backend_funcs; + +@@ -112,7 +101,6 @@ + Bool is_3362; + CARD32 crtc_pitch; + CARD32 crtc2_pitch; +- Bool use_fbdev, use_vesa; + } GLAMOCardInfo; + + #define getGLAMOCardInfo(kd) ((GLAMOCardInfo *) ((kd)->card->driver)) +@@ -155,12 +143,7 @@ + + typedef struct _GLAMOScreenInfo { + union { +-#ifdef KDRIVEFBDEV + FbdevScrPriv fbdev; +-#endif +-#ifdef KDRIVEVESA +- VesaScreenPrivRec vesa; +-#endif + } backend_priv; + KaaScreenInfoRec kaa; + +Index: xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/glamo/glamo_stub.c 2007-11-28 18:44:27.000000000 +0100 ++++ xorg-server-1.3.0.0/hw/kdrive/glamo/glamo_stub.c 2007-11-30 10:34:10.000000000 +0100 +@@ -59,9 +59,6 @@ + ddxUseMsg (void) + { + KdUseMsg(); +-#ifdef KDRIVEVESA +- vesaUseMsg(); +-#endif + } + + int +@@ -69,9 +66,6 @@ + { + int ret; + +-#ifdef KDRIVEVESA +- if (!(ret = vesaProcessArgument (argc, argv, i))) +-#endif + ret = KdProcessArgument(argc, argv, i); + + return ret; diff --git a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb index f78bef05ae..368b421650 100644 --- a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb +++ b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb @@ -23,6 +23,10 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ file://gumstix-kmode.patch;patch=1 \ file://smedia-glamo.patch;patch=1 \ file://build-glamo.patch;patch=1 \ + file://00-xglamo-logs.patch;patch=1 \ + file://01-xglamo-scrolling-artifact-fix.patch;patch=1 \ + file://02-xglamo-no-dri.patch;patch=1 \ + file://03-xglamo-no-vesa.patch;patch=1 \ " S = "${WORKDIR}/xorg-server-${PV}" |