Hi,
a recent change in riva_hw.c, namely version 1.30 broke clock
calculation for my GeForce 3 (Elsa Gladiac 920).
The change was:
@@ -1982,8 +1982,8 @@
chip->RamBandwidthKBytesPerSec = 1000000;
break;
}
- chip->CrystalFreqKHz = (chip->PEXTDEV[0x0000/4] & (1 << 22))
? 27000 :
- (chip->PEXTDEV[0x0000/4] & (1 << 6))
? 14318 :
+ chip->CrystalFreqKHz = (chip->PEXTDEV[0x0000/4] & (1 << 6))
? 14318 :
+ (chip->PEXTDEV[0x0000/4] & (1 << 22))
? 27000 :
13500;
chip->CursorStart = (chip->RamAmountKBytes - 128) * 1024;
chip->CURSOR = NULL; /* can't set this here */
On my card the chip->PEXTDEV[0x0000/4] has both 22nd and 6th bit
set so it used to select 27000, which worked fine. Now it selects
14318 which causes clocks to be half of the intended value and
can't be displayed on my monitor. Reverting this change fixes
it. It seems the logic still has some faults as the log message
indicates this change was made to fix it on NV17...
Completely another thing I found out when checking out the video
overlay support is that in NVAllocSurface, parameter id is not used
for anything. On the other hand surface structure has a field
called id, which is not initialized, but is given to
NVPutOverlayImage from NVDisplaySurface. It doesn't use it for
anything though. Anyway, I think the surface->id should be
initialized in NVAllocSurface, which it isn't now. The patch to do
that is attached.
Thanks,
// Jarno
Index: nv_video.c
===================================================================
RCS file: /wrk/xfree/cvs/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c,v
retrieving revision 1.7
diff -u -r1.7 nv_video.c
--- nv_video.c 18 Apr 2002 22:47:21 -0000 1.7
+++ nv_video.c 26 Apr 2002 17:33:19 -0000
@@ -980,6 +980,7 @@
surface->pitches = &pPriv->pitch;
surface->offsets = &pPriv->offset;
surface->devPrivate.ptr = (pointer)pPriv;
+ surface->id = id;
/* grab the video */
NVStopOverlay(pScrnInfo);
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert