added output follows monitor feature

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6446 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen
2004-01-31 16:21:14 +00:00
parent ec7ba455ed
commit 1263890952
5 changed files with 54 additions and 23 deletions
+47 -20
View File
@@ -52,6 +52,7 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
status_t result;
uint32 startadd,startadd_right;
bool display, h, v;
bool crt1, crt2, cross;
/* Adjust mode to valid one and fail if invalid */
target /*= bounds*/ = *mode_to_set;
@@ -184,26 +185,30 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
/*work out where the "right" screen starts*/
startadd_right = startadd + (target.timing.h_display * (colour_depth1 >> 3));
/* set the outputs if possible */
if (si->ps.secondary_head)
/* detect which connectors have a CRT connected */
crt1 = nv_dac_crt_connected();
crt2 = nv_dac2_crt_connected();
/* connect outputs 'straight-through' */
if (crt1)
{
/* fixme: test... (do also for singlehead modes!) */
nv_dac_crt_connected();
nv_dac2_crt_connected();
switch (target.flags & DUALHEAD_BITS)
{
case DUALHEAD_ON:
case DUALHEAD_CLONE:
/* connect outputs straight-through */
nv_general_output_select(false);
break;
case DUALHEAD_SWITCH:
/* cross-connect outputs */
nv_general_output_select(true);
break;
}
/* connector1 is used as primary output */
cross = false;
}
else
{
if (crt2)
/* connector2 is used as primary output */
cross = true;
else
/* no CRT detected: assume connector1 is used as primary output */
cross = false;
}
/* set output connectors assignment if possible */
if ((target.flags & DUALHEAD_BITS) == DUALHEAD_SWITCH)
/* invert output assignment in switch mode */
nv_general_output_select(!cross);
else
nv_general_output_select(cross);
/* Tell card what memory to display */
switch (target.flags & DUALHEAD_BITS)
@@ -264,8 +269,30 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
/* set the timing */
nv_crtc_set_timing(target);
/* connect outputs straight-through */
if (si->ps.secondary_head) nv_general_output_select(false);
/* connect output */
if (si->ps.secondary_head)
{
/* detect which connectors have a CRT connected */
crt1 = nv_dac_crt_connected();
crt2 = nv_dac2_crt_connected();
/* connect outputs 'straight-through' */
if (crt1)
{
/* connector1 is used as primary output */
cross = false;
}
else
{
if (crt2)
/* connector2 is used as primary output */
cross = true;
else
/* no CRT detected: assume connector1 is used as primary output */
cross = false;
}
/* set output connectors assignment if possible */
nv_general_output_select(cross);
}
//fixme: shut-off the videoPLL if it exists...
}
@@ -18,6 +18,7 @@ bool nv_dac_crt_connected(void)
uint32 output, dac;
bool present;
//fixme? checkout NV11...
/* save output connector setting */
output = DACR(OUTPUT);
/* save DAC state */
@@ -16,6 +16,7 @@ bool nv_dac2_crt_connected()
uint32 output, dac;
bool present;
//fixme? checkout NV11...
/* save output connector setting */
output = DAC2R(OUTPUT);
/* save DAC state */
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
{
status_t status;
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-10 running.\n"));
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-11 running.\n"));
/* preset no laptop */
si->ps.laptop = false;
@@ -4,7 +4,7 @@
</head>
<body>
<p><h2>Changes done for each driverversion:</h2></p>
<p><h1>head (0.08-10, Rudolf)</h1></p>
<p><h1>head (0.08-11, Rudolf)</h1></p>
<ul>
<li>Fixed GeForceFX 5600 and FX 5700 monitor 'refresh out of range' / shutoff fault. nVidia changed the pixelPLL for the NV31 and NV36;
<li>Fixed acceleration engine restrictions code to adhere to GeForceFX 5600 restrictions: those are still NV20 style for this card;
@@ -21,7 +21,9 @@
<li>Added dualhead support for 8- and 15bit colordepths;
<li>Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads);
<li>Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output window is on a screen, that screen gets the overlay output;
<li>Added dualhead switch mode.
<li>Added dualhead switch mode (except for NV11 cards as they do not have output connector switching capability);
<li>Added monitor presence detection for both monitor output connectors on dualhead cards (analog type signals only);
<li>Added 'output follows monitor' for all modes: it does not matter on which connector you connect your monitor, the output will go there after setting a mode; like the card's BIOS does (except for NV11 cards as they do not have output connector switching capability).
</ul>
<p><h1>nv_driver 0.07 (Rudolf)</h1></p>
<ul>