fixed NV31 acceleration engine granularity constraints

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5827 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen
2003-12-30 12:58:24 +00:00
parent 4322a2b339
commit eeaae9ecc4
@@ -1,7 +1,7 @@
/* Authors: /* Authors:
Mark Watson 12/1999, Mark Watson 12/1999,
Apsed, Apsed,
Rudolf Cornelissen 10/2002-10/2003 Rudolf Cornelissen 10/2002-12/2003
*/ */
#define MODULE_BIT 0x00008000 #define MODULE_BIT 0x00008000
@@ -852,21 +852,6 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
/* determine pixel multiple based on 2D/3D engine constraints */ /* determine pixel multiple based on 2D/3D engine constraints */
switch (si->ps.card_arch) switch (si->ps.card_arch)
{ {
case NV20A:
/* confirmed for:
* GeForce4 Ti4200 */
switch (target->space)
{
case B_CMAP8: acc_mask = 0x3f; depth = 8; break;
case B_RGB15: acc_mask = 0x1f; depth = 16; break;
case B_RGB16: acc_mask = 0x1f; depth = 16; break;
case B_RGB24: acc_mask = 0x3f; depth = 24; break;
case B_RGB32: acc_mask = 0x0f; depth = 32; break;
default:
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
return B_ERROR;
}
break;
default: default:
/* confirmed for: /* confirmed for:
* TNT1, TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 */ * TNT1, TNT2, TNT2-M64, GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 */
@@ -881,6 +866,23 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
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;
} }
/* NV31 (confirmed GeForceFX 5600) has NV20A granularity!
* So let it fall through... */
if (si->ps.card_type != NV31) break;
case NV20A:
/* confirmed for:
* GeForce4 Ti4200 */
switch (target->space)
{
case B_CMAP8: acc_mask = 0x3f; depth = 8; break;
case B_RGB15: acc_mask = 0x1f; depth = 16; break;
case B_RGB16: acc_mask = 0x1f; depth = 16; break;
case B_RGB24: acc_mask = 0x3f; depth = 24; break;
case B_RGB32: acc_mask = 0x0f; depth = 32; break;
default:
LOG(8,("INIT: unknown color space: 0x%08x\n", target->space));
return B_ERROR;
}
break; break;
} }
@@ -947,26 +949,6 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
break; break;
} }
break; break;
case NV20A:
/* confirmed for:
* GeForce4 Ti4200 */
switch(target->space)
{
case B_CMAP8:
if (target->virtual_width > 16320) si->acc_mode = false;
break;
case B_RGB15_LITTLE:
case B_RGB16_LITTLE:
if (target->virtual_width > 8160) si->acc_mode = false;
break;
case B_RGB24_LITTLE:
if (target->virtual_width > 5440) si->acc_mode = false;
break;
case B_RGB32_LITTLE:
if (target->virtual_width > 4080) si->acc_mode = false;
break;
}
break;
default: default:
/* confirmed for: /* confirmed for:
* GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 */ * GeForce2 MX400, GeForce4 MX440, GeForceFX 5200 */
@@ -986,6 +968,28 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r
if (target->virtual_width > 4092) si->acc_mode = false; if (target->virtual_width > 4092) si->acc_mode = false;
break; break;
} }
/* NV31 (confirmed GeForceFX 5600) has NV20A granularity!
* So let it fall through... */
if (si->ps.card_type != NV31) break;
case NV20A:
/* confirmed for:
* GeForce4 Ti4200 */
switch(target->space)
{
case B_CMAP8:
if (target->virtual_width > 16320) si->acc_mode = false;
break;
case B_RGB15_LITTLE:
case B_RGB16_LITTLE:
if (target->virtual_width > 8160) si->acc_mode = false;
break;
case B_RGB24_LITTLE:
if (target->virtual_width > 5440) si->acc_mode = false;
break;
case B_RGB32_LITTLE:
if (target->virtual_width > 4080) si->acc_mode = false;
break;
}
break; break;
} }
/* virtual_height */ /* virtual_height */