Hello everybody,
I am having some difficulties while trying to get the possible modes for each connected display on Ubuntu 12.04 with latest 14.301 FirePro drivers.
Following the adlutil example from ADL_7.0 I can now obtain the current display mode for each screen, but when I try to get the possible modes for the monitor it always returns the same data, as if it were returning the possible modes for adapter 0, display 0 all the time:
I have 3 displays attached, the first two at 1920x1080 and a third one at 1280x1024, this is the code that produces the above output:
for (int j = 0; j < iNumDisplays; j++ )
{
//(..omitted code for mapped displays etc...)
// Obtain the ADL_Display_Modes_Get
ADL_Err = ADL_Display_Modes_Get ( iAdapterIndex, iDisplayIndex, &iNumModes, &lpADLMode );
if(!ADL_Err)
{
printCurrentMode(lpADLMode);
// Obtain the ADL_Display_PossibleMode_Get
ADL_Err = ADL_Display_PossibleMode_Get ( lpADLMode->iAdapterIndex, &iNumModes, &lpPossibleADLMode );
if(!ADl_err) {
for(int i=0; i < iNumModes; ++i) { printPossibleMode(&lpPossibleADLMode,true); }
}
}
}
Get AdapterIndex 0, DisplayIndex 0 current mode:
Width 1920
Height 1080
RefreshRate 60.00
Possible Display Modes: ( A-idx: ADLMode->iAdapterIndex, D-Idx: ADLMode->displayID.iDisplayLogicalIndex )
A-idx 0 D-Idx 0 W 1920 H 1080 RR 60.00
A-idx 0 D-Idx 0 W 1680 H 1050 RR 60.00
(.....)
A-idx 0 D-Idx 0 W 640 H 480 RR 60.00
Get AdapterIndex 1, DisplayIndex 4 current mode:
Width 1920
Height 1080
RefreshRate 60.00
Possible Display Modes:
A-idx 0 D-Idx 0 W 1920 H 1080 RR 60.00
A-idx 0 D-Idx 0 W 1680 H 1050 RR 60.00
(.....)
A-idx 0 D-Idx 0 W 640 H 480 RR 60.00
Get AdapterIndex 2, DisplayIndex 16 current mode:
Width 1280
Height 1024
RefreshRate 60.00
A-idx 0 D-Idx 0 W 1920 H 1080 RR 60.00
A-idx 0 D-Idx 0 W 1680 H 1050 RR 60.00
A-idx 0 D-Idx 0 W 1600 H 900 RR 60.00
A-idx 0 D-Idx 0 W 1440 H 900 RR 60.00
A-idx 0 D-Idx 0 W 1400 H 1050 RR 60.00 (This modes are not possible for this display)
A-idx 0 D-Idx 0 W 1280 H 1024 RR 60.00
A-idx 0 D-Idx 0 W 1280 H 960 RR 60.00
A-idx 0 D-Idx 0 W 1280 H 768 RR 60.00
A-idx 0 D-Idx 0 W 1280 H 720 RR 60.00
A-idx 0 D-Idx 0 W 1152 H 864 RR 60.00
A-idx 0 D-Idx 0 W 1024 H 768 RR 60.00
A-idx 0 D-Idx 0 W 800 H 600 RR 60.00
A-idx 0 D-Idx 0 W 640 H 480 RR 60.00
I've been trying to figure this out for quite some time but I am unable to get the correct possible modes no matter what.
Could this be a problem in the ADL, Drivers side?
Any help would be greatly appreciated.
Regards,
The engineering team has investigated, replicated the problem, and created a defect report for this issue. Obviously I can't predict if/when it will be fixed, or in what release. If I learn more I'll report that here. Issue# is 415233.
Thanks for the report.
Hi,
The behavior detailed here is expected because of the following reason.
ADL_Display_PossibleMode_Get (lpADLMode->iAdapterIndex, &iNumModes, &lpPossibleADLMode ) method gets the possible modes based on the screen number rather adapter index.
Screen numbers will be decided based on the displays configuration and ADL gets the screen number based on the adapter index passed.
ADL_Display_PossibleMode_Get() method internally calls “FGLGetDisplayMode” which doesn't return adapter and display index. Hence lpPossibleADLMode->iAdapterindex and lpPossibleADLMode->displayID.iDisplayLogicalIndex always be zero.
If different displays are configured into Multi-desktop(single independent display) mode and the method still returns same possible modes then it is driver issue.
Thanks,
Kavitha
Hello,
Thanks for the response, seems I was expecting different results when in multi-monitor mode.
I've done the same tests with single screens configured and now the results returned are correct.
Seems I will need to get the possible modes using X extensions when in multi-monitor, although the results are not correct neither. But that is another battle.
Thanks very much for your time and feedback.
Regards