diff --git a/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c b/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c index f600fc5375..3cc935e7e2 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c @@ -443,7 +443,6 @@ status_t nv_acc_init_dma() ACCW(NV40_WHAT1, 0x000000a0); ACCW(NV40_WHAT2, 0x0078e366); ACCW(NV40_WHAT3, 0x0000014c); -// NV_REG32(NV32_PFB_CLS_PAGE2) &= 0xffff7fff; //clear b15 (unknown) break; case NV41: ACCW(NV40P_WHAT0, 0x83280eff); diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 1e6bc8c868..4eef043b74 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -90,7 +90,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 0.36 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 0.37 running.\n")); /* preset no laptop */ si->ps.laptop = false; @@ -1260,6 +1260,16 @@ static status_t nv_general_bios_to_powergraphics() * (NOTE: testsignal function block resides in DAC1 only (!)) */ if (si->ps.secondary_head) DAC2W(TSTCTRL, (DAC2R(TSTCTRL) & 0xfffeefff)); + /* NV40 and NV45 need a 'tweak' to make sure the CRTC FIFO's/shiftregisters get + * their data in time (otherwise momentarily ghost images of windows or such + * may appear on heavy acceleration engine use for instance, especially in 32-bit + * colordepth) */ + if ((si->ps.card_type == NV40) || (si->ps.card_type == NV45)) + { + /* clear b15: some framebuffer config item (unknown) */ + NV_REG32(NV32_PFB_CLS_PAGE2) &= 0xffff7fff; + } + /* setup AGP: * Note: * This may only be done when no transfers are in progress on the bus, so now