3 Replies Latest reply on Jul 14, 2011 2:39 AM by Jarrod

    ADL and eyefinity

    Jarrod

      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.

        • ADL and eyefinity
          Jarrod

          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/

            • ADL and eyefinity
              Jarrod

              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.

                • ADL and eyefinity
                  Jarrod

                   

                  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