Skip to content
Commits on Source (13)
......@@ -29,3 +29,5 @@ ChangeLog:
$(CHANGELOG_CMD)
dist-hook: ChangeLog INSTALL
EXTRA_DIST = README.md
xf86-video-tdfx - 3Dfx video driver for the Xorg X server
Please submit bugs & patches to the Xorg bugzilla:
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
---------------------------------------------------------
All questions regarding this software should be directed at the
Xorg mailing list:
http://lists.freedesktop.org/mailman/listinfo/xorg
https://lists.x.org/mailman/listinfo/xorg
The master development code repository can be found at:
git://anongit.freedesktop.org/git/xorg/driver/xf86-video-tdfx
https://gitlab.freedesktop.org/xorg/driver/xf86-video-tdfx
Please submit bug reports and requests to merge patches there.
http://cgit.freedesktop.org/xorg/driver/xf86-video-tdfx
For patch submission instructions, see:
For more information on the git code manager, see:
https://www.x.org/wiki/Development/Documentation/SubmittingPatches
http://wiki.x.org/wiki/GitPage
#! /bin/sh
srcdir=`dirname $0`
srcdir=`dirname "$0"`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir
cd "$srcdir"
autoreconf -v --install || exit 1
cd $ORIGDIR || exit $?
cd "$ORIGDIR" || exit $?
$srcdir/configure --enable-maintainer-mode "$@"
git config --local --get format.subjectPrefix >/dev/null 2>&1 ||
git config --local format.subjectPrefix "PATCH xf86-video-tdfx"
if test -z "$NOCONFIGURE"; then
exec "$srcdir"/configure "$@"
fi
......@@ -23,8 +23,8 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-tdfx],
[1.4.7],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[1.5.0],
[https://gitlab.freedesktop.org/xorg/driver/xf86-video-tdfx/issues],
[xf86-video-tdfx])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
......@@ -32,7 +32,6 @@ AC_CONFIG_AUX_DIR(.)
# Initialize Automake
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
m4_ifndef([XORG_MACROS_VERSION],
......
......@@ -82,7 +82,7 @@
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
#define BLOCKHANDLER_ARGS arg, pTimeout
#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result
#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, int result
#define WAKEUPHANDLER_ARGS arg, result
#else
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
......
......@@ -26,7 +26,6 @@
#include "sarea.h"
#define _XF86DRI_SERVER_
#include "dri.h"
#include "GL/glxint.h"
#include "tdfx_dri.h"
#include "tdfx_dripriv.h"
#endif
......@@ -276,9 +275,6 @@ typedef struct _TDFXRec {
Bool directRenderingEnabled;
DRIInfoPtr pDRIInfo;
int drmSubFD;
int numVisualConfigs;
__GLXvisualConfig* pVisualConfigs;
TDFXConfigPrivPtr pVisualConfigsPriv;
TDFXRegRec DRContextRegs;
#endif
/* State for video */
......
......@@ -8,8 +8,6 @@
#include "xf86Pci.h"
#include "fb.h"
#include "miline.h"
#include "GL/glxint.h"
#include "GL/glxtokens.h"
#include "tdfx.h"
#include "tdfx_dri.h"
#include "tdfx_dripriv.h"
......@@ -35,211 +33,6 @@ static void TDFXDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
static void TDFXDRITransitionTo2d(ScreenPtr pScreen);
static void TDFXDRITransitionTo3d(ScreenPtr pScreen);
static Bool
TDFXInitVisualConfigs(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TDFXPtr pTDFX = TDFXPTR(pScrn);
int numConfigs = 0;
__GLXvisualConfig *pConfigs = 0;
TDFXConfigPrivPtr pTDFXConfigs = 0;
TDFXConfigPrivPtr *pTDFXConfigPtrs = 0;
int i, db, stencil, accum, depth;
switch (pScrn->bitsPerPixel) {
case 8:
case 16:
numConfigs = 16;
if (!(pConfigs = (__GLXvisualConfig*)calloc(sizeof(__GLXvisualConfig),
numConfigs))) {
return FALSE;
}
if (!(pTDFXConfigs = (TDFXConfigPrivPtr)calloc(sizeof(TDFXConfigPrivRec),
numConfigs))) {
free(pConfigs);
return FALSE;
}
if (!(pTDFXConfigPtrs = (TDFXConfigPrivPtr*)calloc(sizeof(TDFXConfigPrivPtr),
numConfigs))) {
free(pConfigs);
free(pTDFXConfigs);
return FALSE;
}
for (i=0; i<numConfigs; i++)
pTDFXConfigPtrs[i] = &pTDFXConfigs[i];
i=0;
depth=1;
for (db = 0; db <=1; db++) {
for (depth = 0; depth<=1; depth++) {
for (accum = 0; accum <= 1; accum++) {
for (stencil = 0; stencil <= 1; stencil++) {
pConfigs[i].vid = -1;
pConfigs[i].class = -1;
pConfigs[i].rgba = TRUE;
pConfigs[i].redSize = 5;
pConfigs[i].greenSize = 6;
pConfigs[i].blueSize = 5;
pConfigs[i].redMask = 0x0000F800;
pConfigs[i].greenMask = 0x000007E0;
pConfigs[i].blueMask = 0x0000001F;
pConfigs[i].alphaMask = 0;
if (accum) {
pConfigs[i].accumRedSize = 16;
pConfigs[i].accumGreenSize = 16;
pConfigs[i].accumBlueSize = 16;
pConfigs[i].accumAlphaSize = 0;
} else {
pConfigs[i].accumRedSize = 0;
pConfigs[i].accumGreenSize = 0;
pConfigs[i].accumBlueSize = 0;
pConfigs[i].accumAlphaSize = 0;
}
if (db)
pConfigs[i].doubleBuffer = TRUE;
else
pConfigs[i].doubleBuffer = FALSE;
pConfigs[i].stereo = FALSE;
pConfigs[i].bufferSize = 16;
if (depth) {
if (pTDFX->cpp>2)
pConfigs[i].depthSize = 24;
else
pConfigs[i].depthSize = 16;
} else {
pConfigs[i].depthSize = 0;
}
if (stencil)
pConfigs[i].stencilSize = 8;
else
pConfigs[i].stencilSize = 0;
pConfigs[i].auxBuffers = 0;
pConfigs[i].level = 0;
if (stencil || accum)
pConfigs[i].visualRating = GLX_SLOW_CONFIG;
else
pConfigs[i].visualRating = GLX_NONE;
pConfigs[i].transparentPixel = GLX_NONE;
pConfigs[i].transparentRed = 0;
pConfigs[i].transparentGreen = 0;
pConfigs[i].transparentBlue = 0;
pConfigs[i].transparentAlpha = 0;
pConfigs[i].transparentIndex = 0;
i++;
}
}
}
}
if (i!=numConfigs) {
xf86DrvMsg(pScreen->myNum, X_ERROR,
"[dri] TDFXInitVisualConfigs: wrong number of visuals\n");
return FALSE;
}
break; /* 16bpp */
case 24:
case 32:
numConfigs = 8;
pConfigs = (__GLXvisualConfig*) calloc(sizeof(__GLXvisualConfig), numConfigs);
if (!pConfigs)
return FALSE;
pTDFXConfigs = (TDFXConfigPrivPtr) calloc(sizeof(TDFXConfigPrivRec), numConfigs);
if (!pTDFXConfigs) {
free(pConfigs);
return FALSE;
}
pTDFXConfigPtrs = (TDFXConfigPrivPtr *) calloc(sizeof(TDFXConfigPrivPtr), numConfigs);
if (!pTDFXConfigPtrs) {
free(pConfigs);
free(pTDFXConfigs);
return FALSE;
}
for (i = 0; i < numConfigs; i++)
pTDFXConfigPtrs[i] = &pTDFXConfigs[i];
i=0;
for (db = 0; db <=1; db++) {
for (depth = 0; depth<=1; depth++) {
/*stencil = depth;*/ /* Z and stencil share the same memory */
for (accum = 0; accum <= 1; accum++) {
/*for (stencil = 0; stencil <=1; stencil++) {*/
stencil = depth;
pConfigs[i].vid = -1;
pConfigs[i].class = -1;
pConfigs[i].rgba = TRUE;
pConfigs[i].redSize = 8;
pConfigs[i].greenSize = 8;
pConfigs[i].blueSize = 8;
pConfigs[i].alphaSize = (pScrn->bitsPerPixel==32) ? 8 : 0;
pConfigs[i].redMask = 0x00ff0000;
pConfigs[i].greenMask = 0x0000ff00;
pConfigs[i].blueMask = 0x000000ff;
pConfigs[i].alphaMask = (pScrn->bitsPerPixel==32) ? 0xff000000 : 0;
if (accum) {
pConfigs[i].accumRedSize = 16;
pConfigs[i].accumGreenSize = 16;
pConfigs[i].accumBlueSize = 16;
pConfigs[i].accumAlphaSize = (pScrn->bitsPerPixel==32) ? 16 : 0;
} else {
pConfigs[i].accumRedSize = 0;
pConfigs[i].accumGreenSize = 0;
pConfigs[i].accumBlueSize = 0;
pConfigs[i].accumAlphaSize = 0;
}
if (db)
pConfigs[i].doubleBuffer = TRUE;
else
pConfigs[i].doubleBuffer = FALSE;
pConfigs[i].stereo = FALSE;
pConfigs[i].bufferSize = (pScrn->bitsPerPixel==32) ? 32 : 24;
if (depth) {
if (pTDFX->cpp > 2)
pConfigs[i].depthSize = 24;
else
pConfigs[i].depthSize = 16;
} else {
pConfigs[i].depthSize = 0;
}
if (stencil)
pConfigs[i].stencilSize = 8;
else
pConfigs[i].stencilSize = 0;
pConfigs[i].auxBuffers = 0;
pConfigs[i].level = 0;
if (accum)
pConfigs[i].visualRating = GLX_SLOW_CONFIG;
else
pConfigs[i].visualRating = GLX_NONE;
pConfigs[i].transparentPixel = GLX_NONE;
pConfigs[i].transparentRed = 0;
pConfigs[i].transparentGreen = 0;
pConfigs[i].transparentBlue = 0;
pConfigs[i].transparentAlpha = 0;
pConfigs[i].transparentIndex = 0;
i++;
/*}*/
}
}
}
if (i!=numConfigs) {
xf86DrvMsg(pScreen->myNum, X_ERROR,
"[dri] TDFXInitVisualConfigs: wrong number of visuals\n");
return FALSE;
}
break;
}
pTDFX->numVisualConfigs = numConfigs;
pTDFX->pVisualConfigs = pConfigs;
pTDFX->pVisualConfigsPriv = pTDFXConfigs;
GlxSetVisualConfigs(numConfigs, pConfigs, (void**)pTDFXConfigPtrs);
return TRUE;
}
static void
TDFXDoWakeupHandler(WAKEUPHANDLER_ARGS_DECL)
{
......@@ -304,9 +97,8 @@ Bool TDFXDRIScreenInit(ScreenPtr pScreen)
return FALSE;
}
/* Check that the GLX, DRI, and DRM modules have been loaded by testing
/* Check that the DRI, and DRM modules have been loaded by testing
for canonical symbols in each module. */
if (!xf86LoaderCheckSymbol("GlxSetVisualConfigs")) return FALSE;
if (!xf86LoaderCheckSymbol("drmAvailable")) return FALSE;
if (!xf86LoaderCheckSymbol("DRIQueryVersion")) {
xf86DrvMsg(pScreen->myNum, X_ERROR,
......@@ -457,11 +249,6 @@ Bool TDFXDRIScreenInit(ScreenPtr pScreen)
xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Registers = 0x%08x\n",
pTDFXDRI->regs);
if (!(TDFXInitVisualConfigs(pScreen))) {
TDFXDRICloseScreen(pScreen);
xf86DrvMsg(pScreen->myNum, X_ERROR, "TDFXInitVisualConfigs failed, disabling DRI.\n");
return FALSE;
}
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "visual configs initialized\n" );
return TRUE;
......@@ -483,8 +270,6 @@ TDFXDRICloseScreen(ScreenPtr pScreen)
DRIDestroyInfoRec(pTDFX->pDRIInfo);
pTDFX->pDRIInfo=0;
}
if (pTDFX->pVisualConfigs) free(pTDFX->pVisualConfigs);
if (pTDFX->pVisualConfigsPriv) free(pTDFX->pVisualConfigsPriv);
}
static Bool
......
......@@ -4,17 +4,6 @@
#define TDFX_MAX_DRAWABLES 256
extern void GlxSetVisualConfigs(
int nconfigs,
__GLXvisualConfig *configs,
void **configprivs
);
typedef struct {
/* Nothing here yet */
int dummy;
} TDFXConfigPrivRec, *TDFXConfigPrivPtr;
typedef struct {
/* Nothing here yet */
int dummy;
......
......@@ -636,30 +636,30 @@ TDFXInitChips(ScrnInfoPtr pScrn)
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: numchips = %d\n", pTDFX->numChips);
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: cfgbits = 0x%08lx, initbits = 0x%08lx\n",
"TDFXInitChips: cfgbits = 0x%08x, initbits = 0x%08x\n",
cfgbits, initbits);
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: mem0base = 0x%08lx, mem1base = 0x%08lx\n",
"TDFXInitChips: mem0base = 0x%08x, mem1base = 0x%08x\n",
mem0base, mem1base);
mem0size = 32 * 1024 * 1024; /* Registers are always 32MB */
mem1size = pScrn->videoRam * 1024 * 2; /* Linear mapping is 2x memory */
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: mem0size = 0x%08lx, mem1size = 0x%08lx\n",
"TDFXInitChips: mem0size = 0x%08x, mem1size = 0x%08x\n",
mem0size, mem1size);
mem0bits = TDFXSizeToCfg(mem0size);
mem1bits = TDFXSizeToCfg(mem1size) << 4;
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: mem0bits = 0x%08lx, mem1bits = 0x%08lx\n",
"TDFXInitChips: mem0bits = 0x%08x, mem1bits = 0x%08x\n",
mem0bits, mem1bits);
cfgbits = (cfgbits & ~(0xFF)) | mem0bits | mem1bits;
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXInitChips: cfgbits = 0x%08lx\n", cfgbits);
"TDFXInitChips: cfgbits = 0x%08x\n", cfgbits);
for (i = 0; i < pTDFX->numChips; i++) {
PCI_WRITE_LONG(initbits | BIT(10), CFG_INIT_ENABLE, i);
......@@ -753,7 +753,6 @@ Bool TDFXI2cInit(ScrnInfoPtr pScrn)
static xf86MonPtr doTDFXDDC(ScrnInfoPtr pScrn)
{
TDFXPtr pTDFX = TDFXPTR(pScrn);
I2CBusPtr pI2CBus;
xf86MonPtr pMon = NULL;
CARD32 reg;
......@@ -2215,9 +2214,6 @@ TDFXScreenInit(SCREEN_INIT_ARGS_DECL) {
TDFXPtr pTDFX;
VisualPtr visual;
BoxRec MemBox;
#ifdef TDFXDRI
MessageType driFrom = X_DEFAULT;
#endif
int scanlines;
TDFXTRACE("TDFXScreenInit start\n");
......@@ -2325,15 +2321,12 @@ TDFXScreenInit(SCREEN_INIT_ARGS_DECL) {
#ifdef TDFXDRI
/*
* Setup DRI after visuals have been established, but before fbScreenInit
* is called. fbScreenInit will eventually call into the drivers
* InitGLXVisuals call back.
* is called.
*/
if (!xf86ReturnOptValBool(pTDFX->Options, OPTION_DRI, TRUE) || pTDFX->NoAccel) {
pTDFX->directRenderingEnabled = FALSE;
driFrom = X_CONFIG;
} else if (pTDFX->texSize < 0) {
pTDFX->directRenderingEnabled = FALSE;
driFrom = X_PROBED;
} else {
pTDFX->directRenderingEnabled = TDFXDRIScreenInit(pScreen);
}
......
......@@ -240,11 +240,15 @@ void TDFXSwapContextFifo(ScreenPtr pScreen)
ScrnInfoPtr pScrn;
TDFXPtr pTDFX;
int dummy, readPos;
#if 0
TDFXSAREAPriv *sPriv;
#endif
pScrn = xf86ScreenToScrn(pScreen);
pTDFX=TDFXPTR(pScrn);
#if 0
sPriv=(TDFXSAREAPriv*)DRIGetSAREAPrivate(pScreen);
#endif
/* if (sPriv)
ErrorF("In FifoPtr=%d FifoRead=%d\n", sPriv->fifoPtr, sPriv->fifoRead); */
#if 1
......