一款显示网速、系统利用的软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

adl_structures.h 134KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440
  1. //
  2. // Copyright (c) 2016 Advanced Micro Devices, Inc. All rights reserved.
  3. //
  4. // MIT LICENSE:
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy
  6. // of this software and associated documentation files (the "Software"), to deal
  7. // in the Software without restriction, including without limitation the rights
  8. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. // copies of the Software, and to permit persons to whom the Software is
  10. // furnished to do so, subject to the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be included in
  13. // all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21. // SOFTWARE.
  22. /// \file adl_structures.h
  23. ///\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>
  24. ///
  25. /// All data structures used in AMD Display Library (ADL) public interfaces should be defined in this header file.
  26. ///
  27. #ifndef ADL_STRUCTURES_H_
  28. #define ADL_STRUCTURES_H_
  29. #include "adl_defines.h"
  30. /////////////////////////////////////////////////////////////////////////////////////////////
  31. ///\brief Structure containing information about the graphics adapter.
  32. ///
  33. /// This structure is used to store various information about the graphics adapter. This
  34. /// information can be returned to the user. Alternatively, it can be used to access various driver calls to set
  35. /// or fetch various settings upon the user's request.
  36. /// \nosubgrouping
  37. ////////////////////////////////////////////////////////////////////////////////////////////
  38. typedef struct AdapterInfo
  39. {
  40. /// \ALL_STRUCT_MEM
  41. /// Size of the structure.
  42. int iSize;
  43. /// The ADL index handle. One GPU may be associated with one or two index handles
  44. int iAdapterIndex;
  45. /// The unique device ID associated with this adapter.
  46. char strUDID[ADL_MAX_PATH];
  47. /// The BUS number associated with this adapter.
  48. int iBusNumber;
  49. /// The driver number associated with this adapter.
  50. int iDeviceNumber;
  51. /// The function number.
  52. int iFunctionNumber;
  53. /// The vendor ID associated with this adapter.
  54. int iVendorID;
  55. /// Adapter name.
  56. char strAdapterName[ADL_MAX_PATH];
  57. /// Display name. For example, "\\\\Display0" for Windows or ":0:0" for Linux.
  58. char strDisplayName[ADL_MAX_PATH];
  59. /// 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
  60. int iPresent;
  61. #if defined (_WIN32) || defined (_WIN64)
  62. /// \WIN_STRUCT_MEM
  63. /// Exist or not; 1 is exist and 0 is not present.
  64. int iExist;
  65. /// Driver registry path.
  66. char strDriverPath[ADL_MAX_PATH];
  67. /// Driver registry path Ext for.
  68. char strDriverPathExt[ADL_MAX_PATH];
  69. /// PNP string from Windows.
  70. char strPNPString[ADL_MAX_PATH];
  71. /// It is generated from EnumDisplayDevices.
  72. int iOSDisplayIndex;
  73. #endif /* (_WIN32) || (_WIN64) */
  74. #if defined (LINUX)
  75. /// \LNX_STRUCT_MEM
  76. /// Internal X screen number from GPUMapInfo (DEPRICATED use XScreenInfo)
  77. int iXScreenNum;
  78. /// Internal driver index from GPUMapInfo
  79. int iDrvIndex;
  80. /// \deprecated Internal x config file screen identifier name. Use XScreenInfo instead.
  81. char strXScreenConfigName[ADL_MAX_PATH];
  82. #endif /* (LINUX) */
  83. } AdapterInfo, *LPAdapterInfo;
  84. /////////////////////////////////////////////////////////////////////////////////////////////
  85. ///\brief Structure containing information about the Linux X screen information.
  86. ///
  87. /// This structure is used to store the current screen number and xorg.conf ID name assoicated with an adapter index.
  88. /// This structure is updated during ADL_Main_Control_Refresh or ADL_ScreenInfo_Update.
  89. /// Note: This structure should be used in place of iXScreenNum and strXScreenConfigName in AdapterInfo as they will be
  90. /// deprecated.
  91. /// \nosubgrouping
  92. ////////////////////////////////////////////////////////////////////////////////////////////
  93. #if defined (LINUX)
  94. typedef struct XScreenInfo
  95. {
  96. /// Internal X screen number from GPUMapInfo.
  97. int iXScreenNum;
  98. /// Internal x config file screen identifier name.
  99. char strXScreenConfigName[ADL_MAX_PATH];
  100. } XScreenInfo, *LPXScreenInfo;
  101. #endif /* (LINUX) */
  102. /////////////////////////////////////////////////////////////////////////////////////////////
  103. ///\brief Structure containing information about the ASIC memory.
  104. ///
  105. /// This structure is used to store various information about the ASIC memory. This
  106. /// information can be returned to the user.
  107. /// \nosubgrouping
  108. ////////////////////////////////////////////////////////////////////////////////////////////
  109. typedef struct ADLMemoryInfo
  110. {
  111. /// Memory size in bytes.
  112. long long iMemorySize;
  113. /// Memory type in string.
  114. char strMemoryType[ADL_MAX_PATH];
  115. /// Memory bandwidth in Mbytes/s.
  116. long long iMemoryBandwidth;
  117. } ADLMemoryInfo, *LPADLMemoryInfo;
  118. /////////////////////////////////////////////////////////////////////////////////////////////
  119. ///\brief Structure containing information about memory required by type
  120. ///
  121. /// This structure is returned by ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration
  122. /// will return the Memory used.
  123. /// \nosubgrouping
  124. ////////////////////////////////////////////////////////////////////////////////////////////
  125. typedef struct ADLMemoryRequired
  126. {
  127. long long iMemoryReq; /// Memory in bytes required
  128. int iType; /// Type of Memory \ref define_adl_validmemoryrequiredfields
  129. int iDisplayFeatureValue; /// Display features \ref define_adl_visiblememoryfeatures that are using this type of memory
  130. } ADLMemoryRequired, *LPADLMemoryRequired;
  131. /////////////////////////////////////////////////////////////////////////////////////////////
  132. ///\brief Structure containing information about the features associated with a display
  133. ///
  134. /// This structure is a parameter to ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration
  135. /// will return the Memory used.
  136. /// \nosubgrouping
  137. ////////////////////////////////////////////////////////////////////////////////////////////
  138. typedef struct ADLMemoryDisplayFeatures
  139. {
  140. int iDisplayIndex; /// ADL Display index
  141. int iDisplayFeatureValue; /// features that the display is using \ref define_adl_visiblememoryfeatures
  142. } ADLMemoryDisplayFeatures, *LPADLMemoryDisplayFeatures;
  143. /////////////////////////////////////////////////////////////////////////////////////////////
  144. ///\brief Structure containing DDC information.
  145. ///
  146. /// This structure is used to store various DDC information that can be returned to the user.
  147. /// Note that all fields of type int are actually defined as unsigned int types within the driver.
  148. /// \nosubgrouping
  149. ////////////////////////////////////////////////////////////////////////////////////////////
  150. typedef struct ADLDDCInfo
  151. {
  152. /// Size of the structure
  153. int ulSize;
  154. /// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC information fields will be used.
  155. int ulSupportsDDC;
  156. /// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.
  157. int ulManufacturerID;
  158. /// Returns the product ID of the display device. Should be zeroed if this information is not available.
  159. int ulProductID;
  160. /// Returns the name of the display device. Should be zeroed if this information is not available.
  161. char cDisplayName[ADL_MAX_DISPLAY_NAME];
  162. /// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.
  163. int ulMaxHResolution;
  164. /// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available.
  165. int ulMaxVResolution;
  166. /// Returns the maximum supported refresh rate. Should be zeroed if this information is not available.
  167. int ulMaxRefresh;
  168. /// Returns the display device preferred timing mode's horizontal resolution.
  169. int ulPTMCx;
  170. /// Returns the display device preferred timing mode's vertical resolution.
  171. int ulPTMCy;
  172. /// Returns the display device preferred timing mode's refresh rate.
  173. int ulPTMRefreshRate;
  174. /// Return EDID flags.
  175. int ulDDCInfoFlag;
  176. } ADLDDCInfo, *LPADLDDCInfo;
  177. /////////////////////////////////////////////////////////////////////////////////////////////
  178. ///\brief Structure containing DDC information.
  179. ///
  180. /// This structure is used to store various DDC information that can be returned to the user.
  181. /// Note that all fields of type int are actually defined as unsigned int types within the driver.
  182. /// \nosubgrouping
  183. ////////////////////////////////////////////////////////////////////////////////////////////
  184. typedef struct ADLDDCInfo2
  185. {
  186. /// Size of the structure
  187. int ulSize;
  188. /// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC
  189. /// information fields will be used.
  190. int ulSupportsDDC;
  191. /// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.
  192. int ulManufacturerID;
  193. /// Returns the product ID of the display device. Should be zeroed if this information is not available.
  194. int ulProductID;
  195. /// Returns the name of the display device. Should be zeroed if this information is not available.
  196. char cDisplayName[ADL_MAX_DISPLAY_NAME];
  197. /// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.
  198. int ulMaxHResolution;
  199. /// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available.
  200. int ulMaxVResolution;
  201. /// Returns the maximum supported refresh rate. Should be zeroed if this information is not available.
  202. int ulMaxRefresh;
  203. /// Returns the display device preferred timing mode's horizontal resolution.
  204. int ulPTMCx;
  205. /// Returns the display device preferred timing mode's vertical resolution.
  206. int ulPTMCy;
  207. /// Returns the display device preferred timing mode's refresh rate.
  208. int ulPTMRefreshRate;
  209. /// Return EDID flags.
  210. int ulDDCInfoFlag;
  211. /// Returns 1 if the display supported packed pixel, 0 otherwise
  212. int bPackedPixelSupported;
  213. /// Returns the Pixel formats the display supports \ref define_ddcinfo_pixelformats
  214. int iPanelPixelFormat;
  215. /// Return EDID serial ID.
  216. int ulSerialID;
  217. /// Return minimum monitor luminance data
  218. int ulMinLuminanceData;
  219. /// Return average monitor luminance data
  220. int ulAvgLuminanceData;
  221. /// Return maximum monitor luminance data
  222. int ulMaxLuminanceData;
  223. /// Bit vector of supported transfer functions \ref define_source_content_TF
  224. int iSupportedTransferFunction;
  225. /// Bit vector of supported color spaces \ref define_source_content_CS
  226. int iSupportedColorSpace;
  227. /// Display Red Chromaticity X coordinate multiplied by 10000
  228. int iNativeDisplayChromaticityRedX;
  229. /// Display Red Chromaticity Y coordinate multiplied by 10000
  230. int iNativeDisplayChromaticityRedY;
  231. /// Display Green Chromaticity X coordinate multiplied by 10000
  232. int iNativeDisplayChromaticityGreenX;
  233. /// Display Green Chromaticity Y coordinate multiplied by 10000
  234. int iNativeDisplayChromaticityGreenY;
  235. /// Display Blue Chromaticity X coordinate multiplied by 10000
  236. int iNativeDisplayChromaticityBlueX;
  237. /// Display Blue Chromaticity Y coordinate multiplied by 10000
  238. int iNativeDisplayChromaticityBlueY;
  239. /// Display White Point X coordinate multiplied by 10000
  240. int iNativeDisplayChromaticityWhitePointX;
  241. /// Display White Point Y coordinate multiplied by 10000
  242. int iNativeDisplayChromaticityWhitePointY;
  243. /// Display diffuse screen reflectance 0-1 (100%) in units of 0.01
  244. int iDiffuseScreenReflectance;
  245. /// Display specular screen reflectance 0-1 (100%) in units of 0.01
  246. int iSpecularScreenReflectance;
  247. /// Bit vector of supported color spaces \ref define_HDR_support
  248. int iSupportedHDR;
  249. /// Bit vector for freesync flags
  250. int iFreesyncFlags;
  251. /// Return minimum monitor luminance without dimming data
  252. int ulMinLuminanceNoDimmingData;
  253. int ulMaxBacklightMaxLuminanceData;
  254. int ulMinBacklightMaxLuminanceData;
  255. int ulMaxBacklightMinLuminanceData;
  256. int ulMinBacklightMinLuminanceData;
  257. // Reserved for future use
  258. int iReserved[4];
  259. } ADLDDCInfo2, *LPADLDDCInfo2;
  260. /////////////////////////////////////////////////////////////////////////////////////////////
  261. ///\brief Structure containing information controller Gamma settings.
  262. ///
  263. /// This structure is used to store the red, green and blue color channel information for the.
  264. /// controller gamma setting. This information is returned by ADL, and it can also be used to
  265. /// set the controller gamma setting.
  266. /// \nosubgrouping
  267. ////////////////////////////////////////////////////////////////////////////////////////////
  268. typedef struct ADLGamma
  269. {
  270. /// Red color channel gamma value.
  271. float fRed;
  272. /// Green color channel gamma value.
  273. float fGreen;
  274. /// Blue color channel gamma value.
  275. float fBlue;
  276. } ADLGamma, *LPADLGamma;
  277. /////////////////////////////////////////////////////////////////////////////////////////////
  278. ///\brief Structure containing information about component video custom modes.
  279. ///
  280. /// This structure is used to store the component video custom mode.
  281. /// \nosubgrouping
  282. ////////////////////////////////////////////////////////////////////////////////////////////
  283. typedef struct ADLCustomMode
  284. {
  285. /// Custom mode flags. They are returned by the ADL driver.
  286. int iFlags;
  287. /// Custom mode width.
  288. int iModeWidth;
  289. /// Custom mode height.
  290. int iModeHeight;
  291. /// Custom mode base width.
  292. int iBaseModeWidth;
  293. /// Custom mode base height.
  294. int iBaseModeHeight;
  295. /// Custom mode refresh rate.
  296. int iRefreshRate;
  297. } ADLCustomMode, *LPADLCustomMode;
  298. /////////////////////////////////////////////////////////////////////////////////////////////
  299. ///\brief Structure containing Clock information for OD5 calls.
  300. ///
  301. /// This structure is used to retrieve clock information for OD5 calls.
  302. /// \nosubgrouping
  303. ////////////////////////////////////////////////////////////////////////////////////////////
  304. typedef struct ADLGetClocksOUT
  305. {
  306. long ulHighCoreClock;
  307. long ulHighMemoryClock;
  308. long ulHighVddc;
  309. long ulCoreMin;
  310. long ulCoreMax;
  311. long ulMemoryMin;
  312. long ulMemoryMax;
  313. long ulActivityPercent;
  314. long ulCurrentCoreClock;
  315. long ulCurrentMemoryClock;
  316. long ulReserved;
  317. } ADLGetClocksOUT;
  318. /////////////////////////////////////////////////////////////////////////////////////////////
  319. ///\brief Structure containing HDTV information for display calls.
  320. ///
  321. /// This structure is used to retrieve HDTV information information for display calls.
  322. /// \nosubgrouping
  323. ////////////////////////////////////////////////////////////////////////////////////////////
  324. typedef struct ADLDisplayConfig
  325. {
  326. /// Size of the structure
  327. long ulSize;
  328. /// HDTV connector type.
  329. long ulConnectorType;
  330. /// HDTV capabilities.
  331. long ulDeviceData;
  332. /// Overridden HDTV capabilities.
  333. long ulOverridedDeviceData;
  334. /// Reserved field
  335. long ulReserved;
  336. } ADLDisplayConfig;
  337. /////////////////////////////////////////////////////////////////////////////////////////////
  338. ///\brief Structure containing information about the display device.
  339. ///
  340. /// This structure is used to store display device information
  341. /// such as display index, type, name, connection status, mapped adapter and controller indexes,
  342. /// whether or not multiple VPUs are supported, local display connections or not (through Lasso), etc.
  343. /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to set
  344. /// or fetch various display device related settings upon the user's request.
  345. /// \nosubgrouping
  346. ////////////////////////////////////////////////////////////////////////////////////////////
  347. typedef struct ADLDisplayID
  348. {
  349. /// The logical display index belonging to this adapter.
  350. int iDisplayLogicalIndex;
  351. ///\brief The physical display index.
  352. /// For example, display index 2 from adapter 2 can be used by current adapter 1.\n
  353. /// So current adapter may enumerate this adapter as logical display 7 but the physical display
  354. /// index is still 2.
  355. int iDisplayPhysicalIndex;
  356. /// The persistent logical adapter index for the display.
  357. int iDisplayLogicalAdapterIndex;
  358. ///\brief The persistent physical adapter index for the display.
  359. /// It can be the current adapter or a non-local adapter. \n
  360. /// If this adapter index is different than the current adapter,
  361. /// the Display Non Local flag is set inside DisplayInfoValue.
  362. int iDisplayPhysicalAdapterIndex;
  363. } ADLDisplayID, *LPADLDisplayID;
  364. /////////////////////////////////////////////////////////////////////////////////////////////
  365. ///\brief Structure containing information about the display device.
  366. ///
  367. /// This structure is used to store various information about the display device. This
  368. /// information can be returned to the user, or used to access various driver calls to set
  369. /// or fetch various display-device-related settings upon the user's request
  370. /// \nosubgrouping
  371. ////////////////////////////////////////////////////////////////////////////////////////////
  372. typedef struct ADLDisplayInfo
  373. {
  374. /// The DisplayID structure
  375. ADLDisplayID displayID;
  376. ///\deprecated The controller index to which the display is mapped.\n Will not be used in the future\n
  377. int iDisplayControllerIndex;
  378. /// The display's EDID name.
  379. char strDisplayName[ADL_MAX_PATH];
  380. /// The display's manufacturer name.
  381. char strDisplayManufacturerName[ADL_MAX_PATH];
  382. /// The Display type. For example: CRT, TV, CV, DFP.
  383. int iDisplayType;
  384. /// The display output type. For example: HDMI, SVIDEO, COMPONMNET VIDEO.
  385. int iDisplayOutputType;
  386. /// The connector type for the device.
  387. int iDisplayConnector;
  388. ///\brief The bit mask identifies the number of bits ADLDisplayInfo is currently using. \n
  389. /// It will be the sum all the bit definitions in ADL_DISPLAY_DISPLAYINFO_xxx.
  390. int iDisplayInfoMask;
  391. /// The bit mask identifies the display status. \ref define_displayinfomask
  392. int iDisplayInfoValue;
  393. } ADLDisplayInfo, *LPADLDisplayInfo;
  394. /////////////////////////////////////////////////////////////////////////////////////////////
  395. ///\brief Structure containing information about the display port MST device.
  396. ///
  397. /// This structure is used to store various MST information about the display port device. This
  398. /// information can be returned to the user, or used to access various driver calls to
  399. /// fetch various display-device-related settings upon the user's request
  400. /// \nosubgrouping
  401. ////////////////////////////////////////////////////////////////////////////////////////////
  402. typedef struct ADLDisplayDPMSTInfo
  403. {
  404. /// The ADLDisplayID structure
  405. ADLDisplayID displayID;
  406. /// total bandwidth available on the DP connector
  407. int iTotalAvailableBandwidthInMpbs;
  408. /// bandwidth allocated to this display
  409. int iAllocatedBandwidthInMbps;
  410. // info from DAL DpMstSinkInfo
  411. /// string identifier for the display
  412. char strGlobalUniqueIdentifier[ADL_MAX_PATH];
  413. /// The link count of relative address, rad[0] upto rad[linkCount] are valid
  414. int radLinkCount;
  415. /// The physical connector ID, used to identify the physical DP port
  416. int iPhysicalConnectorID;
  417. /// Relative address, address scheme starts from source side
  418. char rad[ADL_MAX_RAD_LINK_COUNT];
  419. } ADLDisplayDPMSTInfo, *LPADLDisplayDPMSTInfo;
  420. /////////////////////////////////////////////////////////////////////////////////////////////
  421. ///\brief Structure containing the display mode definition used per controller.
  422. ///
  423. /// This structure is used to store the display mode definition used per controller.
  424. /// \nosubgrouping
  425. ////////////////////////////////////////////////////////////////////////////////////////////
  426. typedef struct ADLDisplayMode
  427. {
  428. /// Vertical resolution (in pixels).
  429. int iPelsHeight;
  430. /// Horizontal resolution (in pixels).
  431. int iPelsWidth;
  432. /// Color depth.
  433. int iBitsPerPel;
  434. /// Refresh rate.
  435. int iDisplayFrequency;
  436. } ADLDisplayMode;
  437. /////////////////////////////////////////////////////////////////////////////////////////////
  438. ///\brief Structure containing detailed timing parameters.
  439. ///
  440. /// This structure is used to store the detailed timing parameters.
  441. /// \nosubgrouping
  442. ////////////////////////////////////////////////////////////////////////////////////////////
  443. typedef struct ADLDetailedTiming
  444. {
  445. /// Size of the structure.
  446. int iSize;
  447. /// Timing flags. \ref define_detailed_timing_flags
  448. short sTimingFlags;
  449. /// Total width (columns).
  450. short sHTotal;
  451. /// Displayed width.
  452. short sHDisplay;
  453. /// Horizontal sync signal offset.
  454. short sHSyncStart;
  455. /// Horizontal sync signal width.
  456. short sHSyncWidth;
  457. /// Total height (rows).
  458. short sVTotal;
  459. /// Displayed height.
  460. short sVDisplay;
  461. /// Vertical sync signal offset.
  462. short sVSyncStart;
  463. /// Vertical sync signal width.
  464. short sVSyncWidth;
  465. /// Pixel clock value.
  466. short sPixelClock;
  467. /// Overscan right.
  468. short sHOverscanRight;
  469. /// Overscan left.
  470. short sHOverscanLeft;
  471. /// Overscan bottom.
  472. short sVOverscanBottom;
  473. /// Overscan top.
  474. short sVOverscanTop;
  475. short sOverscan8B;
  476. short sOverscanGR;
  477. } ADLDetailedTiming;
  478. /////////////////////////////////////////////////////////////////////////////////////////////
  479. ///\brief Structure containing display mode information.
  480. ///
  481. /// This structure is used to store the display mode information.
  482. /// \nosubgrouping
  483. ////////////////////////////////////////////////////////////////////////////////////////////
  484. typedef struct ADLDisplayModeInfo
  485. {
  486. /// Timing standard of the current mode. \ref define_modetiming_standard
  487. int iTimingStandard;
  488. /// Applicable timing standards for the current mode.
  489. int iPossibleStandard;
  490. /// Refresh rate factor.
  491. int iRefreshRate;
  492. /// Num of pixels in a row.
  493. int iPelsWidth;
  494. /// Num of pixels in a column.
  495. int iPelsHeight;
  496. /// Detailed timing parameters.
  497. ADLDetailedTiming sDetailedTiming;
  498. } ADLDisplayModeInfo;
  499. /////////////////////////////////////////////////////////////////////////////////////////////
  500. /// \brief Structure containing information about display property.
  501. ///
  502. /// This structure is used to store the display property for the current adapter.
  503. /// \nosubgrouping
  504. ////////////////////////////////////////////////////////////////////////////////////////////
  505. typedef struct ADLDisplayProperty
  506. {
  507. /// Must be set to sizeof the structure
  508. int iSize;
  509. /// Must be set to \ref ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE or \ref ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING
  510. int iPropertyType;
  511. /// Get or Set \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_CENTER or \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_FULLSCREEN or \ref ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_ASPECTRATIO or \ref ADL_DL_DISPLAYPROPERTY_TYPE_ITCFLAGENABLE
  512. int iExpansionMode;
  513. /// Display Property supported? 1: Supported, 0: Not supported
  514. int iSupport;
  515. /// Display Property current value
  516. int iCurrent;
  517. /// Display Property Default value
  518. int iDefault;
  519. } ADLDisplayProperty;
  520. /////////////////////////////////////////////////////////////////////////////////////////////
  521. ///\brief Structure containing information about Clock.
  522. ///
  523. /// This structure is used to store the clock information for the current adapter
  524. /// such as core clock and memory clock info.
  525. ///\nosubgrouping
  526. ////////////////////////////////////////////////////////////////////////////////////////////
  527. typedef struct ADLClockInfo
  528. {
  529. /// Core clock in 10 KHz.
  530. int iCoreClock;
  531. /// Memory clock in 10 KHz.
  532. int iMemoryClock;
  533. } ADLClockInfo, *LPADLClockInfo;
  534. /////////////////////////////////////////////////////////////////////////////////////////////
  535. ///\brief Structure containing information about I2C.
  536. ///
  537. /// This structure is used to store the I2C information for the current adapter.
  538. /// This structure is used by the ADL_Display_WriteAndReadI2C() function.
  539. /// \nosubgrouping
  540. ////////////////////////////////////////////////////////////////////////////////////////////
  541. typedef struct ADLI2C
  542. {
  543. /// Size of the structure
  544. int iSize;
  545. /// Numerical value representing hardware I2C.
  546. int iLine;
  547. /// The 7-bit I2C slave device address, shifted one bit to the left.
  548. int iAddress;
  549. /// The offset of the data from the address.
  550. int iOffset;
  551. /// 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
  552. int iAction;
  553. /// I2C clock speed in KHz.
  554. int iSpeed;
  555. /// A numerical value representing the number of bytes to be sent or received on the I2C bus.
  556. int iDataSize;
  557. /// Address of the characters which are to be sent or received on the I2C bus.
  558. char *pcData;
  559. } ADLI2C;
  560. /////////////////////////////////////////////////////////////////////////////////////////////
  561. ///\brief Structure containing information about EDID data.
  562. ///
  563. /// This structure is used to store the information about EDID data for the adapter.
  564. /// This structure is used by the ADL_Display_EdidData_Get() and ADL_Display_EdidData_Set() functions.
  565. /// \nosubgrouping
  566. ////////////////////////////////////////////////////////////////////////////////////////////
  567. typedef struct ADLDisplayEDIDData
  568. {
  569. /// Size of the structure
  570. int iSize;
  571. /// Set to 0
  572. int iFlag;
  573. /// Size of cEDIDData. Set by ADL_Display_EdidData_Get() upon return
  574. int iEDIDSize;
  575. /// 0, 1 or 2. If set to 3 or above an error ADL_ERR_INVALID_PARAM is generated
  576. int iBlockIndex;
  577. /// EDID data
  578. char cEDIDData[ADL_MAX_EDIDDATA_SIZE];
  579. /// Reserved
  580. int iReserved[4];
  581. }ADLDisplayEDIDData;
  582. /////////////////////////////////////////////////////////////////////////////////////////////
  583. ///\brief Structure containing information about input of controller overlay adjustment.
  584. ///
  585. /// This structure is used to store the information about input of controller overlay adjustment for the adapter.
  586. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get, ADL_Display_ControllerOverlayAdjustmentData_Get, and
  587. /// ADL_Display_ControllerOverlayAdjustmentData_Set() functions.
  588. /// \nosubgrouping
  589. ////////////////////////////////////////////////////////////////////////////////////////////
  590. typedef struct ADLControllerOverlayInput
  591. {
  592. /// Should be set to the sizeof the structure
  593. int iSize;
  594. ///\ref ADL_DL_CONTROLLER_OVERLAY_ALPHA or \ref ADL_DL_CONTROLLER_OVERLAY_ALPHAPERPIX
  595. int iOverlayAdjust;
  596. /// Data.
  597. int iValue;
  598. /// Should be 0.
  599. int iReserved;
  600. } ADLControllerOverlayInput;
  601. /////////////////////////////////////////////////////////////////////////////////////////////
  602. ///\brief Structure containing information about overlay adjustment.
  603. ///
  604. /// This structure is used to store the information about overlay adjustment for the adapter.
  605. /// This structure is used by the ADLControllerOverlayInfo() function.
  606. /// \nosubgrouping
  607. ////////////////////////////////////////////////////////////////////////////////////////////
  608. typedef struct ADLAdjustmentinfo
  609. {
  610. /// Default value
  611. int iDefault;
  612. /// Minimum value
  613. int iMin;
  614. /// Maximum Value
  615. int iMax;
  616. /// Step value
  617. int iStep;
  618. } ADLAdjustmentinfo;
  619. /////////////////////////////////////////////////////////////////////////////////////////////
  620. ///\brief Structure containing information about controller overlay information.
  621. ///
  622. /// This structure is used to store information about controller overlay info for the adapter.
  623. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get() function.
  624. /// \nosubgrouping
  625. ////////////////////////////////////////////////////////////////////////////////////////////
  626. typedef struct ADLControllerOverlayInfo
  627. {
  628. /// Should be set to the sizeof the structure
  629. int iSize;
  630. /// Data.
  631. ADLAdjustmentinfo sOverlayInfo;
  632. /// Should be 0.
  633. int iReserved[3];
  634. } ADLControllerOverlayInfo;
  635. /////////////////////////////////////////////////////////////////////////////////////////////
  636. ///\brief Structure containing GL-Sync module information.
  637. ///
  638. /// This structure is used to retrieve GL-Sync module information for
  639. /// Workstation Framelock/Genlock.
  640. /// \nosubgrouping
  641. ////////////////////////////////////////////////////////////////////////////////////////////
  642. typedef struct ADLGLSyncModuleID
  643. {
  644. /// Unique GL-Sync module ID.
  645. int iModuleID;
  646. /// GL-Sync GPU port index (to be passed into ADLGLSyncGenlockConfig.lSignalSource and ADLGlSyncPortControl.lSignalSource).
  647. int iGlSyncGPUPort;
  648. /// GL-Sync module firmware version of Boot Sector.
  649. int iFWBootSectorVersion;
  650. /// GL-Sync module firmware version of User Sector.
  651. int iFWUserSectorVersion;
  652. } ADLGLSyncModuleID , *LPADLGLSyncModuleID;
  653. /////////////////////////////////////////////////////////////////////////////////////////////
  654. ///\brief Structure containing GL-Sync ports capabilities.
  655. ///
  656. /// This structure is used to retrieve hardware capabilities for the ports of the GL-Sync module
  657. /// for Workstation Framelock/Genlock (such as port type and number of associated LEDs).
  658. /// \nosubgrouping
  659. ////////////////////////////////////////////////////////////////////////////////////////////
  660. typedef struct ADLGLSyncPortCaps
  661. {
  662. /// Port type. Bitfield of ADL_GLSYNC_PORTTYPE_* \ref define_glsync
  663. int iPortType;
  664. /// Number of LEDs associated for this port.
  665. int iNumOfLEDs;
  666. }ADLGLSyncPortCaps, *LPADLGLSyncPortCaps;
  667. /////////////////////////////////////////////////////////////////////////////////////////////
  668. ///\brief Structure containing GL-Sync Genlock settings.
  669. ///
  670. /// This structure is used to get and set genlock settings for the GPU ports of the GL-Sync module
  671. /// for Workstation Framelock/Genlock.\n
  672. /// \see define_glsync
  673. /// \nosubgrouping
  674. ////////////////////////////////////////////////////////////////////////////////////////////
  675. typedef struct ADLGLSyncGenlockConfig
  676. {
  677. /// Specifies what fields in this structure are valid \ref define_glsync
  678. int iValidMask;
  679. /// Delay (ms) generating a sync signal.
  680. int iSyncDelay;
  681. /// Vector of framelock control bits. Bitfield of ADL_GLSYNC_FRAMELOCKCNTL_* \ref define_glsync
  682. int iFramelockCntlVector;
  683. /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
  684. int iSignalSource;
  685. /// Use sampled sync signal. A value of 0 specifies no sampling.
  686. int iSampleRate;
  687. /// For interlaced sync signals, the value can be ADL_GLSYNC_SYNCFIELD_1 or *_BOTH \ref define_glsync
  688. int iSyncField;
  689. /// The signal edge that should trigger synchronization. ADL_GLSYNC_TRIGGEREDGE_* \ref define_glsync
  690. int iTriggerEdge;
  691. /// Scan rate multiplier applied to the sync signal. ADL_GLSYNC_SCANRATECOEFF_* \ref define_glsync
  692. int iScanRateCoeff;
  693. }ADLGLSyncGenlockConfig, *LPADLGLSyncGenlockConfig;
  694. /////////////////////////////////////////////////////////////////////////////////////////////
  695. ///\brief Structure containing GL-Sync port information.
  696. ///
  697. /// This structure is used to get status of the GL-Sync ports (BNC or RJ45s)
  698. /// for Workstation Framelock/Genlock.
  699. /// \see define_glsync
  700. /// \nosubgrouping
  701. ////////////////////////////////////////////////////////////////////////////////////////////
  702. typedef struct ADLGlSyncPortInfo
  703. {
  704. /// Type of GL-Sync port (ADL_GLSYNC_PORT_*).
  705. int iPortType;
  706. /// The number of LEDs for this port. It's also filled within ADLGLSyncPortCaps.
  707. int iNumOfLEDs;
  708. /// Port state ADL_GLSYNC_PORTSTATE_* \ref define_glsync
  709. int iPortState;
  710. /// Scanned frequency for this port (vertical refresh rate in milliHz; 60000 means 60 Hz).
  711. int iFrequency;
  712. /// Used for ADL_GLSYNC_PORT_BNC. It is ADL_GLSYNC_SIGNALTYPE_* \ref define_glsync
  713. int iSignalType;
  714. /// Used for ADL_GLSYNC_PORT_RJ45PORT*. It is GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_*. \ref define_glsync
  715. int iSignalSource;
  716. } ADLGlSyncPortInfo, *LPADLGlSyncPortInfo;
  717. /////////////////////////////////////////////////////////////////////////////////////////////
  718. ///\brief Structure containing GL-Sync port control settings.
  719. ///
  720. /// This structure is used to configure the GL-Sync ports (RJ45s only)
  721. /// for Workstation Framelock/Genlock.
  722. /// \see define_glsync
  723. /// \nosubgrouping
  724. ////////////////////////////////////////////////////////////////////////////////////////////
  725. typedef struct ADLGlSyncPortControl
  726. {
  727. /// Port to control ADL_GLSYNC_PORT_RJ45PORT1 or ADL_GLSYNC_PORT_RJ45PORT2 \ref define_glsync
  728. int iPortType;
  729. /// Port control data ADL_GLSYNC_PORTCNTL_* \ref define_glsync
  730. int iControlVector;
  731. /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
  732. int iSignalSource;
  733. } ADLGlSyncPortControl;
  734. /////////////////////////////////////////////////////////////////////////////////////////////
  735. ///\brief Structure containing GL-Sync mode of a display.
  736. ///
  737. /// This structure is used to get and set GL-Sync mode settings for a display connected to
  738. /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
  739. /// \see define_glsync
  740. /// \nosubgrouping
  741. ////////////////////////////////////////////////////////////////////////////////////////////
  742. typedef struct ADLGlSyncMode
  743. {
  744. /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
  745. int iControlVector;
  746. /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
  747. int iStatusVector;
  748. /// Index of GL-Sync connector used to genlock the display/controller.
  749. int iGLSyncConnectorIndex;
  750. } ADLGlSyncMode, *LPADLGlSyncMode;
  751. /////////////////////////////////////////////////////////////////////////////////////////////
  752. ///\brief Structure containing GL-Sync mode of a display.
  753. ///
  754. /// This structure is used to get and set GL-Sync mode settings for a display connected to
  755. /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
  756. /// \see define_glsync
  757. /// \nosubgrouping
  758. ////////////////////////////////////////////////////////////////////////////////////////////
  759. typedef struct ADLGlSyncMode2
  760. {
  761. /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
  762. int iControlVector;
  763. /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
  764. int iStatusVector;
  765. /// Index of GL-Sync connector used to genlock the display/controller.
  766. int iGLSyncConnectorIndex;
  767. /// Index of the display to which this GLSync applies to.
  768. int iDisplayIndex;
  769. } ADLGlSyncMode2, *LPADLGlSyncMode2;
  770. /////////////////////////////////////////////////////////////////////////////////////////////
  771. ///\brief Structure containing the packet info of a display.
  772. ///
  773. /// This structure is used to get and set the packet information of a display.
  774. /// This structure is used by ADLDisplayDataPacket.
  775. /// \nosubgrouping
  776. ////////////////////////////////////////////////////////////////////////////////////////////
  777. typedef struct ADLInfoPacket
  778. {
  779. char hb0;
  780. char hb1;
  781. char hb2;
  782. /// sb0~sb27
  783. char sb[28];
  784. }ADLInfoPacket;
  785. /////////////////////////////////////////////////////////////////////////////////////////////
  786. ///\brief Structure containing the AVI packet info of a display.
  787. ///
  788. /// This structure is used to get and set AVI the packet info of a display.
  789. /// This structure is used by ADLDisplayDataPacket.
  790. /// \nosubgrouping
  791. ////////////////////////////////////////////////////////////////////////////////////////////
  792. typedef struct ADLAVIInfoPacket //Valid user defined data/
  793. {
  794. /// byte 3, bit 7
  795. char bPB3_ITC;
  796. /// byte 5, bit [7:4].
  797. char bPB5;
  798. }ADLAVIInfoPacket;
  799. // Overdrive clock setting structure definition.
  800. /////////////////////////////////////////////////////////////////////////////////////////////
  801. ///\brief Structure containing the Overdrive clock setting.
  802. ///
  803. /// This structure is used to get the Overdrive clock setting.
  804. /// This structure is used by ADLAdapterODClockInfo.
  805. /// \nosubgrouping
  806. ////////////////////////////////////////////////////////////////////////////////////////////
  807. typedef struct ADLODClockSetting
  808. {
  809. /// Deafult clock
  810. int iDefaultClock;
  811. /// Current clock
  812. int iCurrentClock;
  813. /// Maximum clcok
  814. int iMaxClock;
  815. /// Minimum clock
  816. int iMinClock;
  817. /// Requested clcock
  818. int iRequestedClock;
  819. /// Step
  820. int iStepClock;
  821. } ADLODClockSetting;
  822. /////////////////////////////////////////////////////////////////////////////////////////////
  823. ///\brief Structure containing the Overdrive clock information.
  824. ///
  825. /// This structure is used to get the Overdrive clock information.
  826. /// This structure is used by the ADL_Display_ODClockInfo_Get() function.
  827. /// \nosubgrouping
  828. ////////////////////////////////////////////////////////////////////////////////////////////
  829. typedef struct ADLAdapterODClockInfo
  830. {
  831. /// Size of the structure
  832. int iSize;
  833. /// Flag \ref define_clockinfo_flags
  834. int iFlags;
  835. /// Memory Clock
  836. ADLODClockSetting sMemoryClock;
  837. /// Engine Clock
  838. ADLODClockSetting sEngineClock;
  839. } ADLAdapterODClockInfo;
  840. /////////////////////////////////////////////////////////////////////////////////////////////
  841. ///\brief Structure containing the Overdrive clock configuration.
  842. ///
  843. /// This structure is used to set the Overdrive clock configuration.
  844. /// This structure is used by the ADL_Display_ODClockConfig_Set() function.
  845. /// \nosubgrouping
  846. ////////////////////////////////////////////////////////////////////////////////////////////
  847. typedef struct ADLAdapterODClockConfig
  848. {
  849. /// Size of the structure
  850. int iSize;
  851. /// Flag \ref define_clockinfo_flags
  852. int iFlags;
  853. /// Memory Clock
  854. int iMemoryClock;
  855. /// Engine Clock
  856. int iEngineClock;
  857. } ADLAdapterODClockConfig;
  858. /////////////////////////////////////////////////////////////////////////////////////////////
  859. ///\brief Structure containing information about current power management related activity.
  860. ///
  861. /// This structure is used to store information about current power management related activity.
  862. /// This structure (Overdrive 5 interfaces) is used by the ADL_PM_CurrentActivity_Get() function.
  863. /// \nosubgrouping
  864. ////////////////////////////////////////////////////////////////////////////////////////////
  865. typedef struct ADLPMActivity
  866. {
  867. /// Must be set to the size of the structure
  868. int iSize;
  869. /// Current engine clock.
  870. int iEngineClock;
  871. /// Current memory clock.
  872. int iMemoryClock;
  873. /// Current core voltage.
  874. int iVddc;
  875. /// GPU utilization.
  876. int iActivityPercent;
  877. /// Performance level index.
  878. int iCurrentPerformanceLevel;
  879. /// Current PCIE bus speed.
  880. int iCurrentBusSpeed;
  881. /// Number of PCIE bus lanes.
  882. int iCurrentBusLanes;
  883. /// Maximum number of PCIE bus lanes.
  884. int iMaximumBusLanes;
  885. /// Reserved for future purposes.
  886. int iReserved;
  887. } ADLPMActivity;
  888. /////////////////////////////////////////////////////////////////////////////////////////////
  889. ///\brief Structure containing information about thermal controller.
  890. ///
  891. /// This structure is used to store information about thermal controller.
  892. /// This structure is used by ADL_PM_ThermalDevices_Enum.
  893. /// \nosubgrouping
  894. ////////////////////////////////////////////////////////////////////////////////////////////
  895. typedef struct ADLThermalControllerInfo
  896. {
  897. /// Must be set to the size of the structure
  898. int iSize;
  899. /// Possible valies: \ref ADL_DL_THERMAL_DOMAIN_OTHER or \ref ADL_DL_THERMAL_DOMAIN_GPU.
  900. int iThermalDomain;
  901. /// GPU 0, 1, etc.
  902. int iDomainIndex;
  903. /// Possible valies: \ref ADL_DL_THERMAL_FLAG_INTERRUPT or \ref ADL_DL_THERMAL_FLAG_FANCONTROL
  904. int iFlags;
  905. } ADLThermalControllerInfo;
  906. /////////////////////////////////////////////////////////////////////////////////////////////
  907. ///\brief Structure containing information about thermal controller temperature.
  908. ///
  909. /// This structure is used to store information about thermal controller temperature.
  910. /// This structure is used by the ADL_PM_Temperature_Get() function.
  911. /// \nosubgrouping
  912. ////////////////////////////////////////////////////////////////////////////////////////////
  913. typedef struct ADLTemperature
  914. {
  915. /// Must be set to the size of the structure
  916. int iSize;
  917. /// Temperature in millidegrees Celsius.
  918. int iTemperature;
  919. } ADLTemperature;
  920. /////////////////////////////////////////////////////////////////////////////////////////////
  921. ///\brief Structure containing information about thermal controller fan speed.
  922. ///
  923. /// This structure is used to store information about thermal controller fan speed.
  924. /// This structure is used by the ADL_PM_FanSpeedInfo_Get() function.
  925. /// \nosubgrouping
  926. ////////////////////////////////////////////////////////////////////////////////////////////
  927. typedef struct ADLFanSpeedInfo
  928. {
  929. /// Must be set to the size of the structure
  930. int iSize;
  931. /// \ref define_fanctrl
  932. int iFlags;
  933. /// Minimum possible fan speed value in percents.
  934. int iMinPercent;
  935. /// Maximum possible fan speed value in percents.
  936. int iMaxPercent;
  937. /// Minimum possible fan speed value in RPM.
  938. int iMinRPM;
  939. /// Maximum possible fan speed value in RPM.
  940. int iMaxRPM;
  941. } ADLFanSpeedInfo;
  942. /////////////////////////////////////////////////////////////////////////////////////////////
  943. ///\brief Structure containing information about fan speed reported by thermal controller.
  944. ///
  945. /// This structure is used to store information about fan speed reported by thermal controller.
  946. /// This structure is used by the ADL_Overdrive5_FanSpeed_Get() and ADL_Overdrive5_FanSpeed_Set() functions.
  947. /// \nosubgrouping
  948. ////////////////////////////////////////////////////////////////////////////////////////////
  949. typedef struct ADLFanSpeedValue
  950. {
  951. /// Must be set to the size of the structure
  952. int iSize;
  953. /// Possible valies: \ref ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or \ref ADL_DL_FANCTRL_SPEED_TYPE_RPM
  954. int iSpeedType;
  955. /// Fan speed value
  956. int iFanSpeed;
  957. /// The only flag for now is: \ref ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED
  958. int iFlags;
  959. } ADLFanSpeedValue;
  960. ////////////////////////////////////////////////////////////////////////////////////////////
  961. ///\brief Structure containing the range of Overdrive parameter.
  962. ///
  963. /// This structure is used to store information about the range of Overdrive parameter.
  964. /// This structure is used by ADLODParameters.
  965. /// \nosubgrouping
  966. ////////////////////////////////////////////////////////////////////////////////////////////
  967. typedef struct ADLODParameterRange
  968. {
  969. /// Minimum parameter value.
  970. int iMin;
  971. /// Maximum parameter value.
  972. int iMax;
  973. /// Parameter step value.
  974. int iStep;
  975. } ADLODParameterRange;
  976. /////////////////////////////////////////////////////////////////////////////////////////////
  977. ///\brief Structure containing information about Overdrive parameters.
  978. ///
  979. /// This structure is used to store information about Overdrive parameters.
  980. /// This structure is used by the ADL_Overdrive5_ODParameters_Get() function.
  981. /// \nosubgrouping
  982. ////////////////////////////////////////////////////////////////////////////////////////////
  983. typedef struct ADLODParameters
  984. {
  985. /// Must be set to the size of the structure
  986. int iSize;
  987. /// Number of standard performance states.
  988. int iNumberOfPerformanceLevels;
  989. /// Indicates whether the GPU is capable to measure its activity.
  990. int iActivityReportingSupported;
  991. /// Indicates whether the GPU supports discrete performance levels or performance range.
  992. int iDiscretePerformanceLevels;
  993. /// Reserved for future use.
  994. int iReserved;
  995. /// Engine clock range.
  996. ADLODParameterRange sEngineClock;
  997. /// Memory clock range.
  998. ADLODParameterRange sMemoryClock;
  999. /// Core voltage range.
  1000. ADLODParameterRange sVddc;
  1001. } ADLODParameters;
  1002. /////////////////////////////////////////////////////////////////////////////////////////////
  1003. ///\brief Structure containing information about Overdrive level.
  1004. ///
  1005. /// This structure is used to store information about Overdrive level.
  1006. /// This structure is used by ADLODPerformanceLevels.
  1007. /// \nosubgrouping
  1008. ////////////////////////////////////////////////////////////////////////////////////////////
  1009. typedef struct ADLODPerformanceLevel
  1010. {
  1011. /// Engine clock.
  1012. int iEngineClock;
  1013. /// Memory clock.
  1014. int iMemoryClock;
  1015. /// Core voltage.
  1016. int iVddc;
  1017. } ADLODPerformanceLevel;
  1018. /////////////////////////////////////////////////////////////////////////////////////////////
  1019. ///\brief Structure containing information about Overdrive performance levels.
  1020. ///
  1021. /// This structure is used to store information about Overdrive performance levels.
  1022. /// This structure is used by the ADL_Overdrive5_ODPerformanceLevels_Get() and ADL_Overdrive5_ODPerformanceLevels_Set() functions.
  1023. /// \nosubgrouping
  1024. ////////////////////////////////////////////////////////////////////////////////////////////
  1025. typedef struct ADLODPerformanceLevels
  1026. {
  1027. /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
  1028. int iSize;
  1029. int iReserved;
  1030. /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
  1031. ADLODPerformanceLevel aLevels [1];
  1032. } ADLODPerformanceLevels;
  1033. /////////////////////////////////////////////////////////////////////////////////////////////
  1034. ///\brief Structure containing information about the proper CrossfireX chains combinations.
  1035. ///
  1036. /// This structure is used to store information about the CrossfireX chains combination for a particular adapter.
  1037. /// This structure is used by the ADL_Adapter_Crossfire_Caps(), ADL_Adapter_Crossfire_Get(), and ADL_Adapter_Crossfire_Set() functions.
  1038. /// \nosubgrouping
  1039. ////////////////////////////////////////////////////////////////////////////////////////////
  1040. typedef struct ADLCrossfireComb
  1041. {
  1042. /// Number of adapters in this combination.
  1043. int iNumLinkAdapter;
  1044. /// A list of ADL indexes of the linked adapters in this combination.
  1045. int iAdaptLink[3];
  1046. } ADLCrossfireComb;
  1047. /////////////////////////////////////////////////////////////////////////////////////////////
  1048. ///\brief Structure containing CrossfireX state and error information.
  1049. ///
  1050. /// This structure is used to store state and error information about a particular adapter CrossfireX combination.
  1051. /// This structure is used by the ADL_Adapter_Crossfire_Get() function.
  1052. /// \nosubgrouping
  1053. ////////////////////////////////////////////////////////////////////////////////////////////
  1054. typedef struct ADLCrossfireInfo
  1055. {
  1056. /// Current error code of this CrossfireX combination.
  1057. int iErrorCode;
  1058. /// Current \ref define_crossfirestate
  1059. int iState;
  1060. /// If CrossfireX is supported by this combination. The value is either \ref ADL_TRUE or \ref ADL_FALSE.
  1061. int iSupported;
  1062. } ADLCrossfireInfo;
  1063. /////////////////////////////////////////////////////////////////////////////////////////////
  1064. /// \brief Structure containing information about the BIOS.
  1065. ///
  1066. /// This structure is used to store various information about the Chipset. This
  1067. /// information can be returned to the user.
  1068. /// \nosubgrouping
  1069. ////////////////////////////////////////////////////////////////////////////////////////////
  1070. typedef struct ADLBiosInfo
  1071. {
  1072. char strPartNumber[ADL_MAX_PATH]; ///< Part number.
  1073. char strVersion[ADL_MAX_PATH]; ///< Version number.
  1074. char strDate[ADL_MAX_PATH]; ///< BIOS date in yyyy/mm/dd hh:mm format.
  1075. } ADLBiosInfo, *LPADLBiosInfo;
  1076. /////////////////////////////////////////////////////////////////////////////////////////////
  1077. /// \brief Structure containing information about adapter location.
  1078. ///
  1079. /// This structure is used to store information about adapter location.
  1080. /// This structure is used by ADLMVPUStatus.
  1081. /// \nosubgrouping
  1082. ////////////////////////////////////////////////////////////////////////////////////////////
  1083. typedef struct ADLAdapterLocation
  1084. {
  1085. /// PCI Bus number : 8 bits
  1086. int iBus;
  1087. /// Device number : 5 bits
  1088. int iDevice;
  1089. /// Function number : 3 bits
  1090. int iFunction;
  1091. } ADLAdapterLocation,ADLBdf;
  1092. /////////////////////////////////////////////////////////////////////////////////////////////
  1093. /// \brief Structure containing version information
  1094. ///
  1095. /// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers.
  1096. /// \nosubgrouping
  1097. ////////////////////////////////////////////////////////////////////////////////////////////
  1098. typedef struct ADLVersionsInfo
  1099. {
  1100. /// Driver Release (Packaging) Version (e.g. 8.71-100128n-094835E-ATI)
  1101. char strDriverVer[ADL_MAX_PATH];
  1102. /// Catalyst Version(e.g. "10.1").
  1103. char strCatalystVersion[ADL_MAX_PATH];
  1104. /// Web link to an XML file with information about the latest AMD drivers and locations (e.g. "http://www.amd.com/us/driverxml" )
  1105. char strCatalystWebLink[ADL_MAX_PATH];
  1106. } ADLVersionsInfo, *LPADLVersionsInfo;
  1107. /////////////////////////////////////////////////////////////////////////////////////////////
  1108. /// \brief Structure containing version information
  1109. ///
  1110. /// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers.
  1111. /// \nosubgrouping
  1112. ////////////////////////////////////////////////////////////////////////////////////////////
  1113. typedef struct ADLVersionsInfoX2
  1114. {
  1115. /// Driver Release (Packaging) Version (e.g. "16.20.1035-160621a-303814C")
  1116. char strDriverVer[ADL_MAX_PATH];
  1117. /// Catalyst Version(e.g. "15.8").
  1118. char strCatalystVersion[ADL_MAX_PATH];
  1119. /// Crimson Version(e.g. "16.6.2").
  1120. char strCrimsonVersion[ADL_MAX_PATH];
  1121. /// Web link to an XML file with information about the latest AMD drivers and locations (e.g. "http://support.amd.com/drivers/xml/driver_09_us.xml" )
  1122. char strCatalystWebLink[ADL_MAX_PATH];
  1123. } ADLVersionsInfoX2, *LPADLVersionsInfoX2;
  1124. /////////////////////////////////////////////////////////////////////////////////////////////
  1125. /// \brief Structure containing information about MultiVPU capabilities.
  1126. ///
  1127. /// This structure is used to store information about MultiVPU capabilities.
  1128. /// This structure is used by the ADL_Display_MVPUCaps_Get() function.
  1129. /// \nosubgrouping
  1130. ////////////////////////////////////////////////////////////////////////////////////////////
  1131. typedef struct ADLMVPUCaps
  1132. {
  1133. /// Must be set to sizeof( ADLMVPUCaps ).
  1134. int iSize;
  1135. /// Number of adapters.
  1136. int iAdapterCount;
  1137. /// Bits set for all possible MVPU masters. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
  1138. int iPossibleMVPUMasters;
  1139. /// Bits set for all possible MVPU slaves. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
  1140. int iPossibleMVPUSlaves;
  1141. /// Registry path for each adapter.
  1142. char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH];
  1143. } ADLMVPUCaps;
  1144. /////////////////////////////////////////////////////////////////////////////////////////////
  1145. /// \brief Structure containing information about MultiVPU status.
  1146. ///
  1147. /// This structure is used to store information about MultiVPU status.
  1148. /// Ths structure is used by the ADL_Display_MVPUStatus_Get() function.
  1149. /// \nosubgrouping
  1150. ////////////////////////////////////////////////////////////////////////////////////////////
  1151. typedef struct ADLMVPUStatus
  1152. {
  1153. /// Must be set to sizeof( ADLMVPUStatus ).
  1154. int iSize;
  1155. /// Number of active adapters.
  1156. int iActiveAdapterCount;
  1157. /// MVPU status.
  1158. int iStatus;
  1159. /// PCI Bus/Device/Function for each active adapter participating in MVPU.
  1160. ADLAdapterLocation aAdapterLocation[ADL_DL_MAX_MVPU_ADAPTERS];
  1161. } ADLMVPUStatus;
  1162. // Displays Manager structures
  1163. ///////////////////////////////////////////////////////////////////////////
  1164. /// \brief Structure containing information about the activatable source.
  1165. ///
  1166. /// This structure is used to store activatable source information
  1167. /// This information can be returned to the user.
  1168. /// \nosubgrouping
  1169. ////////////////////////////////////////////////////////////////////////////////////////////
  1170. typedef struct ADLActivatableSource
  1171. {
  1172. /// The Persistent logical Adapter Index.
  1173. int iAdapterIndex;
  1174. /// The number of Activatable Sources.
  1175. int iNumActivatableSources;
  1176. /// The bit mask identifies the number of bits ActivatableSourceValue is using. (Not currnetly used)
  1177. int iActivatableSourceMask;
  1178. /// The bit mask identifies the status. (Not currnetly used)
  1179. int iActivatableSourceValue;
  1180. } ADLActivatableSource, *LPADLActivatableSource;
  1181. /////////////////////////////////////////////////////////////////////////////////////////////
  1182. /// \brief Structure containing information about display mode.
  1183. ///
  1184. /// This structure is used to store the display mode for the current adapter
  1185. /// such as X, Y positions, screen resolutions, orientation,
  1186. /// color depth, refresh rate, progressive or interlace mode, etc.
  1187. /// \nosubgrouping
  1188. ////////////////////////////////////////////////////////////////////////////////////////////
  1189. typedef struct ADLMode
  1190. {
  1191. /// Adapter index.
  1192. int iAdapterIndex;
  1193. /// Display IDs.
  1194. ADLDisplayID displayID;
  1195. /// Screen position X coordinate.
  1196. int iXPos;
  1197. /// Screen position Y coordinate.
  1198. int iYPos;
  1199. /// Screen resolution Width.
  1200. int iXRes;
  1201. /// Screen resolution Height.
  1202. int iYRes;
  1203. /// Screen Color Depth. E.g., 16, 32.
  1204. int iColourDepth;
  1205. /// Screen refresh rate. Could be fractional E.g. 59.97
  1206. float fRefreshRate;
  1207. /// Screen orientation. E.g., 0, 90, 180, 270.
  1208. int iOrientation;
  1209. /// Vista mode flag indicating Progressive or Interlaced mode.
  1210. int iModeFlag;
  1211. /// 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
  1212. int iModeMask;
  1213. /// The bit mask identifying the display status. The detailed definition is in \ref define_displaymode
  1214. int iModeValue;
  1215. } ADLMode, *LPADLMode;
  1216. /////////////////////////////////////////////////////////////////////////////////////////////
  1217. /// \brief Structure containing information about display target information.
  1218. ///
  1219. /// This structure is used to store the display target information.
  1220. /// \nosubgrouping
  1221. ////////////////////////////////////////////////////////////////////////////////////////////
  1222. typedef struct ADLDisplayTarget
  1223. {
  1224. /// The Display ID.
  1225. ADLDisplayID displayID;
  1226. /// The display map index identify this manner and the desktop surface.
  1227. int iDisplayMapIndex;
  1228. /// 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.
  1229. int iDisplayTargetMask;
  1230. /// The bit mask identifies the display status. The detailed definition is in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED.
  1231. int iDisplayTargetValue;
  1232. } ADLDisplayTarget, *LPADLDisplayTarget;
  1233. /////////////////////////////////////////////////////////////////////////////////////////////
  1234. ///\brief Structure containing information about the display SLS bezel Mode information.
  1235. ///
  1236. /// This structure is used to store the display SLS bezel Mode information.
  1237. /// \nosubgrouping
  1238. ////////////////////////////////////////////////////////////////////////////////////////////
  1239. typedef struct tagADLBezelTransientMode
  1240. {
  1241. /// Adapter Index
  1242. int iAdapterIndex;
  1243. /// SLS Map Index
  1244. int iSLSMapIndex;
  1245. /// The mode index
  1246. int iSLSModeIndex;
  1247. /// The mode
  1248. ADLMode displayMode;
  1249. /// The number of bezel offsets belongs to this map
  1250. int iNumBezelOffset;
  1251. /// The first bezel offset array index in the native mode array
  1252. int iFirstBezelOffsetArrayIndex;
  1253. /// The bit mask identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
  1254. int iSLSBezelTransientModeMask;
  1255. /// The bit mask identifies the display status. The detail definition is defined below.
  1256. int iSLSBezelTransientModeValue;
  1257. } ADLBezelTransientMode, *LPADLBezelTransientMode;
  1258. /////////////////////////////////////////////////////////////////////////////////////////////
  1259. /// \brief Structure containing information about the adapter display manner.
  1260. ///
  1261. /// This structure is used to store adapter display manner information
  1262. /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to
  1263. /// fetch various display device related display manner settings upon the user's request.
  1264. /// \nosubgrouping
  1265. ////////////////////////////////////////////////////////////////////////////////////////////
  1266. typedef struct ADLAdapterDisplayCap
  1267. {
  1268. /// The Persistent logical Adapter Index.
  1269. int iAdapterIndex;
  1270. /// The bit mask identifies the number of bits AdapterDisplayCap is currently using. Sum all the bits defined in ADL_ADAPTER_DISPLAYCAP_XXX
  1271. int iAdapterDisplayCapMask;
  1272. /// The bit mask identifies the status. Refer to ADL_ADAPTER_DISPLAYCAP_XXX
  1273. int iAdapterDisplayCapValue;
  1274. } ADLAdapterDisplayCap, *LPADLAdapterDisplayCap;
  1275. /////////////////////////////////////////////////////////////////////////////////////////////
  1276. ///\brief Structure containing information about display mapping.
  1277. ///
  1278. /// This structure is used to store the display mapping data such as display manner.
  1279. /// For displays with horizontal or vertical stretch manner,
  1280. /// this structure also stores the display order, display row, and column data.
  1281. /// \nosubgrouping
  1282. ////////////////////////////////////////////////////////////////////////////////////////////
  1283. typedef struct ADLDisplayMap
  1284. {
  1285. /// 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.
  1286. int iDisplayMapIndex;
  1287. /// The Display Mode for the current map
  1288. ADLMode displayMode;
  1289. /// The number of display targets belongs to this map\n
  1290. int iNumDisplayTarget;
  1291. /// The first target array index in the Target array\n
  1292. int iFirstDisplayTargetArrayIndex;
  1293. /// 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.
  1294. int iDisplayMapMask;
  1295. ///The bit mask identifies the display status. The detailed definition is in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx.
  1296. int iDisplayMapValue;
  1297. } ADLDisplayMap, *LPADLDisplayMap;
  1298. /////////////////////////////////////////////////////////////////////////////////////////////
  1299. /// \brief Structure containing information about the display device possible map for one GPU
  1300. ///
  1301. /// This structure is used to store the display device possible map
  1302. /// This information can be returned to the user.
  1303. /// \nosubgrouping
  1304. ////////////////////////////////////////////////////////////////////////////////////////////
  1305. typedef struct ADLPossibleMap
  1306. {
  1307. /// The current PossibleMap index. Each PossibleMap is assigned an index
  1308. int iIndex;
  1309. /// The adapter index identifying the GPU for which to validate these Maps & Targets
  1310. int iAdapterIndex;
  1311. /// Number of display Maps for this GPU to be validated
  1312. int iNumDisplayMap;
  1313. /// The display Maps list to validate
  1314. ADLDisplayMap* displayMap;
  1315. /// the number of display Targets for these display Maps
  1316. int iNumDisplayTarget;
  1317. /// The display Targets list for these display Maps to be validated.
  1318. ADLDisplayTarget* displayTarget;
  1319. } ADLPossibleMap, *LPADLPossibleMap;
  1320. /////////////////////////////////////////////////////////////////////////////////////////////
  1321. /// \brief Structure containing information about display possible mapping.
  1322. ///
  1323. /// This structure is used to store the display possible mapping's controller index for the current display.
  1324. /// \nosubgrouping
  1325. ////////////////////////////////////////////////////////////////////////////////////////////
  1326. typedef struct ADLPossibleMapping
  1327. {
  1328. int iDisplayIndex; ///< The display index. Each display is assigned an index.
  1329. int iDisplayControllerIndex; ///< The controller index to which display is mapped.
  1330. int iDisplayMannerSupported; ///< The supported display manner.
  1331. } ADLPossibleMapping, *LPADLPossibleMapping;
  1332. /////////////////////////////////////////////////////////////////////////////////////////////
  1333. /// \brief Structure containing information about the validated display device possible map result.
  1334. ///
  1335. /// This structure is used to store the validated display device possible map result
  1336. /// This information can be returned to the user.
  1337. /// \nosubgrouping
  1338. ////////////////////////////////////////////////////////////////////////////////////////////
  1339. typedef struct ADLPossibleMapResult
  1340. {
  1341. /// 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.
  1342. int iIndex;
  1343. // 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.
  1344. int iPossibleMapResultMask;
  1345. /// The bit mask identifies the possible map result. The detail definition is defined in ADL_DISPLAY_POSSIBLEMAPRESULT_XXX.
  1346. int iPossibleMapResultValue;
  1347. } ADLPossibleMapResult, *LPADLPossibleMapResult;
  1348. /////////////////////////////////////////////////////////////////////////////////////////////
  1349. ///\brief Structure containing information about the display SLS Grid information.
  1350. ///
  1351. /// This structure is used to store the display SLS Grid information.
  1352. /// \nosubgrouping
  1353. ////////////////////////////////////////////////////////////////////////////////////////////
  1354. typedef struct ADLSLSGrid
  1355. {
  1356. /// The Adapter index.
  1357. int iAdapterIndex;
  1358. /// The grid index.
  1359. int iSLSGridIndex;
  1360. /// The grid row.
  1361. int iSLSGridRow;
  1362. /// The grid column.
  1363. int iSLSGridColumn;
  1364. /// The grid bit mask identifies the number of bits DisplayMap is currently using. Sum of all bits defined in ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
  1365. int iSLSGridMask;
  1366. /// The grid bit value identifies the display status. Refer to ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
  1367. int iSLSGridValue;
  1368. } ADLSLSGrid, *LPADLSLSGrid;
  1369. /////////////////////////////////////////////////////////////////////////////////////////////
  1370. ///\brief Structure containing information about the display SLS Map information.
  1371. ///
  1372. /// This structure is used to store the display SLS Map information.
  1373. /// \nosubgrouping
  1374. ////////////////////////////////////////////////////////////////////////////////////////////
  1375. typedef struct ADLSLSMap
  1376. {
  1377. /// The Adapter Index
  1378. int iAdapterIndex;
  1379. /// 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.
  1380. int iSLSMapIndex;
  1381. /// Indicate the current grid
  1382. ADLSLSGrid grid;
  1383. /// OS surface index
  1384. int iSurfaceMapIndex;
  1385. /// Screen orientation. E.g., 0, 90, 180, 270
  1386. int iOrientation;
  1387. /// The number of display targets belongs to this map
  1388. int iNumSLSTarget;
  1389. /// The first target array index in the Target array
  1390. int iFirstSLSTargetArrayIndex;
  1391. /// The number of native modes belongs to this map
  1392. int iNumNativeMode;
  1393. /// The first native mode array index in the native mode array
  1394. int iFirstNativeModeArrayIndex;
  1395. /// The number of bezel modes belongs to this map
  1396. int iNumBezelMode;
  1397. /// The first bezel mode array index in the native mode array
  1398. int iFirstBezelModeArrayIndex;
  1399. /// The number of bezel offsets belongs to this map
  1400. int iNumBezelOffset;
  1401. /// The first bezel offset array index in the
  1402. int iFirstBezelOffsetArrayIndex;
  1403. /// The bit mask identifies the number of bits DisplayMap is currently using. Sum all the bit definitions defined in ADL_DISPLAY_SLSMAP_XXX.
  1404. int iSLSMapMask;
  1405. /// The bit mask identifies the display map status. Refer to ADL_DISPLAY_SLSMAP_XXX
  1406. int iSLSMapValue;
  1407. } ADLSLSMap, *LPADLSLSMap;
  1408. /////////////////////////////////////////////////////////////////////////////////////////////
  1409. ///\brief Structure containing information about the display SLS Offset information.
  1410. ///
  1411. /// This structure is used to store the display SLS Offset information.
  1412. /// \nosubgrouping
  1413. ////////////////////////////////////////////////////////////////////////////////////////////
  1414. typedef struct ADLSLSOffset
  1415. {
  1416. /// The Adapter Index
  1417. int iAdapterIndex;
  1418. /// 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.
  1419. int iSLSMapIndex;
  1420. /// The Display ID.
  1421. ADLDisplayID displayID;
  1422. /// SLS Bezel Mode Index
  1423. int iBezelModeIndex;
  1424. /// SLS Bezel Offset X
  1425. int iBezelOffsetX;
  1426. /// SLS Bezel Offset Y
  1427. int iBezelOffsetY;
  1428. /// SLS Display Width
  1429. int iDisplayWidth;
  1430. /// SLS Display Height
  1431. int iDisplayHeight;
  1432. /// The bit mask identifies the number of bits Offset is currently using.
  1433. int iBezelOffsetMask;
  1434. /// The bit mask identifies the display status.
  1435. int iBezelffsetValue;
  1436. } ADLSLSOffset, *LPADLSLSOffset;
  1437. /////////////////////////////////////////////////////////////////////////////////////////////
  1438. ///\brief Structure containing information about the display SLS Mode information.
  1439. ///
  1440. /// This structure is used to store the display SLS Mode information.
  1441. /// \nosubgrouping
  1442. ////////////////////////////////////////////////////////////////////////////////////////////
  1443. typedef struct ADLSLSMode
  1444. {
  1445. /// The Adapter Index
  1446. int iAdapterIndex;
  1447. /// 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.
  1448. int iSLSMapIndex;
  1449. /// The mode index
  1450. int iSLSModeIndex;
  1451. /// The mode for this map.
  1452. ADLMode displayMode;
  1453. /// The bit mask identifies the number of bits Mode is currently using.
  1454. int iSLSNativeModeMask;
  1455. /// The bit mask identifies the display status.
  1456. int iSLSNativeModeValue;
  1457. } ADLSLSMode, *LPADLSLSMode;
  1458. /////////////////////////////////////////////////////////////////////////////////////////////
  1459. ///\brief Structure containing information about the display Possible SLS Map information.
  1460. ///
  1461. /// This structure is used to store the display Possible SLS Map information.
  1462. /// \nosubgrouping
  1463. ////////////////////////////////////////////////////////////////////////////////////////////
  1464. typedef struct ADLPossibleSLSMap
  1465. {
  1466. /// The current display map index. It is the OS Desktop index.
  1467. /// For example, OS Index 1 showing clone mode. The Display Map will be 1.
  1468. int iSLSMapIndex;
  1469. /// Number of display map to be validated.
  1470. int iNumSLSMap;
  1471. /// The display map list for validation
  1472. ADLSLSMap* lpSLSMap;
  1473. /// the number of display map config to be validated.
  1474. int iNumSLSTarget;
  1475. /// The display target list for validation.
  1476. ADLDisplayTarget* lpDisplayTarget;
  1477. } ADLPossibleSLSMap, *LPADLPossibleSLSMap;
  1478. /////////////////////////////////////////////////////////////////////////////////////////////
  1479. ///\brief Structure containing information about the SLS targets.
  1480. ///
  1481. /// This structure is used to store the SLS targets information.
  1482. /// \nosubgrouping
  1483. ////////////////////////////////////////////////////////////////////////////////////////////
  1484. typedef struct ADLSLSTarget
  1485. {
  1486. /// the logic adapter index
  1487. int iAdapterIndex;
  1488. /// The SLS map index
  1489. int iSLSMapIndex;
  1490. /// The target ID
  1491. ADLDisplayTarget displayTarget;
  1492. /// Target postion X in SLS grid
  1493. int iSLSGridPositionX;
  1494. /// Target postion Y in SLS grid
  1495. int iSLSGridPositionY;
  1496. /// The view size width, height and rotation angle per SLS Target
  1497. ADLMode viewSize;
  1498. /// The bit mask identifies the bits in iSLSTargetValue are currently used
  1499. int iSLSTargetMask;
  1500. /// The bit mask identifies status info. It is for function extension purpose
  1501. int iSLSTargetValue;
  1502. } ADLSLSTarget, *LPADLSLSTarget;
  1503. /////////////////////////////////////////////////////////////////////////////////////////////
  1504. ///\brief Structure containing information about the Adapter offset stepping size.
  1505. ///
  1506. /// This structure is used to store the Adapter offset stepping size information.
  1507. /// \nosubgrouping
  1508. ////////////////////////////////////////////////////////////////////////////////////////////
  1509. typedef struct ADLBezelOffsetSteppingSize
  1510. {
  1511. /// the logic adapter index
  1512. int iAdapterIndex;
  1513. /// The SLS map index
  1514. int iSLSMapIndex;
  1515. /// Bezel X stepping size offset
  1516. int iBezelOffsetSteppingSizeX;
  1517. /// Bezel Y stepping size offset
  1518. int iBezelOffsetSteppingSizeY;
  1519. /// Identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
  1520. int iBezelOffsetSteppingSizeMask;
  1521. /// Bit mask identifies the display status.
  1522. int iBezelOffsetSteppingSizeValue;
  1523. } ADLBezelOffsetSteppingSize, *LPADLBezelOffsetSteppingSize;
  1524. /////////////////////////////////////////////////////////////////////////////////////////////
  1525. ///\brief Structure containing information about the overlap offset info for all the displays for each SLS mode.
  1526. ///
  1527. /// This structure is used to store the no. of overlapped modes for each SLS Mode once user finishes the configuration from Overlap Widget
  1528. /// \nosubgrouping
  1529. ////////////////////////////////////////////////////////////////////////////////////////////
  1530. typedef struct ADLSLSOverlappedMode
  1531. {
  1532. /// the SLS mode for which the overlap is configured
  1533. ADLMode SLSMode;
  1534. /// the number of target displays in SLS.
  1535. int iNumSLSTarget;
  1536. /// the first target array index in the target array
  1537. int iFirstTargetArrayIndex;
  1538. }ADLSLSTargetOverlap, *LPADLSLSTargetOverlap;
  1539. /////////////////////////////////////////////////////////////////////////////////////////////
  1540. ///\brief Structure containing information about driver supported PowerExpress Config Caps
  1541. ///
  1542. /// This structure is used to store the driver supported PowerExpress Config Caps
  1543. /// \nosubgrouping
  1544. ////////////////////////////////////////////////////////////////////////////////////////////
  1545. typedef struct ADLPXConfigCaps
  1546. {
  1547. /// The Persistent logical Adapter Index.
  1548. int iAdapterIndex;
  1549. /// The bit mask identifies the number of bits PowerExpress Config Caps is currently using. It is the sum of all the bit definitions defined in ADL_PX_CONFIGCAPS_XXXX /ref define_powerxpress_constants.
  1550. int iPXConfigCapMask;
  1551. /// The bit mask identifies the PowerExpress Config Caps value. The detailed definition is in ADL_PX_CONFIGCAPS_XXXX /ref define_powerxpress_constants.
  1552. int iPXConfigCapValue;
  1553. } ADLPXConfigCaps, *LPADLPXConfigCaps;
  1554. /////////////////////////////////////////////////////////////////////////////////////////
  1555. ///\brief Enum containing PX or HG type
  1556. ///
  1557. /// This enum is used to get PX or hG type
  1558. ///
  1559. /// \nosubgrouping
  1560. //////////////////////////////////////////////////////////////////////////////////////////
  1561. enum ADLPxType
  1562. {
  1563. //Not AMD related PX/HG or not PX or HG at all
  1564. ADL_PX_NONE = 0,
  1565. //A+A PX
  1566. ADL_SWITCHABLE_AMDAMD = 1,
  1567. // A+A HG
  1568. ADL_HG_AMDAMD = 2,
  1569. //A+I PX
  1570. ADL_SWITCHABLE_AMDOTHER = 3,
  1571. //A+I HG
  1572. ADL_HG_AMDOTHER = 4,
  1573. };
  1574. /////////////////////////////////////////////////////////////////////////////////////////////
  1575. ///\brief Structure containing information about an application
  1576. ///
  1577. /// This structure is used to store basic information of an application
  1578. /// \nosubgrouping
  1579. ////////////////////////////////////////////////////////////////////////////////////////////
  1580. typedef struct _ADLApplicationData
  1581. {
  1582. /// Path Name
  1583. char strPathName[ADL_MAX_PATH];
  1584. /// File Name
  1585. char strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
  1586. /// Creation timestamp
  1587. char strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
  1588. /// Version
  1589. char strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
  1590. }ADLApplicationData;
  1591. /////////////////////////////////////////////////////////////////////////////////////////////
  1592. ///\brief Structure containing information about an application
  1593. ///
  1594. /// This structure is used to store basic information of an application
  1595. /// \nosubgrouping
  1596. ////////////////////////////////////////////////////////////////////////////////////////////
  1597. typedef struct _ADLApplicationDataX2
  1598. {
  1599. /// Path Name
  1600. wchar_t strPathName[ADL_MAX_PATH];
  1601. /// File Name
  1602. wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
  1603. /// Creation timestamp
  1604. wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
  1605. /// Version
  1606. wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
  1607. }ADLApplicationDataX2;
  1608. /////////////////////////////////////////////////////////////////////////////////////////////
  1609. ///\brief Structure containing information about an application
  1610. ///
  1611. /// This structure is used to store basic information of an application including process id
  1612. /// \nosubgrouping
  1613. ////////////////////////////////////////////////////////////////////////////////////////////
  1614. typedef struct _ADLApplicationDataX3
  1615. {
  1616. /// Path Name
  1617. wchar_t strPathName[ADL_MAX_PATH];
  1618. /// File Name
  1619. wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
  1620. /// Creation timestamp
  1621. wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
  1622. /// Version
  1623. wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
  1624. //Application Process id
  1625. unsigned int iProcessId;
  1626. }ADLApplicationDataX3;
  1627. /////////////////////////////////////////////////////////////////////////////////////////////
  1628. ///\brief Structure containing information of a property of an application profile
  1629. ///
  1630. /// This structure is used to store property information of an application profile
  1631. /// \nosubgrouping
  1632. ////////////////////////////////////////////////////////////////////////////////////////////
  1633. typedef struct _PropertyRecord
  1634. {
  1635. /// Property Name
  1636. char strName [ADL_APP_PROFILE_PROPERTY_LENGTH];
  1637. /// Property Type
  1638. ADLProfilePropertyType eType;
  1639. /// Data Size in bytes
  1640. int iDataSize;
  1641. /// Property Value, can be any data type
  1642. unsigned char uData[1];
  1643. }PropertyRecord;
  1644. /////////////////////////////////////////////////////////////////////////////////////////////
  1645. ///\brief Structure containing information about an application profile
  1646. ///
  1647. /// This structure is used to store information of an application profile
  1648. /// \nosubgrouping
  1649. ////////////////////////////////////////////////////////////////////////////////////////////
  1650. typedef struct _ADLApplicationProfile
  1651. {
  1652. /// Number of properties
  1653. int iCount;
  1654. /// Buffer to store all property records
  1655. PropertyRecord record[1];
  1656. }ADLApplicationProfile;
  1657. /////////////////////////////////////////////////////////////////////////////////////////////
  1658. ///\brief Structure containing information about an OD5 Power Control feature
  1659. ///
  1660. /// This structure is used to store information of an Power Control feature
  1661. /// \nosubgrouping
  1662. ////////////////////////////////////////////////////////////////////////////////////////////
  1663. typedef struct ADLPowerControlInfo
  1664. {
  1665. /// Minimum value.
  1666. int iMinValue;
  1667. /// Maximum value.
  1668. int iMaxValue;
  1669. /// The minimum change in between minValue and maxValue.
  1670. int iStepValue;
  1671. } ADLPowerControlInfo;
  1672. /////////////////////////////////////////////////////////////////////////////////////////////
  1673. ///\brief Structure containing information about an controller mode
  1674. ///
  1675. /// This structure is used to store information of an controller mode
  1676. /// \nosubgrouping
  1677. ////////////////////////////////////////////////////////////////////////////////////////////
  1678. typedef struct _ADLControllerMode
  1679. {
  1680. /// This falg indicates actions that will be applied by set viewport
  1681. /// The value can be a combination of ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_POSITION,
  1682. /// ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_PANLOCK and ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_SIZE
  1683. int iModifiers;
  1684. /// Horizontal view starting position
  1685. int iViewPositionCx;
  1686. /// Vertical view starting position
  1687. int iViewPositionCy;
  1688. /// Horizontal left panlock position
  1689. int iViewPanLockLeft;
  1690. /// Horizontal right panlock position
  1691. int iViewPanLockRight;
  1692. /// Vertical top panlock position
  1693. int iViewPanLockTop;
  1694. /// Vertical bottom panlock position
  1695. int iViewPanLockBottom;
  1696. /// View resolution in pixels (width)
  1697. int iViewResolutionCx;
  1698. /// View resolution in pixels (hight)
  1699. int iViewResolutionCy;
  1700. }ADLControllerMode;
  1701. /////////////////////////////////////////////////////////////////////////////////////////////
  1702. ///\brief Structure containing information about a display
  1703. ///
  1704. /// This structure is used to store information about a display
  1705. /// \nosubgrouping
  1706. ////////////////////////////////////////////////////////////////////////////////////////////
  1707. typedef struct ADLDisplayIdentifier
  1708. {
  1709. /// ADL display index
  1710. long ulDisplayIndex;
  1711. /// manufacturer ID of the display
  1712. long ulManufacturerId;
  1713. /// product ID of the display
  1714. long ulProductId;
  1715. /// serial number of the display
  1716. long ulSerialNo;
  1717. } ADLDisplayIdentifier;
  1718. /////////////////////////////////////////////////////////////////////////////////////////////
  1719. ///\brief Structure containing information about Overdrive 6 clock range
  1720. ///
  1721. /// This structure is used to store information about Overdrive 6 clock range
  1722. /// \nosubgrouping
  1723. ////////////////////////////////////////////////////////////////////////////////////////////
  1724. typedef struct _ADLOD6ParameterRange
  1725. {
  1726. /// The starting value of the clock range
  1727. int iMin;
  1728. /// The ending value of the clock range
  1729. int iMax;
  1730. /// The minimum increment between clock values
  1731. int iStep;
  1732. } ADLOD6ParameterRange;
  1733. /////////////////////////////////////////////////////////////////////////////////////////////
  1734. ///\brief Structure containing information about Overdrive 6 capabilities
  1735. ///
  1736. /// This structure is used to store information about Overdrive 6 capabilities
  1737. /// \nosubgrouping
  1738. ////////////////////////////////////////////////////////////////////////////////////////////
  1739. typedef struct _ADLOD6Capabilities
  1740. {
  1741. /// Contains a bitmap of the OD6 capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION,
  1742. /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR
  1743. int iCapabilities;
  1744. /// Contains a bitmap indicating the power states
  1745. /// supported by OD6. Currently only the performance state
  1746. /// is supported. Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE
  1747. int iSupportedStates;
  1748. /// Number of levels. OD6 will always use 2 levels, which describe
  1749. /// the minimum to maximum clock ranges.
  1750. /// The 1st level indicates the minimum clocks, and the 2nd level
  1751. /// indicates the maximum clocks.
  1752. int iNumberOfPerformanceLevels;
  1753. /// Contains the hard limits of the sclk range. Overdrive
  1754. /// clocks cannot be set outside this range.
  1755. ADLOD6ParameterRange sEngineClockRange;
  1756. /// Contains the hard limits of the mclk range. Overdrive
  1757. /// clocks cannot be set outside this range.
  1758. ADLOD6ParameterRange sMemoryClockRange;
  1759. /// Value for future extension
  1760. int iExtValue;
  1761. /// Mask for future extension
  1762. int iExtMask;
  1763. } ADLOD6Capabilities;
  1764. /////////////////////////////////////////////////////////////////////////////////////////////
  1765. ///\brief Structure containing information about Overdrive 6 clock values.
  1766. ///
  1767. /// This structure is used to store information about Overdrive 6 clock values.
  1768. /// \nosubgrouping
  1769. ////////////////////////////////////////////////////////////////////////////////////////////
  1770. typedef struct _ADLOD6PerformanceLevel
  1771. {
  1772. /// Engine (core) clock.
  1773. int iEngineClock;
  1774. /// Memory clock.
  1775. int iMemoryClock;
  1776. } ADLOD6PerformanceLevel;
  1777. /////////////////////////////////////////////////////////////////////////////////////////////
  1778. ///\brief Structure containing information about Overdrive 6 clocks.
  1779. ///
  1780. /// This structure is used to store information about Overdrive 6 clocks. This is a
  1781. /// variable-sized structure. iNumberOfPerformanceLevels indicate how many elements
  1782. /// are contained in the aLevels array.
  1783. /// \nosubgrouping
  1784. ////////////////////////////////////////////////////////////////////////////////////////////
  1785. typedef struct _ADLOD6StateInfo
  1786. {
  1787. /// Number of levels. OD6 uses clock ranges instead of discrete performance levels.
  1788. /// iNumberOfPerformanceLevels is always 2. The 1st level indicates the minimum clocks
  1789. /// in the range. The 2nd level indicates the maximum clocks in the range.
  1790. int iNumberOfPerformanceLevels;
  1791. /// Value for future extension
  1792. int iExtValue;
  1793. /// Mask for future extension
  1794. int iExtMask;
  1795. /// Variable-sized array of levels.
  1796. /// The number of elements in the array is specified by iNumberofPerformanceLevels.
  1797. ADLOD6PerformanceLevel aLevels [1];
  1798. } ADLOD6StateInfo;
  1799. /////////////////////////////////////////////////////////////////////////////////////////////
  1800. ///\brief Structure containing information about current Overdrive 6 performance status.
  1801. ///
  1802. /// This structure is used to store information about current Overdrive 6 performance status.
  1803. /// \nosubgrouping
  1804. ////////////////////////////////////////////////////////////////////////////////////////////
  1805. typedef struct _ADLOD6CurrentStatus
  1806. {
  1807. /// Current engine clock in 10 KHz.
  1808. int iEngineClock;
  1809. /// Current memory clock in 10 KHz.
  1810. int iMemoryClock;
  1811. /// Current GPU activity in percent. This
  1812. /// indicates how "busy" the GPU is.
  1813. int iActivityPercent;
  1814. /// Not used. Reserved for future use.
  1815. int iCurrentPerformanceLevel;
  1816. /// Current PCI-E bus speed
  1817. int iCurrentBusSpeed;
  1818. /// Current PCI-E bus # of lanes
  1819. int iCurrentBusLanes;
  1820. /// Maximum possible PCI-E bus # of lanes
  1821. int iMaximumBusLanes;
  1822. /// Value for future extension
  1823. int iExtValue;
  1824. /// Mask for future extension
  1825. int iExtMask;
  1826. } ADLOD6CurrentStatus;
  1827. /////////////////////////////////////////////////////////////////////////////////////////////
  1828. ///\brief Structure containing information about Overdrive 6 thermal contoller capabilities
  1829. ///
  1830. /// This structure is used to store information about Overdrive 6 thermal controller capabilities
  1831. /// \nosubgrouping
  1832. ////////////////////////////////////////////////////////////////////////////////////////////
  1833. typedef struct _ADLOD6ThermalControllerCaps
  1834. {
  1835. /// Contains a bitmap of thermal controller capability flags. Possible values: \ref ADL_OD6_TCCAPS_THERMAL_CONTROLLER, \ref ADL_OD6_TCCAPS_FANSPEED_CONTROL,
  1836. /// \ref ADL_OD6_TCCAPS_FANSPEED_PERCENT_READ, \ref ADL_OD6_TCCAPS_FANSPEED_PERCENT_WRITE, \ref ADL_OD6_TCCAPS_FANSPEED_RPM_READ, \ref ADL_OD6_TCCAPS_FANSPEED_RPM_WRITE
  1837. int iCapabilities;
  1838. /// Minimum fan speed expressed as a percentage
  1839. int iFanMinPercent;
  1840. /// Maximum fan speed expressed as a percentage
  1841. int iFanMaxPercent;
  1842. /// Minimum fan speed expressed in revolutions-per-minute
  1843. int iFanMinRPM;
  1844. /// Maximum fan speed expressed in revolutions-per-minute
  1845. int iFanMaxRPM;
  1846. /// Value for future extension
  1847. int iExtValue;
  1848. /// Mask for future extension
  1849. int iExtMask;
  1850. } ADLOD6ThermalControllerCaps;
  1851. /////////////////////////////////////////////////////////////////////////////////////////////
  1852. ///\brief Structure containing information about Overdrive 6 fan speed information
  1853. ///
  1854. /// This structure is used to store information about Overdrive 6 fan speed information
  1855. /// \nosubgrouping
  1856. ////////////////////////////////////////////////////////////////////////////////////////////
  1857. typedef struct _ADLOD6FanSpeedInfo
  1858. {
  1859. /// Contains a bitmap of the valid fan speed type flags. Possible values: \ref ADL_OD6_FANSPEED_TYPE_PERCENT, \ref ADL_OD6_FANSPEED_TYPE_RPM, \ref ADL_OD6_FANSPEED_USER_DEFINED
  1860. int iSpeedType;
  1861. /// Contains current fan speed in percent (if valid flag exists in iSpeedType)
  1862. int iFanSpeedPercent;
  1863. /// Contains current fan speed in RPM (if valid flag exists in iSpeedType)
  1864. int iFanSpeedRPM;
  1865. /// Value for future extension
  1866. int iExtValue;
  1867. /// Mask for future extension
  1868. int iExtMask;
  1869. } ADLOD6FanSpeedInfo;
  1870. /////////////////////////////////////////////////////////////////////////////////////////////
  1871. ///\brief Structure containing information about Overdrive 6 fan speed value
  1872. ///
  1873. /// This structure is used to store information about Overdrive 6 fan speed value
  1874. /// \nosubgrouping
  1875. ////////////////////////////////////////////////////////////////////////////////////////////
  1876. typedef struct _ADLOD6FanSpeedValue
  1877. {
  1878. /// Indicates the units of the fan speed. Possible values: \ref ADL_OD6_FANSPEED_TYPE_PERCENT, \ref ADL_OD6_FANSPEED_TYPE_RPM
  1879. int iSpeedType;
  1880. /// Fan speed value (units as indicated above)
  1881. int iFanSpeed;
  1882. /// Value for future extension
  1883. int iExtValue;
  1884. /// Mask for future extension
  1885. int iExtMask;
  1886. } ADLOD6FanSpeedValue;
  1887. /////////////////////////////////////////////////////////////////////////////////////////////
  1888. ///\brief Structure containing information about Overdrive 6 PowerControl settings.
  1889. ///
  1890. /// This structure is used to store information about Overdrive 6 PowerControl settings.
  1891. /// PowerControl is the feature which allows the performance characteristics of the GPU
  1892. /// to be adjusted by changing the PowerTune power limits.
  1893. /// \nosubgrouping
  1894. ////////////////////////////////////////////////////////////////////////////////////////////
  1895. typedef struct _ADLOD6PowerControlInfo
  1896. {
  1897. /// The minimum PowerControl adjustment value
  1898. int iMinValue;
  1899. /// The maximum PowerControl adjustment value
  1900. int iMaxValue;
  1901. /// The minimum difference between PowerControl adjustment values
  1902. int iStepValue;
  1903. /// Value for future extension
  1904. int iExtValue;
  1905. /// Mask for future extension
  1906. int iExtMask;
  1907. } ADLOD6PowerControlInfo;
  1908. /////////////////////////////////////////////////////////////////////////////////////////////
  1909. ///\brief Structure containing information about Overdrive 6 PowerControl settings.
  1910. ///
  1911. /// This structure is used to store information about Overdrive 6 PowerControl settings.
  1912. /// PowerControl is the feature which allows the performance characteristics of the GPU
  1913. /// to be adjusted by changing the PowerTune power limits.
  1914. /// \nosubgrouping
  1915. ////////////////////////////////////////////////////////////////////////////////////////////
  1916. typedef struct _ADLOD6VoltageControlInfo
  1917. {
  1918. /// The minimum VoltageControl adjustment value
  1919. int iMinValue;
  1920. /// The maximum VoltageControl adjustment value
  1921. int iMaxValue;
  1922. /// The minimum difference between VoltageControl adjustment values
  1923. int iStepValue;
  1924. /// Value for future extension
  1925. int iExtValue;
  1926. /// Mask for future extension
  1927. int iExtMask;
  1928. } ADLOD6VoltageControlInfo;
  1929. ////////////////////////////////////////////////////////////////////////////////////////////
  1930. ///\brief Structure containing ECC statistics namely SEC counts and DED counts
  1931. /// Single error count - count of errors that can be corrected
  1932. /// Doubt Error Detect - count of errors that cannot be corrected
  1933. /// \nosubgrouping
  1934. ////////////////////////////////////////////////////////////////////////////////////////////
  1935. typedef struct _ADLECCData
  1936. {
  1937. // Single error count - count of errors that can be corrected
  1938. int iSec;
  1939. // Double error detect - count of errors that cannot be corrected
  1940. int iDed;
  1941. } ADLECCData;
  1942. /// \brief Handle to ADL client context.
  1943. ///
  1944. /// ADL clients obtain context handle from initial call to \ref ADL2_Main_Control_Create.
  1945. /// Clients have to pass the handle to each subsequent ADL call and finally destroy
  1946. /// the context with call to \ref ADL2_Main_Control_Destroy
  1947. /// \nosubgrouping
  1948. typedef void *ADL_CONTEXT_HANDLE;
  1949. /////////////////////////////////////////////////////////////////////////////////////////////
  1950. ///\brief Structure containing the display mode definition used per controller.
  1951. ///
  1952. /// This structure is used to store the display mode definition used per controller.
  1953. /// \nosubgrouping
  1954. ////////////////////////////////////////////////////////////////////////////////////////////
  1955. typedef struct ADLDisplayModeX2
  1956. {
  1957. /// Horizontal resolution (in pixels).
  1958. int iWidth;
  1959. /// Vertical resolution (in lines).
  1960. int iHeight;
  1961. /// Interlaced/Progressive. The value will be set for Interlaced as ADL_DL_TIMINGFLAG_INTERLACED. If not set it is progressive. Refer define_detailed_timing_flags.
  1962. int iScanType;
  1963. /// Refresh rate.
  1964. int iRefreshRate;
  1965. /// Timing Standard. Refer define_modetiming_standard.
  1966. int iTimingStandard;
  1967. } ADLDisplayModeX2;
  1968. /////////////////////////////////////////////////////////////////////////////////////////////
  1969. ///\brief Structure containing information about Overdrive 6 extension capabilities
  1970. ///
  1971. /// This structure is used to store information about Overdrive 6 extension capabilities
  1972. /// \nosubgrouping
  1973. ////////////////////////////////////////////////////////////////////////////////////////////
  1974. typedef struct _ADLOD6CapabilitiesEx
  1975. {
  1976. /// Contains a bitmap of the OD6 extension capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION,
  1977. /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR,
  1978. /// \ref ADL_OD6_CAPABILITY_POWER_CONTROL, \ref ADL_OD6_CAPABILITY_VOLTAGE_CONTROL, \ref ADL_OD6_CAPABILITY_PERCENT_ADJUSTMENT,
  1979. //// \ref ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK
  1980. int iCapabilities;
  1981. /// The Power states that support clock and power customization. Only performance state is currently supported.
  1982. /// Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE
  1983. int iSupportedStates;
  1984. /// Returns the hard limits of the SCLK overdrive adjustment range. Overdrive clocks should not be adjusted outside of this range. The values are specified as +/- percentages.
  1985. ADLOD6ParameterRange sEngineClockPercent;
  1986. /// Returns the hard limits of the MCLK overdrive adjustment range. Overdrive clocks should not be adjusted outside of this range. The values are specified as +/- percentages.
  1987. ADLOD6ParameterRange sMemoryClockPercent;
  1988. /// Returns the hard limits of the Power Limit adjustment range. Power limit should not be adjusted outside this range. The values are specified as +/- percentages.
  1989. ADLOD6ParameterRange sPowerControlPercent;
  1990. /// Reserved for future expansion of the structure.
  1991. int iExtValue;
  1992. /// Reserved for future expansion of the structure.
  1993. int iExtMask;
  1994. } ADLOD6CapabilitiesEx;
  1995. /////////////////////////////////////////////////////////////////////////////////////////////
  1996. ///\brief Structure containing information about Overdrive 6 extension state information
  1997. ///
  1998. /// This structure is used to store information about Overdrive 6 extension state information
  1999. /// \nosubgrouping
  2000. ////////////////////////////////////////////////////////////////////////////////////////////
  2001. typedef struct _ADLOD6StateEx
  2002. {
  2003. /// The current engine clock adjustment value, specified as a +/- percent.
  2004. int iEngineClockPercent;
  2005. /// The current memory clock adjustment value, specified as a +/- percent.
  2006. int iMemoryClockPercent;
  2007. /// The current power control adjustment value, specified as a +/- percent.
  2008. int iPowerControlPercent;
  2009. /// Reserved for future expansion of the structure.
  2010. int iExtValue;
  2011. /// Reserved for future expansion of the structure.
  2012. int iExtMask;
  2013. } ADLOD6StateEx;
  2014. /////////////////////////////////////////////////////////////////////////////////////////////
  2015. ///\brief Structure containing information about Overdrive 6 extension recommended maximum clock adjustment values
  2016. ///
  2017. /// This structure is used to store information about Overdrive 6 extension recommended maximum clock adjustment values
  2018. /// \nosubgrouping
  2019. ////////////////////////////////////////////////////////////////////////////////////////////
  2020. typedef struct _ADLOD6MaxClockAdjust
  2021. {
  2022. /// The recommended maximum engine clock adjustment in percent, for the specified power limit value.
  2023. int iEngineClockMax;
  2024. /// The recommended maximum memory clock adjustment in percent, for the specified power limit value.
  2025. /// Currently the memory is independent of the Power Limit setting, so iMemoryClockMax will always return the maximum
  2026. /// possible adjustment value. This field is here for future enhancement in case we add a dependency between Memory Clock
  2027. /// adjustment and Power Limit setting.
  2028. int iMemoryClockMax;
  2029. /// Reserved for future expansion of the structure.
  2030. int iExtValue;
  2031. /// Reserved for future expansion of the structure.
  2032. int iExtMask;
  2033. } ADLOD6MaxClockAdjust;
  2034. ////////////////////////////////////////////////////////////////////////////////////////////
  2035. ///\brief Structure containing the Connector information
  2036. ///
  2037. /// this structure is used to get the connector information like length, positions & etc.
  2038. /// \nosubgrouping
  2039. ////////////////////////////////////////////////////////////////////////////////////////////
  2040. typedef struct ADLConnectorInfo
  2041. {
  2042. ///index of the connector(0-based)
  2043. int iConnectorIndex;
  2044. ///used for disply identification/ordering
  2045. int iConnectorId;
  2046. ///index of the slot, 0-based index.
  2047. int iSlotIndex;
  2048. ///Type of the connector. \ref define_connector_types
  2049. int iType;
  2050. ///Position of the connector(in millimeters), from the right side of the slot.
  2051. int iOffset;
  2052. ///Length of the connector(in millimeters).
  2053. int iLength;
  2054. } ADLConnectorInfo;
  2055. ////////////////////////////////////////////////////////////////////////////////////////////
  2056. ///\brief Structure containing the slot information
  2057. ///
  2058. /// this structure is used to get the slot information like length of the slot, no of connectors on the slot & etc.
  2059. /// \nosubgrouping
  2060. ////////////////////////////////////////////////////////////////////////////////////////////
  2061. typedef struct ADLBracketSlotInfo
  2062. {
  2063. ///index of the slot, 0-based index.
  2064. int iSlotIndex;
  2065. ///length of the slot(in millimeters).
  2066. int iLength;
  2067. ///width of the slot(in millimeters).
  2068. int iWidth;
  2069. } ADLBracketSlotInfo;
  2070. ////////////////////////////////////////////////////////////////////////////////////////////
  2071. ///\brief Structure containing MST branch information
  2072. ///
  2073. /// this structure is used to store the MST branch information
  2074. /// \nosubgrouping
  2075. ////////////////////////////////////////////////////////////////////////////////////////////
  2076. typedef struct ADLMSTRad
  2077. {
  2078. ///depth of the link.
  2079. int iLinkNumber;
  2080. /// Relative address, address scheme starts from source side
  2081. char rad[ADL_MAX_RAD_LINK_COUNT];
  2082. } ADLMSTRad;
  2083. ////////////////////////////////////////////////////////////////////////////////////////////
  2084. ///\brief Structure containing port information
  2085. ///
  2086. /// this structure is used to get the display or MST branch information
  2087. /// \nosubgrouping
  2088. ////////////////////////////////////////////////////////////////////////////////////////////
  2089. typedef struct ADLDevicePort
  2090. {
  2091. ///index of the connector.
  2092. int iConnectorIndex;
  2093. ///Relative MST address. If MST RAD contains 0 it means DP or Root of the MST topology. For non DP connectors MST RAD is ignored.
  2094. ADLMSTRad aMSTRad;
  2095. } ADLDevicePort;
  2096. ////////////////////////////////////////////////////////////////////////////////////////////
  2097. ///\brief Structure containing supported connection types and properties
  2098. ///
  2099. /// this structure is used to get the supported connection types and supported properties of given connector
  2100. /// \nosubgrouping
  2101. ////////////////////////////////////////////////////////////////////////////////////////////
  2102. typedef struct ADLSupportedConnections
  2103. {
  2104. ///Bit vector of supported connections. Bitmask is defined in constants section. \ref define_connection_types
  2105. int iSupportedConnections;
  2106. ///Array of bitvectors. Each bit vector represents supported properties for one connection type. Index of this array is connection type (bit number in mask).
  2107. int iSupportedProperties[ADL_MAX_CONNECTION_TYPES];
  2108. } ADLSupportedConnections;
  2109. ////////////////////////////////////////////////////////////////////////////////////////////
  2110. ///\brief Structure containing connection state of the connector
  2111. ///
  2112. /// this structure is used to get the current Emulation status and mode of the given connector
  2113. /// \nosubgrouping
  2114. ////////////////////////////////////////////////////////////////////////////////////////////
  2115. typedef struct ADLConnectionState
  2116. {
  2117. ///The value is bit vector. Each bit represents status. See masks constants for details. \ref define_emulation_status
  2118. int iEmulationStatus;
  2119. ///It contains information about current emulation mode. See constants for details. \ref define_emulation_mode
  2120. int iEmulationMode;
  2121. ///If connection is active it will contain display id, otherwise CWDDEDI_INVALID_DISPLAY_INDEX
  2122. int iDisplayIndex;
  2123. } ADLConnectionState;
  2124. ////////////////////////////////////////////////////////////////////////////////////////////
  2125. ///\brief Structure containing connection properties information
  2126. ///
  2127. /// this structure is used to retrieve the properties of connection type
  2128. /// \nosubgrouping
  2129. ////////////////////////////////////////////////////////////////////////////////////////////
  2130. typedef struct ADLConnectionProperties
  2131. {
  2132. //Bit vector. Represents actual properties. Supported properties for specific connection type. \ref define_connection_properties
  2133. int iValidProperties;
  2134. //Bitrate(in MHz). Could be used for MST branch, DP or DP active dongle. \ref define_linkrate_constants
  2135. int iBitrate;
  2136. //Number of lanes in DP connection. \ref define_lanecount_constants
  2137. int iNumberOfLanes;
  2138. //Color depth(in bits). \ref define_colordepth_constants
  2139. int iColorDepth;
  2140. //3D capabilities. It could be used for some dongles. For instance: alternate framepack. Value of this property is bit vector.
  2141. int iStereo3DCaps;
  2142. ///Output Bandwidth. Could be used for MST branch, DP or DP Active dongle. \ref define_linkrate_constants
  2143. int iOutputBandwidth;
  2144. } ADLConnectionProperties;
  2145. ////////////////////////////////////////////////////////////////////////////////////////////
  2146. ///\brief Structure containing connection information
  2147. ///
  2148. /// this structure is used to retrieve the data from driver which includes
  2149. /// \nosubgrouping
  2150. ////////////////////////////////////////////////////////////////////////////////////////////
  2151. typedef struct ADLConnectionData
  2152. {
  2153. ///Connection type. based on the connection type either iNumberofPorts or IDataSize,EDIDdata is valid, \ref define_connection_types
  2154. int iConnectionType;
  2155. ///Specifies the connection properties.
  2156. ADLConnectionProperties aConnectionProperties;
  2157. ///Number of ports
  2158. int iNumberofPorts;
  2159. ///Number of Active Connections
  2160. int iActiveConnections;
  2161. ///actual size of EDID data block size.
  2162. int iDataSize;
  2163. ///EDID Data
  2164. char EdidData[ADL_MAX_DISPLAY_EDID_DATA_SIZE];
  2165. } ADLConnectionData;
  2166. /////////////////////////////////////////////////////////////////////////////////////////////
  2167. ///\brief Structure containing information about an controller mode including Number of Connectors
  2168. ///
  2169. /// This structure is used to store information of an controller mode
  2170. /// \nosubgrouping
  2171. ////////////////////////////////////////////////////////////////////////////////////////////
  2172. typedef struct ADLAdapterCapsX2
  2173. {
  2174. /// AdapterID for this adapter
  2175. int iAdapterID;
  2176. /// Number of controllers for this adapter
  2177. int iNumControllers;
  2178. /// Number of displays for this adapter
  2179. int iNumDisplays;
  2180. /// Number of overlays for this adapter
  2181. int iNumOverlays;
  2182. /// Number of GLSyncConnectors
  2183. int iNumOfGLSyncConnectors;
  2184. /// The bit mask identifies the adapter caps
  2185. int iCapsMask;
  2186. /// The bit identifies the adapter caps \ref define_adapter_caps
  2187. int iCapsValue;
  2188. /// Number of Connectors for this adapter
  2189. int iNumConnectors;
  2190. }ADLAdapterCapsX2;
  2191. typedef enum _ADL_ERROR_RECORD_SEVERITY
  2192. {
  2193. ADL_GLOBALLY_UNCORRECTED = 1,
  2194. ADL_LOCALLY_UNCORRECTED = 2,
  2195. ADL_DEFFERRED = 3,
  2196. ADL_CORRECTED = 4
  2197. }ADL_ERROR_RECORD_SEVERITY;
  2198. typedef union _ADL_ECC_EDC_FLAG
  2199. {
  2200. struct
  2201. {
  2202. unsigned int isEccAccessing : 1;
  2203. unsigned int reserved : 31;
  2204. }bits;
  2205. unsigned int u32All;
  2206. }ADL_ECC_EDC_FLAG;
  2207. /////////////////////////////////////////////////////////////////////////////////////////////
  2208. ///\brief Structure containing information about EDC Error Record
  2209. ///
  2210. /// This structure is used to store EDC Error Record
  2211. /// \nosubgrouping
  2212. ////////////////////////////////////////////////////////////////////////////////////////////
  2213. typedef struct ADLErrorRecord
  2214. {
  2215. // Severity of error
  2216. ADL_ERROR_RECORD_SEVERITY Severity;
  2217. // Is the counter valid?
  2218. int countValid;
  2219. // Counter value, if valid
  2220. unsigned int count;
  2221. // Is the location information valid?
  2222. int locationValid;
  2223. // Physical location of error
  2224. unsigned int CU; // CU number on which error occurred, if known
  2225. char StructureName[32]; // e.g. LDS, TCC, etc.
  2226. // Time of error record creation (e.g. time of query, or time of poison interrupt)
  2227. char tiestamp[32];
  2228. unsigned int padding[3];
  2229. }ADLErrorRecord;
  2230. typedef enum _ADL_EDC_BLOCK_ID
  2231. {
  2232. ADL_EDC_BLOCK_ID_SQCIS = 1,
  2233. ADL_EDC_BLOCK_ID_SQCDS = 2,
  2234. ADL_EDC_BLOCK_ID_SGPR = 3,
  2235. ADL_EDC_BLOCK_ID_VGPR = 4,
  2236. ADL_EDC_BLOCK_ID_LDS = 5,
  2237. ADL_EDC_BLOCK_ID_GDS = 6,
  2238. ADL_EDC_BLOCK_ID_TCL1 = 7,
  2239. ADL_EDC_BLOCK_ID_TCL2 = 8
  2240. }ADL_EDC_BLOCK_ID;
  2241. typedef enum _ADL_ERROR_INJECTION_MODE
  2242. {
  2243. ADL_ERROR_INJECTION_MODE_SINGLE = 1,
  2244. ADL_ERROR_INJECTION_MODE_MULTIPLE = 2,
  2245. ADL_ERROR_INJECTION_MODE_ADDRESS = 3
  2246. }ADL_ERROR_INJECTION_MODE;
  2247. typedef union _ADL_ERROR_PATTERN
  2248. {
  2249. struct
  2250. {
  2251. unsigned long EccInjVector : 16;
  2252. unsigned long EccInjEn : 9;
  2253. unsigned long EccBeatEn : 4;
  2254. unsigned long EccChEn : 4;
  2255. unsigned long reserved : 31;
  2256. } bits;
  2257. unsigned long long u64Value;
  2258. } ADL_ERROR_PATTERN;
  2259. typedef struct _ADL_ERROR_INJECTION_DATA
  2260. {
  2261. unsigned long long errorAddress;
  2262. ADL_ERROR_PATTERN errorPattern;
  2263. }ADL_ERROR_INJECTION_DATA;
  2264. /////////////////////////////////////////////////////////////////////////////////////////////
  2265. ///\brief Structure containing information about EDC Error Injection
  2266. ///
  2267. /// This structure is used to store EDC Error Injection
  2268. /// \nosubgrouping
  2269. ////////////////////////////////////////////////////////////////////////////////////////////
  2270. typedef struct ADLErrorInjection
  2271. {
  2272. ADL_EDC_BLOCK_ID blockId;
  2273. ADL_ERROR_INJECTION_MODE errorInjectionMode;
  2274. }ADLErrorInjection;
  2275. typedef struct ADLErrorInjectionX2
  2276. {
  2277. ADL_EDC_BLOCK_ID blockId;
  2278. ADL_ERROR_INJECTION_MODE errorInjectionMode;
  2279. ADL_ERROR_INJECTION_DATA errorInjectionData;
  2280. }ADLErrorInjectionX2;
  2281. /////////////////////////////////////////////////////////////////////////////////////////////
  2282. ///\brief Structure containing per display FreeSync capability information.
  2283. ///
  2284. /// This structure is used to store the FreeSync capability of both the display and
  2285. /// the GPU the display is connected to.
  2286. /// \nosubgrouping
  2287. ////////////////////////////////////////////////////////////////////////////////////////////
  2288. typedef struct ADLFreeSyncCap
  2289. {
  2290. /// FreeSync capability flags. \ref define_freesync_caps
  2291. int iCaps;
  2292. /// Reports minimum FreeSync refresh rate supported by the display in micro hertz
  2293. int iMinRefreshRateInMicroHz;
  2294. /// Reports maximum FreeSync refresh rate supported by the display in micro hertz
  2295. int iMaxRefreshRateInMicroHz;
  2296. /// Reserved
  2297. int iReserved[5];
  2298. } ADLFreeSyncCap;
  2299. /////////////////////////////////////////////////////////////////////////////////////////////
  2300. ///\brief Structure containing per display Display Connectivty Experience Settings
  2301. ///
  2302. /// This structure is used to store the Display Connectivity Experience settings of a
  2303. /// display
  2304. /// \nosubgrouping
  2305. ////////////////////////////////////////////////////////////////////////////////////////////
  2306. typedef struct _ADLDceSettings
  2307. {
  2308. DceSettingsType type; // Defines which structure is in the union below
  2309. union
  2310. {
  2311. struct
  2312. {
  2313. bool qualityDetectionEnabled;
  2314. } HdmiLq;
  2315. struct
  2316. {
  2317. DpLinkRate linkRate; // Read-only
  2318. unsigned int numberOfActiveLanes; // Read-only
  2319. unsigned int numberofTotalLanes; // Read-only
  2320. int relativePreEmphasis; // Allowable values are -2 to +2
  2321. int relativeVoltageSwing; // Allowable values are -2 to +2
  2322. int persistFlag;
  2323. } DpLink;
  2324. struct
  2325. {
  2326. bool linkProtectionEnabled; // Read-only
  2327. } Protection;
  2328. } Settings;
  2329. int iReserved[15];
  2330. } ADLDceSettings;
  2331. /////////////////////////////////////////////////////////////////////////////////////////////
  2332. ///\brief Structure containing information about Graphic Core
  2333. ///
  2334. /// This structure is used to get Graphic Core Info
  2335. /// \nosubgrouping
  2336. ////////////////////////////////////////////////////////////////////////////////////////////
  2337. typedef struct ADLGraphicCoreInfo
  2338. {
  2339. /// indicate the graphic core generation
  2340. int iGCGen;
  2341. union
  2342. {
  2343. /// Total number of CUs. Valid for GCN (iGCGen == GCN)
  2344. int iNumCUs;
  2345. /// Total number of WGPs. Valid for RDNA (iGCGen == RDNA)
  2346. int iNumWGPs;
  2347. };
  2348. union
  2349. {
  2350. /// Number of processing elements per CU. Valid for GCN (iGCGen == GCN)
  2351. int iNumPEsPerCU;
  2352. /// Number of processing elements per WGP. Valid for RDNA (iGCGen == RDNA)
  2353. int iNumPEsPerWGP;
  2354. };
  2355. /// Total number of SIMDs. Valid for Pre GCN (iGCGen == Pre-GCN)
  2356. int iNumSIMDs;
  2357. /// Total number of ROPs. Valid for both GCN and Pre GCN
  2358. int iNumROPs;
  2359. /// reserved for future use
  2360. int iReserved[11];
  2361. }ADLGraphicCoreInfo;
  2362. /////////////////////////////////////////////////////////////////////////////////////////////
  2363. ///\brief Structure containing information about Overdrive N clock range
  2364. ///
  2365. /// This structure is used to store information about Overdrive N clock range
  2366. /// \nosubgrouping
  2367. ////////////////////////////////////////////////////////////////////////////////////////////
  2368. typedef struct _ADLODNParameterRange
  2369. {
  2370. /// The starting value of the clock range
  2371. int iMode;
  2372. /// The starting value of the clock range
  2373. int iMin;
  2374. /// The ending value of the clock range
  2375. int iMax;
  2376. /// The minimum increment between clock values
  2377. int iStep;
  2378. /// The default clock values
  2379. int iDefault;
  2380. } ADLODNParameterRange;
  2381. /////////////////////////////////////////////////////////////////////////////////////////////
  2382. ///\brief Structure containing information about Overdrive N capabilities
  2383. ///
  2384. /// This structure is used to store information about Overdrive N capabilities
  2385. /// \nosubgrouping
  2386. ////////////////////////////////////////////////////////////////////////////////////////////
  2387. typedef struct _ADLODNCapabilities
  2388. {
  2389. /// Number of levels which describe the minimum to maximum clock ranges.
  2390. /// The 1st level indicates the minimum clocks, and the 2nd level
  2391. /// indicates the maximum clocks.
  2392. int iMaximumNumberOfPerformanceLevels;
  2393. /// Contains the hard limits of the sclk range. Overdrive
  2394. /// clocks cannot be set outside this range.
  2395. ADLODNParameterRange sEngineClockRange;
  2396. /// Contains the hard limits of the mclk range. Overdrive
  2397. /// clocks cannot be set outside this range.
  2398. ADLODNParameterRange sMemoryClockRange;
  2399. /// Contains the hard limits of the vddc range. Overdrive
  2400. /// clocks cannot be set outside this range.
  2401. ADLODNParameterRange svddcRange;
  2402. /// Contains the hard limits of the power range. Overdrive
  2403. /// clocks cannot be set outside this range.
  2404. ADLODNParameterRange power;
  2405. /// Contains the hard limits of the power range. Overdrive
  2406. /// clocks cannot be set outside this range.
  2407. ADLODNParameterRange powerTuneTemperature;
  2408. /// Contains the hard limits of the Temperature range. Overdrive
  2409. /// clocks cannot be set outside this range.
  2410. ADLODNParameterRange fanTemperature;
  2411. /// Contains the hard limits of the Fan range. Overdrive
  2412. /// clocks cannot be set outside this range.
  2413. ADLODNParameterRange fanSpeed;
  2414. /// Contains the hard limits of the Fan range. Overdrive
  2415. /// clocks cannot be set outside this range.
  2416. ADLODNParameterRange minimumPerformanceClock;
  2417. } ADLODNCapabilities;
  2418. /////////////////////////////////////////////////////////////////////////////////////////////
  2419. ///\brief Structure containing information about Overdrive N capabilities
  2420. ///
  2421. /// This structure is used to store information about Overdrive N capabilities
  2422. /// \nosubgrouping
  2423. ////////////////////////////////////////////////////////////////////////////////////////////
  2424. typedef struct _ADLODNCapabilitiesX2
  2425. {
  2426. /// Number of levels which describe the minimum to maximum clock ranges.
  2427. /// The 1st level indicates the minimum clocks, and the 2nd level
  2428. /// indicates the maximum clocks.
  2429. int iMaximumNumberOfPerformanceLevels;
  2430. /// bit vector, which tells what are the features are supported.
  2431. /// \ref: ADLODNFEATURECONTROL
  2432. int iFlags;
  2433. /// Contains the hard limits of the sclk range. Overdrive
  2434. /// clocks cannot be set outside this range.
  2435. ADLODNParameterRange sEngineClockRange;
  2436. /// Contains the hard limits of the mclk range. Overdrive
  2437. /// clocks cannot be set outside this range.
  2438. ADLODNParameterRange sMemoryClockRange;
  2439. /// Contains the hard limits of the vddc range. Overdrive
  2440. /// clocks cannot be set outside this range.
  2441. ADLODNParameterRange svddcRange;
  2442. /// Contains the hard limits of the power range. Overdrive
  2443. /// clocks cannot be set outside this range.
  2444. ADLODNParameterRange power;
  2445. /// Contains the hard limits of the power range. Overdrive
  2446. /// clocks cannot be set outside this range.
  2447. ADLODNParameterRange powerTuneTemperature;
  2448. /// Contains the hard limits of the Temperature range. Overdrive
  2449. /// clocks cannot be set outside this range.
  2450. ADLODNParameterRange fanTemperature;
  2451. /// Contains the hard limits of the Fan range. Overdrive
  2452. /// clocks cannot be set outside this range.
  2453. ADLODNParameterRange fanSpeed;
  2454. /// Contains the hard limits of the Fan range. Overdrive
  2455. /// clocks cannot be set outside this range.
  2456. ADLODNParameterRange minimumPerformanceClock;
  2457. /// Contains the hard limits of the throttleNotification
  2458. ADLODNParameterRange throttleNotificaion;
  2459. /// Contains the hard limits of the Auto Systemclock
  2460. ADLODNParameterRange autoSystemClock;
  2461. } ADLODNCapabilitiesX2;
  2462. /////////////////////////////////////////////////////////////////////////////////////////////
  2463. ///\brief Structure containing information about Overdrive level.
  2464. ///
  2465. /// This structure is used to store information about Overdrive level.
  2466. /// This structure is used by ADLODPerformanceLevels.
  2467. /// \nosubgrouping
  2468. ////////////////////////////////////////////////////////////////////////////////////////////
  2469. typedef struct ADLODNPerformanceLevel
  2470. {
  2471. /// clock.
  2472. int iClock;
  2473. /// VDCC.
  2474. int iVddc;
  2475. /// enabled
  2476. int iEnabled;
  2477. } ADLODNPerformanceLevel;
  2478. /////////////////////////////////////////////////////////////////////////////////////////////
  2479. ///\brief Structure containing information about Overdrive N performance levels.
  2480. ///
  2481. /// This structure is used to store information about Overdrive performance levels.
  2482. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
  2483. /// \nosubgrouping
  2484. ////////////////////////////////////////////////////////////////////////////////////////////
  2485. typedef struct ADLODNPerformanceLevels
  2486. {
  2487. int iSize;
  2488. //Automatic/manual
  2489. int iMode;
  2490. /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
  2491. int iNumberOfPerformanceLevels;
  2492. /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
  2493. ADLODNPerformanceLevel aLevels[1];
  2494. } ADLODNPerformanceLevels;
  2495. /////////////////////////////////////////////////////////////////////////////////////////////
  2496. ///\brief Structure containing information about Overdrive N Fan Speed.
  2497. ///
  2498. /// This structure is used to store information about Overdrive Fan control .
  2499. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
  2500. /// \nosubgrouping
  2501. ////////////////////////////////////////////////////////////////////////////////////////////
  2502. typedef struct ADLODNFanControl
  2503. {
  2504. int iMode;
  2505. int iFanControlMode;
  2506. int iCurrentFanSpeedMode;
  2507. int iCurrentFanSpeed;
  2508. int iTargetFanSpeed;
  2509. int iTargetTemperature;
  2510. int iMinPerformanceClock;
  2511. int iMinFanLimit;
  2512. } ADLODNFanControl;
  2513. /////////////////////////////////////////////////////////////////////////////////////////////
  2514. ///\brief Structure containing information about Overdrive N power limit.
  2515. ///
  2516. /// This structure is used to store information about Overdrive power limit.
  2517. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
  2518. /// \nosubgrouping
  2519. ////////////////////////////////////////////////////////////////////////////////////////////
  2520. typedef struct ADLODNPowerLimitSetting
  2521. {
  2522. int iMode;
  2523. int iTDPLimit;
  2524. int iMaxOperatingTemperature;
  2525. } ADLODNPowerLimitSetting;
  2526. typedef struct ADLODNPerformanceStatus
  2527. {
  2528. int iCoreClock;
  2529. int iMemoryClock;
  2530. int iDCEFClock;
  2531. int iGFXClock;
  2532. int iUVDClock;
  2533. int iVCEClock;
  2534. int iGPUActivityPercent;
  2535. int iCurrentCorePerformanceLevel;
  2536. int iCurrentMemoryPerformanceLevel;
  2537. int iCurrentDCEFPerformanceLevel;
  2538. int iCurrentGFXPerformanceLevel;
  2539. int iUVDPerformanceLevel;
  2540. int iVCEPerformanceLevel;
  2541. int iCurrentBusSpeed;
  2542. int iCurrentBusLanes;
  2543. int iMaximumBusLanes;
  2544. int iVDDC;
  2545. int iVDDCI;
  2546. } ADLODNPerformanceStatus;
  2547. ///\brief Structure containing information about Overdrive level.
  2548. ///
  2549. /// This structure is used to store information about Overdrive level.
  2550. /// This structure is used by ADLODPerformanceLevels.
  2551. /// \nosubgrouping
  2552. ////////////////////////////////////////////////////////////////////////////////////////////
  2553. typedef struct ADLODNPerformanceLevelX2
  2554. {
  2555. /// clock.
  2556. int iClock;
  2557. /// VDCC.
  2558. int iVddc;
  2559. /// enabled
  2560. int iEnabled;
  2561. /// MASK
  2562. int iControl;
  2563. } ADLODNPerformanceLevelX2;
  2564. /////////////////////////////////////////////////////////////////////////////////////////////
  2565. ///\brief Structure containing information about Overdrive N performance levels.
  2566. ///
  2567. /// This structure is used to store information about Overdrive performance levels.
  2568. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
  2569. /// \nosubgrouping
  2570. ////////////////////////////////////////////////////////////////////////////////////////////
  2571. typedef struct ADLODNPerformanceLevelsX2
  2572. {
  2573. int iSize;
  2574. //Automatic/manual
  2575. int iMode;
  2576. /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
  2577. int iNumberOfPerformanceLevels;
  2578. /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
  2579. ADLODNPerformanceLevelX2 aLevels[1];
  2580. } ADLODNPerformanceLevelsX2;
  2581. typedef enum _ADLODNCurrentPowerType
  2582. {
  2583. ODN_GPU_TOTAL_POWER = 0,
  2584. ODN_GPU_PPT_POWER,
  2585. ODN_GPU_SOCKET_POWER,
  2586. ODN_GPU_CHIP_POWER
  2587. } ADLODNCurrentPowerType;
  2588. // in/out: CWDDEPM_CURRENTPOWERPARAMETERS
  2589. typedef struct _ADLODNCurrentPowerParameters
  2590. {
  2591. int size;
  2592. ADLODNCurrentPowerType powerType;
  2593. int currentPower;
  2594. } ADLODNCurrentPowerParameters;
  2595. //ODN Ext range data structure
  2596. typedef struct _ADLODNExtSingleInitSetting
  2597. {
  2598. int mode;
  2599. int minValue;
  2600. int maxValue;
  2601. int step;
  2602. int defaultValue;
  2603. } ADLODNExtSingleInitSetting;
  2604. //OD8 Ext range data structure
  2605. typedef struct _ADLOD8SingleInitSetting
  2606. {
  2607. int featureID;
  2608. int minValue;
  2609. int maxValue;
  2610. int defaultValue;
  2611. } ADLOD8SingleInitSetting;
  2612. /////////////////////////////////////////////////////////////////////////////////////////////
  2613. ///\brief Structure containing information about Overdrive8 initial setting
  2614. ///
  2615. /// This structure is used to store information about Overdrive8 initial setting
  2616. /// \nosubgrouping
  2617. ////////////////////////////////////////////////////////////////////////////////////////////
  2618. typedef struct _ADLOD8InitSetting
  2619. {
  2620. int count;
  2621. int overdrive8Capabilities;
  2622. ADLOD8SingleInitSetting od8SettingTable[OD8_COUNT];
  2623. } ADLOD8InitSetting;
  2624. /////////////////////////////////////////////////////////////////////////////////////////////
  2625. ///\brief Structure containing information about Overdrive8 current setting
  2626. ///
  2627. /// This structure is used to store information about Overdrive8 current setting
  2628. /// \nosubgrouping
  2629. ////////////////////////////////////////////////////////////////////////////////////////////
  2630. typedef struct _ADLOD8CurrentSetting
  2631. {
  2632. int count;
  2633. int Od8SettingTable[OD8_COUNT];
  2634. } ADLOD8CurrentSetting;
  2635. /////////////////////////////////////////////////////////////////////////////////////////////
  2636. ///\brief Structure containing information about Overdrive8 set setting
  2637. ///
  2638. /// This structure is used to store information about Overdrive8 set setting
  2639. /// \nosubgrouping
  2640. ////////////////////////////////////////////////////////////////////////////////////////////
  2641. typedef struct _ADLOD8SingleSetSetting
  2642. {
  2643. int value;
  2644. int requested; // 0 - default , 1 - requested
  2645. int reset; // 0 - do not reset , 1 - reset setting back to default
  2646. } ADLOD8SingleSetSetting;
  2647. typedef struct _ADLOD8SetSetting
  2648. {
  2649. int count;
  2650. ADLOD8SingleSetSetting od8SettingTable[OD8_COUNT];
  2651. } ADLOD8SetSetting;
  2652. /////////////////////////////////////////////////////////////////////////////////////////////
  2653. ///\brief Structure containing information about Performance Metrics data
  2654. ///
  2655. /// This structure is used to store information about Performance Metrics data output
  2656. /// \nosubgrouping
  2657. ////////////////////////////////////////////////////////////////////////////////////////////
  2658. typedef struct _ADLSingleSensorData
  2659. {
  2660. int supported;
  2661. int value;
  2662. } ADLSingleSensorData;
  2663. typedef struct _ADLPMLogDataOutput
  2664. {
  2665. int size;
  2666. ADLSingleSensorData sensors[ADL_PMLOG_MAX_SENSORS];
  2667. }ADLPMLogDataOutput;
  2668. /////////////////////////////////////////////////////////////////////////////////////////////
  2669. ///\brief Structure containing information about PPLog settings.
  2670. ///
  2671. /// This structure is used to store information about PPLog settings.
  2672. /// This structure is used by the ADL2_PPLogSettings_Set() and ADL2_PPLogSettings_Get() functions.
  2673. /// \nosubgrouping
  2674. ////////////////////////////////////////////////////////////////////////////////////////////
  2675. typedef struct ADLPPLogSettings
  2676. {
  2677. int BreakOnAssert;
  2678. int BreakOnWarn;
  2679. int LogEnabled;
  2680. int LogFieldMask;
  2681. int LogDestinations;
  2682. int LogSeverityEnabled;
  2683. int LogSourceMask;
  2684. int PowerProfilingEnabled;
  2685. int PowerProfilingTimeInterval;
  2686. }ADLPPLogSettings;
  2687. /////////////////////////////////////////////////////////////////////////////////////////////
  2688. ///\brief Structure containing information related Frames Per Second for AC and DC.
  2689. ///
  2690. /// This structure is used to store information related AC and DC Frames Per Second settings
  2691. /// \nosubgrouping
  2692. ////////////////////////////////////////////////////////////////////////////////////////////
  2693. typedef struct _ADLFPSSettingsOutput
  2694. {
  2695. /// size
  2696. int ulSize;
  2697. /// FPS Monitor is enabled in the AC state if 1
  2698. int bACFPSEnabled;
  2699. /// FPS Monitor is enabled in the DC state if 1
  2700. int bDCFPSEnabled;
  2701. /// Current Value of FPS Monitor in AC state
  2702. int ulACFPSCurrent;
  2703. /// Current Value of FPS Monitor in DC state
  2704. int ulDCFPSCurrent;
  2705. /// Maximum FPS Threshold allowed in PPLib for AC
  2706. int ulACFPSMaximum;
  2707. /// Minimum FPS Threshold allowed in PPLib for AC
  2708. int ulACFPSMinimum;
  2709. /// Maximum FPS Threshold allowed in PPLib for DC
  2710. int ulDCFPSMaximum;
  2711. /// Minimum FPS Threshold allowed in PPLib for DC
  2712. int ulDCFPSMinimum;
  2713. } ADLFPSSettingsOutput;
  2714. /////////////////////////////////////////////////////////////////////////////////////////////
  2715. ///\brief Structure containing information related Frames Per Second for AC and DC.
  2716. ///
  2717. /// This structure is used to store information related AC and DC Frames Per Second settings
  2718. /// \nosubgrouping
  2719. ////////////////////////////////////////////////////////////////////////////////////////////
  2720. typedef struct _ADLFPSSettingsInput
  2721. {
  2722. /// size
  2723. int ulSize;
  2724. /// Settings are for Global FPS (used by CCC)
  2725. int bGlobalSettings;
  2726. /// Current Value of FPS Monitor in AC state
  2727. int ulACFPSCurrent;
  2728. /// Current Value of FPS Monitor in DC state
  2729. int ulDCFPSCurrent;
  2730. /// Reserved
  2731. int ulReserved[6];
  2732. } ADLFPSSettingsInput;
  2733. /////////////////////////////////////////////////////////////////////////////////////////////
  2734. ///\brief Structure containing information related power management logging.
  2735. ///
  2736. /// This structure is used to store support information for power management logging.
  2737. /// \nosubgrouping
  2738. ////////////////////////////////////////////////////////////////////////////////////////////
  2739. enum { ADL_PMLOG_MAX_SUPPORTED_SENSORS = 256 };
  2740. typedef struct _ADLPMLogSupportInfo
  2741. {
  2742. /// list of sensors defined by ADL_PMLOG_SENSORS
  2743. unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS];
  2744. /// Reserved
  2745. int ulReserved[16];
  2746. } ADLPMLogSupportInfo;
  2747. /////////////////////////////////////////////////////////////////////////////////////////////
  2748. ///\brief Structure containing information to start power management logging.
  2749. ///
  2750. /// This structure is used as input to ADL2_Adapter_PMLog_Start
  2751. /// \nosubgrouping
  2752. ////////////////////////////////////////////////////////////////////////////////////////////
  2753. typedef struct _ADLPMLogStartInput
  2754. {
  2755. /// list of sensors defined by ADL_PMLOG_SENSORS
  2756. unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS];
  2757. /// Sample rate in milliseconds
  2758. unsigned long ulSampleRate;
  2759. /// Reserved
  2760. int ulReserved[15];
  2761. } ADLPMLogStartInput;
  2762. typedef struct _ADLPMLogData
  2763. {
  2764. /// Structure version
  2765. unsigned int ulVersion;
  2766. /// Current driver sample rate
  2767. unsigned int ulActiveSampleRate;
  2768. /// Timestamp of last update
  2769. unsigned long long ulLastUpdated;
  2770. /// 2D array of senesor and values
  2771. unsigned int ulValues[ADL_PMLOG_MAX_SUPPORTED_SENSORS][2];
  2772. /// Reserved
  2773. unsigned int ulReserved[256];
  2774. } ADLPMLogData;
  2775. /////////////////////////////////////////////////////////////////////////////////////////////
  2776. ///\brief Structure containing information to start power management logging.
  2777. ///
  2778. /// This structure is returned as output from ADL2_Adapter_PMLog_Start
  2779. /// \nosubgrouping
  2780. ////////////////////////////////////////////////////////////////////////////////////////////
  2781. typedef struct _ADLPMLogStartOutput
  2782. {
  2783. /// Pointer to memory address containing logging data
  2784. union
  2785. {
  2786. void* pLoggingAddress;
  2787. unsigned long long ptr_LoggingAddress;
  2788. };
  2789. /// Reserved
  2790. int ulReserved[14];
  2791. } ADLPMLogStartOutput;
  2792. /////////////////////////////////////////////////////////////////////////////////////////////
  2793. ///\brief Structure containing information related RAS Get Error Counts Information
  2794. ///
  2795. /// This structure is used to store RAS Error Counts Get Input Information
  2796. /// \nosubgrouping
  2797. ////////////////////////////////////////////////////////////////////////////////////////////
  2798. typedef struct _ADLRASGetErrorCountsInput
  2799. {
  2800. unsigned int Reserved[16];
  2801. } ADLRASGetErrorCountsInput;
  2802. /////////////////////////////////////////////////////////////////////////////////////////////
  2803. ///\brief Structure containing information related RAS Get Error Counts Information
  2804. ///
  2805. /// This structure is used to store RAS Error Counts Get Output Information
  2806. /// \nosubgrouping
  2807. ////////////////////////////////////////////////////////////////////////////////////////////
  2808. typedef struct _ADLRASGetErrorCountsOutput
  2809. {
  2810. unsigned int CorrectedErrors; // includes both DRAM and SRAM ECC
  2811. unsigned int UnCorrectedErrors; // includes both DRAM and SRAM ECC
  2812. unsigned int Reserved[14];
  2813. } ADLRASGetErrorCountsOutput;
  2814. /////////////////////////////////////////////////////////////////////////////////////////////
  2815. ///\brief Structure containing information related RAS Get Error Counts Information
  2816. ///
  2817. /// This structure is used to store RAS Error Counts Get Information
  2818. /// \nosubgrouping
  2819. ////////////////////////////////////////////////////////////////////////////////////////////
  2820. typedef struct _ADLRASGetErrorCounts
  2821. {
  2822. unsigned int InputSize;
  2823. ADLRASGetErrorCountsInput Input;
  2824. unsigned int OutputSize;
  2825. ADLRASGetErrorCountsOutput Output;
  2826. } ADLRASGetErrorCounts;
  2827. /////////////////////////////////////////////////////////////////////////////////////////////
  2828. ///\brief Structure containing information related RAS Error Counts Reset Information
  2829. ///
  2830. /// This structure is used to store RAS Error Counts Reset Input Information
  2831. /// \nosubgrouping
  2832. ////////////////////////////////////////////////////////////////////////////////////////////
  2833. typedef struct _ADLRASResetErrorCountsInput
  2834. {
  2835. unsigned int Reserved[8];
  2836. } ADLRASResetErrorCountsInput;
  2837. /////////////////////////////////////////////////////////////////////////////////////////////
  2838. ///\brief Structure containing information related RAS Error Counts Reset Information
  2839. ///
  2840. /// This structure is used to store RAS Error Counts Reset Output Information
  2841. /// \nosubgrouping
  2842. ////////////////////////////////////////////////////////////////////////////////////////////
  2843. typedef struct _ADLRASResetErrorCountsOutput
  2844. {
  2845. unsigned int Reserved[8];
  2846. } ADLRASResetErrorCountsOutput;
  2847. /////////////////////////////////////////////////////////////////////////////////////////////
  2848. ///\brief Structure containing information related RAS Error Counts Reset Information
  2849. ///
  2850. /// This structure is used to store RAS Error Counts Reset Information
  2851. /// \nosubgrouping
  2852. ////////////////////////////////////////////////////////////////////////////////////////////
  2853. typedef struct _ADLRASResetErrorCounts
  2854. {
  2855. unsigned int InputSize;
  2856. ADLRASResetErrorCountsInput Input;
  2857. unsigned int OutputSize;
  2858. ADLRASResetErrorCountsOutput Output;
  2859. } ADLRASResetErrorCounts;
  2860. /////////////////////////////////////////////////////////////////////////////////////////////
  2861. ///\brief Structure containing information related RAS Error Injection information
  2862. ///
  2863. /// This structure is used to store RAS Error Injection input information
  2864. /// \nosubgrouping
  2865. ////////////////////////////////////////////////////////////////////////////////////////////
  2866. typedef struct _ADLRASErrorInjectonInput
  2867. {
  2868. unsigned long long Address;
  2869. ADL_RAS_INJECTION_METHOD Value;
  2870. ADL_RAS_BLOCK_ID BlockId;
  2871. ADL_RAS_ERROR_TYPE InjectErrorType;
  2872. ADL_MEM_SUB_BLOCK_ID SubBlockIndex;
  2873. unsigned int padding[9];
  2874. } ADLRASErrorInjectonInput;
  2875. /////////////////////////////////////////////////////////////////////////////////////////////
  2876. ///\brief Structure containing information related RAS Error Injection information
  2877. ///
  2878. /// This structure is used to store RAS Error Injection output information
  2879. /// \nosubgrouping
  2880. ////////////////////////////////////////////////////////////////////////////////////////////
  2881. typedef struct _ADLRASErrorInjectionOutput
  2882. {
  2883. unsigned int ErrorInjectionStatus;
  2884. unsigned int padding[15];
  2885. } ADLRASErrorInjectionOutput;
  2886. /////////////////////////////////////////////////////////////////////////////////////////////
  2887. ///\brief Structure containing information related RAS Error Injection information
  2888. ///
  2889. /// This structure is used to store RAS Error Injection information
  2890. /// \nosubgrouping
  2891. ////////////////////////////////////////////////////////////////////////////////////////////
  2892. typedef struct _ADLRASErrorInjection
  2893. {
  2894. unsigned int InputSize;
  2895. ADLRASErrorInjectonInput Input;
  2896. unsigned int OutputSize;
  2897. ADLRASErrorInjectionOutput Output;
  2898. } ADLRASErrorInjection;
  2899. /////////////////////////////////////////////////////////////////////////////////////////////
  2900. ///\brief Structure containing information about an application
  2901. ///
  2902. /// This structure is used to store basic information of a recently ran or currently running application
  2903. /// \nosubgrouping
  2904. ////////////////////////////////////////////////////////////////////////////////////////////
  2905. typedef struct _ADLSGApplicationInfo
  2906. {
  2907. /// Application file name
  2908. wchar_t strFileName[ADL_MAX_PATH];
  2909. /// Application file path
  2910. wchar_t strFilePath[ADL_MAX_PATH];
  2911. /// Application version
  2912. wchar_t strVersion[ADL_MAX_PATH];
  2913. /// Timestamp at which application has run
  2914. long long int timeStamp;
  2915. /// Holds whether the applicaition profile exists or not
  2916. unsigned int iProfileExists;
  2917. /// The GPU on which application runs
  2918. unsigned int iGPUAffinity;
  2919. /// The BDF of the GPU on which application runs
  2920. ADLBdf GPUBdf;
  2921. } ADLSGApplicationInfo;
  2922. /////////////////////////////////////////////////////////////////////////////////////////////
  2923. ///\brief Structure containing information related Frames Per Second for AC and DC.
  2924. ///
  2925. /// This structure is used to store information related AC and DC Frames Per Second settings
  2926. /// \nosubgrouping
  2927. ////////////////////////////////////////////////////////////////////////////////////////////
  2928. enum { ADLPreFlipPostProcessingInfoInvalidLUTIndex = 0xFFFFFFFF };
  2929. enum ADLPreFlipPostProcessingLUTAlgorithm
  2930. {
  2931. ADLPreFlipPostProcessingLUTAlgorithm_Default = 0,
  2932. ADLPreFlipPostProcessingLUTAlgorithm_Full,
  2933. ADLPreFlipPostProcessingLUTAlgorithm_Approximation
  2934. };
  2935. typedef struct _ADLPreFlipPostProcessingInfo
  2936. {
  2937. /// size
  2938. int ulSize;
  2939. /// Current active state
  2940. int bEnabled;
  2941. /// Current selected LUT index. 0xFFFFFFF returned if nothing selected.
  2942. int ulSelectedLUTIndex;
  2943. /// Current selected LUT Algorithm
  2944. int ulSelectedLUTAlgorithm;
  2945. /// Reserved
  2946. int ulReserved[12];
  2947. } ADLPreFlipPostProcessingInfo;
  2948. typedef struct _ADL_ERROR_REASON
  2949. {
  2950. int boost; //ON, when boost is Enabled
  2951. int delag; //ON, when delag is Enabled
  2952. int chill; //ON, when chill is Enabled
  2953. }ADL_ERROR_REASON;
  2954. /////////////////////////////////////////////////////////////////////////////////////////////
  2955. ///\brief Structure containing information about DELAG Settings change reason
  2956. ///
  2957. /// Elements of DELAG settings changed reason.
  2958. /// \nosubgrouping
  2959. ////////////////////////////////////////////////////////////////////////////////////////////
  2960. typedef struct _ADL_DELAG_NOTFICATION_REASON
  2961. {
  2962. int HotkeyChanged; //Set when Hotkey value is changed
  2963. int GlobalEnableChanged; //Set when Global enable value is changed
  2964. int GlobalLimitFPSChanged; //Set when Global enable value is changed
  2965. }ADL_DELAG_NOTFICATION_REASON;
  2966. /////////////////////////////////////////////////////////////////////////////////////////////
  2967. ///\brief Structure containing information about DELAG Settings
  2968. ///
  2969. /// Elements of DELAG settings.
  2970. /// \nosubgrouping
  2971. ////////////////////////////////////////////////////////////////////////////////////////////
  2972. typedef struct _ADL_DELAG_SETTINGS
  2973. {
  2974. int Hotkey; // Hotkey value
  2975. int GlobalEnable; //Global enable value
  2976. int GlobalLimitFPS; //Global Limit FPS
  2977. int GlobalLimitFPS_MinLimit; //Gloabl Limit FPS slider min limit value
  2978. int GlobalLimitFPS_MaxLimit; //Gloabl Limit FPS slider max limit value
  2979. int GlobalLimitFPS_Step; //Gloabl Limit FPS step value
  2980. }ADL_DELAG_SETTINGS;
  2981. /////////////////////////////////////////////////////////////////////////////////////////////
  2982. ///\brief Structure containing information about BOOST Settings change reason
  2983. ///
  2984. /// Elements of BOOST settings changed reason.
  2985. /// \nosubgrouping
  2986. ////////////////////////////////////////////////////////////////////////////////////////////
  2987. typedef struct _ADL_BOOST_NOTFICATION_REASON
  2988. {
  2989. int HotkeyChanged; //Set when Hotkey value is changed
  2990. int GlobalEnableChanged; //Set when Global enable value is changed
  2991. int GlobalMinResChanged; //Set when Global min resolution value is changed
  2992. }ADL_BOOST_NOTFICATION_REASON;
  2993. /////////////////////////////////////////////////////////////////////////////////////////////
  2994. ///\brief Structure containing information about BOOST Settings
  2995. ///
  2996. /// Elements of BOOST settings.
  2997. /// \nosubgrouping
  2998. ////////////////////////////////////////////////////////////////////////////////////////////
  2999. typedef struct _ADL_BOOST_SETTINGS
  3000. {
  3001. int Hotkey; // Hotkey value
  3002. int GlobalEnable; //Global enable value
  3003. int GlobalMinRes; //Gloabl Min Resolution value
  3004. int GlobalMinRes_MinLimit; //Gloabl Min Resolution slider min limit value
  3005. int GlobalMinRes_MaxLimit; //Gloabl Min Resolution slider max limit value
  3006. int GlobalMinRes_Step; //Gloabl Min Resolution step value
  3007. }ADL_BOOST_SETTINGS;
  3008. /////////////////////////////////////////////////////////////////////////////////////////////
  3009. ///\brief Structure containing information about RIS Settings change reason
  3010. ///
  3011. /// Elements of RIS settings changed reason.
  3012. /// \nosubgrouping
  3013. ////////////////////////////////////////////////////////////////////////////////////////////
  3014. typedef struct _ADL_RIS_NOTFICATION_REASON
  3015. {
  3016. unsigned int GlobalEnableChanged; //Set when Global enable value is changed
  3017. unsigned int GlobalSharpeningDegreeChanged; //Set when Global sharpening Degree value is changed
  3018. }ADL_RIS_NOTFICATION_REASON;
  3019. /////////////////////////////////////////////////////////////////////////////////////////////
  3020. ///\brief Structure containing information about RIS Settings
  3021. ///
  3022. /// Elements of RIS settings.
  3023. /// \nosubgrouping
  3024. ////////////////////////////////////////////////////////////////////////////////////////////
  3025. typedef struct _ADL_RIS_SETTINGS
  3026. {
  3027. int GlobalEnable; //Global enable value
  3028. int GlobalSharpeningDegree; //Global sharpening value
  3029. int GlobalSharpeningDegree_MinLimit; //Gloabl sharpening slider min limit value
  3030. int GlobalSharpeningDegree_MaxLimit; //Gloabl sharpening slider max limit value
  3031. int GlobalSharpeningDegree_Step; //Gloabl sharpening step value
  3032. }ADL_RIS_SETTINGS;
  3033. /////////////////////////////////////////////////////////////////////////////////////////////
  3034. ///\brief Structure containing information about CHILL Settings change reason
  3035. ///
  3036. /// Elements of Chiil settings changed reason.
  3037. /// \nosubgrouping
  3038. ////////////////////////////////////////////////////////////////////////////////////////////
  3039. typedef struct _ADL_CHILL_NOTFICATION_REASON
  3040. {
  3041. int HotkeyChanged; //Set when Hotkey value is changed
  3042. int GlobalEnableChanged; //Set when Global enable value is changed
  3043. int GlobalMinFPSChanged; //Set when Global min FPS value is changed
  3044. int GlobalMaxFPSChanged; //Set when Global max FPS value is changed
  3045. }ADL_CHILL_NOTFICATION_REASON;
  3046. /////////////////////////////////////////////////////////////////////////////////////////////
  3047. ///\brief Structure containing information about CHILL Settings
  3048. ///
  3049. /// Elements of Chiil settings.
  3050. /// \nosubgrouping
  3051. ////////////////////////////////////////////////////////////////////////////////////////////
  3052. typedef struct _ADL_CHILL_SETTINGS
  3053. {
  3054. int Hotkey; // Hotkey value
  3055. int GlobalEnable; //Global enable value
  3056. int GlobalMinFPS; //Global Min FPS value
  3057. int GlobalMaxFPS; //Global Max FPS value
  3058. int GlobalFPS_MinLimit; //Gloabl FPS slider min limit value
  3059. int GlobalFPS_MaxLimit; //Gloabl FPS slider max limit value
  3060. int GlobalFPS_Step; //Gloabl FPS Slider step value
  3061. }ADL_CHILL_SETTINGS;
  3062. #endif /* ADL_STRUCTURES_H_ */