fixed NV31 overlay downscaling limiting

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5825 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen
2003-12-30 12:32:46 +00:00
parent 3f7e8e7395
commit e8d5d47c1a
2 changed files with 15 additions and 9 deletions
+4 -2
View File
@@ -1,4 +1,4 @@
/* Written by Rudolf Cornelissen 05-2002/10-2003 */ /* Written by Rudolf Cornelissen 05-2002/12-2003 */
/* Note on 'missing features' in BeOS 5.0.3 and DANO: /* Note on 'missing features' in BeOS 5.0.3 and DANO:
* BeOS needs to define more colorspaces! It would be nice if BeOS would support the FourCC 'definitions' * BeOS needs to define more colorspaces! It would be nice if BeOS would support the FourCC 'definitions'
@@ -452,7 +452,9 @@ status_t GET_OVERLAY_CONSTRAINTS
/* GeForceFX series have a new BES engine... */ /* GeForceFX series have a new BES engine... */
oc->h_scale.min = 0.5; oc->h_scale.min = 0.5;
oc->v_scale.min = 0.5; oc->v_scale.min = 0.5;
break; /* NV31 (confirmed GeForceFX 5600) has NV20A scaling limits!
* So let it fall through... */
if (si->ps.card_type != NV31) break;
default: default:
/* the rest in between... */ /* the rest in between... */
oc->h_scale.min = 0.125; oc->h_scale.min = 0.125;
+11 -7
View File
@@ -1,5 +1,5 @@
/* Nvidia TNT and GeForce Back End Scaler functions */ /* Nvidia TNT and GeForce Back End Scaler functions */
/* Written by Rudolf Cornelissen 05/2002-10/2003 */ /* Written by Rudolf Cornelissen 05/2002-12/2003 */
#define MODULE_BIT 0x00000200 #define MODULE_BIT 0x00000200
@@ -296,14 +296,16 @@ status_t nv_configure_bes
} }
break; break;
case NV30A: case NV30A:
/* GeForceFX series have a downscaling limit of 0.5 */ /* GeForceFX series have a downscaling limit of 0.5 (except NV31!) */
if (hiscalv > (2 << 16)) if ((hiscalv > (2 << 16)) && (si->ps.card_type != NV31))
{ {
/* (non-inverse) factor too small, set factor to min. valid value */ /* (non-inverse) factor too small, set factor to min. valid value */
hiscalv = (2 << 16); hiscalv = (2 << 16);
LOG(4,("Overlay: horizontal scaling factor too small, clamping at %f\n", (float)65536 / hiscalv)); LOG(4,("Overlay: horizontal scaling factor too small, clamping at %f\n", (float)65536 / hiscalv));
} }
break; /* NV31 (confirmed GeForceFX 5600) has NV20A scaling limits!
* So let it fall through... */
if (si->ps.card_type != NV31) break;
default: default:
/* the rest has a downscaling limit of 0.125 */ /* the rest has a downscaling limit of 0.125 */
if (hiscalv > (8 << 16)) if (hiscalv > (8 << 16))
@@ -422,14 +424,16 @@ status_t nv_configure_bes
} }
break; break;
case NV30A: case NV30A:
/* GeForceFX series have a downscaling limit of 0.5 */ /* GeForceFX series have a downscaling limit of 0.5 (except NV31!) */
if (viscalv > (2 << 16)) if ((viscalv > (2 << 16)) && (si->ps.card_type != NV31))
{ {
/* (non-inverse) factor too small, set factor to min. valid value */ /* (non-inverse) factor too small, set factor to min. valid value */
viscalv = (2 << 16); viscalv = (2 << 16);
LOG(4,("Overlay: vertical scaling factor too small, clamping at %f\n", (float)65536 / viscalv)); LOG(4,("Overlay: vertical scaling factor too small, clamping at %f\n", (float)65536 / viscalv));
} }
break; /* NV31 (confirmed GeForceFX 5600) has NV20A scaling limits!
* So let it fall through... */
if (si->ps.card_type != NV31) break;
default: default:
/* the rest has a downscaling limit of 0.125 */ /* the rest has a downscaling limit of 0.125 */
if (viscalv > (8 << 16)) if (viscalv > (8 << 16))