From 11058c2f9654592436685828e153cf06952faf54 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Mon, 14 Feb 2005 14:16:50 +0000 Subject: [PATCH] fixed cursor visibility update on show/hide_cursor commands for secondary head on NV40 architecture (hardware bug workaround). Confirmed Dualhead up and working correctly with two analog connected screens on PCIe 6600 GT. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11368 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/engine/nv_crtc2.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c b/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c index cfba57faca..eb681fc64e 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c @@ -1,6 +1,6 @@ /* second CTRC functionality for GeForce cards */ /* Author: - Rudolf Cornelissen 11/2002-1/2005 + Rudolf Cornelissen 11/2002-2/2005 */ #define MODULE_BIT 0x00020000 @@ -682,6 +682,11 @@ status_t nv_crtc2_cursor_show() /* b0 = 1 enables cursor */ CRTC2W(CURCTL0, (CRTC2R(CURCTL0) | 0x01)); + /* workaround for hardware bug confirmed existing on NV43: + * Cursor visibility is not updated without a position update if its hardware + * retrace sync is enabled. */ + if (si->ps.card_arch == NV40A) DAC2W(CURPOS, (DAC2R(CURPOS))); + return B_OK; } @@ -695,6 +700,11 @@ status_t nv_crtc2_cursor_hide() /* b0 = 0 disables cursor */ CRTC2W(CURCTL0, (CRTC2R(CURCTL0) & 0xfe)); + /* workaround for hardware bug confirmed existing on NV43: + * Cursor visibility is not updated without a position update if its hardware + * retrace sync is enabled. */ + if (si->ps.card_arch == NV40A) DAC2W(CURPOS, (DAC2R(CURPOS))); + return B_OK; }