fixed move_display distortions (both heads)

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6333 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2004-01-26 20:20:18 +00:00
parent 693152bfa2
commit e0dd08e80c
4 changed files with 26 additions and 10 deletions

View File

@ -383,6 +383,7 @@ status_t nv_crtc_set_display_pitch()
status_t nv_crtc_set_display_start(uint32 startadd,uint8 bpp)
{
uint8 temp;
uint32 timeout = 0;
LOG(4,("CRTC: setting card RAM to be displayed bpp %d\n", bpp));
@ -390,7 +391,15 @@ status_t nv_crtc_set_display_start(uint32 startadd,uint8 bpp)
LOG(2,("CRTC: frameRAM: $%08x\n", si->framebuffer));
LOG(2,("CRTC: framebuffer: $%08x\n", si->fbc.frame_buffer));
/* retrace sync not needed here: doublebuffering in hardware */
/* we might have no retraces during setmode! */
/* wait 25mS max. for retrace to occur (refresh > 40Hz) */
while (((NV_REG32(NV32_RASTER) & 0x000007ff) < si->dm.timing.v_display) &&
(timeout < (25000/10)))
{
/* don't snooze much longer or retrace might get missed! */
snooze(10);
timeout++;
}
/* enable access to CRTC1 on dualhead cards */
if (si->ps.secondary_head) CRTCW(OWNER, 0x00);
@ -424,8 +433,7 @@ status_t nv_crtc_set_display_start(uint32 startadd,uint8 bpp)
}
/* set NV4/NV10 byte adress: (b0 - 1) */
temp = (ATBR(HORPIXPAN) & 0xf9);
ATBW(HORPIXPAN, (temp | ((startadd & 0x00000003) << 1)));
ATBW(HORPIXPAN, ((startadd & 0x00000003) << 1));
return B_OK;
}

View File

@ -364,7 +364,7 @@ status_t nv_crtc2_set_display_pitch()
status_t nv_crtc2_set_display_start(uint32 startadd,uint8 bpp)
{
uint8 temp;
uint32 timeout = 0;
LOG(4,("CRTC2: setting card RAM to be displayed bpp %d\n", bpp));
@ -372,7 +372,15 @@ status_t nv_crtc2_set_display_start(uint32 startadd,uint8 bpp)
LOG(2,("CRTC2: frameRAM: $%08x\n", si->framebuffer));
LOG(2,("CRTC2: framebuffer: $%08x\n", si->fbc.frame_buffer));
/* retrace sync not needed here: doublebuffering in hardware */
/* we might have no retraces during setmode! */
/* wait 25mS max. for retrace to occur (refresh > 40Hz) */
while (((NV_REG32(NV32_RASTER2) & 0x000007ff) < si->dm.timing.v_display) &&
(timeout < (25000/10)))
{
/* don't snooze much longer or retrace might get missed! */
snooze(10);
timeout++;
}
/* enable access to CRTC2 */
CRTC2W(OWNER, 0x03);
@ -386,8 +394,7 @@ status_t nv_crtc2_set_display_start(uint32 startadd,uint8 bpp)
NV_REG32(NV32_NV10FB2STADD32) = (startadd & 0xfffffffc);
/* set byte adress: (b0 - 1) */
temp = (ATB2R(HORPIXPAN) & 0xf9);
ATB2W(HORPIXPAN, (temp | ((startadd & 0x00000003) << 1)));
ATB2W(HORPIXPAN, ((startadd & 0x00000003) << 1));
return B_OK;
}

View File

@ -80,7 +80,7 @@ status_t nv_general_powerup()
{
status_t status;
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-7 running.\n"));
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-8 running.\n"));
/* preset no laptop */
si->ps.laptop = false;

View File

@ -4,7 +4,7 @@
</head>
<body>
<p><h2>Changes done for each driverversion:</h2></p>
<p><h1>head (0.08-7, Rudolf)</h1></p>
<p><h1>head (0.08-8, Rudolf)</h1></p>
<ul>
<li>Fixed GeForceFX 5600 and FX 5700 monitor 'refresh out of range' / shutoff fault. nVidia changed the pixelPLL for the NV31 and NV36;
<li>Fixed acceleration engine restrictions code to adhere to GeForceFX 5600 restrictions: those are still NV20 style for this card;
@ -18,7 +18,8 @@
<li>Improved startup code: this should (could) fix random trouble on some cards like for instance hardcursor trouble on especially laptops;
<li>Added dualhead support (use Mark Watson's 'G400 Dualhead Setup' from BeBits for now): Note that dualhead switch mode still has to be setup, and overlay is fixed to the primary head for now;
<li>Updated mode granularity and max virtual size checking/limiting to adhere to new CRTC setup for dualhead cards;
<li>Added dualhead support for 8- and 16bit colordepths.
<li>Added dualhead support for 8- and 16bit colordepths;
<li>Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads).
</ul>
<p><h1>nv_driver 0.07 (Rudolf)</h1></p>
<ul>