[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