From a626297096b250e1563d854ed0242866f1288656 Mon Sep 17 00:00:00 2001
From: Rudolf Cornelissen
Date: Sat, 8 May 2004 14:09:30 +0000
Subject: [PATCH] added blocking of non-supported modes on panels
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7459 a95241bf-73f2-0310-859d-f6bbb57e9c96
---
.../accelerants/nvidia/ProposeDisplayMode.c | 20 +++++++++++++++++++
.../accelerants/nvidia/engine/nv_general.c | 2 +-
.../drivers/graphics/nvidia/UPDATE.html | 5 +++--
3 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c
index 8abf63ecb5..daa8903d41 100644
--- a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c
+++ b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c
@@ -171,6 +171,26 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con
return result;
}
+ /* check if panel(s) can display the requested mode (if connected) */
+ if (si->ps.tmds1_active)
+ {
+ if ((target->timing.h_display > si->ps.p1_timing.h_display) ||
+ (target->timing.v_display > si->ps.p1_timing.v_display))
+ {
+ LOG(4, ("PROPOSEMODE: panel1 can't display requested mode, aborted.\n"));
+ return B_ERROR;
+ }
+ }
+ if (si->ps.tmds2_active)
+ {
+ if ((target->timing.h_display > si->ps.p2_timing.h_display) ||
+ (target->timing.v_display > si->ps.p2_timing.v_display))
+ {
+ LOG(4, ("PROPOSEMODE: panel2 can't display requested mode, aborted.\n"));
+ return B_ERROR;
+ }
+ }
+
/* validate display vs. virtual */
if ((target->timing.h_display > target->virtual_width) || want_same_width)
target->virtual_width = target->timing.h_display;
diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c
index 0666cce9af..1727eb5f3c 100644
--- a/src/add-ons/accelerants/nvidia/engine/nv_general.c
+++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
{
status_t status;
- LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.10-22 running.\n"));
+ LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.10-23 running.\n"));
/* preset no laptop */
si->ps.laptop = false;
diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
index e55bfae9de..3c82f855cc 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 (0.10-22), (Rudolf)
+head (0.10-23), (Rudolf)
- Implemented laptop internal flatpanel presence and native resolution detection;
- Implemented external DVI flatpanel(s) presence and native resolution detection;
@@ -24,7 +24,8 @@
- Added output-devices/heads matrix setup: the driver now selects the right head for primary output and dualhead should work for all cards with all monitor-types now (if connected before boot);
- Updated head selection code for register programming: NV11 needs a special treatment (again); NV11 dualhead modes are finally OK now, including switch mode;
- Updated secondary head specs: they are improved for nview cards (like GeForce4 and FX) in comparison to twinview cards (like GeForce2);
-
- Added move_overlay() so overlay (finally) works correctly in virtualscreens.
+
- Added move_overlay() so overlay (finally) works correctly in virtualscreens;
+
- Added blocking of modes above panel (with lowest) native resotution.
The 'features' listed below are temporarily(?) shutdown. If your panel does not work with driver 0.10-17, PLEASE SEND FEEDBACK! Send me a logfile with full logging enabled as well. Feedback without accompaning logfiles are of very little use!