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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user