From 8ab0ed494c2e26b7e7d1689a60fb56b6bf0f7659 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 6 Apr 2006 09:05:37 +0000 Subject: [PATCH] added new nv.setting called force_ws. This setting enables you to force the driver to enable use of widescreen modes independant of connected monitors. Only use if you have a widescreen monitor that the driver currently refuses to use that way. non-ws screens might not like a ws mode... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17027 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/InitAccelerant.c | 6 +++--- src/add-ons/accelerants/nvidia/ProposeDisplayMode.c | 5 +++-- src/add-ons/accelerants/nvidia/engine/nv_general.c | 2 +- src/add-ons/accelerants/nvidia/engine/nv_info.c | 4 ++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/add-ons/accelerants/nvidia/InitAccelerant.c b/src/add-ons/accelerants/nvidia/InitAccelerant.c index fbd398639c..712afba4d9 100644 --- a/src/add-ons/accelerants/nvidia/InitAccelerant.c +++ b/src/add-ons/accelerants/nvidia/InitAccelerant.c @@ -4,7 +4,7 @@ Other authors: Mark Watson, - Rudolf Cornelissen 10/2002-3/2006. + Rudolf Cornelissen 10/2002-4/2006. */ #define MODULE_BIT 0x00800000 @@ -42,8 +42,8 @@ static status_t init_common(int the_fd) { si->settings.logmask, si->settings.memory, si->settings.hardcursor, si->settings.usebios, si->settings.switchhead, si->settings.force_pci)); LOG(4,("init_common: dumprom %d, unhide_fw %d, pgm_panel %d, dma_acc %d, tv_output %d, vga_on_tv %d\n", si->settings.dumprom, si->settings.unhide_fw, si->settings.pgm_panel, si->settings.dma_acc, si->settings.tv_output, si->settings.vga_on_tv)); - LOG(4,("init_common: force_sync %d, gpu_clk %dMhz, ram_clk %dMhz\n", - si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk)); + LOG(4,("init_common: force_sync %d, gpu_clk %dMhz, ram_clk %dMhz, force_ws %d\n", + si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk, si->settings.force_ws)); /*Check for R4.5.0 and if it is running, use work around*/ { diff --git a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c index a3db1f88fa..1def5076ae 100644 --- a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c +++ b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c @@ -4,7 +4,7 @@ Other authors for NV driver: Mark Watson, - Rudolf Cornelissen 9/2002-2/2006 + Rudolf Cornelissen 9/2002-4/2006 */ #define MODULE_BIT 0x00400000 @@ -230,7 +230,8 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con } break; default: /* at least one analog monitor is connected, or nothing detected at all */ - if (target_aspect > 1.34) + /* (if forcing widescreen type was requested don't block mode) */ + if ((target_aspect > 1.34) && !(si->settings.force_ws)) { LOG(4, ("PROPOSEMODE: not all output devices can display widescreen modes, aborted.\n")); return B_ERROR; diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index cd0c0432e9..7ce8969d58 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -91,7 +91,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 0.77 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 0.78 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_info.c b/src/add-ons/accelerants/nvidia/engine/nv_info.c index 8a9a763e0e..c16aba9203 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_info.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_info.c @@ -2407,6 +2407,8 @@ static void detect_panels() /* determine panel aspect ratio */ si->ps.panel1_aspect = (si->ps.p1_timing.h_display / ((float)si->ps.p1_timing.v_display)); + /* force widescreen type if requested */ + if (si->settings.force_ws) si->ps.panel1_aspect = 1.60; /* horizontal timing */ si->ps.p1_timing.h_sync_start = (DACR(FP_HSYNC_S) & 0x0000ffff) + 1; si->ps.p1_timing.h_sync_end = (DACR(FP_HSYNC_E) & 0x0000ffff) + 1; @@ -2431,6 +2433,8 @@ static void detect_panels() /* determine panel aspect ratio */ si->ps.panel2_aspect = (si->ps.p2_timing.h_display / ((float)si->ps.p2_timing.v_display)); + /* force widescreen type if requested */ + if (si->settings.force_ws) si->ps.panel2_aspect = 1.60; /* horizontal timing */ si->ps.p2_timing.h_sync_start = (DAC2R(FP_HSYNC_S) & 0x0000ffff) + 1; si->ps.p2_timing.h_sync_end = (DAC2R(FP_HSYNC_E) & 0x0000ffff) + 1;