cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Jarrod
Journeyman III

ADL and eyefinity

I'm wanting to use ADL to properly support eyefinity on our title. The Eyefinity developer page claims that there is "Eyefinity sample code with accompanying document" included in the SDK, but the samples don't really cover what I want to do.

Could someone post a link or code snippet demonstrating how to enumerate the ATI Eyefinity modes for both normal and bezel compensated conditions.

0 Likes
3 Replies
Jarrod
Journeyman III

Aha, looks like the Eyefinity sample is actually part of the AGS, not the ADL:

http://blogs.amd.com/developer/2010/11/04/introducing-the-ati-gpu-services-ags-library/

0 Likes

The AGS eyefinity sample code calls ATIAGSEyefinityGetConfigInfo(). This method only returns the currently enabled eyefinity mode in the Catalyst control panel.

This seems to go against what is stated in the Eyefinity whitepaper: "AMD has provided the APIs to assist the game to determine which modes are available and which are ATI Eyefinity modes."

Can I please have some dev support with this - Is it AGS or ADL that I should be using to properly support eyefinity on our title, and what is the correct way to detect which modes are eyefinity and bezel corrected etc.

0 Likes

 

I've modified main.c in ADL_Sample.sln to try and see if I could enumerate all the available eyefinity modes, and get the bezel compensation figures. See my source below and output below that. I'm running a 3x1 topology.

 

Catalyst Control Panel lists the following modes under Desktop Properties:

 

Grouped:

 2400x600

 3072x768

 3840x1024

 

Bezel Compensated:

 2400x600

 3069x768

 3840x1024

 

I'm not sure why I only see 2400x600 and the equivalent bezel compensated resolution in my output. What I want to be able to do is detect which modes in the list defined by Direct3D EnumAdapterModes() are eyefinity modes, and which are eyefinity modes with bezel compensation.

 

 

The eyefinity whitepaper states:

 

"When selecting a display mode for the game, it is beneficial for the user to understand which modes are bezel corrected and which are not. AMD has provided APIs to allow the game to identify and sort modes accordingly."

 

Can someone post a concrete example of which APIs to use to do this. The ADL docs state that ADL_DISPLAY_SLSMAPINDEXLIST_OPTION_ACTIVE is the only valid flag to pass to ADL_Display_SLSMapIndexList_Get - does this imply that I can only query the currently selected eyefinity mode in the Catalyst Control Panel (as opposed to enumerating all supported eyefinity modes?).

 

...

int   iNumSLSMapIndexList;

int*  iSLSMapIndexList;

 

ADLSLSMap SLSMap;

int iNumSLSTarget;

ADLSLSTarget* SLSTarget;

int iNumNativeMode;

ADLSLSMode* nativeMode;

int iNumBezelMode;

ADLBezelTransientMode* bezelMode;

int iNumTransientMode;

ADLBezelTransientMode* transientMode;

int iNumSLSOffset;

ADLSLSOffset* SLSOffset;

...

 

// Repeat for all available adapters in the system

for ( i = 0; i < iNumberAdapters; i++ )

{

 iAdapterIndex = lpAdapterInfo[ i ].iAdapterIndex;

 

        // List SLS modes.

        ADL_Display_SLSMapIndexList_Get(  iAdapterIndex, 

                                          &iNumSLSMapIndexList, 

                                          &iSLSMapIndexList,

                                          ADL_DISPLAY_SLSMAPINDEXLIST_OPTION_ACTIVE );

 

        printf("\nFound %d SLS indices for adapter %d:\n", iNumSLSMapIndexList, iAdapterIndex);

 

        for(h = 0; h < iNumSLSMapIndexList; ++h)

        {

          ADL_Display_SLSMapConfig_Get( iAdapterIndex, 

                                        iSLSMapIndexList,

                                        &SLSMap,

                                        &iNumSLSTarget,

                                        &SLSTarget,

                                        &iNumNativeMode,

                                        &nativeMode,

                                        &iNumBezelMode,

                                        &bezelMode,

                                        &iNumTransientMode,

                                        &transientMode,

                                        &iNumSLSOffset,

                                        &SLSOffset,

                                        0 );

 

          printf("\t%d - SLS Map Config %d:\n", h, iSLSMapIndexList);

          printf("\t\tnativeMode %dx%d\n", nativeMode->displayMode.iXRes, nativeMode->displayMode.iYRes);

          printf("\t\tbezelMode %dx%d\n", bezelMode->displayMode.iXRes, bezelMode->displayMode.iYRes);

        }

 

 ...

}       

 

Results when passing 0 to ADL_Display_SLSMapIndexList_Get iOptions param:

 

Found 2 SLS indices for adapter 1:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

        1 - SLS Map Config 0:

                nativeMode 2400x600

  bezelMode 2544x600

 

Found 2 SLS indices for adapter 2:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

        1 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

Found 2 SLS indices for adapter 3:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

        1 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

Results when passing ADL_DISPLAY_SLSMAPINDEXLIST_OPTION_ACTIVE to ADL_Display_SLSMapIndexList_Get iOptions param:

 

 

Found 1 SLS indices for adapter 0:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

Found 1 SLS indices for adapter 1:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

Found 1 SLS indices for adapter 2:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

Found 1 SLS indices for adapter 3:

        0 - SLS Map Config 0:

                nativeMode 2400x600

                bezelMode 2544x600

 

 

0 Likes