From 17cf149804d4798640a7988ae3bf3b9ec2ea2be9 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 23 Sep 2004 12:28:50 +0000 Subject: [PATCH] added preliminary NV40 architecture support. Test and provide feedback please! git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9039 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/Overlay.c | 5 +++-- src/add-ons/accelerants/nvidia/engine/nv_acc.c | 7 ++++--- src/add-ons/accelerants/nvidia/engine/nv_bes.c | 8 +++++--- src/add-ons/accelerants/nvidia/engine/nv_info.c | 1 + 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/add-ons/accelerants/nvidia/Overlay.c b/src/add-ons/accelerants/nvidia/Overlay.c index b26e7f3392..c1f37af207 100644 --- a/src/add-ons/accelerants/nvidia/Overlay.c +++ b/src/add-ons/accelerants/nvidia/Overlay.c @@ -1,4 +1,4 @@ -/* Written by Rudolf Cornelissen 05/2002-7/2004 */ +/* Written by Rudolf Cornelissen 05/2002-9/2004 */ /* 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' @@ -449,7 +449,8 @@ status_t GET_OVERLAY_CONSTRAINTS oc->v_scale.min = 1.0; break; case NV30A: - /* GeForceFX series have a new BES engine... */ + case NV40A: + /* GeForceFX series and up have a new BES engine... */ oc->h_scale.min = 0.5; oc->v_scale.min = 0.5; /* NV31 (confirmed GeForceFX 5600) has NV20A scaling limits! diff --git a/src/add-ons/accelerants/nvidia/engine/nv_acc.c b/src/add-ons/accelerants/nvidia/engine/nv_acc.c index ee591a50e6..1ac92d72f7 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_acc.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_acc.c @@ -1,6 +1,6 @@ /* NV Acceleration functions */ /* Author: - Rudolf Cornelissen 8/2003-7/2004. + Rudolf Cornelissen 8/2003-9/2004. This code was possible thanks to the Linux NV driver. */ @@ -492,8 +492,8 @@ status_t nv_acc_init() return B_ERROR; } - /* setup some extra stuff for NV30A */ - if (si->ps.card_arch == NV30A) + /* setup some extra stuff for NV30A and later */ + if (si->ps.card_arch >= NV30A) { /* fixme: Does not belong here (and not needed?) @@ -532,6 +532,7 @@ status_t nv_acc_init() break; case NV20A: case NV30A: + case NV40A: /* location of active screen in framebuffer */ ACCW(NV20_OFFSET0, ((uint8*)si->fbc.frame_buffer - (uint8*)si->framebuffer)); ACCW(NV20_OFFSET1, ((uint8*)si->fbc.frame_buffer - (uint8*)si->framebuffer)); diff --git a/src/add-ons/accelerants/nvidia/engine/nv_bes.c b/src/add-ons/accelerants/nvidia/engine/nv_bes.c index 6b069e6bb1..da2988edc7 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_bes.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_bes.c @@ -1,5 +1,5 @@ /* Nvidia TNT and GeForce Back End Scaler functions */ -/* Written by Rudolf Cornelissen 05/2002-7/2004 */ +/* Written by Rudolf Cornelissen 05/2002-9/2004 */ #define MODULE_BIT 0x00000200 @@ -543,7 +543,8 @@ status_t nv_configure_bes } break; case NV30A: - /* GeForceFX series have a downscaling limit of 0.5 (except NV31!) */ + case NV40A: + /* GeForceFX series and up have a downscaling limit of 0.5 (except NV31!) */ if ((hiscalv > (2 << 16)) && (si->ps.card_type != NV31)) { /* (non-inverse) factor too small, set factor to min. valid value */ @@ -634,7 +635,8 @@ status_t nv_configure_bes } break; case NV30A: - /* GeForceFX series have a downscaling limit of 0.5 (except NV31!) */ + case NV40A: + /* GeForceFX series and up have a downscaling limit of 0.5 (except NV31!) */ if ((viscalv > (2 << 16)) && (si->ps.card_type != NV31)) { /* (non-inverse) factor too small, set factor to min. valid value */ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_info.c b/src/add-ons/accelerants/nvidia/engine/nv_info.c index 19424b07ce..2b9335f95d 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_info.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_info.c @@ -1431,6 +1431,7 @@ void fake_pins(void) pinsnv20_arch_fake(); break; case NV30A: + case NV40A: pinsnv30_arch_fake(); break; default: