CRTC1/2 mode granularity updates again
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6458 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/* Authors:
|
/* Authors:
|
||||||
Mark Watson 12/1999,
|
Mark Watson 12/1999,
|
||||||
Apsed,
|
Apsed,
|
||||||
Rudolf Cornelissen 10/2002-1/2004
|
Rudolf Cornelissen 10/2002-2/2004
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x00008000
|
#define MODULE_BIT 0x00008000
|
||||||
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-11 running.\n"));
|
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-12 running.\n"));
|
||||||
|
|
||||||
/* preset no laptop */
|
/* preset no laptop */
|
||||||
si->ps.laptop = false;
|
si->ps.laptop = false;
|
||||||
@@ -891,8 +891,9 @@ status_t nv_general_bios_to_powergraphics()
|
|||||||
/* enable 'enhanced' mode on primary head: */
|
/* enable 'enhanced' mode on primary head: */
|
||||||
/* enable access to primary head */
|
/* enable access to primary head */
|
||||||
if (si->ps.secondary_head) CRTCW(OWNER, 0x00);
|
if (si->ps.secondary_head) CRTCW(OWNER, 0x00);
|
||||||
/* don't doublebuffer CRTC access: set programmed values immediately */
|
/* don't doublebuffer CRTC access: set programmed values immediately;
|
||||||
CRTCW(BUFFER, 0xff);
|
* keep fine pitched CRTC granularity on > NV4 cards (b2 = 0) */
|
||||||
|
CRTCW(BUFFER, 0xfb);
|
||||||
/* select VGA mode (old VGA register) */
|
/* select VGA mode (old VGA register) */
|
||||||
CRTCW(MODECTL, 0xc3);
|
CRTCW(MODECTL, 0xc3);
|
||||||
/* select graphics mode (old VGA register) */
|
/* select graphics mode (old VGA register) */
|
||||||
@@ -916,8 +917,9 @@ status_t nv_general_bios_to_powergraphics()
|
|||||||
CRTC2W(OWNER, 0x03);
|
CRTC2W(OWNER, 0x03);
|
||||||
/* select colormode CRTC2 registers base adresses */
|
/* select colormode CRTC2 registers base adresses */
|
||||||
NV_REG8(NV8_MISCW) = 0xcb;
|
NV_REG8(NV8_MISCW) = 0xcb;
|
||||||
/* don't doublebuffer CRTC2 access: set programmed values immediately */
|
/* don't doublebuffer CRTC2 access: set programmed values immediately;
|
||||||
CRTC2W(BUFFER, 0xff);
|
* keep fine pitched CRTC2 granularity (b2 = 0) */
|
||||||
|
CRTC2W(BUFFER, 0xfb);
|
||||||
/* select VGA mode (old VGA register) */
|
/* select VGA mode (old VGA register) */
|
||||||
CRTC2W(MODECTL, 0xc3);
|
CRTC2W(MODECTL, 0xc3);
|
||||||
/* select graphics mode (old VGA register) */
|
/* select graphics mode (old VGA register) */
|
||||||
@@ -1009,20 +1011,16 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* determine pixel multiple based on CRTC memory pitch constraints:
|
/* determine pixel multiple based on CRTC memory pitch constraints:
|
||||||
* -> all NV cards have same constraints on CRTC1 and CRTC2;
|
* -> all NV cards have same granularity constraints on CRTC1 and CRTC2,
|
||||||
* -> if CRTC1 and CRTC2 are adressed in combined mode (OWNER = $04),
|
* provided that the CRTC1 and CRTC2 BUFFER register b2 = 0;
|
||||||
* dualhead cards have the same CRTC granularity as singlehead cards;
|
|
||||||
* -> if CRTC1 and CRTC2 are adressed seperately (OWNER is $00 or $03),
|
|
||||||
* dualhead cards have bigger granularity than singlehead cards: this
|
|
||||||
* mode is used on dualhead cards with this driver.
|
|
||||||
*
|
*
|
||||||
* (Note: Don't mix this up with CRTC timing contraints! Those are
|
* (Note: Don't mix this up with CRTC timing contraints! Those are
|
||||||
* multiples of 8 for horizontal, 1 for vertical timing.) */
|
* multiples of 8 for horizontal, 1 for vertical timing.) */
|
||||||
if (si->ps.secondary_head)
|
if (0)
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* GeForceFX 5200 */
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
||||||
// fixme: still confirm for GeForce2 MX400, GeForce4 MX440, GeForceFX 5600...
|
* the CRTC1 (and CRTC2) BUFFER register b2 = 1 */
|
||||||
switch (target->space)
|
switch (target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: crtc_mask = 0x1f; break;
|
case B_CMAP8: crtc_mask = 0x1f; break;
|
||||||
@@ -1035,10 +1033,12 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* singlehead cards */
|
else
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT1, TNT2, TNT2-M64 */
|
* TNT1 always;
|
||||||
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
||||||
|
* the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
||||||
switch (target->space)
|
switch (target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: crtc_mask = 0x07; break;
|
case B_CMAP8: crtc_mask = 0x07; break;
|
||||||
@@ -1105,11 +1105,11 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* set virtual_width limit for unaccelerated modes */
|
/* set virtual_width limit for unaccelerated modes */
|
||||||
if (si->ps.secondary_head)
|
if (0)
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* GeForceFX 5200 */
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
||||||
// fixme: still confirm for GeForce2 MX400, GeForce4 MX440, GeForceFX 5600...
|
* the CRTC1 (and CRTC2) BUFFER register b2 = 1 */
|
||||||
switch(target->space)
|
switch(target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: max_crtc_width = 16352; break;
|
case B_CMAP8: max_crtc_width = 16352; break;
|
||||||
@@ -1122,10 +1122,12 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* singlehead cards */
|
else
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT1, TNT2, TNT2-M64 */
|
* TNT1 always;
|
||||||
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
||||||
|
* the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
||||||
switch(target->space)
|
switch(target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: max_crtc_width = 16376; break;
|
case B_CMAP8: max_crtc_width = 16376; break;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p><h2>Changes done for each driverversion:</h2></p>
|
<p><h2>Changes done for each driverversion:</h2></p>
|
||||||
<p><h1>head (0.08-11, Rudolf)</h1></p>
|
<p><h1>head (0.08-12, Rudolf)</h1></p>
|
||||||
<ul>
|
<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 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;
|
<li>Fixed acceleration engine restrictions code to adhere to GeForceFX 5600 restrictions: those are still NV20 style for this card;
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<li>Added 256Mb RAM detection;
|
<li>Added 256Mb RAM detection;
|
||||||
<li>Improved startup code: this should (could) fix random trouble on some cards like for instance hardcursor trouble on especially laptops;
|
<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);
|
<li>Added dualhead support (use Mark Watson's 'G400 Dualhead Setup' from BeBits for now);
|
||||||
<li>Updated mode granularity and max virtual size checking/limiting to adhere to new CRTC setup for dualhead cards;
|
<li>Updated mode granularity and max virtual size checking/limiting;
|
||||||
<li>Added dualhead support for 8- and 15bit colordepths;
|
<li>Added dualhead support for 8- and 15bit colordepths;
|
||||||
<li>Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads);
|
<li>Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads);
|
||||||
<li>Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output window is on a screen, that screen gets the overlay output;
|
<li>Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output window is on a screen, that screen gets the overlay output;
|
||||||
|
|||||||
Reference in New Issue
Block a user