From 0ee4203ce138782c238fa933f1588aa454196c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fabian=20Silva=20Delgado?= Date: Sat, 1 Sep 2012 09:59:09 -0300 Subject: sdl-libre-1.2.15-1.2: put the patches into libre.patch --- libre/sdl-libre/PKGBUILD | 9 +- libre/sdl-libre/libre.patch | 578 ++++++++++++++++++++++++++++++++++++ libre/sdl-libre/no-riva-accel.patch | 24 -- libre/sdl-libre/riva_mmio.patch | 554 ---------------------------------- 4 files changed, 581 insertions(+), 584 deletions(-) create mode 100644 libre/sdl-libre/libre.patch delete mode 100644 libre/sdl-libre/no-riva-accel.patch delete mode 100644 libre/sdl-libre/riva_mmio.patch diff --git a/libre/sdl-libre/PKGBUILD b/libre/sdl-libre/PKGBUILD index 662bcba99..de989b882 100644 --- a/libre/sdl-libre/PKGBUILD +++ b/libre/sdl-libre/PKGBUILD @@ -21,20 +21,17 @@ options=('!libtool') source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz sdl-1.2.14-fix-mouse-clicking.patch sdl-1.2.14-disable-mmx.patch - riva_mmio.patch - no-riva-accel.patch) + libre.patch) md5sums=('9d96df8417572a2afb781a7c4c811a85' '04d8c179f125e04bcd4c9d60e013c2d7' 'e5c16b7611f62c7cb25f0534eff68852' - 'f5ab9ba6ba2bb8df74d0f768f9df3ea8' - 'eb2f5899db608ad27b379faa5e0beb80') + '5c665f72b8a2adc97a91f6db6f2da79a') build() { cd ${srcdir}/SDL-${pkgver} patch -Np1 -i $srcdir/sdl-1.2.14-fix-mouse-clicking.patch patch -Np1 -i $srcdir/sdl-1.2.14-disable-mmx.patch - patch -Np0 -i $srcdir/riva_mmio.patch - patch -Np0 -i $srcdir/no-riva-accel.patch + patch -Np0 -i $srcdir/libre.patch ./configure --prefix=/usr --disable-nasm --enable-alsa --enable-esd \ --with-x --disable-rpath --disable-static make diff --git a/libre/sdl-libre/libre.patch b/libre/sdl-libre/libre.patch new file mode 100644 index 000000000..72f7da56a --- /dev/null +++ b/libre/sdl-libre/libre.patch @@ -0,0 +1,578 @@ +--- src/video/fbcon/riva_mmio.h 2012-01-19 04:30:06.000000000 -0200 ++++ /dev/null 2012-04-01 13:58:27.776718756 -0300 +@@ -1,449 +0,0 @@ +-/***************************************************************************\ +-|* *| +-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| +-|* *| +-|* NOTICE TO USER: The source code is copyrighted under U.S. and *| +-|* international laws. Users and possessors of this source code are *| +-|* hereby granted a nonexclusive, royalty-free copyright license to *| +-|* use this code in individual and commercial software. *| +-|* *| +-|* Any use of this source code must include, in the user documenta- *| +-|* tion and internal comments to the code, notices to the end user *| +-|* as follows: *| +-|* *| +-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| +-|* *| +-|* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *| +-|* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" *| +-|* WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPOR- *| +-|* ATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, *| +-|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGE- *| +-|* MENT, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL *| +-|* NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCI- *| +-|* DENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RE- *| +-|* SULTING 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 SOURCE CODE. *| +-|* *| +-|* U.S. Government End Users. This source code is a "commercial *| +-|* item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *| +-|* consisting of "commercial computer software" and "commercial *| +-|* computer software documentation," as such terms are used in *| +-|* 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- *| +-|* ment only as a commercial end item. Consistent with 48 C.F.R. *| +-|* 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *| +-|* all U.S. Government End Users acquire the source code with only *| +-|* those rights set forth herein. *| +-|* *| +-\***************************************************************************/ +- +-#ifndef __RIVA_HW_H__ +-#define __RIVA_HW_H__ +-#define RIVA_SW_VERSION 0x00010003 +- +-/* +- * Typedefs to force certain sized values. +- */ +-typedef Uint8 U008; +-typedef Uint16 U016; +-typedef Uint32 U032; +- +-/* +- * HW access macros. +- */ +-#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d)) +-#define NV_RD08(p,i) (((U008 *)(p))[i]) +-#define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d)) +-#define NV_RD16(p,i) (((U016 *)(p))[(i)/2]) +-#define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d)) +-#define NV_RD32(p,i) (((U032 *)(p))[(i)/4]) +-#define VGA_WR08(p,i,d) NV_WR08(p,i,d) +-#define VGA_RD08(p,i) NV_RD08(p,i) +- +-/* +- * Define supported architectures. +- */ +-#define NV_ARCH_03 0x03 +-#define NV_ARCH_04 0x04 +-#define NV_ARCH_10 0x10 +-/***************************************************************************\ +-* * +-* FIFO registers. * +-* * +-\***************************************************************************/ +- +-/* +- * Raster OPeration. Windows style ROP3. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 Rop3; +-} RivaRop; +-/* +- * 8X8 Monochrome pattern. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BD]; +- U032 Shape; +- U032 reserved03[0x001]; +- U032 Color0; +- U032 Color1; +- U032 Monochrome[2]; +-} RivaPattern; +-/* +- * Scissor clip rectangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 TopLeft; +- U032 WidthHeight; +-} RivaClip; +-/* +- * 2D filled rectangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 Color; +- U032 reserved03[0x03E]; +- U032 TopLeft; +- U032 WidthHeight; +-} RivaRectangle; +-/* +- * 2D screen-screen BLT. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 TopLeftSrc; +- U032 TopLeftDst; +- U032 WidthHeight; +-} RivaScreenBlt; +-/* +- * 2D pixel BLT. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 TopLeft; +- U032 WidthHeight; +- U032 WidthHeightIn; +- U032 reserved02[0x03C]; +- U032 Pixels; +-} RivaPixmap; +-/* +- * Filled rectangle combined with monochrome expand. Useful for glyphs. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 reserved03[(0x040)-1]; +- U032 Color1A; +- struct +- { +- U032 TopLeft; +- U032 WidthHeight; +- } UnclippedRectangle[64]; +- U032 reserved04[(0x080)-3]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipB; +- U032 Color1B; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClippedRectangle[64]; +- U032 reserved05[(0x080)-5]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipC; +- U032 Color1C; +- U032 WidthHeightC; +- U032 PointC; +- U032 MonochromeData1C; +- U032 reserved06[(0x080)+121]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipD; +- U032 Color1D; +- U032 WidthHeightInD; +- U032 WidthHeightOutD; +- U032 PointD; +- U032 MonochromeData1D; +- U032 reserved07[(0x080)+120]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipE; +- U032 Color0E; +- U032 Color1E; +- U032 WidthHeightInE; +- U032 WidthHeightOutE; +- U032 PointE; +- U032 MonochromeData01E; +-} RivaBitmap; +-/* +- * 3D textured, Z buffered triangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BC]; +- U032 TextureOffset; +- U032 TextureFormat; +- U032 TextureFilter; +- U032 FogColor; +-/* This is a problem on LynxOS */ +-#ifdef Control +-#undef Control +-#endif +- U032 Control; +- U032 AlphaTest; +- U032 reserved02[0x339]; +- U032 FogAndIndex; +- U032 Color; +- float ScreenX; +- float ScreenY; +- float ScreenZ; +- float EyeM; +- float TextureS; +- float TextureT; +-} RivaTexturedTriangle03; +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 ColorKey; +- U032 TextureOffset; +- U032 TextureFormat; +- U032 TextureFilter; +- U032 Blend; +-/* This is a problem on LynxOS */ +-#ifdef Control +-#undef Control +-#endif +- U032 Control; +- U032 FogColor; +- U032 reserved02[0x39]; +- struct +- { +- float ScreenX; +- float ScreenY; +- float ScreenZ; +- float EyeM; +- U032 Color; +- U032 Specular; +- float TextureS; +- float TextureT; +- } Vertex[16]; +- U032 DrawTriangle3D; +-} RivaTexturedTriangle05; +-/* +- * 2D line. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 Color; /* source color 0304-0307*/ +- U032 Reserved02[0x03e]; +- struct { /* start aliased methods in array 0400- */ +- U032 point0; /* y_x S16_S16 in pixels 0- 3*/ +- U032 point1; /* y_x S16_S16 in pixels 4- 7*/ +- } Lin[16]; /* end of aliased methods in array -047f*/ +- struct { /* start aliased methods in array 0480- */ +- U032 point0X; /* in pixels, 0 at left 0- 3*/ +- U032 point0Y; /* in pixels, 0 at top 4- 7*/ +- U032 point1X; /* in pixels, 0 at left 8- b*/ +- U032 point1Y; /* in pixels, 0 at top c- f*/ +- } Lin32[8]; /* end of aliased methods in array -04ff*/ +- U032 PolyLin[32]; /* y_x S16_S16 in pixels 0500-057f*/ +- struct { /* start aliased methods in array 0580- */ +- U032 x; /* in pixels, 0 at left 0- 3*/ +- U032 y; /* in pixels, 0 at top 4- 7*/ +- } PolyLin32[16]; /* end of aliased methods in array -05ff*/ +- struct { /* start aliased methods in array 0600- */ +- U032 color; /* source color 0- 3*/ +- U032 point; /* y_x S16_S16 in pixels 4- 7*/ +- } ColorPolyLin[16]; /* end of aliased methods in array -067f*/ +-} RivaLine; +-/* +- * 2D/3D surfaces +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BE]; +- U032 Offset; +-} RivaSurface; +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BD]; +- U032 Pitch; +- U032 RenderBufferOffset; +- U032 ZBufferOffset; +-} RivaSurface3D; +- +-/***************************************************************************\ +-* * +-* Virtualized RIVA H/W interface. * +-* * +-\***************************************************************************/ +- +-struct _riva_hw_inst; +-struct _riva_hw_state; +-/* +- * Virtialized chip interface. Makes RIVA 128 and TNT look alike. +- */ +-typedef struct _riva_hw_inst +-{ +- /* +- * Chip specific settings. +- */ +- U032 Architecture; +- U032 Version; +- U032 CrystalFreqKHz; +- U032 RamAmountKBytes; +- U032 MaxVClockFreqKHz; +- U032 RamBandwidthKBytesPerSec; +- U032 EnableIRQ; +- U032 IO; +- U032 VBlankBit; +- U032 FifoFreeCount; +- U032 FifoEmptyCount; +- /* +- * Non-FIFO registers. +- */ +- volatile U032 *PCRTC; +- volatile U032 *PRAMDAC; +- volatile U032 *PFB; +- volatile U032 *PFIFO; +- volatile U032 *PGRAPH; +- volatile U032 *PEXTDEV; +- volatile U032 *PTIMER; +- volatile U032 *PMC; +- volatile U032 *PRAMIN; +- volatile U032 *FIFO; +- volatile U032 *CURSOR; +- volatile U032 *CURSORPOS; +- volatile U032 *VBLANKENABLE; +- volatile U032 *VBLANK; +- volatile U008 *PCIO; +- volatile U008 *PVIO; +- volatile U008 *PDIO; +- /* +- * Common chip functions. +- */ +- int (*Busy)(struct _riva_hw_inst *); +- void (*CalcStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *,int,int,int,int,int,int,int,int,int,int,int,int,int); +- void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); +- void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); +- void (*SetStartAddress)(struct _riva_hw_inst *,U032); +- void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032); +- void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032); +- int (*ShowHideCursor)(struct _riva_hw_inst *,int); +- void (*LockUnlock)(struct _riva_hw_inst *, int); +- /* +- * Current extended mode settings. +- */ +- struct _riva_hw_state *CurrentState; +- /* +- * FIFO registers. +- */ +- RivaRop *Rop; +- RivaPattern *Patt; +- RivaClip *Clip; +- RivaPixmap *Pixmap; +- RivaScreenBlt *Blt; +- RivaBitmap *Bitmap; +- RivaLine *Line; +- RivaTexturedTriangle03 *Tri03; +- RivaTexturedTriangle05 *Tri05; +-} RIVA_HW_INST; +-/* +- * Extended mode state information. +- */ +-typedef struct _riva_hw_state +-{ +- U032 bpp; +- U032 width; +- U032 height; +- U032 repaint0; +- U032 repaint1; +- U032 screen; +- U032 pixel; +- U032 horiz; +- U032 arbitration0; +- U032 arbitration1; +- U032 vpll; +- U032 pllsel; +- U032 general; +- U032 config; +- U032 cursor0; +- U032 cursor1; +- U032 cursor2; +- U032 offset0; +- U032 offset1; +- U032 offset2; +- U032 offset3; +- U032 pitch0; +- U032 pitch1; +- U032 pitch2; +- U032 pitch3; +-} RIVA_HW_STATE; +- +-/* +- * FIFO Free Count. Should attempt to yield processor if RIVA is busy. +- */ +- +-#define RIVA_FIFO_FREE(hwptr,cnt) \ +-{ \ +- while (FifoFreeCount < (cnt)) \ +- FifoFreeCount = hwptr->FifoFree >> 2; \ +- FifoFreeCount -= (cnt); \ +-} +-#endif /* __RIVA_HW_H__ */ +- +--- src/video/fbcon/SDL_fbriva.c 2012-01-19 04:30:06.000000000 -0200 ++++ src/video/fbcon/SDL_fbriva.c 2012-04-01 15:10:10.108451467 -0300 +@@ -24,12 +24,10 @@ + #include "SDL_video.h" + #include "../SDL_blit.h" + #include "SDL_fbriva.h" +-#include "riva_mmio.h" + #include "riva_regs.h" + + + static int FifoEmptyCount = 0; +-static int FifoFreeCount = 0; + + /* Wait for vertical retrace */ + static void WaitVBL(_THIS) +@@ -41,20 +39,6 @@ + while ( !(*port & 0x08) ) + ; + } +-static void NV3WaitIdle(_THIS) +-{ +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); +- while ( (Rop->FifoFree < FifoEmptyCount) || +- (*(mapped_io + PGRAPH_OFFSET + 0x000006B0) & 0x01) ) +- ; +-} +-static void NV4WaitIdle(_THIS) +-{ +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); +- while ( (Rop->FifoFree < FifoEmptyCount) || +- (*(mapped_io + PGRAPH_OFFSET + 0x00000700) & 0x01) ) +- ; +-} + + #if 0 /* Not yet implemented? */ + /* Sets video mem colorkey and accelerated blit function */ +@@ -74,7 +58,6 @@ + { + int dstX, dstY; + int dstW, dstH; +- RivaBitmap *Bitmap = (RivaBitmap *)(mapped_io + BITMAP_OFFSET); + + /* Don't blit to the display surface when switched away */ + if ( switched_away ) { +@@ -93,13 +76,6 @@ + dstX += rect->x; + dstY += rect->y; + +- RIVA_FIFO_FREE(Bitmap, 1); +- Bitmap->Color1A = color; +- +- RIVA_FIFO_FREE(Bitmap, 2); +- Bitmap->UnclippedRectangle[0].TopLeft = (dstX << 16) | dstY; +- Bitmap->UnclippedRectangle[0].WidthHeight = (dstW << 16) | dstH; +- + FB_AddBusySurface(dst); + + if ( dst == this->screen ) { +@@ -115,7 +91,6 @@ + int srcX, srcY; + int dstX, dstY; + int dstW, dstH; +- RivaScreenBlt *Blt = (RivaScreenBlt *)(mapped_io + BLT_OFFSET); + + /* FIXME: For now, only blit to display surface */ + if ( dst->pitch != SDL_VideoSurface->pitch ) { +@@ -142,11 +117,6 @@ + dstX += dstrect->x; + dstY += dstrect->y; + +- RIVA_FIFO_FREE(Blt, 3); +- Blt->TopLeftSrc = (srcY << 16) | srcX; +- Blt->TopLeftDst = (dstY << 16) | dstX; +- Blt->WidthHeight = (dstH << 16) | dstW; +- + FB_AddBusySurface(src); + FB_AddBusySurface(dst); + +@@ -185,23 +155,15 @@ + + void FB_RivaAccel(_THIS, __u32 card) + { +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); + + /* We have hardware accelerated surface functions */ + this->CheckHWBlit = CheckHWBlit; + wait_vbl = WaitVBL; + switch (card) { +- case FB_ACCEL_NV3: +- wait_idle = NV3WaitIdle; +- break; +- case FB_ACCEL_NV4: +- wait_idle = NV4WaitIdle; +- break; + default: + /* Hmm... FIXME */ + break; + } +- FifoEmptyCount = Rop->FifoFree; + + /* The Riva has an accelerated color fill */ + this->info.blit_fill = 1; +--- src/video/fbcon/SDL_fbvideo.c.orig 2011-09-08 17:30:03.670583685 +0200 ++++ src/video/fbcon/SDL_fbvideo.c 2011-09-08 17:30:24.230582737 +0200 +@@ -46,7 +46,6 @@ + #include "SDL_fbevents_c.h" + #include "SDL_fb3dfx.h" + #include "SDL_fbmatrox.h" +-#include "SDL_fbriva.h" + + /*#define FBCON_DEBUG*/ + +@@ -769,13 +768,6 @@ + #endif + FB_3DfxAccel(this, finfo.accel); + break; +- case FB_ACCEL_NV3: +- case FB_ACCEL_NV4: +-#ifdef FBACCEL_DEBUG +- printf("NVidia hardware accelerator!\n"); +-#endif +- FB_RivaAccel(this, finfo.accel); +- break; + default: + #ifdef FBACCEL_DEBUG + printf("Unknown hardware accelerator.\n"); diff --git a/libre/sdl-libre/no-riva-accel.patch b/libre/sdl-libre/no-riva-accel.patch deleted file mode 100644 index 89f8ebeed..000000000 --- a/libre/sdl-libre/no-riva-accel.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- src/video/fbcon/SDL_fbvideo.c.orig 2011-09-08 17:30:03.670583685 +0200 -+++ src/video/fbcon/SDL_fbvideo.c 2011-09-08 17:30:24.230582737 +0200 -@@ -46,7 +46,6 @@ - #include "SDL_fbevents_c.h" - #include "SDL_fb3dfx.h" - #include "SDL_fbmatrox.h" --#include "SDL_fbriva.h" - - /*#define FBCON_DEBUG*/ - -@@ -769,13 +768,6 @@ - #endif - FB_3DfxAccel(this, finfo.accel); - break; -- case FB_ACCEL_NV3: -- case FB_ACCEL_NV4: --#ifdef FBACCEL_DEBUG -- printf("NVidia hardware accelerator!\n"); --#endif -- FB_RivaAccel(this, finfo.accel); -- break; - default: - #ifdef FBACCEL_DEBUG - printf("Unknown hardware accelerator.\n"); diff --git a/libre/sdl-libre/riva_mmio.patch b/libre/sdl-libre/riva_mmio.patch deleted file mode 100644 index 945d9bf9b..000000000 --- a/libre/sdl-libre/riva_mmio.patch +++ /dev/null @@ -1,554 +0,0 @@ ---- src/video/fbcon/riva_mmio.h 2012-01-19 04:30:06.000000000 -0200 -+++ /dev/null 2012-04-01 13:58:27.776718756 -0300 -@@ -1,449 +0,0 @@ --/***************************************************************************\ --|* *| --|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| --|* *| --|* NOTICE TO USER: The source code is copyrighted under U.S. and *| --|* international laws. Users and possessors of this source code are *| --|* hereby granted a nonexclusive, royalty-free copyright license to *| --|* use this code in individual and commercial software. *| --|* *| --|* Any use of this source code must include, in the user documenta- *| --|* tion and internal comments to the code, notices to the end user *| --|* as follows: *| --|* *| --|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| --|* *| --|* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *| --|* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" *| --|* WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPOR- *| --|* ATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, *| --|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGE- *| --|* MENT, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL *| --|* NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCI- *| --|* DENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RE- *| --|* SULTING 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 SOURCE CODE. *| --|* *| --|* U.S. Government End Users. This source code is a "commercial *| --|* item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *| --|* consisting of "commercial computer software" and "commercial *| --|* computer software documentation," as such terms are used in *| --|* 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- *| --|* ment only as a commercial end item. Consistent with 48 C.F.R. *| --|* 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *| --|* all U.S. Government End Users acquire the source code with only *| --|* those rights set forth herein. *| --|* *| --\***************************************************************************/ -- --#ifndef __RIVA_HW_H__ --#define __RIVA_HW_H__ --#define RIVA_SW_VERSION 0x00010003 -- --/* -- * Typedefs to force certain sized values. -- */ --typedef Uint8 U008; --typedef Uint16 U016; --typedef Uint32 U032; -- --/* -- * HW access macros. -- */ --#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d)) --#define NV_RD08(p,i) (((U008 *)(p))[i]) --#define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d)) --#define NV_RD16(p,i) (((U016 *)(p))[(i)/2]) --#define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d)) --#define NV_RD32(p,i) (((U032 *)(p))[(i)/4]) --#define VGA_WR08(p,i,d) NV_WR08(p,i,d) --#define VGA_RD08(p,i) NV_RD08(p,i) -- --/* -- * Define supported architectures. -- */ --#define NV_ARCH_03 0x03 --#define NV_ARCH_04 0x04 --#define NV_ARCH_10 0x10 --/***************************************************************************\ --* * --* FIFO registers. * --* * --\***************************************************************************/ -- --/* -- * Raster OPeration. Windows style ROP3. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BB]; -- U032 Rop3; --} RivaRop; --/* -- * 8X8 Monochrome pattern. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BD]; -- U032 Shape; -- U032 reserved03[0x001]; -- U032 Color0; -- U032 Color1; -- U032 Monochrome[2]; --} RivaPattern; --/* -- * Scissor clip rectangle. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BB]; -- U032 TopLeft; -- U032 WidthHeight; --} RivaClip; --/* -- * 2D filled rectangle. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop[1]; -- U032 reserved01[0x0BC]; -- U032 Color; -- U032 reserved03[0x03E]; -- U032 TopLeft; -- U032 WidthHeight; --} RivaRectangle; --/* -- * 2D screen-screen BLT. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BB]; -- U032 TopLeftSrc; -- U032 TopLeftDst; -- U032 WidthHeight; --} RivaScreenBlt; --/* -- * 2D pixel BLT. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop[1]; -- U032 reserved01[0x0BC]; -- U032 TopLeft; -- U032 WidthHeight; -- U032 WidthHeightIn; -- U032 reserved02[0x03C]; -- U032 Pixels; --} RivaPixmap; --/* -- * Filled rectangle combined with monochrome expand. Useful for glyphs. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BB]; -- U032 reserved03[(0x040)-1]; -- U032 Color1A; -- struct -- { -- U032 TopLeft; -- U032 WidthHeight; -- } UnclippedRectangle[64]; -- U032 reserved04[(0x080)-3]; -- struct -- { -- U032 TopLeft; -- U032 BottomRight; -- } ClipB; -- U032 Color1B; -- struct -- { -- U032 TopLeft; -- U032 BottomRight; -- } ClippedRectangle[64]; -- U032 reserved05[(0x080)-5]; -- struct -- { -- U032 TopLeft; -- U032 BottomRight; -- } ClipC; -- U032 Color1C; -- U032 WidthHeightC; -- U032 PointC; -- U032 MonochromeData1C; -- U032 reserved06[(0x080)+121]; -- struct -- { -- U032 TopLeft; -- U032 BottomRight; -- } ClipD; -- U032 Color1D; -- U032 WidthHeightInD; -- U032 WidthHeightOutD; -- U032 PointD; -- U032 MonochromeData1D; -- U032 reserved07[(0x080)+120]; -- struct -- { -- U032 TopLeft; -- U032 BottomRight; -- } ClipE; -- U032 Color0E; -- U032 Color1E; -- U032 WidthHeightInE; -- U032 WidthHeightOutE; -- U032 PointE; -- U032 MonochromeData01E; --} RivaBitmap; --/* -- * 3D textured, Z buffered triangle. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BC]; -- U032 TextureOffset; -- U032 TextureFormat; -- U032 TextureFilter; -- U032 FogColor; --/* This is a problem on LynxOS */ --#ifdef Control --#undef Control --#endif -- U032 Control; -- U032 AlphaTest; -- U032 reserved02[0x339]; -- U032 FogAndIndex; -- U032 Color; -- float ScreenX; -- float ScreenY; -- float ScreenZ; -- float EyeM; -- float TextureS; -- float TextureT; --} RivaTexturedTriangle03; --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BB]; -- U032 ColorKey; -- U032 TextureOffset; -- U032 TextureFormat; -- U032 TextureFilter; -- U032 Blend; --/* This is a problem on LynxOS */ --#ifdef Control --#undef Control --#endif -- U032 Control; -- U032 FogColor; -- U032 reserved02[0x39]; -- struct -- { -- float ScreenX; -- float ScreenY; -- float ScreenZ; -- float EyeM; -- U032 Color; -- U032 Specular; -- float TextureS; -- float TextureT; -- } Vertex[16]; -- U032 DrawTriangle3D; --} RivaTexturedTriangle05; --/* -- * 2D line. -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop[1]; -- U032 reserved01[0x0BC]; -- U032 Color; /* source color 0304-0307*/ -- U032 Reserved02[0x03e]; -- struct { /* start aliased methods in array 0400- */ -- U032 point0; /* y_x S16_S16 in pixels 0- 3*/ -- U032 point1; /* y_x S16_S16 in pixels 4- 7*/ -- } Lin[16]; /* end of aliased methods in array -047f*/ -- struct { /* start aliased methods in array 0480- */ -- U032 point0X; /* in pixels, 0 at left 0- 3*/ -- U032 point0Y; /* in pixels, 0 at top 4- 7*/ -- U032 point1X; /* in pixels, 0 at left 8- b*/ -- U032 point1Y; /* in pixels, 0 at top c- f*/ -- } Lin32[8]; /* end of aliased methods in array -04ff*/ -- U032 PolyLin[32]; /* y_x S16_S16 in pixels 0500-057f*/ -- struct { /* start aliased methods in array 0580- */ -- U032 x; /* in pixels, 0 at left 0- 3*/ -- U032 y; /* in pixels, 0 at top 4- 7*/ -- } PolyLin32[16]; /* end of aliased methods in array -05ff*/ -- struct { /* start aliased methods in array 0600- */ -- U032 color; /* source color 0- 3*/ -- U032 point; /* y_x S16_S16 in pixels 4- 7*/ -- } ColorPolyLin[16]; /* end of aliased methods in array -067f*/ --} RivaLine; --/* -- * 2D/3D surfaces -- */ --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BE]; -- U032 Offset; --} RivaSurface; --typedef volatile struct --{ -- U032 reserved00[4]; -- U016 FifoFree; -- U016 Nop; -- U032 reserved01[0x0BD]; -- U032 Pitch; -- U032 RenderBufferOffset; -- U032 ZBufferOffset; --} RivaSurface3D; -- --/***************************************************************************\ --* * --* Virtualized RIVA H/W interface. * --* * --\***************************************************************************/ -- --struct _riva_hw_inst; --struct _riva_hw_state; --/* -- * Virtialized chip interface. Makes RIVA 128 and TNT look alike. -- */ --typedef struct _riva_hw_inst --{ -- /* -- * Chip specific settings. -- */ -- U032 Architecture; -- U032 Version; -- U032 CrystalFreqKHz; -- U032 RamAmountKBytes; -- U032 MaxVClockFreqKHz; -- U032 RamBandwidthKBytesPerSec; -- U032 EnableIRQ; -- U032 IO; -- U032 VBlankBit; -- U032 FifoFreeCount; -- U032 FifoEmptyCount; -- /* -- * Non-FIFO registers. -- */ -- volatile U032 *PCRTC; -- volatile U032 *PRAMDAC; -- volatile U032 *PFB; -- volatile U032 *PFIFO; -- volatile U032 *PGRAPH; -- volatile U032 *PEXTDEV; -- volatile U032 *PTIMER; -- volatile U032 *PMC; -- volatile U032 *PRAMIN; -- volatile U032 *FIFO; -- volatile U032 *CURSOR; -- volatile U032 *CURSORPOS; -- volatile U032 *VBLANKENABLE; -- volatile U032 *VBLANK; -- volatile U008 *PCIO; -- volatile U008 *PVIO; -- volatile U008 *PDIO; -- /* -- * Common chip functions. -- */ -- int (*Busy)(struct _riva_hw_inst *); -- void (*CalcStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *,int,int,int,int,int,int,int,int,int,int,int,int,int); -- void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); -- void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); -- void (*SetStartAddress)(struct _riva_hw_inst *,U032); -- void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032); -- void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032); -- int (*ShowHideCursor)(struct _riva_hw_inst *,int); -- void (*LockUnlock)(struct _riva_hw_inst *, int); -- /* -- * Current extended mode settings. -- */ -- struct _riva_hw_state *CurrentState; -- /* -- * FIFO registers. -- */ -- RivaRop *Rop; -- RivaPattern *Patt; -- RivaClip *Clip; -- RivaPixmap *Pixmap; -- RivaScreenBlt *Blt; -- RivaBitmap *Bitmap; -- RivaLine *Line; -- RivaTexturedTriangle03 *Tri03; -- RivaTexturedTriangle05 *Tri05; --} RIVA_HW_INST; --/* -- * Extended mode state information. -- */ --typedef struct _riva_hw_state --{ -- U032 bpp; -- U032 width; -- U032 height; -- U032 repaint0; -- U032 repaint1; -- U032 screen; -- U032 pixel; -- U032 horiz; -- U032 arbitration0; -- U032 arbitration1; -- U032 vpll; -- U032 pllsel; -- U032 general; -- U032 config; -- U032 cursor0; -- U032 cursor1; -- U032 cursor2; -- U032 offset0; -- U032 offset1; -- U032 offset2; -- U032 offset3; -- U032 pitch0; -- U032 pitch1; -- U032 pitch2; -- U032 pitch3; --} RIVA_HW_STATE; -- --/* -- * FIFO Free Count. Should attempt to yield processor if RIVA is busy. -- */ -- --#define RIVA_FIFO_FREE(hwptr,cnt) \ --{ \ -- while (FifoFreeCount < (cnt)) \ -- FifoFreeCount = hwptr->FifoFree >> 2; \ -- FifoFreeCount -= (cnt); \ --} --#endif /* __RIVA_HW_H__ */ -- ---- src/video/fbcon/SDL_fbriva.c 2012-01-19 04:30:06.000000000 -0200 -+++ src/video/fbcon/SDL_fbriva.c 2012-04-01 15:10:10.108451467 -0300 -@@ -24,12 +24,10 @@ - #include "SDL_video.h" - #include "../SDL_blit.h" - #include "SDL_fbriva.h" --#include "riva_mmio.h" - #include "riva_regs.h" - - - static int FifoEmptyCount = 0; --static int FifoFreeCount = 0; - - /* Wait for vertical retrace */ - static void WaitVBL(_THIS) -@@ -41,20 +39,6 @@ - while ( !(*port & 0x08) ) - ; - } --static void NV3WaitIdle(_THIS) --{ -- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); -- while ( (Rop->FifoFree < FifoEmptyCount) || -- (*(mapped_io + PGRAPH_OFFSET + 0x000006B0) & 0x01) ) -- ; --} --static void NV4WaitIdle(_THIS) --{ -- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); -- while ( (Rop->FifoFree < FifoEmptyCount) || -- (*(mapped_io + PGRAPH_OFFSET + 0x00000700) & 0x01) ) -- ; --} - - #if 0 /* Not yet implemented? */ - /* Sets video mem colorkey and accelerated blit function */ -@@ -74,7 +58,6 @@ - { - int dstX, dstY; - int dstW, dstH; -- RivaBitmap *Bitmap = (RivaBitmap *)(mapped_io + BITMAP_OFFSET); - - /* Don't blit to the display surface when switched away */ - if ( switched_away ) { -@@ -93,13 +76,6 @@ - dstX += rect->x; - dstY += rect->y; - -- RIVA_FIFO_FREE(Bitmap, 1); -- Bitmap->Color1A = color; -- -- RIVA_FIFO_FREE(Bitmap, 2); -- Bitmap->UnclippedRectangle[0].TopLeft = (dstX << 16) | dstY; -- Bitmap->UnclippedRectangle[0].WidthHeight = (dstW << 16) | dstH; -- - FB_AddBusySurface(dst); - - if ( dst == this->screen ) { -@@ -115,7 +91,6 @@ - int srcX, srcY; - int dstX, dstY; - int dstW, dstH; -- RivaScreenBlt *Blt = (RivaScreenBlt *)(mapped_io + BLT_OFFSET); - - /* FIXME: For now, only blit to display surface */ - if ( dst->pitch != SDL_VideoSurface->pitch ) { -@@ -142,11 +117,6 @@ - dstX += dstrect->x; - dstY += dstrect->y; - -- RIVA_FIFO_FREE(Blt, 3); -- Blt->TopLeftSrc = (srcY << 16) | srcX; -- Blt->TopLeftDst = (dstY << 16) | dstX; -- Blt->WidthHeight = (dstH << 16) | dstW; -- - FB_AddBusySurface(src); - FB_AddBusySurface(dst); - -@@ -185,23 +155,15 @@ - - void FB_RivaAccel(_THIS, __u32 card) - { -- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); - - /* We have hardware accelerated surface functions */ - this->CheckHWBlit = CheckHWBlit; - wait_vbl = WaitVBL; - switch (card) { -- case FB_ACCEL_NV3: -- wait_idle = NV3WaitIdle; -- break; -- case FB_ACCEL_NV4: -- wait_idle = NV4WaitIdle; -- break; - default: - /* Hmm... FIXME */ - break; - } -- FifoEmptyCount = Rop->FifoFree; - - /* The Riva has an accelerated color fill */ - this->info.blit_fill = 1; -- cgit v1.2.3-2-g168b