adl_structures.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. /* The statements-of-fact provided herein are intended to be compatible with
  2. * AMD ADL's library. AMD is the creator and copyright holder of the ADL
  3. * library this interface describes, and therefore also defined this interface
  4. * originally.
  5. * These free interfaces were created by Luke Dashjr <luke+freeadl@dashjr.org>
  6. * As interfaces/APIs cannot be copyrighted, there is no license needed in the
  7. * USA and probably many other jurisdictions.
  8. * If your jurisdiction rules otherwise, the header is offered by Luke Dashjr
  9. * under the MIT license, but you are responsible for determining who your
  10. * jurisdiction considers to be the copyright holder in such a case.
  11. *
  12. * THE INFORMATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  13. * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  14. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  15. * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  16. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  17. * CONNECTION WITH THE INFORMATION OR THE USE OR OTHER DEALINGS IN THE
  18. * INFORMATION.
  19. */
  20. #ifndef ADL_STRUCTURES_H_
  21. #define ADL_STRUCTURES_H_
  22. #include "adl_defines.h"
  23. typedef struct AdapterInfo {
  24. int iSize;
  25. int iAdapterIndex;
  26. char strUDID[ADL_MAX_PATH];
  27. int iBusNumber;
  28. int iDeviceNumber;
  29. int iFunctionNumber;
  30. int iVendorID;
  31. char strAdapterName[ADL_MAX_PATH];
  32. char strDisplayName[ADL_MAX_PATH];
  33. int iPresent;
  34. #ifdef WIN32
  35. int iExist;
  36. char strDriverPath[ADL_MAX_PATH];
  37. char strDriverPathExt[ADL_MAX_PATH];
  38. char strPNPString[ADL_MAX_PATH];
  39. int iOSDisplayIndex;
  40. #elif !defined(__APPLE__) /* Linux */
  41. int iXScreenNum;
  42. int iDrvIndex;
  43. char strXScreenConfigName[ADL_MAX_PATH];
  44. #endif /* Linux */
  45. } AdapterInfo, *LPAdapterInfo;
  46. #if !(defined(WIN32) || defined(__APPLE__))
  47. typedef struct XScreenInfo {
  48. int iXScreenNum;
  49. char strXScreenConfigName[ADL_MAX_PATH];
  50. } XScreenInfo, *LPXScreenInfo;
  51. #endif /* Linux */
  52. typedef struct ADLMemoryInfo {
  53. long long iMemorySize;
  54. char strMemoryType[ADL_MAX_PATH];
  55. long long iMemoryBandwidth;
  56. } ADLMemoryInfo, *LPADLMemoryInfo;
  57. typedef struct ADLDDCInfo {
  58. int ulSize;
  59. int ulSupportsDDC;
  60. int ulManufacturerID;
  61. int ulProductID;
  62. char cDisplayName[ADL_MAX_DISPLAY_NAME];
  63. int ulMaxHResolution;
  64. int ulMaxVResolution;
  65. int ulMaxRefresh;
  66. int ulPTMCx;
  67. int ulPTMCy;
  68. int ulPTMRefreshRate;
  69. int ulDDCInfoFlag;
  70. } ADLDDCInfo, *LPADLDDCInfo;
  71. typedef struct ADLGamma {
  72. float fRed;
  73. float fGreen;
  74. float fBlue;
  75. } ADLGamma, *LPADLGamma;
  76. typedef struct ADLCustomMode {
  77. int iFlags;
  78. int iModeWidth;
  79. int iModeHeight;
  80. int iBaseModeWidth;
  81. int iBaseModeHeight;
  82. int iRefreshRate;
  83. } ADLCustomMode, *LPADLCustomMode;
  84. typedef struct ADLGetClocksOUT {
  85. long ulHighCoreClock;
  86. long ulHighMemoryClock;
  87. long ulHighVddc;
  88. long ulCoreMin;
  89. long ulCoreMax;
  90. long ulMemoryMin;
  91. long ulMemoryMax;
  92. long ulActivityPercent;
  93. long ulCurrentCoreClock;
  94. long ulCurrentMemoryClock;
  95. long ulReserved;
  96. } ADLGetClocksOUT;
  97. typedef struct ADLDisplayConfig {
  98. long ulSize;
  99. long ulConnectorType;
  100. long ulDeviceData;
  101. long ulOverridedDeviceData;
  102. long ulReserved;
  103. } ADLDisplayConfig;
  104. typedef struct ADLDisplayID {
  105. int iDisplayLogicalIndex;
  106. int iDisplayPhysicalIndex;
  107. int iDisplayLogicalAdapterIndex;
  108. int iDisplayPhysicalAdapterIndex;
  109. } ADLDisplayID, *LPADLDisplayID;
  110. typedef struct ADLDisplayInfo {
  111. ADLDisplayID displayID;
  112. int iDisplayControllerIndex;
  113. char strDisplayName[ADL_MAX_PATH];
  114. char strDisplayManufacturerName[ADL_MAX_PATH];
  115. int iDisplayType;
  116. int iDisplayOutputType;
  117. int iDisplayConnector;
  118. int iDisplayInfoMask;
  119. int iDisplayInfoValue;
  120. } ADLDisplayInfo, *LPADLDisplayInfo;
  121. typedef struct ADLDisplayMode {
  122. int iPelsHeight;
  123. int iPelsWidth;
  124. int iBitsPerPel;
  125. int iDisplayFrequency;
  126. } ADLDisplayMode;
  127. typedef struct ADLDetailedTiming {
  128. int iSize;
  129. short sTimingFlags;
  130. short sHTotal;
  131. short sHDisplay;
  132. short sHSyncStart;
  133. short sHSyncWidth;
  134. short sVTotal;
  135. short sVDisplay;
  136. short sVSyncStart;
  137. short sVSyncWidth;
  138. short sPixelClock;
  139. short sHOverscanRight;
  140. short sHOverscanLeft;
  141. short sVOverscanBottom;
  142. short sVOverscanTop;
  143. short sOverscan8B;
  144. short sOverscanGR;
  145. } ADLDetailedTiming;
  146. typedef struct ADLDisplayModeInfo {
  147. int iTimingStandard;
  148. int iPossibleStandard;
  149. int iRefreshRate;
  150. int iPelsWidth;
  151. int iPelsHeight;
  152. ADLDetailedTiming sDetailedTiming;
  153. } ADLDisplayModeInfo;
  154. typedef struct ADLDisplayProperty {
  155. int iSize;
  156. int iPropertyType;
  157. int iExpansionMode;
  158. int iSupport;
  159. int iCurrent;
  160. int iDefault;
  161. } ADLDisplayProperty;
  162. typedef struct ADLClockInfo {
  163. int iCoreClock;
  164. int iMemoryClock;
  165. } ADLClockInfo, *LPADLClockInfo;
  166. typedef struct ADLI2C {
  167. int iSize;
  168. int iLine;
  169. int iAddress;
  170. int iOffset;
  171. int iAction;
  172. int iSpeed;
  173. int iDataSize;
  174. char *pcData;
  175. } ADLI2C;
  176. typedef struct ADLDisplayEDIDData {
  177. int iSize;
  178. int iFlag;
  179. int iEDIDSize;
  180. int iBlockIndex;
  181. char cEDIDData[ADL_MAX_EDIDDATA_SIZE];
  182. int iReserved[4];
  183. } ADLDisplayEDIDData;
  184. typedef struct ADLControllerOverlayInput {
  185. int iSize;
  186. int iOverlayAdjust;
  187. int iValue;
  188. int iReserved;
  189. } ADLControllerOverlayInput;
  190. typedef struct ADLAdjustmentinfo {
  191. int iDefault;
  192. int iMin;
  193. int iMax;
  194. int iStep;
  195. } ADLAdjustmentinfo;
  196. typedef struct ADLControllerOverlayInfo {
  197. int iSize;
  198. ADLAdjustmentinfo sOverlayInfo;
  199. int iReserved[3];
  200. } ADLControllerOverlayInfo;
  201. typedef struct ADLGLSyncModuleID {
  202. int iModuleID;
  203. int iGlSyncGPUPort;
  204. int iFWBootSectorVersion;
  205. int iFWUserSectorVersion;
  206. } ADLGLSyncModuleID , *LPADLGLSyncModuleID;
  207. typedef struct ADLGLSyncPortCaps {
  208. int iPortType;
  209. int iNumOfLEDs;
  210. } ADLGLSyncPortCaps, *LPADLGLSyncPortCaps;
  211. typedef struct ADLGLSyncGenlockConfig {
  212. int iValidMask;
  213. int iSyncDelay;
  214. int iFramelockCntlVector;
  215. int iSignalSource;
  216. int iSampleRate;
  217. int iSyncField;
  218. int iTriggerEdge;
  219. int iScanRateCoeff;
  220. } ADLGLSyncGenlockConfig, *LPADLGLSyncGenlockConfig;
  221. typedef struct ADLGlSyncPortInfo {
  222. int iPortType;
  223. int iNumOfLEDs;
  224. int iPortState;
  225. int iFrequency;
  226. int iSignalType;
  227. int iSignalSource;
  228. } ADLGlSyncPortInfo, *LPADLGlSyncPortInfo;
  229. typedef struct ADLGlSyncPortControl {
  230. int iPortType;
  231. int iControlVector;
  232. int iSignalSource;
  233. } ADLGlSyncPortControl;
  234. typedef struct ADLGlSyncMode {
  235. int iControlVector;
  236. int iStatusVector;
  237. int iGLSyncConnectorIndex;
  238. } ADLGlSyncMode, *LPADLGlSyncMode;
  239. typedef struct ADLGlSyncMode2 {
  240. int iControlVector;
  241. int iStatusVector;
  242. int iGLSyncConnectorIndex;
  243. int iDisplayIndex;
  244. } ADLGlSyncMode2, *LPADLGlSyncMode2;
  245. typedef struct ADLInfoPacket {
  246. char hb0;
  247. char hb1;
  248. char hb2;
  249. char sb[28];
  250. } ADLInfoPacket;
  251. typedef struct ADLAVIInfoPacket {
  252. char bPB3_ITC;
  253. char bPB5;
  254. } ADLAVIInfoPacket;
  255. typedef struct ADLODClockSetting {
  256. int iDefaultClock;
  257. int iCurrentClock;
  258. int iMaxClock;
  259. int iMinClock;
  260. int iRequestedClock;
  261. int iStepClock;
  262. } ADLODClockSetting;
  263. typedef struct ADLAdapterODClockInfo {
  264. int iSize;
  265. int iFlags;
  266. ADLODClockSetting sMemoryClock;
  267. ADLODClockSetting sEngineClock;
  268. } ADLAdapterODClockInfo;
  269. typedef struct ADLAdapterODClockConfig {
  270. int iSize;
  271. int iFlags;
  272. int iMemoryClock;
  273. int iEngineClock;
  274. } ADLAdapterODClockConfig;
  275. typedef struct ADLPMActivity {
  276. int iSize;
  277. int iEngineClock;
  278. int iMemoryClock;
  279. int iVddc;
  280. int iActivityPercent;
  281. int iCurrentPerformanceLevel;
  282. int iCurrentBusSpeed;
  283. int iCurrentBusLanes;
  284. int iMaximumBusLanes;
  285. int iReserved;
  286. } ADLPMActivity;
  287. typedef struct ADLThermalControllerInfo {
  288. int iSize;
  289. int iThermalDomain;
  290. int iDomainIndex;
  291. int iFlags;
  292. } ADLThermalControllerInfo;
  293. typedef struct ADLTemperature {
  294. int iSize;
  295. int iTemperature;
  296. } ADLTemperature;
  297. typedef struct ADLFanSpeedInfo {
  298. int iSize;
  299. int iFlags;
  300. int iMinPercent;
  301. int iMaxPercent;
  302. int iMinRPM;
  303. int iMaxRPM;
  304. } ADLFanSpeedInfo;
  305. typedef struct ADLFanSpeedValue {
  306. int iSize;
  307. int iSpeedType;
  308. int iFanSpeed;
  309. int iFlags;
  310. } ADLFanSpeedValue;
  311. typedef struct ADLODParameterRange {
  312. int iMin;
  313. int iMax;
  314. int iStep;
  315. } ADLODParameterRange;
  316. typedef struct ADLODParameters {
  317. int iSize;
  318. int iNumberOfPerformanceLevels;
  319. int iActivityReportingSupported;
  320. int iDiscretePerformanceLevels;
  321. int iReserved;
  322. ADLODParameterRange sEngineClock;
  323. ADLODParameterRange sMemoryClock;
  324. ADLODParameterRange sVddc;
  325. } ADLODParameters;
  326. typedef struct ADLODPerformanceLevel {
  327. int iEngineClock;
  328. int iMemoryClock;
  329. int iVddc;
  330. } ADLODPerformanceLevel;
  331. typedef struct ADLODPerformanceLevels {
  332. int iSize;
  333. int iReserved;
  334. ADLODPerformanceLevel aLevels[1];
  335. } ADLODPerformanceLevels;
  336. typedef struct ADLCrossfireComb {
  337. int iNumLinkAdapter;
  338. int iAdaptLink[3];
  339. } ADLCrossfireComb;
  340. typedef struct ADLCrossfireInfo {
  341. int iErrorCode;
  342. int iState;
  343. int iSupported;
  344. } ADLCrossfireInfo;
  345. typedef struct ADLBiosInfo {
  346. char strPartNumber[ADL_MAX_PATH];
  347. char strVersion[ADL_MAX_PATH];
  348. char strDate[ADL_MAX_PATH];
  349. } ADLBiosInfo, *LPADLBiosInfo;
  350. typedef struct ADLAdapterLocation {
  351. int iBus;
  352. int iDevice;
  353. int iFunction;
  354. } ADLAdapterLocation;
  355. typedef struct ADLMVPUCaps {
  356. int iSize;
  357. int iAdapterCount;
  358. int iPossibleMVPUMasters;
  359. int iPossibleMVPUSlaves;
  360. char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH];
  361. } ADLMVPUCaps;
  362. typedef struct ADLMVPUStatus {
  363. int iSize;
  364. int iActiveAdapterCount;
  365. int iStatus;
  366. ADLAdapterLocation aAdapterLocation[ADL_DL_MAX_MVPU_ADAPTERS];
  367. } ADLMVPUStatus;
  368. typedef struct ADLActivatableSource {
  369. int iAdapterIndex;
  370. int iNumActivatableSources;
  371. int iActivatableSourceMask;
  372. int iActivatableSourceValue;
  373. } ADLActivatableSource, *LPADLActivatableSource;
  374. typedef struct ADLMode {
  375. int iAdapterIndex;
  376. ADLDisplayID displayID;
  377. int iXPos;
  378. int iYPos;
  379. int iXRes;
  380. int iYRes;
  381. int iColourDepth;
  382. float fRefreshRate;
  383. int iOrientation;
  384. int iModeFlag;
  385. int iModeMask;
  386. int iModeValue;
  387. } ADLMode, *LPADLMode;
  388. typedef struct ADLDisplayTarget {
  389. ADLDisplayID displayID;
  390. int iDisplayMapIndex;
  391. int iDisplayTargetMask;
  392. int iDisplayTargetValue;
  393. } ADLDisplayTarget, *LPADLDisplayTarget;
  394. typedef struct tagADLBezelTransientMode {
  395. int iAdapterIndex;
  396. int iSLSMapIndex;
  397. int iSLSModeIndex;
  398. ADLMode displayMode;
  399. int iNumBezelOffset;
  400. int iFirstBezelOffsetArrayIndex;
  401. int iSLSBezelTransientModeMask;
  402. int iSLSBezelTransientModeValue;
  403. } ADLBezelTransientMode, *LPADLBezelTransientMode;
  404. typedef struct ADLAdapterDisplayCap {
  405. int iAdapterIndex;
  406. int iAdapterDisplayCapMask;
  407. int iAdapterDisplayCapValue;
  408. } ADLAdapterDisplayCap, *LPADLAdapterDisplayCap;
  409. typedef struct ADLDisplayMap {
  410. int iDisplayMapIndex;
  411. ADLMode displayMode;
  412. int iNumDisplayTarget;
  413. int iFirstDisplayTargetArrayIndex;
  414. int iDisplayMapMask;
  415. int iDisplayMapValue;
  416. } ADLDisplayMap, *LPADLDisplayMap;
  417. typedef struct ADLPossibleMap {
  418. int iIndex;
  419. int iAdapterIndex;
  420. int iNumDisplayMap;
  421. ADLDisplayMap* displayMap;
  422. int iNumDisplayTarget;
  423. ADLDisplayTarget* displayTarget;
  424. } ADLPossibleMap, *LPADLPossibleMap;
  425. typedef struct ADLPossibleMapping {
  426. int iDisplayIndex;
  427. int iDisplayControllerIndex;
  428. int iDisplayMannerSupported;
  429. } ADLPossibleMapping, *LPADLPossibleMapping;
  430. typedef struct ADLPossibleMapResult {
  431. int iIndex;
  432. int iPossibleMapResultMask;
  433. int iPossibleMapResultValue;
  434. } ADLPossibleMapResult, *LPADLPossibleMapResult;
  435. typedef struct ADLSLSGrid {
  436. int iAdapterIndex;
  437. int iSLSGridIndex;
  438. int iSLSGridRow;
  439. int iSLSGridColumn;
  440. int iSLSGridMask;
  441. int iSLSGridValue;
  442. } ADLSLSGrid, *LPADLSLSGrid;
  443. typedef struct ADLSLSMap {
  444. int iAdapterIndex;
  445. int iSLSMapIndex;
  446. ADLSLSGrid grid;
  447. int iSurfaceMapIndex;
  448. int iOrientation;
  449. int iNumSLSTarget;
  450. int iFirstSLSTargetArrayIndex;
  451. int iNumNativeMode;
  452. int iFirstNativeModeArrayIndex;
  453. int iNumBezelMode;
  454. int iFirstBezelModeArrayIndex;
  455. int iNumBezelOffset;
  456. int iFirstBezelOffsetArrayIndex;
  457. int iSLSMapMask;
  458. int iSLSMapValue;
  459. } ADLSLSMap, *LPADLSLSMap;
  460. typedef struct ADLSLSOffset {
  461. int iAdapterIndex;
  462. int iSLSMapIndex;
  463. ADLDisplayID displayID;
  464. int iBezelModeIndex;
  465. int iBezelOffsetX;
  466. int iBezelOffsetY;
  467. int iDisplayWidth;
  468. int iDisplayHeight;
  469. int iBezelOffsetMask;
  470. int iBezelffsetValue;
  471. } ADLSLSOffset, *LPADLSLSOffset;
  472. typedef struct ADLSLSMode {
  473. int iAdapterIndex;
  474. int iSLSMapIndex;
  475. int iSLSModeIndex;
  476. ADLMode displayMode;
  477. int iSLSNativeModeMask;
  478. int iSLSNativeModeValue;
  479. } ADLSLSMode, *LPADLSLSMode;
  480. typedef struct ADLPossibleSLSMap {
  481. int iSLSMapIndex;
  482. int iNumSLSMap;
  483. ADLSLSMap* lpSLSMap;
  484. int iNumSLSTarget;
  485. ADLDisplayTarget* lpDisplayTarget;
  486. } ADLPossibleSLSMap, *LPADLPossibleSLSMap;
  487. typedef struct ADLSLSTarget {
  488. int iAdapterIndex;
  489. int iSLSMapIndex;
  490. ADLDisplayTarget displayTarget;
  491. int iSLSGridPositionX;
  492. int iSLSGridPositionY;
  493. ADLMode viewSize;
  494. int iSLSTargetMask;
  495. int iSLSTargetValue;
  496. } ADLSLSTarget, *LPADLSLSTarget;
  497. typedef struct ADLBezelOffsetSteppingSize {
  498. int iAdapterIndex;
  499. int iSLSMapIndex;
  500. int iBezelOffsetSteppingSizeX;
  501. int iBezelOffsetSteppingSizeY;
  502. int iBezelOffsetSteppingSizeMask;
  503. int iBezelOffsetSteppingSizeValue;
  504. } ADLBezelOffsetSteppingSize, *LPADLBezelOffsetSteppingSize;
  505. #endif /* ADL_STRUCTURES_H_ */