[oe-commits] org.oe.dev xserver-kdrive: w100 accelerated kdrive for people to play with
pH5 commit
openembedded-commits at lists.openembedded.org
Sat Sep 2 10:26:28 UTC 2006
xserver-kdrive: w100 accelerated kdrive for people to play with
- enable compilation of Xw100 and package it as xserver-kdrive-w100
- thanks to Mardy, RP, sirfred, Spyro and XorA!
Author: pH5 at openembedded.org
Branch: org.openembedded.dev
Revision: 2b731b6c8282c7d942d3117af572616c0d9c89db
ViewMTN: http://monotone.openembedded.org/revision.psp?id=2b731b6c8282c7d942d3117af572616c0d9c89db
Files:
1
packages/xorg-xserver/xserver-kdrive/w100.patch
packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb
packages/xorg-xserver/xserver-kdrive_git.bb
Diffs:
#
# mt diff -r32a3511a19e374e5870386a622d151e7630ec7bc -r2b731b6c8282c7d942d3117af572616c0d9c89db
#
#
#
# add_file "packages/xorg-xserver/xserver-kdrive/w100.patch"
# content [6bd509a67bba8d489728bb97224498f1d2661b2d]
#
# patch "packages/xorg-xserver/xserver-kdrive_X11R7.1-1.1.0.bb"
# from [3816eebd1881e5dae175f1edc34c694e035f432e]
# to [56193ba51aa268a2c0c9bd800c23258a5f77d0b9]
#
# patch "packages/xorg-xserver/xserver-kdrive_git.bb"
# from [59d851e236105006bff320a999466a3c08d8bed3]
# to [a4f308fffc90a0c2c561a17bf62c64d620fed43e]
#
============================================================
--- packages/xorg-xserver/xserver-kdrive/w100.patch 6bd509a67bba8d489728bb97224498f1d2661b2d
+++ packages/xorg-xserver/xserver-kdrive/w100.patch 6bd509a67bba8d489728bb97224498f1d2661b2d
@@ -0,0 +1,6385 @@
+Index: xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati.c 2006-09-02 11:47:21.000000000 +0200
+@@ -0,0 +1,434 @@
++/*
++ * Copyright © 2006 Alberto Mardegan <mardy at users.sourceforge.net>
++ *
++ * 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 Alberto Mardegan not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Alberto Mardegan makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL ALBERTO MARDEGAN 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.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "ati.h"
++#include "w100_regs.h"
++
++
++struct pci_id_entry ati_pci_ids[] = {
++ {0x1002, 0x5644, 0, "ATI Imageon 3200"},
++ {0x1002, 0x5741, 0, "ATI Imageon 100"},
++ {0x1002, 0x5744, 0, "ATI Imageon 3220"},
++ {0, 0, 0, NULL}
++};
++
++
++static Bool
++ATICardInit(KdCardInfo * card)
++{
++ ATICardInfo *atic;
++ int i;
++ Bool initialized = FALSE;
++
++ atic = xcalloc(sizeof(ATICardInfo), 1);
++ if (atic == NULL)
++ return FALSE;
++
++#ifdef KDRIVEFBDEV
++ if (!initialized && fbdevInitialize(card, &atic->backend_priv.fbdev)) {
++ atic->use_fbdev = TRUE;
++ initialized = TRUE;
++ atic->backend_funcs.cardfini = fbdevCardFini;
++ atic->backend_funcs.scrfini = fbdevScreenFini;
++ atic->backend_funcs.initScreen = fbdevInitScreen;
++ atic->backend_funcs.finishInitScreen = fbdevFinishInitScreen;
++ atic->backend_funcs.createRes = fbdevCreateResources;
++ atic->backend_funcs.preserve = fbdevPreserve;
++ atic->backend_funcs.restore = fbdevRestore;
++ atic->backend_funcs.dpms = fbdevDPMS;
++ atic->backend_funcs.enable = fbdevEnable;
++ atic->backend_funcs.disable = fbdevDisable;
++ atic->backend_funcs.getColors = fbdevGetColors;
++ atic->backend_funcs.putColors = fbdevPutColors;
++#ifdef RANDR
++ atic->backend_funcs.randrSetConfig = fbdevRandRSetConfig;
++#endif
++ }
++#endif
++#ifdef KDRIVEVESA
++ if (!initialized && vesaInitialize(card, &atic->backend_priv.vesa)) {
++ atic->use_vesa = TRUE;
++ initialized = TRUE;
++ atic->backend_funcs.cardfini = vesaCardFini;
++ atic->backend_funcs.scrfini = vesaScreenFini;
++ atic->backend_funcs.initScreen = vesaInitScreen;
++ atic->backend_funcs.finishInitScreen = vesaFinishInitScreen;
++ atic->backend_funcs.createRes = vesaCreateResources;
++ atic->backend_funcs.preserve = vesaPreserve;
++ atic->backend_funcs.restore = vesaRestore;
++ atic->backend_funcs.dpms = vesaDPMS;
++ atic->backend_funcs.enable = vesaEnable;
++ atic->backend_funcs.disable = vesaDisable;
++ atic->backend_funcs.getColors = vesaGetColors;
++ atic->backend_funcs.putColors = vesaPutColors;
++#ifdef RANDR
++ atic->backend_funcs.randrSetConfig = vesaRandRSetConfig;
++#endif
++ }
++#endif
++
++ if (!initialized || !ATIMap(card, atic)) {
++ xfree(atic);
++ return FALSE;
++ }
++
++ card->driver = atic;
++
++ for (i = 0; ati_pci_ids[i].name != NULL; i++) {
++ if (ati_pci_ids[i].device == card->attr.deviceID) {
++ atic->pci_id = &ati_pci_ids[i];
++ break;
++ }
++ }
++
++ ErrorF("Using ATI card: %s\n", atic->pci_id->name);
++
++ return TRUE;
++}
++
++static void
++ATICardFini(KdCardInfo * card)
++{
++ ATICardInfo *atic = (ATICardInfo *) card->driver;
++
++ ATIUnmap(card, atic);
++ atic->backend_funcs.cardfini(card);
++}
++
++/*
++ * Once screen->off_screen_base is set, this function
++ * allocates the remaining memory appropriately
++ */
++
++static void
++ATISetOffscreen(KdScreenInfo * screen)
++{
++ ATICardInfo(screen);
++ int screen_size;
++ char *mmio = atic->reg_base;
++
++ /* check (and adjust) pitch */
++ if (mmio) {
++ int byteStride = screen->fb[0].byteStride;
++ int bitStride;
++ int pixelStride;
++ int bpp = screen->fb[0].bitsPerPixel;
++
++ /*
++ * Ensure frame buffer is correctly aligned
++ */
++ if (byteStride & 0x3f) {
++ byteStride = (byteStride + 0x3f) & ~0x3f;
++ bitStride = byteStride * 8;
++ pixelStride = bitStride / bpp;
++
++ screen->fb[0].byteStride = byteStride;
++ screen->fb[0].pixelStride = pixelStride;
++ }
++ }
++
++ screen_size = screen->fb[0].byteStride * screen->height;
++
++ screen->off_screen_base = screen_size;
++
++}
++
++static Bool
++ATIScreenInit(KdScreenInfo * screen)
++{
++ ATIScreenInfo *atis;
++ ATICardInfo(screen);
++ Bool success = FALSE;
++
++ atis = xcalloc(sizeof(ATIScreenInfo), 1);
++ if (atis == NULL)
++ return FALSE;
++
++ atis->atic = atic;
++ atis->screen = screen;
++ screen->driver = atis;
++
++ if (screen->fb[0].depth == 0)
++ screen->fb[0].depth = 16;
++#ifdef KDRIVEFBDEV
++ if (atic->use_fbdev) {
++ success = fbdevScreenInitialize(screen, &atis->backend_priv.fbdev);
++ }
++#endif
++#ifdef KDRIVEVESA
++ if (atic->use_vesa) {
++ success = vesaScreenInitialize(screen, &atis->backend_priv.vesa);
++ }
++#endif
++
++ if (!success) {
++ screen->driver = NULL;
++ xfree(atis);
++ return FALSE;
++ }
++
++ ErrorF
++ ("Offscreen memory at offset %08x, memory base %08x, size %08x\n",
++ screen->off_screen_base, screen->memory_base,
++ screen->memory_size);
++ ATISetOffscreen(screen);
++
++ return TRUE;
++}
++
++#ifdef RANDR
++static Bool
++ATIRandRSetConfig(ScreenPtr pScreen,
++ Rotation randr, int rate, RRScreenSizePtr pSize)
++{
++ KdScreenPriv(pScreen);
++ KdScreenInfo *screen = pScreenPriv->screen;
++ ATICardInfo *atic = screen->card->driver;
++ Bool ret;
++
++ ATIDrawDisable(pScreen);
++ ret = atic->backend_funcs.randrSetConfig(pScreen, randr, rate, pSize);
++ ATISetOffscreen(screen);
++ /*
++ * Set frame buffer mapping
++ */
++ (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap(pScreen),
++ pScreen->width,
++ pScreen->height,
++ screen->fb[0].depth,
++ screen->fb[0].bitsPerPixel,
++ screen->fb[0].byteStride,
++ screen->fb[0].frameBuffer);
++
++ ATIDrawEnable(pScreen);
++ return ret;
++}
++
++static Bool
++ATIRandRInit(ScreenPtr pScreen)
++{
++ rrScrPrivPtr pScrPriv;
++
++ pScrPriv = rrGetScrPriv(pScreen);
++ pScrPriv->rrSetConfig = ATIRandRSetConfig;
++ return TRUE;
++}
++#endif
++
++static void
++ATIScreenFini(KdScreenInfo * screen)
++{
++ ATIScreenInfo *atis = (ATIScreenInfo *) screen->driver;
++ ATICardInfo *atic = screen->card->driver;
++
++ atic->backend_funcs.scrfini(screen);
++ xfree(atis);
++ screen->driver = 0;
++}
++
++Bool
++ATIMap(KdCardInfo * card, ATICardInfo * atic)
++{
++ atic->mem_base = (CARD8 *) KdMapDevice(ATI_MEM_BASE(card),
++ ATI_MEM_SIZE(card));
++
++ if (atic->mem_base == NULL)
++ return FALSE;
++ atic->reg_base = atic->mem_base + 0x10000; /* XXX */
++
++ KdSetMappedMode(ATI_MEM_BASE(card), ATI_MEM_SIZE(card),
++ KD_MAPPED_MODE_REGISTERS);
++
++ return TRUE;
++}
++
++void
++ATIUnmap(KdCardInfo * card, ATICardInfo * atic)
++{
++ if (atic->reg_base) {
++ KdResetMappedMode(ATI_REG_BASE(card), ATI_REG_SIZE(card),
++ KD_MAPPED_MODE_REGISTERS);
++ KdUnmapDevice((void *) atic->reg_base, ATI_REG_SIZE(card));
++ atic->reg_base = 0;
++ }
++}
++
++static Bool
++ATIInitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ return atic->backend_funcs.initScreen(pScreen);
++}
++
++static Bool
++ATIFinishInitScreen(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ if (!atic->backend_funcs.finishInitScreen(pScreen))
++ return FALSE;
++#ifdef RANDR
++ if (!ATIRandRInit(pScreen))
++ return FALSE;
++#endif
++ return TRUE;
++}
++
++static Bool
++ATICreateResources(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ return atic->backend_funcs.createRes(pScreen);
++}
++
++static void
++ATIPreserve(KdCardInfo * card)
++{
++ ATICardInfo *atic = card->driver;
++
++ atic->backend_funcs.preserve(card);
++}
++
++static void
++ATIRestore(KdCardInfo * card)
++{
++ ATICardInfo *atic = card->driver;
++
++ ATIUnmap(card, atic);
++
++ atic->backend_funcs.restore(card);
++}
++
++static Bool
++ATIDPMS(ScreenPtr pScreen, int mode)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ return atic->backend_funcs.dpms(pScreen, mode);
++}
++
++static Bool
++ATIEnable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++ mc_ext_mem_location_u eml;
++ char *mmio;
++
++ if (!atic->backend_funcs.enable(pScreen))
++ return FALSE;
++
++ if ((atic->reg_base == NULL)
++ && !ATIMap(pScreenPriv->screen->card, atic))
++ return FALSE;
++
++ mmio = atic->reg_base;
++ eml.val = MMIO_IN32(mmio, mmMC_EXT_MEM_LOCATION);
++ atic->ext_mem_location = eml.f.mc_ext_mem_start << 8;
++ ATISetOffscreen(pScreenPriv->screen);
++
++ return TRUE;
++}
++
++static void
++ATIDisable(ScreenPtr pScreen)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ ATIUnmap(pScreenPriv->card, atic);
++
++ atic->backend_funcs.disable(pScreen);
++}
++
++static void
++ATIGetColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ atic->backend_funcs.getColors(pScreen, fb, n, pdefs);
++}
++
++static void
++ATIPutColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
++{
++ KdScreenPriv(pScreen);
++ ATICardInfo(pScreenPriv);
++
++ atic->backend_funcs.putColors(pScreen, fb, n, pdefs);
++}
++
++/* Compute log base 2 of val. */
++int
++ATILog2(int val)
++{
++ int bits;
++
++ for (bits = 0; val != 0; val >>= 1, ++bits);
++ return bits - 1;
++}
++
++
++
++KdCardFuncs ATIFuncs = {
++ ATICardInit, /* cardinit */
++ ATIScreenInit, /* scrinit */
++ ATIInitScreen, /* initScreen */
++ ATIFinishInitScreen, /* finishInitScreen */
++ ATICreateResources, /* createRes */
++ ATIPreserve, /* preserve */
++ ATIEnable, /* enable */
++ ATIDPMS, /* dpms */
++ ATIDisable, /* disable */
++ ATIRestore, /* restore */
++ ATIScreenFini, /* scrfini */
++ ATICardFini, /* cardfini */
++
++#define ATICursorInit 0
++#define ATICursorEnable 0
++#define ATICursorDisable 0
++#define ATICursorFini 0
++#define ATIRecolorCursor 0
++ ATICursorInit, /* initCursor */
++ ATICursorEnable, /* enableCursor */
++ ATICursorDisable, /* disableCursor */
++ ATICursorFini, /* finiCursor */
++ ATIRecolorCursor, /* recolorCursor */
++
++ ATIDrawInit, /* initAccel */
++ ATIDrawEnable, /* enableAccel */
++ ATIDrawDisable, /* disableAccel */
++ ATIDrawFini, /* finiAccel */
++
++ ATIGetColors, /* getColors */
++ ATIPutColors, /* putColors */
++};
+Index: xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati_cursor.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati_cursor.c 2006-09-02 11:47:21.000000000 +0200
+@@ -0,0 +1,93 @@
++/*
++ * Copyright © 2006 Alberto Mardegan <mardy at users.sourceforge.net>
++ *
++ * 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 Alberto Mardegan not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Alberto Mardegan makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL ALBERTO MARDEGAN 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.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <kdrive-config.h>
++#endif
++#include "ati.h"
++#include "cursorstr.h"
++#include "ati_draw.h"
++
++static void
++ATIMoveCursor(ScreenPtr pScreen, int x, int y)
++{
++}
++
++
++static Bool
++ATIRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
++{
++ return FALSE;
++}
++
++
++static Bool
++ATIUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
++{
++ return TRUE;
++}
++
++
++static void
++ATISetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
++{
++}
++
++
++miPointerSpriteFuncRec ATIPointerSpriteFuncs = {
++ ATIRealizeCursor,
++ ATIUnrealizeCursor,
++ ATISetCursor,
++ ATIMoveCursor,
++};
++
++
++void
++ATICursorEnable(ScreenPtr pScreen)
++{
++}
++
++
++void
++ATICursorDisable(ScreenPtr pScreen)
++{
++}
++
++
++Bool
++ATICursorInit(ScreenPtr pScreen)
++{
++ return FALSE;
++}
++
++
++void
++ATIRecolorCursor(ScreenPtr pScreen, int ndef, xColorItem * pdef)
++{
++ return;
++}
++
++
++void
++ATICursorFini(ScreenPtr pScreen)
++{
++}
+Index: xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati_dma.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/w100/ati_dma.c 2006-09-02 11:47:21.000000000 +0200
+@@ -0,0 +1,333 @@
++/*
++ * Copyright © 2006 Alberto Mardegan <mardy at users.sourceforge.%s
>>> DIFF TRUNCATED @ 16K
More information about the Openembedded-commits
mailing list