On Tue, Dec 09, 2003 at 01:24:16PM -0600, Ryan Underwood wrote: > > Thanks for the insight. Is this already something that has been > extensively looked at without success, or would it be worth my time to > dig into the code and try to find the cause? I've thought about it, but > afraid that I will just hit a brick wall someone else already ran into > with it. ;)
I've attached a patch that should hopefully fix this problem. The render code just forgot to reset the multi texturing registers. I've not actually tested the patch but I don't see anything else wrong with the code... > Is there anywhere I can get a G400 databook for reference, or is that > not publicly available? They're not available anymore :( It's a real shame since they seemed to be quite friendly towards open source developers at one point. I can almost understand that they don't want to release any parhelia docs but I don't understand why they stopped giving out the older docs... -- Ville Syrjälä [EMAIL PROTECTED] http://www.sci.fi/~syrjala/
Index: mga_reg.h =================================================================== RCS file: /cvs/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h,v retrieving revision 1.8 diff -u -r1.8 mga_reg.h --- mga_reg.h 27 Jan 2002 20:05:35 -0000 1.8 +++ mga_reg.h 10 Dec 2003 06:27:05 -0000 @@ -475,6 +475,9 @@ #define MGAREG_ALPHACTRL 0x2c7c #define MGAREG_DWGSYNC 0x2c4c +#define MGAREG_TDUALSTAGE0 0x2cf8 +#define MGAREG_TDUALSTAGE1 0x2cfc + #define MGAREG_AGP_PLL 0x1e4c #define MGA_AGP2XPLL_ENABLE 0x1 #define MGA_AGP2XPLL_DISABLE 0x0 Index: mga_storm.c =================================================================== RCS file: /cvs/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_storm.c,v retrieving revision 1.20 diff -u -r1.20 mga_storm.c --- mga_storm.c 25 Mar 2003 11:21:06 -0000 1.20 +++ mga_storm.c 10 Dec 2003 06:27:07 -0000 @@ -341,6 +341,10 @@ tex_padw = 1 << log2w; tex_padh = 1 << log2h; + WAITFIFO(2); + OUTREG(MGAREG_TDUALSTAGE0, 0); + OUTREG(MGAREG_TDUALSTAGE1, 0); + WAITFIFO(15); OUTREG(MGAREG_TMR0, (1 << 20) / tex_padw); /* sx inc */ OUTREG(MGAREG_TMR1, 0); /* sy inc */ @@ -425,6 +429,9 @@ tex_padw = 1 << log2w; tex_padh = 1 << log2h; + WAITFIFO(2); + OUTREG(MGAREG_TDUALSTAGE0, 0); + OUTREG(MGAREG_TDUALSTAGE1, 0); WAITFIFO(12); OUTREG(MGAREG_DR4, red << 7); /* red start */ @@ -522,6 +529,10 @@ tex_padw = 1 << log2w; tex_padh = 1 << log2h; + WAITFIFO(2); + OUTREG(MGAREG_TDUALSTAGE0, 0); + OUTREG(MGAREG_TDUALSTAGE1, 0); + WAITFIFO(15); OUTREG(MGAREG_TMR0, (1 << 20) / tex_padw); /* sx inc */ OUTREG(MGAREG_TMR1, 0); /* sy inc */