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;
|
status_t result;
|
||||||
uint32 startadd,startadd_right;
|
uint32 startadd,startadd_right;
|
||||||
bool display, h, v;
|
bool display, h, v;
|
||||||
|
bool crt1, crt2, cross;
|
||||||
|
|
||||||
/* Adjust mode to valid one and fail if invalid */
|
/* Adjust mode to valid one and fail if invalid */
|
||||||
target /*= bounds*/ = *mode_to_set;
|
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*/
|
/*work out where the "right" screen starts*/
|
||||||
startadd_right = startadd + (target.timing.h_display * (colour_depth1 >> 3));
|
startadd_right = startadd + (target.timing.h_display * (colour_depth1 >> 3));
|
||||||
|
|
||||||
/* set the outputs if possible */
|
/* detect which connectors have a CRT connected */
|
||||||
if (si->ps.secondary_head)
|
crt1 = nv_dac_crt_connected();
|
||||||
|
crt2 = nv_dac2_crt_connected();
|
||||||
|
/* connect outputs 'straight-through' */
|
||||||
|
if (crt1)
|
||||||
{
|
{
|
||||||
/* fixme: test... (do also for singlehead modes!) */
|
/* connector1 is used as primary output */
|
||||||
nv_dac_crt_connected();
|
cross = false;
|
||||||
nv_dac2_crt_connected();
|
}
|
||||||
|
else
|
||||||
switch (target.flags & DUALHEAD_BITS)
|
|
||||||
{
|
{
|
||||||
case DUALHEAD_ON:
|
if (crt2)
|
||||||
case DUALHEAD_CLONE:
|
/* connector2 is used as primary output */
|
||||||
/* connect outputs straight-through */
|
cross = true;
|
||||||
nv_general_output_select(false);
|
else
|
||||||
break;
|
/* no CRT detected: assume connector1 is used as primary output */
|
||||||
case DUALHEAD_SWITCH:
|
cross = false;
|
||||||
/* cross-connect outputs */
|
|
||||||
nv_general_output_select(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
/* 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 */
|
/* Tell card what memory to display */
|
||||||
switch (target.flags & DUALHEAD_BITS)
|
switch (target.flags & DUALHEAD_BITS)
|
||||||
@@ -264,8 +269,30 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
|
|||||||
/* set the timing */
|
/* set the timing */
|
||||||
nv_crtc_set_timing(target);
|
nv_crtc_set_timing(target);
|
||||||
|
|
||||||
/* connect outputs straight-through */
|
/* connect output */
|
||||||
if (si->ps.secondary_head) nv_general_output_select(false);
|
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...
|
//fixme: shut-off the videoPLL if it exists...
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ bool nv_dac_crt_connected(void)
|
|||||||
uint32 output, dac;
|
uint32 output, dac;
|
||||||
bool present;
|
bool present;
|
||||||
|
|
||||||
|
//fixme? checkout NV11...
|
||||||
/* save output connector setting */
|
/* save output connector setting */
|
||||||
output = DACR(OUTPUT);
|
output = DACR(OUTPUT);
|
||||||
/* save DAC state */
|
/* save DAC state */
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ bool nv_dac2_crt_connected()
|
|||||||
uint32 output, dac;
|
uint32 output, dac;
|
||||||
bool present;
|
bool present;
|
||||||
|
|
||||||
|
//fixme? checkout NV11...
|
||||||
/* save output connector setting */
|
/* save output connector setting */
|
||||||
output = DAC2R(OUTPUT);
|
output = DAC2R(OUTPUT);
|
||||||
/* save DAC state */
|
/* save DAC state */
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
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 */
|
/* preset no laptop */
|
||||||
si->ps.laptop = false;
|
si->ps.laptop = false;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p><h2>Changes done for each driverversion:</h2></p>
|
<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>
|
<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 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;
|
<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>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>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 '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>
|
</ul>
|
||||||
<p><h1>nv_driver 0.07 (Rudolf)</h1></p>
|
<p><h1>nv_driver 0.07 (Rudolf)</h1></p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user