diff --git a/src/add-ons/accelerants/nvidia/GetAccelerantHook.c b/src/add-ons/accelerants/nvidia/GetAccelerantHook.c index d815a10598..188d6fde01 100644 --- a/src/add-ons/accelerants/nvidia/GetAccelerantHook.c +++ b/src/add-ons/accelerants/nvidia/GetAccelerantHook.c @@ -4,7 +4,7 @@ Other authors: Mark Watson, - Rudolf Cornelissen 10/2002-2/2005 + Rudolf Cornelissen 10/2002-10/2005 */ #define MODULE_BIT 0x08000000 @@ -176,19 +176,34 @@ status_t check_overlay_capability(uint32 feature) } /* all supported cards have a bes, but... */ - if ((si->ps.card_arch >= NV40A) && - (si->ps.card_type != NV40) && (si->ps.card_type != NV45)) + switch (si->ps.card_arch) { - /* all NV40 architecture cards have a new HDTV capable bes except for - * GeForce 6800's. Unfortunately we have no info about the new bes yet. */ - LOG(4, ("Overlay: Not exporting hook %s.\n", msg)); - return B_ERROR; - } - else - { - /* all other cards have a supported bes */ + case NV04A: + case NV10A: + case NV20A: + case NV30A: + /* all older cards have a supported bes */ LOG(4, ("Overlay: Exporting hook %s.\n", msg)); return B_OK; + break; + case NV40A: + default: + switch (si->ps.card_type) + { + case NV40: + case NV45: + /* all GeForce 6800's cards have a supported bes */ + LOG(4, ("Overlay: Exporting hook %s.\n", msg)); + return B_OK; + break; + default: + /* all NV40 architecture cards have a new HDTV capable bes except for + * GeForce 6800's. Unfortunately we have no info about the new bes yet. */ + LOG(4, ("Overlay: Not exporting hook %s.\n", msg)); + return B_ERROR; + break; + } + break; } } diff --git a/src/add-ons/accelerants/nvidia/GetDeviceInfo.c b/src/add-ons/accelerants/nvidia/GetDeviceInfo.c index bc18184fbc..1bbac1132f 100644 --- a/src/add-ons/accelerants/nvidia/GetDeviceInfo.c +++ b/src/add-ons/accelerants/nvidia/GetDeviceInfo.c @@ -87,6 +87,9 @@ status_t GET_ACCELERANT_DEVICE_INFO(accelerant_device_info * adi) case NV45: sprintf(adi->chipset, "NV45"); break; + case NV47: + sprintf(adi->chipset, "NV47"); + break; default: sprintf(adi->chipset, "unknown"); break; diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index a87b7a3976..a14cab5e61 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -167,6 +167,21 @@ status_t nv_general_powerup() LOG(4,("POWERUP: Detected Nvidia Quadro FX 4000/4400 (NV40)\n")); status = nvxx_general_powerup(); break; +//fixme: reported, but yet untested card.. + case 0x009210de: /* Nvidia Geforce 7800 GT PCIe */ + si->ps.card_type = NV47; + si->ps.card_arch = NV40A; + LOG(4,("POWERUP: Detected Nvidia Geforce 7800 GT PCIe (NV47)\n")); + status = nvxx_general_powerup(); + break; +//fixme: reported, but yet untested card.. + case 0x009910de: /* Nvidia Geforce 7800 GTX Go PCIe */ + si->ps.card_type = NV47; + si->ps.card_arch = NV40A; + si->ps.laptop = true; + LOG(4,("POWERUP: Detected Nvidia Geforce 7800 GTX Go PCIe (NV47)\n")); + status = nvxx_general_powerup(); + break; case 0x00a010de: /* Nvidia Aladdin TNT2 */ si->ps.card_type = NV05; si->ps.card_arch = NV04A; @@ -1587,6 +1602,8 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r { /* check if we can setup this mode with acceleration */ *acc_mode = true; +//temporary disabling ACC on NV47: +if (si->ps.card_type == NV47) *acc_mode = false; /* virtual_width */ if (target->virtual_width > max_acc_width) *acc_mode = false; /* virtual_height */ @@ -1619,6 +1636,8 @@ status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_r { /* check if we can setup this mode with acceleration */ *acc_mode = true; +//temporary disabling ACC on NV47: +if (si->ps.card_type == NV47) *acc_mode = false; /* (we already know virtual_width will be no problem) */ /* virtual_height */ /* (NV cards can even do more than this(?)...