CRTC granularity update for hardware bug on older cards (TNT2/GF2)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6512 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
5a483e4d35
commit
470290c1c1
@ -80,7 +80,7 @@ status_t nv_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.09-1 running.\n"));
|
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.09-2 running.\n"));
|
||||||
|
|
||||||
/* preset no laptop */
|
/* preset no laptop */
|
||||||
si->ps.laptop = false;
|
si->ps.laptop = false;
|
||||||
@ -1033,8 +1033,8 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
if (0)
|
if (0)
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForce4 Ti4200,
|
||||||
* the CRTC1 (and CRTC2) BUFFER register b2 = 1 */
|
* GeForceFX 5200: if 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;
|
||||||
@ -1051,15 +1051,22 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT1 always;
|
* TNT1 always;
|
||||||
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForce4 Ti4200,
|
||||||
* the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
* GeForceFX 5200: if the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
||||||
|
/* NOTE:
|
||||||
|
* Unfortunately older cards have a hardware fault that prevents use.
|
||||||
|
* We need doubled granularity on those to prevent the single top line
|
||||||
|
* from shifting to the left!
|
||||||
|
* This is confirmed for TNT2, GeForce2 MX200, GeForce2 MX400.
|
||||||
|
* Confirmed OK are:
|
||||||
|
* GeForce4 MX440, GeForce4 Ti4200, GeForceFX 5200. */
|
||||||
switch (target->space)
|
switch (target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: crtc_mask = 0x07; break;
|
case B_CMAP8: crtc_mask = 0x0f; break; /* 0x07 */
|
||||||
case B_RGB15: crtc_mask = 0x03; break;
|
case B_RGB15: crtc_mask = 0x07; break; /* 0x03 */
|
||||||
case B_RGB16: crtc_mask = 0x03; break;
|
case B_RGB16: crtc_mask = 0x07; break; /* 0x03 */
|
||||||
case B_RGB24: crtc_mask = 0x07; break;
|
case B_RGB24: crtc_mask = 0x0f; break; /* 0x07 */
|
||||||
case B_RGB32: crtc_mask = 0x01; break;
|
case B_RGB32: crtc_mask = 0x03; break; /* 0x01 */
|
||||||
default:
|
default:
|
||||||
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
|
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
@ -1122,8 +1129,8 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
if (0)
|
if (0)
|
||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForce4 Ti4200,
|
||||||
* the CRTC1 (and CRTC2) BUFFER register b2 = 1 */
|
* GeForceFX 5200: if 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;
|
||||||
@ -1140,15 +1147,22 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
|
|||||||
{
|
{
|
||||||
/* confirmed for:
|
/* confirmed for:
|
||||||
* TNT1 always;
|
* TNT1 always;
|
||||||
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 if
|
* TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForce4 Ti4200,
|
||||||
* the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
* GeForceFX 5200: if the CRTC1 (and CRTC2) BUFFER register b2 = 0 */
|
||||||
|
/* NOTE:
|
||||||
|
* Unfortunately older cards have a hardware fault that prevents use.
|
||||||
|
* We need doubled granularity on those to prevent the single top line
|
||||||
|
* from shifting to the left!
|
||||||
|
* This is confirmed for TNT2, GeForce2 MX200, GeForce2 MX400.
|
||||||
|
* Confirmed OK are:
|
||||||
|
* GeForce4 MX440, GeForce4 Ti4200, GeForceFX 5200. */
|
||||||
switch(target->space)
|
switch(target->space)
|
||||||
{
|
{
|
||||||
case B_CMAP8: max_crtc_width = 16376; break;
|
case B_CMAP8: max_crtc_width = 16368; break; /* 16376 */
|
||||||
case B_RGB15: max_crtc_width = 8188; break;
|
case B_RGB15: max_crtc_width = 8184; break; /* 8188 */
|
||||||
case B_RGB16: max_crtc_width = 8188; break;
|
case B_RGB16: max_crtc_width = 8184; break; /* 8188 */
|
||||||
case B_RGB24: max_crtc_width = 5456; break;
|
case B_RGB24: max_crtc_width = 5456; break; /* 5456 */
|
||||||
case B_RGB32: max_crtc_width = 4094; break;
|
case B_RGB32: max_crtc_width = 4092; break; /* 4094 */
|
||||||
default:
|
default:
|
||||||
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
|
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
Loading…
Reference in New Issue
Block a user