Guest User

Untitled

a guest
Dec 11th, 2011
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 59.13 KB | None | 0 0
  1. ///
  2. /// Copyright (c) 2008 - 2009 Advanced Micro Devices, Inc.
  3.  
  4. /// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  5. /// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  6. /// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  7.  
  8. /// \file adl_structures.h
  9. ///\brief This file contains the structure declarations that are used by the public ADL interfaces for \ALL platforms.\n <b>Included in ADL SDK</b>
  10. ///
  11. /// All data structures used in AMD Display Library (ADL) public interfaces should be defined in this header file.
  12. ///
  13.  
  14. #ifndef ADL_STRUCTURES_H_
  15. #define ADL_STRUCTURES_H_
  16.  
  17. #include "adl_defines.h"
  18.  
  19. /////////////////////////////////////////////////////////////////////////////////////////////
  20. ///\brief Structure containing information about the graphics adapter.
  21. ///
  22. /// This structure is used to store various information about the graphics adapter. This
  23. /// information can be returned to the user. Alternatively, it can be used to access various driver calls to set
  24. /// or fetch various settings upon the user's request.
  25. /// \nosubgrouping
  26. ////////////////////////////////////////////////////////////////////////////////////////////
  27. typedef struct AdapterInfo
  28. {
  29. /// \ALL_STRUCT_MEM
  30.  
  31. /// Size of the structure.
  32. int iSize;
  33. /// The ADL index handle. One GPU may be associated with one or two index handles
  34. int iAdapterIndex;
  35. /// The unique device ID associated with this adapter.
  36. char strUDID[ADL_MAX_PATH];
  37. /// The BUS number associated with this adapter.
  38. int iBusNumber;
  39. /// The driver number associated with this adapter.
  40. int iDeviceNumber;
  41. /// The function number.
  42. int iFunctionNumber;
  43. /// The vendor ID associated with this adapter.
  44. int iVendorID;
  45. /// Adapter name.
  46. char strAdapterName[ADL_MAX_PATH];
  47. /// Display name. For example, "\\Display0" for Windows or ":0:0" for Linux.
  48. char strDisplayName[ADL_MAX_PATH];
  49. /// Present or not; 1 if present and 0 if not present.It the logical adapter is present, the display name such as \\.\Display1 can be found from OS
  50. int iPresent;
  51. // @}
  52.  
  53. #if defined (_WIN32) || defined (_WIN64)
  54. /// \WIN_STRUCT_MEM
  55.  
  56. /// Exist or not; 1 is exist and 0 is not present.
  57. int iExist;
  58. /// Driver registry path.
  59. char strDriverPath[ADL_MAX_PATH];
  60. /// Driver registry path Ext for.
  61. char strDriverPathExt[ADL_MAX_PATH];
  62. /// PNP string from Windows.
  63. char strPNPString[ADL_MAX_PATH];
  64. /// It is generated from EnumDisplayDevices.
  65. int iOSDisplayIndex;
  66. // @}
  67. #endif /* (_WIN32) || (_WIN64) */
  68.  
  69. #if defined (LINUX)
  70. /// \LNX_STRUCT_MEM
  71.  
  72. /// Internal X screen number from GPUMapInfo (DEPRICATED use XScreenInfo)
  73. int iXScreenNum;
  74. /// Internal driver index from GPUMapInfo
  75. int iDrvIndex;
  76. /// \deprecated Internal x config file screen identifier name. Use XScreenInfo instead.
  77. char strXScreenConfigName[ADL_MAX_PATH];
  78.  
  79. // @}
  80. #endif /* (LINUX) */
  81. } AdapterInfo, *LPAdapterInfo;
  82.  
  83. /////////////////////////////////////////////////////////////////////////////////////////////
  84. ///\brief Structure containing information about the Linux X screen information.
  85. ///
  86. /// This structure is used to store the current screen number and xorg.conf ID name assoicated with an adapter index.
  87. /// This structure is updated during ADL_Main_Control_Refresh or ADL_ScreenInfo_Update.
  88. /// Note: This structure should be used in place of iXScreenNum and strXScreenConfigName in AdapterInfo as they will be
  89. /// deprecated.
  90. /// \nosubgrouping
  91. ////////////////////////////////////////////////////////////////////////////////////////////
  92. #if defined (LINUX)
  93. typedef struct XScreenInfo
  94. {
  95. /// Internal X screen number from GPUMapInfo.
  96. int iXScreenNum;
  97. /// Internal x config file screen identifier name.
  98. char strXScreenConfigName[ADL_MAX_PATH];
  99. } XScreenInfo, *LPXScreenInfo;
  100. #endif /* (LINUX) */
  101.  
  102.  
  103. /////////////////////////////////////////////////////////////////////////////////////////////
  104. ///\brief Structure containing information about the ASIC memory.
  105. ///
  106. /// This structure is used to store various information about the ASIC memory. This
  107. /// information can be returned to the user.
  108. /// \nosubgrouping
  109. ////////////////////////////////////////////////////////////////////////////////////////////
  110. typedef struct ADLMemoryInfo
  111. {
  112. /// Memory size in bytes.
  113. long long iMemorySize;
  114. /// Memory type in string.
  115. char strMemoryType[ADL_MAX_PATH];
  116. /// Memory bandwidth in Mbytes/s.
  117. long long iMemoryBandwidth;
  118. } ADLMemoryInfo, *LPADLMemoryInfo;
  119.  
  120. /////////////////////////////////////////////////////////////////////////////////////////////
  121. ///\brief Structure containing DDC information.
  122. ///
  123. /// This structure is used to store various DDC information that can be returned to the user.
  124. /// Note that all fields of type int are actually defined as unsigned int types within the driver.
  125. /// \nosubgrouping
  126. ////////////////////////////////////////////////////////////////////////////////////////////
  127. typedef struct ADLDDCInfo
  128. {
  129. /// Size of the structure
  130. int ulSize;
  131. /// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC information fields will be used.
  132. int ulSupportsDDC;
  133. /// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.
  134. int ulManufacturerID;
  135. /// Returns the product ID of the display device. Should be zeroed if this information is not available.
  136. int ulProductID;
  137. /// Returns the name of the display device. Should be zeroed if this information is not available.
  138. char cDisplayName[ADL_MAX_DISPLAY_NAME];
  139. /// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.
  140. int ulMaxHResolution;
  141. /// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available.
  142. int ulMaxVResolution;
  143. /// Returns the maximum supported refresh rate. Should be zeroed if this information is not available.
  144. int ulMaxRefresh;
  145. /// Returns the display device preferred timing mode's horizontal resolution.
  146. int ulPTMCx;
  147. /// Returns the display device preferred timing mode's vertical resolution.
  148. int ulPTMCy;
  149. /// Returns the display device preferred timing mode's refresh rate.
  150. int ulPTMRefreshRate;
  151. /// Return EDID flags.
  152. int ulDDCInfoFlag;
  153. } ADLDDCInfo, *LPADLDDCInfo;
  154.  
  155. /////////////////////////////////////////////////////////////////////////////////////////////
  156. ///\brief Structure containing information controller Gamma settings.
  157. ///
  158. /// This structure is used to store the red, green and blue color channel information for the.
  159. /// controller gamma setting. This information is returned by ADL, and it can also be used to
  160. /// set the controller gamma setting.
  161. /// \nosubgrouping
  162. ////////////////////////////////////////////////////////////////////////////////////////////
  163. typedef struct ADLGamma
  164. {
  165. /// Red color channel gamma value.
  166. float fRed;
  167. /// Green color channel gamma value.
  168. float fGreen;
  169. /// Blue color channel gamma value.
  170. float fBlue;
  171. } ADLGamma, *LPADLGamma;
  172.  
  173. /////////////////////////////////////////////////////////////////////////////////////////////
  174. ///\brief Structure containing information about component video custom modes.
  175. ///
  176. /// This structure is used to store the component video custom mode.
  177. /// \nosubgrouping
  178. ////////////////////////////////////////////////////////////////////////////////////////////
  179. typedef struct ADLCustomMode
  180. {
  181. /// Custom mode flags. They are returned by the ADL driver.
  182. int iFlags;
  183. /// Custom mode width.
  184. int iModeWidth;
  185. /// Custom mode height.
  186. int iModeHeight;
  187. /// Custom mode base width.
  188. int iBaseModeWidth;
  189. /// Custom mode base height.
  190. int iBaseModeHeight;
  191. /// Custom mode refresh rate.
  192. int iRefreshRate;
  193. } ADLCustomMode, *LPADLCustomMode;
  194.  
  195. /////////////////////////////////////////////////////////////////////////////////////////////
  196. ///\brief Structure containing Clock information for OD5 calls.
  197. ///
  198. /// This structure is used to retrieve clock information for OD5 calls.
  199. /// \nosubgrouping
  200. ////////////////////////////////////////////////////////////////////////////////////////////
  201. typedef struct ADLGetClocksOUT
  202. {
  203. long ulHighCoreClock;
  204. long ulHighMemoryClock;
  205. long ulHighVddc;
  206. long ulCoreMin;
  207. long ulCoreMax;
  208. long ulMemoryMin;
  209. long ulMemoryMax;
  210. long ulActivityPercent;
  211. long ulCurrentCoreClock;
  212. long ulCurrentMemoryClock;
  213. long ulReserved;
  214. } ADLGetClocksOUT;
  215.  
  216. /////////////////////////////////////////////////////////////////////////////////////////////
  217. ///\brief Structure containing HDTV information for display calls.
  218. ///
  219. /// This structure is used to retrieve HDTV information information for display calls.
  220. /// \nosubgrouping
  221. ////////////////////////////////////////////////////////////////////////////////////////////
  222. typedef struct ADLDisplayConfig
  223. {
  224. /// Size of the structure
  225. long ulSize;
  226. /// HDTV connector type.
  227. long ulConnectorType;
  228. /// HDTV capabilities.
  229. long ulDeviceData;
  230. /// Overridden HDTV capabilities.
  231. long ulOverridedDeviceData;
  232. /// Reserved field
  233. long ulReserved;
  234. } ADLDisplayConfig;
  235.  
  236.  
  237. /////////////////////////////////////////////////////////////////////////////////////////////
  238. ///\brief Structure containing information about the display device.
  239. ///
  240. /// This structure is used to store display device information
  241. /// such as display index, type, name, connection status, mapped adapter and controller indexes,
  242. /// whether or not multiple VPUs are supported, local display connections or not (through Lasso), etc.
  243. /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to set
  244. /// or fetch various display device related settings upon the user's request.
  245. /// \nosubgrouping
  246. ////////////////////////////////////////////////////////////////////////////////////////////
  247. typedef struct ADLDisplayID
  248. {
  249. /// The logical display index belonging to this adapter.
  250. int iDisplayLogicalIndex;
  251.  
  252. ///\brief The physical display index.
  253. /// For example, display index 2 from adapter 2 can be used by current adapter 1.\n
  254. /// So current adapter may enumerate this adapter as logical display 7 but the physical display
  255. /// index is still 2.
  256. int iDisplayPhysicalIndex;
  257.  
  258. /// The persistent logical adapter index for the display.
  259. int iDisplayLogicalAdapterIndex;
  260.  
  261. ///\brief The persistent physical adapter index for the display.
  262. /// It can be the current adapter or a non-local adapter. \n
  263. /// If this adapter index is different than the current adapter,
  264. /// the Display Non Local flag is set inside DisplayInfoValue.
  265. int iDisplayPhysicalAdapterIndex;
  266. } ADLDisplayID, *LPADLDisplayID;
  267.  
  268. /////////////////////////////////////////////////////////////////////////////////////////////
  269. ///\brief Structure containing information about the display device.
  270. ///
  271. /// This structure is used to store various information about the display device. This
  272. /// information can be returned to the user, or used to access various driver calls to set
  273. /// or fetch various display-device-related settings upon the user's request
  274. /// \nosubgrouping
  275. ////////////////////////////////////////////////////////////////////////////////////////////
  276. typedef struct ADLDisplayInfo
  277. {
  278. /// The DisplayID structure
  279. ADLDisplayID displayID;
  280.  
  281. ///\deprecated The controller index to which the display is mapped.\n Will not be used in the future\n
  282. int iDisplayControllerIndex;
  283.  
  284. /// The display's EDID name.
  285. char strDisplayName[ADL_MAX_PATH];
  286.  
  287. /// The display's manufacturer name.
  288. char strDisplayManufacturerName[ADL_MAX_PATH];
  289.  
  290. /// The Display type. For example: CRT, TV, CV, DFP.
  291. int iDisplayType;
  292.  
  293. /// The display output type. For example: HDMI, SVIDEO, COMPONMNET VIDEO.
  294. int iDisplayOutputType;
  295.  
  296. /// The connector type for the device.
  297. int iDisplayConnector;
  298.  
  299. ///\brief The bit mask identifies the number of bits ADLDisplayInfo is currently using. \n
  300. /// It will be the sum all the bit definitions in ADL_DISPLAY_DISPLAYINFO_xxx.
  301. int iDisplayInfoMask;
  302.  
  303. /// The bit mask identifies the display status. \ref define_displayinfomask
  304. int iDisplayInfoValue;
  305. } ADLDisplayInfo, *LPADLDisplayInfo;
  306.  
  307.  
  308.  
  309. /////////////////////////////////////////////////////////////////////////////////////////////
  310. ///\brief Structure containing the display mode definition used per controller.
  311. ///
  312. /// This structure is used to store the display mode definition used per controller.
  313. /// \nosubgrouping
  314. ////////////////////////////////////////////////////////////////////////////////////////////
  315. typedef struct ADLDisplayMode
  316. {
  317. /// Vertical resolution (in pixels).
  318. int iPelsHeight;
  319. /// Horizontal resolution (in pixels).
  320. int iPelsWidth;
  321. /// Color depth.
  322. int iBitsPerPel;
  323. /// Refresh rate.
  324. int iDisplayFrequency;
  325. } ADLDisplayMode;
  326.  
  327. /////////////////////////////////////////////////////////////////////////////////////////////
  328. ///\brief Structure containing detailed timing parameters.
  329. ///
  330. /// This structure is used to store the detailed timing parameters.
  331. /// \nosubgrouping
  332. ////////////////////////////////////////////////////////////////////////////////////////////
  333. typedef struct ADLDetailedTiming
  334. {
  335. /// Size of the structure.
  336. int iSize;
  337. /// Timing flags. \ref define_detailed_timing_flags
  338. short sTimingFlags;
  339. /// Total width (columns).
  340. short sHTotal;
  341. /// Displayed width.
  342. short sHDisplay;
  343. /// Horizontal sync signal offset.
  344. short sHSyncStart;
  345. /// Horizontal sync signal width.
  346. short sHSyncWidth;
  347. /// Total height (rows).
  348. short sVTotal;
  349. /// Displayed height.
  350. short sVDisplay;
  351. /// Vertical sync signal offset.
  352. short sVSyncStart;
  353. /// Vertical sync signal width.
  354. short sVSyncWidth;
  355. /// Pixel clock value.
  356. short sPixelClock;
  357. /// Overscan right.
  358. short sHOverscanRight;
  359. /// Overscan left.
  360. short sHOverscanLeft;
  361. /// Overscan bottom.
  362. short sVOverscanBottom;
  363. /// Overscan top.
  364. short sVOverscanTop;
  365. short sOverscan8B;
  366. short sOverscanGR;
  367. } ADLDetailedTiming;
  368.  
  369. /////////////////////////////////////////////////////////////////////////////////////////////
  370. ///\brief Structure containing display mode information.
  371. ///
  372. /// This structure is used to store the display mode information.
  373. /// \nosubgrouping
  374. ////////////////////////////////////////////////////////////////////////////////////////////
  375. typedef struct ADLDisplayModeInfo
  376. {
  377. /// Timing standard of the current mode. \ref define_modetiming_standard
  378. int iTimingStandard;
  379. /// Applicable timing standards for the current mode.
  380. int iPossibleStandard;
  381. /// Refresh rate factor.
  382. int iRefreshRate;
  383. /// Num of pixels in a row.
  384. int iPelsWidth;
  385. /// Num of pixels in a column.
  386. int iPelsHeight;
  387. /// Detailed timing parameters.
  388. ADLDetailedTiming sDetailedTiming;
  389. } ADLDisplayModeInfo;
  390.  
  391. /////////////////////////////////////////////////////////////////////////////////////////////
  392. /// \brief Structure containing information about display property.
  393. ///
  394. /// This structure is used to store the display property for the current adapter.
  395. /// \nosubgrouping
  396. ////////////////////////////////////////////////////////////////////////////////////////////
  397. typedef struct ADLDisplayProperty
  398. {
  399. /// Must be set to sizeof the structure
  400. int iSize;
  401. /// Must be set to \ref ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE or \ref ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING
  402. int iPropertyType;
  403. /// Get or Set \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_CENTER or \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_FULLSCREEN or \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_ASPECTRATIO
  404. int iExpansionMode;
  405. /// Display Property supported? 1: Supported, 0: Not supported
  406. int iSupport;
  407. /// Display Property current value
  408. int iCurrent;
  409. /// Display Property Default value
  410. int iDefault;
  411. } ADLDisplayProperty;
  412.  
  413. /////////////////////////////////////////////////////////////////////////////////////////////
  414. ///\brief Structure containing information about Clock.
  415. ///
  416. /// This structure is used to store the clock information for the current adapter
  417. /// such as core clock and memory clock info.
  418. ///\nosubgrouping
  419. ////////////////////////////////////////////////////////////////////////////////////////////
  420. typedef struct ADLClockInfo
  421. {
  422. /// Core clock in 10 KHz.
  423. int iCoreClock;
  424. /// Memory clock in 10 KHz.
  425. int iMemoryClock;
  426. } ADLClockInfo, *LPADLClockInfo;
  427.  
  428. /////////////////////////////////////////////////////////////////////////////////////////////
  429. ///\brief Structure containing information about I2C.
  430. ///
  431. /// This structure is used to store the I2C information for the current adapter.
  432. /// This structure is used by the ADL_Display_WriteAndReadI2C() function.
  433. /// \nosubgrouping
  434. ////////////////////////////////////////////////////////////////////////////////////////////
  435. typedef struct ADLI2C
  436. {
  437. /// Size of the structure
  438. int iSize;
  439. /// Numerical value representing hardware I2C.
  440. int iLine;
  441. /// The 7-bit I2C slave device address, shifted one bit to the left.
  442. int iAddress;
  443. /// The offset of the data from the address.
  444. int iOffset;
  445. /// Read from or write to slave device. \ref ADL_DL_I2C_ACTIONREAD or \ref ADL_DL_I2C_ACTIONWRITE or \ref ADL_DL_I2C_ACTIONREAD_REPEATEDSTART
  446. int iAction;
  447. /// I2C clock speed in KHz.
  448. int iSpeed;
  449. /// A numerical value representing the number of bytes to be sent or received on the I2C bus.
  450. int iDataSize;
  451. /// Address of the characters which are to be sent or received on the I2C bus.
  452. char *pcData;
  453. } ADLI2C;
  454.  
  455. /////////////////////////////////////////////////////////////////////////////////////////////
  456. ///\brief Structure containing information about EDID data.
  457. ///
  458. /// This structure is used to store the information about EDID data for the adapter.
  459. /// This structure is used by the ADL_Display_EdidData_Get() function.
  460. /// \nosubgrouping
  461. ////////////////////////////////////////////////////////////////////////////////////////////
  462. typedef struct ADLDisplayEDIDData
  463. {
  464. /// Size of the structure
  465. int iSize;
  466. /// Set to 0
  467. int iFlag;
  468. /// Size of cEDIDData. Set by ADL_Display_EdidData_Get() upon return
  469. int iEDIDSize;
  470. /// 0, 1 or 2. If set to 3 or above an error ADL_ERR_INVALID_PARAM is generated
  471. int iBlockIndex;
  472. /// EDID data
  473. char cEDIDData[ADL_MAX_EDIDDATA_SIZE];
  474. /// Reserved
  475. int iReserved[4];
  476. }ADLDisplayEDIDData;
  477.  
  478. /////////////////////////////////////////////////////////////////////////////////////////////
  479. ///\brief Structure containing information about input of controller overlay adjustment.
  480. ///
  481. /// This structure is used to store the information about input of controller overlay adjustment for the adapter.
  482. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get, ADL_Display_ControllerOverlayAdjustmentData_Get, and
  483. /// ADL_Display_ControllerOverlayAdjustmentData_Set() functions.
  484. /// \nosubgrouping
  485. ////////////////////////////////////////////////////////////////////////////////////////////
  486. typedef struct ADLControllerOverlayInput
  487. {
  488. /// Should be set to the sizeof the structure
  489. int iSize;
  490. ///\ref ADL_DL_CONTROLLER_OVERLAY_ALPHA or \ref ADL_DL_CONTROLLER_OVERLAY_ALPHAPERPIX
  491. int iOverlayAdjust;
  492. /// Data.
  493. int iValue;
  494. /// Should be 0.
  495. int iReserved;
  496. } ADLControllerOverlayInput;
  497.  
  498. /////////////////////////////////////////////////////////////////////////////////////////////
  499. ///\brief Structure containing information about overlay adjustment.
  500. ///
  501. /// This structure is used to store the information about overlay adjustment for the adapter.
  502. /// This structure is used by the ADLControllerOverlayInfo() function.
  503. /// \nosubgrouping
  504. ////////////////////////////////////////////////////////////////////////////////////////////
  505. typedef struct ADLAdjustmentinfo
  506. {
  507. /// Default value
  508. int iDefault;
  509. /// Minimum value
  510. int iMin;
  511. /// Maximum Value
  512. int iMax;
  513. /// Step value
  514. int iStep;
  515. } ADLAdjustmentinfo;
  516.  
  517. /////////////////////////////////////////////////////////////////////////////////////////////
  518. ///\brief Structure containing information about controller overlay information.
  519. ///
  520. /// This structure is used to store information about controller overlay info for the adapter.
  521. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get() function.
  522. /// \nosubgrouping
  523. ////////////////////////////////////////////////////////////////////////////////////////////
  524. typedef struct ADLControllerOverlayInfo
  525. {
  526. /// Should be set to the sizeof the structure
  527. int iSize;
  528. /// Data.
  529. ADLAdjustmentinfo sOverlayInfo;
  530. /// Should be 0.
  531. int iReserved[3];
  532. } ADLControllerOverlayInfo;
  533.  
  534. /////////////////////////////////////////////////////////////////////////////////////////////
  535. ///\brief Structure containing GL-Sync module information.
  536. ///
  537. /// This structure is used to retrieve GL-Sync module information for
  538. /// Workstation Framelock/Genlock.
  539. /// \nosubgrouping
  540. ////////////////////////////////////////////////////////////////////////////////////////////
  541. typedef struct ADLGLSyncModuleID
  542. {
  543. /// Unique GL-Sync module ID.
  544. int iModuleID;
  545. /// GL-Sync GPU port index (to be passed into ADLGLSyncGenlockConfig.lSignalSource and ADLGlSyncPortControl.lSignalSource).
  546. int iGlSyncGPUPort;
  547. /// GL-Sync module firmware version of Boot Sector.
  548. int iFWBootSectorVersion;
  549. /// GL-Sync module firmware version of User Sector.
  550. int iFWUserSectorVersion;
  551. } ADLGLSyncModuleID , *LPADLGLSyncModuleID;
  552.  
  553. /////////////////////////////////////////////////////////////////////////////////////////////
  554. ///\brief Structure containing GL-Sync ports capabilities.
  555. ///
  556. /// This structure is used to retrieve hardware capabilities for the ports of the GL-Sync module
  557. /// for Workstation Framelock/Genlock (such as port type and number of associated LEDs).
  558. /// \nosubgrouping
  559. ////////////////////////////////////////////////////////////////////////////////////////////
  560. typedef struct ADLGLSyncPortCaps
  561. {
  562. /// Port type. Bitfield of ADL_GLSYNC_PORTTYPE_* \ref define_glsync
  563. int iPortType;
  564. /// Number of LEDs associated for this port.
  565. int iNumOfLEDs;
  566. }ADLGLSyncPortCaps, *LPADLGLSyncPortCaps;
  567.  
  568. /////////////////////////////////////////////////////////////////////////////////////////////
  569. ///\brief Structure containing GL-Sync Genlock settings.
  570. ///
  571. /// This structure is used to get and set genlock settings for the GPU ports of the GL-Sync module
  572. /// for Workstation Framelock/Genlock.\n
  573. /// \see define_glsync
  574. /// \nosubgrouping
  575. ////////////////////////////////////////////////////////////////////////////////////////////
  576. typedef struct ADLGLSyncGenlockConfig
  577. {
  578. /// Specifies what fields in this structure are valid \ref define_glsync
  579. int iValidMask;
  580. /// Delay (ms) generating a sync signal.
  581. int iSyncDelay;
  582. /// Vector of framelock control bits. Bitfield of ADL_GLSYNC_FRAMELOCKCNTL_* \ref define_glsync
  583. int iFramelockCntlVector;
  584. /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
  585. int iSignalSource;
  586. /// Use sampled sync signal. A value of 0 specifies no sampling.
  587. int iSampleRate;
  588. /// For interlaced sync signals, the value can be ADL_GLSYNC_SYNCFIELD_1 or *_BOTH \ref define_glsync
  589. int iSyncField;
  590. /// The signal edge that should trigger synchronization. ADL_GLSYNC_TRIGGEREDGE_* \ref define_glsync
  591. int iTriggerEdge;
  592. /// Scan rate multiplier applied to the sync signal. ADL_GLSYNC_SCANRATECOEFF_* \ref define_glsync
  593. int iScanRateCoeff;
  594. }ADLGLSyncGenlockConfig, *LPADLGLSyncGenlockConfig;
  595.  
  596. /////////////////////////////////////////////////////////////////////////////////////////////
  597. ///\brief Structure containing GL-Sync port information.
  598. ///
  599. /// This structure is used to get status of the GL-Sync ports (BNC or RJ45s)
  600. /// for Workstation Framelock/Genlock.
  601. /// \see define_glsync
  602. /// \nosubgrouping
  603. ////////////////////////////////////////////////////////////////////////////////////////////
  604. typedef struct ADLGlSyncPortInfo
  605. {
  606. /// Type of GL-Sync port (ADL_GLSYNC_PORT_*).
  607. int iPortType;
  608. /// The number of LEDs for this port. It's also filled within ADLGLSyncPortCaps.
  609. int iNumOfLEDs;
  610. /// Port state ADL_GLSYNC_PORTSTATE_* \ref define_glsync
  611. int iPortState;
  612. /// Scanned frequency for this port (vertical refresh rate in milliHz; 60000 means 60 Hz).
  613. int iFrequency;
  614. /// Used for ADL_GLSYNC_PORT_BNC. It is ADL_GLSYNC_SIGNALTYPE_* \ref define_glsync
  615. int iSignalType;
  616. /// Used for ADL_GLSYNC_PORT_RJ45PORT*. It is GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_*. \ref define_glsync
  617. int iSignalSource;
  618.  
  619. } ADLGlSyncPortInfo, *LPADLGlSyncPortInfo;
  620.  
  621. /////////////////////////////////////////////////////////////////////////////////////////////
  622. ///\brief Structure containing GL-Sync port control settings.
  623. ///
  624. /// This structure is used to configure the GL-Sync ports (RJ45s only)
  625. /// for Workstation Framelock/Genlock.
  626. /// \see define_glsync
  627. /// \nosubgrouping
  628. ////////////////////////////////////////////////////////////////////////////////////////////
  629. typedef struct ADLGlSyncPortControl
  630. {
  631. /// Port to control ADL_GLSYNC_PORT_RJ45PORT1 or ADL_GLSYNC_PORT_RJ45PORT2 \ref define_glsync
  632. int iPortType;
  633. /// Port control data ADL_GLSYNC_PORTCNTL_* \ref define_glsync
  634. int iControlVector;
  635. /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
  636. int iSignalSource;
  637. } ADLGlSyncPortControl;
  638.  
  639. /////////////////////////////////////////////////////////////////////////////////////////////
  640. ///\brief Structure containing GL-Sync mode of a display.
  641. ///
  642. /// This structure is used to get and set GL-Sync mode settings for a display connected to
  643. /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
  644. /// \see define_glsync
  645. /// \nosubgrouping
  646. ////////////////////////////////////////////////////////////////////////////////////////////
  647. typedef struct ADLGlSyncMode
  648. {
  649. /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
  650. int iControlVector;
  651. /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
  652. int iStatusVector;
  653. /// Index of GL-Sync connector used to genlock the display/controller.
  654. int iGLSyncConnectorIndex;
  655. } ADLGlSyncMode, *LPADLGlSyncMode;
  656.  
  657. /////////////////////////////////////////////////////////////////////////////////////////////
  658. ///\brief Structure containing GL-Sync mode of a display.
  659. ///
  660. /// This structure is used to get and set GL-Sync mode settings for a display connected to
  661. /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
  662. /// \see define_glsync
  663. /// \nosubgrouping
  664. ////////////////////////////////////////////////////////////////////////////////////////////
  665. typedef struct ADLGlSyncMode2
  666. {
  667. /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
  668. int iControlVector;
  669. /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
  670. int iStatusVector;
  671. /// Index of GL-Sync connector used to genlock the display/controller.
  672. int iGLSyncConnectorIndex;
  673. /// Index of the display to which this GLSync applies to.
  674. int iDisplayIndex;
  675. } ADLGlSyncMode2, *LPADLGlSyncMode2;
  676.  
  677.  
  678. /////////////////////////////////////////////////////////////////////////////////////////////
  679. ///\brief Structure containing the packet info of a display.
  680. ///
  681. /// This structure is used to get and set the packet information of a display.
  682. /// This structure is used by ADLDisplayDataPacket.
  683. /// \nosubgrouping
  684. ////////////////////////////////////////////////////////////////////////////////////////////
  685. typedef struct ADLInfoPacket
  686. {
  687. char hb0;
  688. char hb1;
  689. char hb2;
  690. /// sb0~sb27
  691. char sb[28];
  692. }ADLInfoPacket;
  693.  
  694. /////////////////////////////////////////////////////////////////////////////////////////////
  695. ///\brief Structure containing the AVI packet info of a display.
  696. ///
  697. /// This structure is used to get and set AVI the packet info of a display.
  698. /// This structure is used by ADLDisplayDataPacket.
  699. /// \nosubgrouping
  700. ////////////////////////////////////////////////////////////////////////////////////////////
  701. typedef struct ADLAVIInfoPacket //Valid user defined data/
  702. {
  703. /// byte 3, bit 7
  704. char bPB3_ITC;
  705. /// byte 5, bit [7:4].
  706. char bPB5;
  707. }ADLAVIInfoPacket;
  708.  
  709. // Overdrive clock setting structure definition.
  710.  
  711. /////////////////////////////////////////////////////////////////////////////////////////////
  712. ///\brief Structure containing the Overdrive clock setting.
  713. ///
  714. /// This structure is used to get the Overdrive clock setting.
  715. /// This structure is used by ADLAdapterODClockInfo.
  716. /// \nosubgrouping
  717. ////////////////////////////////////////////////////////////////////////////////////////////
  718. typedef struct ADLODClockSetting
  719. {
  720. /// Deafult clock
  721. int iDefaultClock;
  722. /// Current clock
  723. int iCurrentClock;
  724. /// Maximum clcok
  725. int iMaxClock;
  726. /// Minimum clock
  727. int iMinClock;
  728. /// Requested clcock
  729. int iRequestedClock;
  730. /// Step
  731. int iStepClock;
  732. } ADLODClockSetting;
  733.  
  734. /////////////////////////////////////////////////////////////////////////////////////////////
  735. ///\brief Structure containing the Overdrive clock information.
  736. ///
  737. /// This structure is used to get the Overdrive clock information.
  738. /// This structure is used by the ADL_Display_ODClockInfo_Get() function.
  739. /// \nosubgrouping
  740. ////////////////////////////////////////////////////////////////////////////////////////////
  741. typedef struct ADLAdapterODClockInfo
  742. {
  743. /// Size of the structure
  744. int iSize;
  745. /// Flag \ref define_clockinfo_flags
  746. int iFlags;
  747. /// Memory Clock
  748. ADLODClockSetting sMemoryClock;
  749. /// Engine Clock
  750. ADLODClockSetting sEngineClock;
  751. } ADLAdapterODClockInfo;
  752.  
  753. /////////////////////////////////////////////////////////////////////////////////////////////
  754. ///\brief Structure containing the Overdrive clock configuration.
  755. ///
  756. /// This structure is used to set the Overdrive clock configuration.
  757. /// This structure is used by the ADL_Display_ODClockConfig_Set() function.
  758. /// \nosubgrouping
  759. ////////////////////////////////////////////////////////////////////////////////////////////
  760. typedef struct ADLAdapterODClockConfig
  761. {
  762. /// Size of the structure
  763. int iSize;
  764. /// Flag \ref define_clockinfo_flags
  765. int iFlags;
  766. /// Memory Clock
  767. int iMemoryClock;
  768. /// Engine Clock
  769. int iEngineClock;
  770. } ADLAdapterODClockConfig;
  771.  
  772. /////////////////////////////////////////////////////////////////////////////////////////////
  773. ///\brief Structure containing information about current power management related activity.
  774. ///
  775. /// This structure is used to store information about current power management related activity.
  776. /// This structure (Overdrive 5 interfaces) is used by the ADL_PM_CurrentActivity_Get() function.
  777. /// \nosubgrouping
  778. ////////////////////////////////////////////////////////////////////////////////////////////
  779. typedef struct ADLPMActivity
  780. {
  781. /// Must be set to the size of the structure
  782. int iSize;
  783. /// Current engine clock.
  784. int iEngineClock;
  785. /// Current memory clock.
  786. int iMemoryClock;
  787. /// Current core voltage.
  788. int iVddc;
  789. /// GPU utilization.
  790. int iActivityPercent;
  791. /// Performance level index.
  792. int iCurrentPerformanceLevel;
  793. /// Current PCIE bus speed.
  794. int iCurrentBusSpeed;
  795. /// Number of PCIE bus lanes.
  796. int iCurrentBusLanes;
  797. /// Maximum number of PCIE bus lanes.
  798. int iMaximumBusLanes;
  799. /// Reserved for future purposes.
  800. int iReserved;
  801. } ADLPMActivity;
  802.  
  803. /////////////////////////////////////////////////////////////////////////////////////////////
  804. ///\brief Structure containing information about thermal controller.
  805. ///
  806. /// This structure is used to store information about thermal controller.
  807. /// This structure is used by ADL_PM_ThermalDevices_Enum.
  808. /// \nosubgrouping
  809. ////////////////////////////////////////////////////////////////////////////////////////////
  810. typedef struct ADLThermalControllerInfo
  811. {
  812. /// Must be set to the size of the structure
  813. int iSize;
  814. /// Possible valies: \ref ADL_DL_THERMAL_DOMAIN_OTHER or \ref ADL_DL_THERMAL_DOMAIN_GPU.
  815. int iThermalDomain;
  816. /// GPU 0, 1, etc.
  817. int iDomainIndex;
  818. /// Possible valies: \ref ADL_DL_THERMAL_FLAG_INTERRUPT or \ref ADL_DL_THERMAL_FLAG_FANCONTROL
  819. int iFlags;
  820. } ADLThermalControllerInfo;
  821.  
  822. /////////////////////////////////////////////////////////////////////////////////////////////
  823. ///\brief Structure containing information about thermal controller temperature.
  824. ///
  825. /// This structure is used to store information about thermal controller temperature.
  826. /// This structure is used by the ADL_PM_Temperature_Get() function.
  827. /// \nosubgrouping
  828. ////////////////////////////////////////////////////////////////////////////////////////////
  829. typedef struct ADLTemperature
  830. {
  831. /// Must be set to the size of the structure
  832. int iSize;
  833. /// Temperature in millidegrees Celsius.
  834. int iTemperature;
  835. } ADLTemperature;
  836.  
  837. /////////////////////////////////////////////////////////////////////////////////////////////
  838. ///\brief Structure containing information about thermal controller fan speed.
  839. ///
  840. /// This structure is used to store information about thermal controller fan speed.
  841. /// This structure is used by the ADL_PM_FanSpeedInfo_Get() function.
  842. /// \nosubgrouping
  843. ////////////////////////////////////////////////////////////////////////////////////////////
  844. typedef struct ADLFanSpeedInfo
  845. {
  846. /// Must be set to the size of the structure
  847. int iSize;
  848. /// \ref define_fanctrl
  849. int iFlags;
  850. /// Minimum possible fan speed value in percents.
  851. int iMinPercent;
  852. /// Maximum possible fan speed value in percents.
  853. int iMaxPercent;
  854. /// Minimum possible fan speed value in RPM.
  855. int iMinRPM;
  856. /// Maximum possible fan speed value in RPM.
  857. int iMaxRPM;
  858. } ADLFanSpeedInfo;
  859.  
  860. /////////////////////////////////////////////////////////////////////////////////////////////
  861. ///\brief Structure containing information about fan speed reported by thermal controller.
  862. ///
  863. /// This structure is used to store information about fan speed reported by thermal controller.
  864. /// This structure is used by the ADL_Overdrive5_FanSpeed_Get() and ADL_Overdrive5_FanSpeed_Set() functions.
  865. /// \nosubgroupingA
  866. ////////////////////////////////////////////////////////////////////////////////////////////
  867. typedef struct ADLFanSpeedValue
  868. {
  869. /// Must be set to the size of the structureA
  870. int iSize;
  871. /// Possible valies: \ref ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or \ref ADL_DL_FANCTRL_SPEED_TYPE_RPM
  872. int iSpeedType;
  873. /// Fan speed value
  874. int iFanSpeed;
  875. /// The only flag for now is: \ref ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED
  876. int iFlags;
  877. } ADLFanSpeedValue;
  878.  
  879. ////////////////////////////////////////////////////////////////////////////////////////////
  880. ///\brief Structure containing the range of Overdrive parameter.
  881. ///
  882. /// This structure is used to store information about the range of Overdrive parameter.
  883. /// This structure is used by ADLODParameters.
  884. /// \nosubgrouping
  885. ////////////////////////////////////////////////////////////////////////////////////////////
  886. typedef struct ADLODParameterRange
  887. {
  888. /// Minimum parameter value.
  889. int iMin;
  890. /// Maximum parameter value.
  891. int iMax;
  892. /// Parameter step value.
  893. int iStep;
  894. } ADLODParameterRange;
  895.  
  896. /////////////////////////////////////////////////////////////////////////////////////////////
  897. ///\brief Structure containing information about Overdrive parameters.
  898. ///
  899. /// This structure is used to store information about Overdrive parameters.
  900. /// This structure is used by the ADL_Overdrive5_ODParameters_Get() function.
  901. /// \nosubgrouping
  902. ////////////////////////////////////////////////////////////////////////////////////////////
  903. typedef struct ADLODParameters
  904. {
  905. /// Must be set to the size of the structure
  906. int iSize;
  907. /// Number of standard performance states.
  908. int iNumberOfPerformanceLevels;
  909. /// Indicates whether the GPU is capable to measure its activity.
  910. int iActivityReportingSupported;
  911. /// Indicates whether the GPU supports discrete performance levels or performance range.
  912. int iDiscretePerformanceLevels;
  913. /// Reserved for future use.
  914. int iReserved;
  915. /// Engine clock range.
  916. ADLODParameterRange sEngineClock;
  917. /// Memory clock range.
  918. ADLODParameterRange sMemoryClock;
  919. /// Core voltage range.
  920. ADLODParameterRange sVddc;
  921. } ADLODParameters;
  922.  
  923. /////////////////////////////////////////////////////////////////////////////////////////////
  924. ///\brief Structure containing information about Overdrive level.
  925. ///
  926. /// This structure is used to store information about Overdrive level.
  927. /// This structure is used by ADLODPerformanceLevels.
  928. /// \nosubgrouping
  929. ////////////////////////////////////////////////////////////////////////////////////////////
  930. typedef struct ADLODPerformanceLevel
  931. {
  932. /// Engine clock.
  933. int iEngineClock;
  934. /// Memory clock.
  935. int iMemoryClock;
  936. /// Core voltage.
  937. int iVddc;
  938. } ADLODPerformanceLevel;
  939.  
  940. /////////////////////////////////////////////////////////////////////////////////////////////
  941. ///\brief Structure containing information about Overdrive performance levels.
  942. ///
  943. /// This structure is used to store information about Overdrive performance levels.
  944. /// This structure is used by the ADL_Overdrive5_ODPerformanceLevels_Get() and ADL_Overdrive5_ODPerformanceLevels_Set() functions.
  945. /// \nosubgrouping
  946. ////////////////////////////////////////////////////////////////////////////////////////////
  947. typedef struct ADLODPerformanceLevels
  948. {
  949. /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
  950. int iSize;
  951. int iReserved;
  952. /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
  953. ADLODPerformanceLevel aLevels [1];
  954. } ADLODPerformanceLevels;
  955.  
  956. /////////////////////////////////////////////////////////////////////////////////////////////
  957. ///\brief Structure containing information about the proper CrossfireX chains combinations.
  958. ///
  959. /// This structure is used to store information about the CrossfireX chains combination for a particular adapter.
  960. /// This structure is used by the ADL_Adapter_Crossfire_Caps(), ADL_Adapter_Crossfire_Get(), and ADL_Adapter_Crossfire_Set() functions.
  961. /// \nosubgrouping
  962. ////////////////////////////////////////////////////////////////////////////////////////////
  963. typedef struct ADLCrossfireComb
  964. {
  965. /// Number of adapters in this combination.
  966. int iNumLinkAdapter;
  967. /// A list of ADL indexes of the linked adapters in this combination.
  968. int iAdaptLink[3];
  969. } ADLCrossfireComb;
  970.  
  971. /////////////////////////////////////////////////////////////////////////////////////////////
  972. ///\brief Structure containing CrossfireX state and error information.
  973. ///
  974. /// This structure is used to store state and error information about a particular adapter CrossfireX combination.
  975. /// This structure is used by the ADL_Adapter_Crossfire_Get() function.
  976. /// \nosubgrouping
  977. ////////////////////////////////////////////////////////////////////////////////////////////
  978. typedef struct ADLCrossfireInfo
  979. {
  980. /// Current error code of this CrossfireX combination.
  981. int iErrorCode;
  982. /// Current \ref define_crossfirestate
  983. int iState;
  984. /// If CrossfireX is supported by this combination. The value is either \ref ADL_TRUE or \ref ADL_FALSE.
  985. int iSupported;
  986. } ADLCrossfireInfo;
  987.  
  988. /////////////////////////////////////////////////////////////////////////////////////////////
  989. /// \brief Structure containing information about the BIOS.
  990. ///
  991. /// This structure is used to store various information about the Chipset. This
  992. /// information can be returned to the user.
  993. /// \nosubgrouping
  994. ////////////////////////////////////////////////////////////////////////////////////////////
  995. typedef struct ADLBiosInfo
  996. {
  997. char strPartNumber[ADL_MAX_PATH]; ///< Part number.
  998. char strVersion[ADL_MAX_PATH]; ///< Version number.
  999. char strDate[ADL_MAX_PATH]; ///< BIOS date in yyyy/mm/dd hh:mm format.
  1000. } ADLBiosInfo, *LPADLBiosInfo;
  1001.  
  1002.  
  1003. /////////////////////////////////////////////////////////////////////////////////////////////
  1004. /// \brief Structure containing information about adapter location.
  1005. ///
  1006. /// This structure is used to store information about adapter location.
  1007. /// This structure is used by ADLMVPUStatus.
  1008. /// \nosubgrouping
  1009. ////////////////////////////////////////////////////////////////////////////////////////////
  1010. typedef struct ADLAdapterLocation
  1011. {
  1012. /// PCI Bus number : 8 bits
  1013. int iBus;
  1014. /// Device number : 5 bits
  1015. int iDevice;
  1016. /// Function number : 3 bits
  1017. int iFunction;
  1018. } ADLAdapterLocation;
  1019.  
  1020. /////////////////////////////////////////////////////////////////////////////////////////////
  1021. /// \brief Structure containing information about MultiVPU capabilities.
  1022. ///
  1023. /// This structure is used to store information about MultiVPU capabilities.
  1024. /// This structure is used by the ADL_Display_MVPUCaps_Get() function.
  1025. /// \nosubgrouping
  1026. ////////////////////////////////////////////////////////////////////////////////////////////
  1027. typedef struct ADLMVPUCaps
  1028. {
  1029. /// Must be set to sizeof( ADLMVPUCaps ).
  1030. int iSize;
  1031. /// Number of adapters.
  1032. int iAdapterCount;
  1033. /// Bits set for all possible MVPU masters. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
  1034. int iPossibleMVPUMasters;
  1035. /// Bits set for all possible MVPU slaves. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
  1036. int iPossibleMVPUSlaves;
  1037. /// Registry path for each adapter.
  1038. char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH];
  1039. } ADLMVPUCaps;
  1040.  
  1041. /////////////////////////////////////////////////////////////////////////////////////////////
  1042. /// \brief Structure containing information about MultiVPU status.
  1043. ///
  1044. /// This structure is used to store information about MultiVPU status.
  1045. /// Ths structure is used by the ADL_Display_MVPUStatus_Get() function.
  1046. /// \nosubgrouping
  1047. ////////////////////////////////////////////////////////////////////////////////////////////
  1048. typedef struct ADLMVPUStatus
  1049. {
  1050. /// Must be set to sizeof( ADLMVPUStatus ).
  1051. int iSize;
  1052. /// Number of active adapters.
  1053. int iActiveAdapterCount;
  1054. /// MVPU status.
  1055. int iStatus;
  1056. /// PCI Bus/Device/Function for each active adapter participating in MVPU.
  1057. ADLAdapterLocation aAdapterLocation[ADL_DL_MAX_MVPU_ADAPTERS];
  1058. } ADLMVPUStatus;
  1059.  
  1060. // Displays Manager structures
  1061.  
  1062. ///////////////////////////////////////////////////////////////////////////
  1063. /// \brief Structure containing information about the activatable source.
  1064. ///
  1065. /// This structure is used to store activatable source information
  1066. /// This information can be returned to the user.
  1067. /// \nosubgrouping
  1068. ////////////////////////////////////////////////////////////////////////////////////////////
  1069. typedef struct ADLActivatableSource
  1070. {
  1071. /// The Persistent logical Adapter Index.
  1072. int iAdapterIndex;
  1073. /// The number of Activatable Sources.
  1074. int iNumActivatableSources;
  1075. /// The bit mask identifies the number of bits ActivatableSourceValue is using. (Not currnetly used)
  1076. int iActivatableSourceMask;
  1077. /// The bit mask identifies the status. (Not currnetly used)
  1078. int iActivatableSourceValue;
  1079. } ADLActivatableSource, *LPADLActivatableSource;
  1080.  
  1081. /////////////////////////////////////////////////////////////////////////////////////////////
  1082. /// \brief Structure containing information about display mode.
  1083. ///
  1084. /// This structure is used to store the display mode for the current adapter
  1085. /// such as X, Y positions, screen resolutions, orientation,
  1086. /// color depth, refresh rate, progressive or interlace mode, etc.
  1087. /// \nosubgrouping
  1088. ////////////////////////////////////////////////////////////////////////////////////////////
  1089.  
  1090. typedef struct ADLMode
  1091. {
  1092. /// Adapter index.
  1093. int iAdapterIndex;
  1094. /// Display IDs.
  1095. ADLDisplayID displayID;
  1096. /// Screen position X coordinate.
  1097. int iXPos;
  1098. /// Screen position Y coordinate.
  1099. int iYPos;
  1100. /// Screen resolution Width.
  1101. int iXRes;
  1102. /// Screen resolution Height.
  1103. int iYRes;
  1104. /// Screen Color Depth. E.g., 16, 32.
  1105. int iColourDepth;
  1106. /// Screen refresh rate. Could be fractional E.g. 59.97
  1107. float fRefreshRate;
  1108. /// Screen orientation. E.g., 0, 90, 180, 270.
  1109. int iOrientation;
  1110. /// Vista mode flag indicating Progressive or Interlaced mode.
  1111. int iModeFlag;
  1112. /// The bit mask identifying the number of bits this Mode is currently using. It is the sum of all the bit definitions defined in \ref define_displaymode
  1113. int iModeMask;
  1114. /// The bit mask identifying the display status. The detailed definition is in \ref define_displaymode
  1115. int iModeValue;
  1116. } ADLMode, *LPADLMode;
  1117.  
  1118.  
  1119. /////////////////////////////////////////////////////////////////////////////////////////////
  1120. /// \brief Structure containing information about display target information.
  1121. ///
  1122. /// This structure is used to store the display target information.
  1123. /// \nosubgrouping
  1124. ////////////////////////////////////////////////////////////////////////////////////////////
  1125. typedef struct ADLDisplayTarget
  1126. {
  1127. /// The Display ID.
  1128. ADLDisplayID displayID;
  1129.  
  1130. /// The display map index identify this manner and the desktop surface.
  1131. int iDisplayMapIndex;
  1132.  
  1133. /// The bit mask identifies the number of bits DisplayTarget is currently using. It is the sum of all the bit definitions defined in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED.
  1134. int iDisplayTargetMask;
  1135.  
  1136. /// The bit mask identifies the display status. The detailed definition is in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED.
  1137. int iDisplayTargetValue;
  1138.  
  1139. } ADLDisplayTarget, *LPADLDisplayTarget;
  1140.  
  1141.  
  1142. /////////////////////////////////////////////////////////////////////////////////////////////
  1143. ///\brief Structure containing information about the display SLS bezel Mode information.
  1144. ///
  1145. /// This structure is used to store the display SLS bezel Mode information.
  1146. /// \nosubgrouping
  1147. ////////////////////////////////////////////////////////////////////////////////////////////
  1148. typedef struct tagADLBezelTransientMode
  1149. {
  1150. /// Adapter Index
  1151. int iAdapterIndex;
  1152.  
  1153. /// SLS Map Index
  1154. int iSLSMapIndex;
  1155.  
  1156. /// The mode index
  1157. int iSLSModeIndex;
  1158.  
  1159. /// The mode
  1160. ADLMode displayMode;
  1161.  
  1162. /// The number of bezel offsets belongs to this map
  1163. int iNumBezelOffset;
  1164.  
  1165. /// The first bezel offset array index in the native mode array
  1166. int iFirstBezelOffsetArrayIndex;
  1167.  
  1168. /// The bit mask identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
  1169. int iSLSBezelTransientModeMask;
  1170.  
  1171. /// The bit mask identifies the display status. The detail definition is defined below.
  1172. int iSLSBezelTransientModeValue;
  1173.  
  1174. } ADLBezelTransientMode, *LPADLBezelTransientMode;
  1175.  
  1176.  
  1177. /////////////////////////////////////////////////////////////////////////////////////////////
  1178. /// \brief Structure containing information about the adapter display manner.
  1179. ///
  1180. /// This structure is used to store adapter display manner information
  1181. /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to
  1182. /// fetch various display device related display manner settings upon the user's request.
  1183. /// \nosubgrouping
  1184. ////////////////////////////////////////////////////////////////////////////////////////////
  1185. typedef struct ADLAdapterDisplayCap
  1186. {
  1187. /// The Persistent logical Adapter Index.
  1188. int iAdapterIndex;
  1189. /// The bit mask identifies the number of bits AdapterDisplayCap is currently using. Sum all the bits defined in ADL_ADAPTER_DISPLAYCAP_XXX
  1190. int iAdapterDisplayCapMask;
  1191. /// The bit mask identifies the status. Refer to ADL_ADAPTER_DISPLAYCAP_XXX
  1192. int iAdapterDisplayCapValue;
  1193. } ADLAdapterDisplayCap, *LPADLAdapterDisplayCap;
  1194.  
  1195.  
  1196. /////////////////////////////////////////////////////////////////////////////////////////////
  1197. ///\brief Structure containing information about display mapping.
  1198. ///
  1199. /// This structure is used to store the display mapping data such as display manner.
  1200. /// For displays with horizontal or vertical stretch manner,
  1201. /// this structure also stores the display order, display row, and column data.
  1202. /// \nosubgrouping
  1203. ////////////////////////////////////////////////////////////////////////////////////////////
  1204. typedef struct ADLDisplayMap
  1205. {
  1206. /// The current display map index. It is the OS desktop index. For example, if the OS index 1 is showing clone mode, the display map will be 1.
  1207. int iDisplayMapIndex;
  1208.  
  1209. /// The Display Mode for the current map
  1210. ADLMode displayMode;
  1211.  
  1212. /// The number of display targets belongs to this map\n
  1213. int iNumDisplayTarget;
  1214.  
  1215. /// The first target array index in the Target array\n
  1216. int iFirstDisplayTargetArrayIndex;
  1217.  
  1218. /// The bit mask identifies the number of bits DisplayMap is currently using. It is the sum of all the bit definitions defined in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx.
  1219. int iDisplayMapMask;
  1220.  
  1221. ///The bit mask identifies the display status. The detailed definition is in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx.
  1222. int iDisplayMapValue;
  1223.  
  1224. } ADLDisplayMap, *LPADLDisplayMap;
  1225.  
  1226.  
  1227. /////////////////////////////////////////////////////////////////////////////////////////////
  1228. /// \brief Structure containing information about the display device possible map for one GPU
  1229. ///
  1230. /// This structure is used to store the display device possible map
  1231. /// This information can be returned to the user.
  1232. /// \nosubgrouping
  1233. ////////////////////////////////////////////////////////////////////////////////////////////
  1234. typedef struct ADLPossibleMap
  1235. {
  1236. /// The current PossibleMap index. Each PossibleMap is assigned an index
  1237. int iIndex;
  1238. /// The adapter index identifying the GPU for which to validate these Maps & Targets
  1239. int iAdapterIndex;
  1240. /// Number of display Maps for this GPU to be validated
  1241. int iNumDisplayMap;
  1242. /// The display Maps list to validate
  1243. ADLDisplayMap* displayMap;
  1244. /// the number of display Targets for these display Maps
  1245. int iNumDisplayTarget;
  1246. /// The display Targets list for these display Maps to be validated.
  1247. ADLDisplayTarget* displayTarget;
  1248. } ADLPossibleMap, *LPADLPossibleMap;
  1249.  
  1250.  
  1251. /////////////////////////////////////////////////////////////////////////////////////////////
  1252. /// \brief Structure containing information about display possible mapping.
  1253. ///
  1254. /// This structure is used to store the display possible mapping's controller index for the current display.
  1255. /// \nosubgrouping
  1256. ////////////////////////////////////////////////////////////////////////////////////////////
  1257. typedef struct ADLPossibleMapping
  1258. {
  1259. int iDisplayIndex; ///< The display index. Each display is assigned an index.
  1260. int iDisplayControllerIndex; ///< The controller index to which display is mapped.
  1261. int iDisplayMannerSupported; ///< The supported display manner.
  1262. } ADLPossibleMapping, *LPADLPossibleMapping;
  1263.  
  1264. /////////////////////////////////////////////////////////////////////////////////////////////
  1265. /// \brief Structure containing information about the validated display device possible map result.
  1266. ///
  1267. /// This structure is used to store the validated display device possible map result
  1268. /// This information can be returned to the user.
  1269. /// \nosubgrouping
  1270. ////////////////////////////////////////////////////////////////////////////////////////////
  1271. typedef struct ADLPossibleMapResult
  1272. {
  1273. /// The current display map index. It is the OS Desktop index. For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1274. int iIndex;
  1275. // The bit mask identifies the number of bits PossibleMapResult is currently using. It will be the sum all the bit definitions defined in ADL_DISPLAY_POSSIBLEMAPRESULT_VALID.
  1276. int iPossibleMapResultMask;
  1277. /// The bit mask identifies the possible map result. The detail definition is defined in ADL_DISPLAY_POSSIBLEMAPRESULT_XXX.
  1278. int iPossibleMapResultValue;
  1279. } ADLPossibleMapResult, *LPADLPossibleMapResult;
  1280.  
  1281. /////////////////////////////////////////////////////////////////////////////////////////////
  1282. ///\brief Structure containing information about the display SLS Grid information.
  1283. ///
  1284. /// This structure is used to store the display SLS Grid information.
  1285. /// \nosubgrouping
  1286. ////////////////////////////////////////////////////////////////////////////////////////////
  1287. typedef struct ADLSLSGrid
  1288. {
  1289. /// The Adapter index.
  1290. int iAdapterIndex;
  1291.  
  1292. /// The grid index.
  1293. int iSLSGridIndex;
  1294.  
  1295. /// The grid row.
  1296. int iSLSGridRow;
  1297.  
  1298. /// The grid column.
  1299. int iSLSGridColumn;
  1300.  
  1301. /// The grid bit mask identifies the number of bits DisplayMap is currently using. Sum of all bits defined in ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
  1302. int iSLSGridMask;
  1303.  
  1304. /// The grid bit value identifies the display status. Refer to ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
  1305. int iSLSGridValue;
  1306.  
  1307. } ADLSLSGrid, *LPADLSLSGrid;
  1308.  
  1309. /////////////////////////////////////////////////////////////////////////////////////////////
  1310. ///\brief Structure containing information about the display SLS Map information.
  1311. ///
  1312. /// This structure is used to store the display SLS Map information.
  1313. /// \nosubgrouping
  1314. ////////////////////////////////////////////////////////////////////////////////////////////
  1315. typedef struct ADLSLSMap
  1316. {
  1317. /// The Adapter Index
  1318. int iAdapterIndex;
  1319.  
  1320. /// The current display map index. It is the OS Desktop index. For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1321. int iSLSMapIndex;
  1322.  
  1323. /// Indicate the current grid
  1324. ADLSLSGrid grid;
  1325.  
  1326. /// OS surface index
  1327. int iSurfaceMapIndex;
  1328.  
  1329. /// Screen orientation. E.g., 0, 90, 180, 270
  1330. int iOrientation;
  1331.  
  1332. /// The number of display targets belongs to this map
  1333. int iNumSLSTarget;
  1334.  
  1335. /// The first target array index in the Target array
  1336. int iFirstSLSTargetArrayIndex;
  1337.  
  1338. /// The number of native modes belongs to this map
  1339. int iNumNativeMode;
  1340.  
  1341. /// The first native mode array index in the native mode array
  1342. int iFirstNativeModeArrayIndex;
  1343.  
  1344. /// The number of bezel modes belongs to this map
  1345. int iNumBezelMode;
  1346.  
  1347. /// The first bezel mode array index in the native mode array
  1348. int iFirstBezelModeArrayIndex;
  1349.  
  1350. /// The number of bezel offsets belongs to this map
  1351. int iNumBezelOffset;
  1352.  
  1353. /// The first bezel offset array index in the
  1354. int iFirstBezelOffsetArrayIndex;
  1355.  
  1356. /// The bit mask identifies the number of bits DisplayMap is currently using. Sum all the bit definitions defined in ADL_DISPLAY_SLSMAP_XXX.
  1357. int iSLSMapMask;
  1358.  
  1359. /// The bit mask identifies the display map status. Refer to ADL_DISPLAY_SLSMAP_XXX
  1360. int iSLSMapValue;
  1361.  
  1362.  
  1363. } ADLSLSMap, *LPADLSLSMap;
  1364.  
  1365. /////////////////////////////////////////////////////////////////////////////////////////////
  1366. ///\brief Structure containing information about the display SLS Offset information.
  1367. ///
  1368. /// This structure is used to store the display SLS Offset information.
  1369. /// \nosubgrouping
  1370. ////////////////////////////////////////////////////////////////////////////////////////////
  1371. typedef struct ADLSLSOffset
  1372. {
  1373. /// The Adapter Index
  1374. int iAdapterIndex;
  1375.  
  1376. /// The current display map index. It is the OS Desktop index. For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1377. int iSLSMapIndex;
  1378.  
  1379. /// The Display ID.
  1380. ADLDisplayID displayID;
  1381.  
  1382. /// SLS Bezel Mode Index
  1383. int iBezelModeIndex;
  1384.  
  1385. /// SLS Bezel Offset X
  1386. int iBezelOffsetX;
  1387.  
  1388. /// SLS Bezel Offset Y
  1389. int iBezelOffsetY;
  1390.  
  1391. /// SLS Display Width
  1392. int iDisplayWidth;
  1393.  
  1394. /// SLS Display Height
  1395. int iDisplayHeight;
  1396.  
  1397. /// The bit mask identifies the number of bits Offset is currently using.
  1398. int iBezelOffsetMask;
  1399.  
  1400. /// The bit mask identifies the display status.
  1401. int iBezelffsetValue;
  1402. } ADLSLSOffset, *LPADLSLSOffset;
  1403.  
  1404. /////////////////////////////////////////////////////////////////////////////////////////////
  1405. ///\brief Structure containing information about the display SLS Mode information.
  1406. ///
  1407. /// This structure is used to store the display SLS Mode information.
  1408. /// \nosubgrouping
  1409. ////////////////////////////////////////////////////////////////////////////////////////////
  1410. typedef struct ADLSLSMode
  1411. {
  1412. /// The Adapter Index
  1413. int iAdapterIndex;
  1414.  
  1415. /// The current display map index. It is the OS Desktop index. For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1416. int iSLSMapIndex;
  1417.  
  1418. /// The mode index
  1419. int iSLSModeIndex;
  1420.  
  1421. /// The mode for this map.
  1422. ADLMode displayMode;
  1423.  
  1424. /// The bit mask identifies the number of bits Mode is currently using.
  1425. int iSLSNativeModeMask;
  1426.  
  1427. /// The bit mask identifies the display status.
  1428. int iSLSNativeModeValue;
  1429. } ADLSLSMode, *LPADLSLSMode;
  1430.  
  1431.  
  1432.  
  1433.  
  1434. /////////////////////////////////////////////////////////////////////////////////////////////
  1435. ///\brief Structure containing information about the display Possible SLS Map information.
  1436. ///
  1437. /// This structure is used to store the display Possible SLS Map information.
  1438. /// \nosubgrouping
  1439. ////////////////////////////////////////////////////////////////////////////////////////////
  1440. typedef struct ADLPossibleSLSMap
  1441. {
  1442. /// The current display map index. It is the OS Desktop index.
  1443. /// For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1444. int iSLSMapIndex;
  1445.  
  1446. /// Number of display map to be validated.
  1447. int iNumSLSMap;
  1448.  
  1449. /// The display map list for validation
  1450. ADLSLSMap* lpSLSMap;
  1451.  
  1452. /// the number of display map config to be validated.
  1453. int iNumSLSTarget;
  1454.  
  1455. /// The display target list for validation.
  1456. ADLDisplayTarget* lpDisplayTarget;
  1457. } ADLPossibleSLSMap, *LPADLPossibleSLSMap;
  1458.  
  1459.  
  1460. /////////////////////////////////////////////////////////////////////////////////////////////
  1461. ///\brief Structure containing information about the SLS targets.
  1462. ///
  1463. /// This structure is used to store the SLS targets information.
  1464. /// \nosubgrouping
  1465. ////////////////////////////////////////////////////////////////////////////////////////////
  1466. typedef struct ADLSLSTarget
  1467. {
  1468. /// the logic adapter index
  1469. int iAdapterIndex;
  1470.  
  1471. /// The SLS map index
  1472. int iSLSMapIndex;
  1473.  
  1474. /// The target ID
  1475. ADLDisplayTarget displayTarget;
  1476.  
  1477. /// Target postion X in SLS grid
  1478. int iSLSGridPositionX;
  1479.  
  1480. /// Target postion Y in SLS grid
  1481. int iSLSGridPositionY;
  1482.  
  1483. /// The view size width, height and rotation angle per SLS Target
  1484. ADLMode viewSize;
  1485.  
  1486. /// The bit mask identifies the bits in iSLSTargetValue are currently used
  1487. int iSLSTargetMask;
  1488.  
  1489. /// The bit mask identifies status info. It is for function extension purpose
  1490. int iSLSTargetValue;
  1491.  
  1492. } ADLSLSTarget, *LPADLSLSTarget;
  1493.  
  1494. /////////////////////////////////////////////////////////////////////////////////////////////
  1495. ///\brief Structure containing information about the Adapter offset stepping size.
  1496. ///
  1497. /// This structure is used to store the Adapter offset stepping size information.
  1498. /// \nosubgrouping
  1499. ////////////////////////////////////////////////////////////////////////////////////////////
  1500. typedef struct ADLBezelOffsetSteppingSize
  1501. {
  1502. /// the logic adapter index
  1503. int iAdapterIndex;
  1504.  
  1505. /// The SLS map index
  1506. int iSLSMapIndex;
  1507.  
  1508. /// Bezel X stepping size offset
  1509. int iBezelOffsetSteppingSizeX;
  1510.  
  1511. /// Bezel Y stepping size offset
  1512. int iBezelOffsetSteppingSizeY;
  1513.  
  1514. /// Identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
  1515. int iBezelOffsetSteppingSizeMask;
  1516.  
  1517. /// Bit mask identifies the display status.
  1518. int iBezelOffsetSteppingSizeValue;
  1519.  
  1520. } ADLBezelOffsetSteppingSize, *LPADLBezelOffsetSteppingSize;
  1521.  
  1522.  
  1523.  
  1524. // @}
  1525. #endif /* ADL_STRUCTURES_H_ */
  1526.  
  1527.  
  1528.  
Advertisement
Add Comment
Please, Sign In to add comment