diff --git a/headers/private/graphics/nvidia/DriverInterface.h b/headers/private/graphics/nvidia/DriverInterface.h index 4c94ab2e9f..3ea2b63f31 100644 --- a/headers/private/graphics/nvidia/DriverInterface.h +++ b/headers/private/graphics/nvidia/DriverInterface.h @@ -5,7 +5,7 @@ Other authors: Mark Watson; Apsed; - Rudolf Cornelissen 10/2002-12/2015. + Rudolf Cornelissen 10/2002-1/2016. */ #ifndef DRIVERINTERFACE_H @@ -245,6 +245,7 @@ typedef struct { // apsed, see comments in nvidia.settings bool block_acc; uint32 gpu_clk; uint32 ram_clk; + bool check_edid; } nv_settings; /* monitor info gathered via EDID */ diff --git a/src/add-ons/accelerants/nvidia/InitAccelerant.c b/src/add-ons/accelerants/nvidia/InitAccelerant.c index 9c241b40c8..e2fb8e255f 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-12/2015. + Rudolf Cornelissen 10/2002-1/2016. */ #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, force_ws %d, block_acc %d\n", - si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk, si->settings.force_ws, si->settings.block_acc)); + LOG(4,("init_common: force_sync %d, gpu_clk %dMhz, ram_clk %dMhz, force_ws %d, block_acc %d, check_edid %d\n", + si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk, si->settings.force_ws, si->settings.block_acc, si->settings.check_edid)); /*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 f08094c89b..edd69180ee 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-12/2015 + Rudolf Cornelissen 9/2002-1/2016 */ #define MODULE_BIT 0x00400000 @@ -316,22 +316,26 @@ PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, const displa } } - /* check if screen(s) can display the requested resolution (if we have it's EDID info) - note: - allowing 2 pixels more for horizontal display for the 1366 mode, since multiples of 8 - are required for the CRTCs horizontal timing programming) */ - if (si->ps.crtc1_screen.have_native_edid) { - if ((target->timing.h_display - 2) > si->ps.crtc1_screen.timing.h_display - || target->timing.v_display > si->ps.crtc1_screen.timing.v_display) { - LOG(4, ("PROPOSEMODE: screen at crtc1 can't display requested resolution, aborted.\n")); - return B_ERROR; + /* only limit modelist if user did not explicitly block this via nv.settings + (because of errors in monitor's EDID information returned) */ + if (si->settings.check_edid) { + /* check if screen(s) can display the requested resolution (if we have it's EDID info) + note: + allowing 2 pixels more for horizontal display for the 1366 mode, since multiples of 8 + are required for the CRTCs horizontal timing programming) */ + if (si->ps.crtc1_screen.have_native_edid) { + if ((target->timing.h_display - 2) > si->ps.crtc1_screen.timing.h_display + || target->timing.v_display > si->ps.crtc1_screen.timing.v_display) { + LOG(4, ("PROPOSEMODE: screen at crtc1 can't display requested resolution, aborted.\n")); + return B_ERROR; + } } - } - if (si->ps.crtc2_screen.have_native_edid) { - if ((target->timing.h_display - 2) > si->ps.crtc2_screen.timing.h_display - || target->timing.v_display > si->ps.crtc2_screen.timing.v_display) { - LOG(4, ("PROPOSEMODE: screen at crtc2 can't display requested resolution, aborted.\n")); - return B_ERROR; + if (si->ps.crtc2_screen.have_native_edid) { + if ((target->timing.h_display - 2) > si->ps.crtc2_screen.timing.h_display + || target->timing.v_display > si->ps.crtc2_screen.timing.v_display) { + LOG(4, ("PROPOSEMODE: screen at crtc2 can't display requested resolution, 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 0b33922d51..ee94571db7 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -1,7 +1,7 @@ /* Authors: Mark Watson 12/1999, Apsed, - Rudolf Cornelissen 10/2002-6/2010 + Rudolf Cornelissen 10/2002-1/2016 tst.. */ @@ -92,7 +92,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 1.09 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 1.10 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/README.html b/src/add-ons/kernel/drivers/graphics/nvidia/README.html index 44fe6666f3..e1440bfd11 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/README.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/README.html @@ -254,10 +254,18 @@ The acceleration engine is disabled. +
  • check_edid:
    +This option lets you disable adherence to your monitor's reported capabilities via EDID. It happens very rarely that especially older monitors report their capabilities in a non-correct way, making the driver believe it has less capabilities than it actually has. +

    Rudolf Cornelissen.
    -

    (Page last updated on January 4, 2016)

    +

    (Page last updated on January 5, 2016)

    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html index ee2a08dfd9..7ce908724d 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html @@ -4,7 +4,7 @@

    Changes done for each driverversion:

    -

    head (Haiku repository 1.09, Rudolf)

    +

    head (Haiku repository 1.10, Rudolf)

    nv_driver 0.80 (Rudolf)