ohmu
·
2026-10-15
1//
2// Copyright (c) 2016 - 2022 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
23/// \file adl_structures.h
24///\brief This file contains the structure declarations that are used by the public ADL interfaces for \WIN platforms.\n <b>Included in ADL SDK</b>
25///
26/// All data structures used in AMD Display Library (ADL) public interfaces should be defined in this header file.
27///
28
29#ifndef ADL_STRUCTURES_H_
30#define ADL_STRUCTURES_H_
31
32#include "adl_defines.h"
33#include <stdbool.h>
34/////////////////////////////////////////////////////////////////////////////////////////////
35///\brief Structure containing information about the graphics adapter.
36///
37/// This structure is used to store various information about the graphics adapter. This
38/// information can be returned to the user. Alternatively, it can be used to access various driver calls to set
39/// or fetch various settings upon the user's request.
40/// \nosubgrouping
41////////////////////////////////////////////////////////////////////////////////////////////
42typedef struct AdapterInfo
43{
44/// \WIN_STRUCT_MEM
45
46/// Size of the structure.
47 int iSize;
48/// The ADL index handle. One GPU may be associated with one or two index handles
49 int iAdapterIndex;
50/// The unique device ID associated with this adapter.
51 char strUDID[ADL_MAX_PATH];
52/// The BUS number associated with this adapter.
53 int iBusNumber;
54/// The driver number associated with this adapter.
55 int iDeviceNumber;
56/// The function number.
57 int iFunctionNumber;
58/// The vendor ID associated with this adapter.
59 int iVendorID;
60/// Adapter name.
61 char strAdapterName[ADL_MAX_PATH];
62/// Display name. For example, "\\\\Display0" for Windows.
63 char strDisplayName[ADL_MAX_PATH];
64/// 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
65 int iPresent;
66
67#if defined (_WIN32) || defined (_WIN64)
68/// \WIN_STRUCT_MEM
69
70/// Exist or not; 1 is exist and 0 is not present.
71 int iExist;
72/// Driver registry path.
73 char strDriverPath[ADL_MAX_PATH];
74/// Driver registry path Ext for.
75 char strDriverPathExt[ADL_MAX_PATH];
76/// PNP string from Windows.
77 char strPNPString[ADL_MAX_PATH];
78/// It is generated from EnumDisplayDevices.
79 int iOSDisplayIndex;
80
81#endif /* (_WIN32) || (_WIN64) */
82
83} AdapterInfo, *LPAdapterInfo;
84
85/////////////////////////////////////////////////////////////////////////////////////////////
86///\brief Structure containing information about an controller mode
87///
88/// This structure is used to store information of an controller mode
89/// \nosubgrouping
90////////////////////////////////////////////////////////////////////////////////////////////
91typedef struct ADLAdapterCaps
92{
93 /// AdapterID for this adapter
94 int iAdapterID;
95 /// Number of controllers for this adapter
96 int iNumControllers;
97 /// Number of displays for this adapter
98 int iNumDisplays;
99 /// Number of overlays for this adapter
100 int iNumOverlays;
101 /// Number of GLSyncConnectors
102 int iNumOfGLSyncConnectors;
103 /// The bit mask identifies the adapter caps
104 int iCapsMask;
105 /// The bit identifies the adapter caps \ref define_adapter_caps
106 int iCapsValue;
107}ADLAdapterCaps;
108
109/////////////////////////////////////////////////////////////////////////////////////////////
110///\brief Structure containing additional information about the ASIC memory
111///
112/// This structure is used to store additional information about the ASIC memory. This
113/// information can be returned to the user.
114/// \nosubgrouping
115////////////////////////////////////////////////////////////////////////////////////////////
116typedef struct ADLMemoryInfo2
117{
118 /// Memory size in bytes.
119 long long iMemorySize;
120 /// Memory type in string.
121 char strMemoryType[ADL_MAX_PATH];
122 /// Highest default performance level Memory bandwidth in Mbytes/s
123 long long iMemoryBandwidth;
124 /// HyperMemory size in bytes.
125 long long iHyperMemorySize;
126
127 /// Invisible Memory size in bytes.
128 long long iInvisibleMemorySize;
129 /// Visible Memory size in bytes.
130 long long iVisibleMemorySize;
131} ADLMemoryInfo2, *LPADLMemoryInfo2;
132
133/////////////////////////////////////////////////////////////////////////////////////////////
134///\brief Structure containing additional information about the ASIC memory
135///
136/// This structure is used to store additional information about the ASIC memory. This
137/// information can be returned to the user.
138/// \nosubgrouping
139////////////////////////////////////////////////////////////////////////////////////////////
140typedef struct ADLMemoryInfo3
141{
142 /// Memory size in bytes.
143 long long iMemorySize;
144 /// Memory type in string.
145 char strMemoryType[ADL_MAX_PATH];
146 /// Highest default performance level Memory bandwidth in Mbytes/s
147 long long iMemoryBandwidth;
148 /// HyperMemory size in bytes.
149 long long iHyperMemorySize;
150
151 /// Invisible Memory size in bytes.
152 long long iInvisibleMemorySize;
153 /// Visible Memory size in bytes.
154 long long iVisibleMemorySize;
155 /// Vram vendor ID
156 long long iVramVendorRevId;
157} ADLMemoryInfo3, *LPADLMemoryInfo3;
158
159/////////////////////////////////////////////////////////////////////////////////////////////
160///\brief Structure containing additional information about the ASIC memory
161///
162/// This structure is used to store additional information about the ASIC memory. This
163/// information can be returned to the user.
164/// \nosubgrouping
165////////////////////////////////////////////////////////////////////////////////////////////
166typedef struct ADLMemoryInfoX4
167{
168 /// Memory size in bytes.
169 long long iMemorySize;
170 /// Memory type in string.
171 char strMemoryType[ADL_MAX_PATH];
172 /// Highest default performance level Memory bandwidth in Mbytes/s
173 long long iMemoryBandwidth;
174 /// HyperMemory size in bytes.
175 long long iHyperMemorySize;
176
177 /// Invisible Memory size in bytes.
178 long long iInvisibleMemorySize;
179 /// Visible Memory size in bytes.
180 long long iVisibleMemorySize;
181 /// Vram vendor ID
182 long long iVramVendorRevId;
183 /// Memory Bandiwidth that is calculated and finalized on the driver side, grab and go.
184 long long iMemoryBandwidthX2;
185 /// Memory Bit Rate that is calculated and finalized on the driver side, grab and go.
186 long long iMemoryBitRateX2;
187
188} ADLMemoryInfoX4, *LPADLMemoryInfoX4;
189
190///////////////////////////////////////////////////////////////////////////
191// ADLvRamVendor Enumeration
192///////////////////////////////////////////////////////////////////////////
193enum ADLvRamVendors
194{
195 ADLvRamVendor_Unsupported = 0x0,
196 ADLvRamVendor_SAMSUNG,
197 ADLvRamVendor_INFINEON,
198 ADLvRamVendor_ELPIDA,
199 ADLvRamVendor_ETRON,
200 ADLvRamVendor_NANYA,
201 ADLvRamVendor_HYNIX,
202 ADLvRamVendor_MOSEL,
203 ADLvRamVendor_WINBOND,
204 ADLvRamVendor_ESMT,
205 ADLvRamVendor_MICRON = 0xF,
206 ADLvRamVendor_Undefined
207};
208
209/////////////////////////////////////////////////////////////////////////////////////////////
210///\brief Structure containing information about components of ASIC GCN architecture
211///
212/// Elements of GCN info are compute units, number of Tex (Texture filtering units) , number of ROPs (render back-ends).
213/// \nosubgrouping
214////////////////////////////////////////////////////////////////////////////////////////////
215
216typedef struct ADLGcnInfo
217{
218 int CuCount; //Number of compute units on the ASIC.
219 int TexCount; //Number of texture mapping units.
220 int RopCount; //Number of Render backend Units.
221 int ASICFamilyId; //Such SI, VI. See /inc/asic_reg/atiid.h for family ids
222 int ASICRevisionId; //Such as Ellesmere, Fiji. For example - VI family revision ids are stored in /inc/asic_reg/vi_id.h
223}ADLGcnInfo;
224
225/////////////////////////////////////////////////////////////////////////////////////////////
226///\brief Structure containing information related virtual segment config information.
227///
228/// This structure is used to store information related virtual segment config
229/// \nosubgrouping
230////////////////////////////////////////////////////////////////////////////////////////////
231typedef struct ADLVirtualSegmentSettingsOutput
232{
233 int virtualSegmentSupported; // 1 - subsequent values are valid
234 int virtualSegmentDefault; //virtual segment default, 1: enable, 0: disable
235 int virtualSegmentCurrent; //virtual segment current, 1: enable, 0: disable
236 int iMinSizeInMB; //minimum value
237 int iMaxSizeInMB; //maximum value
238 int icurrentSizeInMB; //last configured otherwise same as factory default
239 int idefaultSizeInMB; //factory default
240 int iMask; //fileds for extension in the future
241 int iValue; //fileds for extension in the future
242} ADLVirtualSegmentSettingsOutput;
243
244/////////////////////////////////////////////////////////////////////////////////////////////
245/// \brief Structure containing information about the Chipset.
246///
247/// This structure is used to store various information about the Chipset. This
248/// information can be returned to the user.
249/// \nosubgrouping
250////////////////////////////////////////////////////////////////////////////////////////////
251typedef struct ADLChipSetInfo
252{
253 int iBusType; ///< Bus type.
254 int iBusSpeedType; ///Maximum Bus Speed of the current platform
255 int iMaxPCIELaneWidth; ///< Number of PCIE lanes.
256 int iCurrentPCIELaneWidth; ///< Current PCIE Lane Width
257 int iSupportedAGPSpeeds; ///< Bit mask or AGP transfer speed.
258 int iCurrentAGPSpeed; ///< Current AGP speed
259} ADLChipSetInfo, *LPADLChipSetInfo;
260
261/////////////////////////////////////////////////////////////////////////////////////////////
262///\brief Structure containing information about the ASIC memory.
263///
264/// This structure is used to store various information about the ASIC memory. This
265/// information can be returned to the user.
266/// \nosubgrouping
267////////////////////////////////////////////////////////////////////////////////////////////
268typedef struct ADLMemoryInfo
269{
270/// Memory size in bytes.
271 long long iMemorySize;
272/// Memory type in string.
273 char strMemoryType[ADL_MAX_PATH];
274/// Memory bandwidth in Mbytes/s.
275 long long iMemoryBandwidth;
276} ADLMemoryInfo, *LPADLMemoryInfo;
277
278/////////////////////////////////////////////////////////////////////////////////////////////
279///\brief Structure containing information about memory required by type
280///
281/// This structure is returned by ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration
282/// will return the Memory used.
283/// \nosubgrouping
284////////////////////////////////////////////////////////////////////////////////////////////
285typedef struct ADLMemoryRequired
286{
287 long long iMemoryReq; /// Memory in bytes required
288 int iType; /// Type of Memory \ref define_adl_validmemoryrequiredfields
289 int iDisplayFeatureValue; /// Display features \ref define_adl_visiblememoryfeatures that are using this type of memory
290} ADLMemoryRequired, *LPADLMemoryRequired;
291
292/////////////////////////////////////////////////////////////////////////////////////////////
293///\brief Structure containing information about the features associated with a display
294///
295/// This structure is a parameter to ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration
296/// will return the Memory used.
297/// \nosubgrouping
298////////////////////////////////////////////////////////////////////////////////////////////
299typedef struct ADLMemoryDisplayFeatures
300{
301 int iDisplayIndex; /// ADL Display index
302 int iDisplayFeatureValue; /// features that the display is using \ref define_adl_visiblememoryfeatures
303} ADLMemoryDisplayFeatures, *LPADLMemoryDisplayFeatures;
304
305/////////////////////////////////////////////////////////////////////////////////////////////
306///\brief Structure containing DDC information.
307///
308/// This structure is used to store various DDC information that can be returned to the user.
309/// Note that all fields of type int are actually defined as unsigned int types within the driver.
310/// \nosubgrouping
311////////////////////////////////////////////////////////////////////////////////////////////
312typedef struct ADLDDCInfo
313{
314/// Size of the structure
315 int ulSize;
316/// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC information fields will be used.
317 int ulSupportsDDC;
318/// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.
319 int ulManufacturerID;
320/// Returns the product ID of the display device. Should be zeroed if this information is not available.
321 int ulProductID;
322/// Returns the name of the display device. Should be zeroed if this information is not available.
323 char cDisplayName[ADL_MAX_DISPLAY_NAME];
324/// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.
325 int ulMaxHResolution;
326/// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available.
327 int ulMaxVResolution;
328/// Returns the maximum supported refresh rate. Should be zeroed if this information is not available.
329 int ulMaxRefresh;
330/// Returns the display device preferred timing mode's horizontal resolution.
331 int ulPTMCx;
332/// Returns the display device preferred timing mode's vertical resolution.
333 int ulPTMCy;
334/// Returns the display device preferred timing mode's refresh rate.
335 int ulPTMRefreshRate;
336/// Return EDID flags.
337 int ulDDCInfoFlag;
338} ADLDDCInfo, *LPADLDDCInfo;
339
340/////////////////////////////////////////////////////////////////////////////////////////////
341///\brief Structure containing DDC information.
342///
343/// This structure is used to store various DDC information that can be returned to the user.
344/// Note that all fields of type int are actually defined as unsigned int types within the driver.
345/// \nosubgrouping
346////////////////////////////////////////////////////////////////////////////////////////////
347typedef struct ADLDDCInfo2
348{
349/// Size of the structure
350 int ulSize;
351/// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC
352/// information fields will be used.
353 int ulSupportsDDC;
354/// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.
355 int ulManufacturerID;
356/// Returns the product ID of the display device. Should be zeroed if this information is not available.
357 int ulProductID;
358/// Returns the name of the display device. Should be zeroed if this information is not available.
359 char cDisplayName[ADL_MAX_DISPLAY_NAME];
360/// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.
361 int ulMaxHResolution;
362/// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available.
363 int ulMaxVResolution;
364/// Returns the maximum supported refresh rate. Should be zeroed if this information is not available.
365 int ulMaxRefresh;
366/// Returns the display device preferred timing mode's horizontal resolution.
367 int ulPTMCx;
368/// Returns the display device preferred timing mode's vertical resolution.
369 int ulPTMCy;
370/// Returns the display device preferred timing mode's refresh rate.
371 int ulPTMRefreshRate;
372/// Return EDID flags.
373 int ulDDCInfoFlag;
374/// Returns 1 if the display supported packed pixel, 0 otherwise
375 int bPackedPixelSupported;
376/// Returns the Pixel formats the display supports \ref define_ddcinfo_pixelformats
377 int iPanelPixelFormat;
378/// Return EDID serial ID.
379 int ulSerialID;
380/// Return minimum monitor luminance data
381 int ulMinLuminanceData;
382/// Return average monitor luminance data
383 int ulAvgLuminanceData;
384/// Return maximum monitor luminance data
385 int ulMaxLuminanceData;
386
387/// Bit vector of supported transfer functions \ref define_source_content_TF
388 int iSupportedTransferFunction;
389
390/// Bit vector of supported color spaces \ref define_source_content_CS
391 int iSupportedColorSpace;
392
393/// Display Red Chromaticity X coordinate multiplied by 10000
394 int iNativeDisplayChromaticityRedX;
395/// Display Red Chromaticity Y coordinate multiplied by 10000
396 int iNativeDisplayChromaticityRedY;
397/// Display Green Chromaticity X coordinate multiplied by 10000
398 int iNativeDisplayChromaticityGreenX;
399/// Display Green Chromaticity Y coordinate multiplied by 10000
400 int iNativeDisplayChromaticityGreenY;
401/// Display Blue Chromaticity X coordinate multiplied by 10000
402 int iNativeDisplayChromaticityBlueX;
403/// Display Blue Chromaticity Y coordinate multiplied by 10000
404 int iNativeDisplayChromaticityBlueY;
405/// Display White Point X coordinate multiplied by 10000
406 int iNativeDisplayChromaticityWhitePointX;
407/// Display White Point Y coordinate multiplied by 10000
408 int iNativeDisplayChromaticityWhitePointY;
409/// Display diffuse screen reflectance 0-1 (100%) in units of 0.01
410 int iDiffuseScreenReflectance;
411/// Display specular screen reflectance 0-1 (100%) in units of 0.01
412 int iSpecularScreenReflectance;
413/// Bit vector of supported color spaces \ref define_HDR_support
414 int iSupportedHDR;
415/// Bit vector for freesync flags
416 int iFreesyncFlags;
417
418/// Return minimum monitor luminance without dimming data
419 int ulMinLuminanceNoDimmingData;
420
421 int ulMaxBacklightMaxLuminanceData;
422 int ulMinBacklightMaxLuminanceData;
423 int ulMaxBacklightMinLuminanceData;
424 int ulMinBacklightMinLuminanceData;
425
426 // Display screen width/height
427 int ulScreenWidth;
428 int ulScreenHeight;
429
430 // Reserved for future use
431 int iReserved[2];
432} ADLDDCInfo2, *LPADLDDCInfo2;
433
434/////////////////////////////////////////////////////////////////////////////////////////////
435///\brief Structure containing information controller Gamma settings.
436///
437/// This structure is used to store the red, green and blue color channel information for the.
438/// controller gamma setting. This information is returned by ADL, and it can also be used to
439/// set the controller gamma setting.
440/// \nosubgrouping
441////////////////////////////////////////////////////////////////////////////////////////////
442typedef struct ADLGamma
443{
444/// Red color channel gamma value.
445 float fRed;
446/// Green color channel gamma value.
447 float fGreen;
448/// Blue color channel gamma value.
449 float fBlue;
450} ADLGamma, *LPADLGamma;
451
452/////////////////////////////////////////////////////////////////////////////////////////////
453///\brief Structure containing information about component video custom modes.
454///
455/// This structure is used to store the component video custom mode.
456/// \nosubgrouping
457////////////////////////////////////////////////////////////////////////////////////////////
458typedef struct ADLCustomMode
459{
460/// Custom mode flags. They are returned by the ADL driver.
461 int iFlags;
462/// Custom mode width.
463 int iModeWidth;
464/// Custom mode height.
465 int iModeHeight;
466/// Custom mode base width.
467 int iBaseModeWidth;
468/// Custom mode base height.
469 int iBaseModeHeight;
470/// Custom mode refresh rate.
471 int iRefreshRate;
472} ADLCustomMode, *LPADLCustomMode;
473
474/////////////////////////////////////////////////////////////////////////////////////////////
475///\brief Structure containing Clock information for OD5 calls.
476///
477/// This structure is used to retrieve clock information for OD5 calls.
478/// \nosubgrouping
479////////////////////////////////////////////////////////////////////////////////////////////
480typedef struct ADLGetClocksOUT
481{
482 long ulHighCoreClock;
483 long ulHighMemoryClock;
484 long ulHighVddc;
485 long ulCoreMin;
486 long ulCoreMax;
487 long ulMemoryMin;
488 long ulMemoryMax;
489 long ulActivityPercent;
490 long ulCurrentCoreClock;
491 long ulCurrentMemoryClock;
492 long ulReserved;
493} ADLGetClocksOUT;
494
495/////////////////////////////////////////////////////////////////////////////////////////////
496///\brief Structure containing HDTV information for display calls.
497///
498/// This structure is used to retrieve HDTV information information for display calls.
499/// \nosubgrouping
500////////////////////////////////////////////////////////////////////////////////////////////
501typedef struct ADLDisplayConfig
502{
503/// Size of the structure
504 long ulSize;
505/// HDTV connector type.
506 long ulConnectorType;
507/// HDTV capabilities.
508 long ulDeviceData;
509/// Overridden HDTV capabilities.
510 long ulOverridedDeviceData;
511/// Reserved field
512 long ulReserved;
513} ADLDisplayConfig;
514
515/////////////////////////////////////////////////////////////////////////////////////////////
516///\brief Structure containing information about the display device.
517///
518/// This structure is used to store display device information
519/// such as display index, type, name, connection status, mapped adapter and controller indexes,
520/// whether or not multiple VPUs are supported, local display connections or not (through Lasso), etc.
521/// This information can be returned to the user. Alternatively, it can be used to access various driver calls to set
522/// or fetch various display device related settings upon the user's request.
523/// \nosubgrouping
524////////////////////////////////////////////////////////////////////////////////////////////
525typedef struct ADLDisplayID
526{
527/// The logical display index belonging to this adapter.
528 int iDisplayLogicalIndex;
529
530///\brief The physical display index.
531/// For example, display index 2 from adapter 2 can be used by current adapter 1.\n
532/// So current adapter may enumerate this adapter as logical display 7 but the physical display
533/// index is still 2.
534 int iDisplayPhysicalIndex;
535
536/// The persistent logical adapter index for the display.
537 int iDisplayLogicalAdapterIndex;
538
539///\brief The persistent physical adapter index for the display.
540/// It can be the current adapter or a non-local adapter. \n
541/// If this adapter index is different than the current adapter,
542/// the Display Non Local flag is set inside DisplayInfoValue.
543 int iDisplayPhysicalAdapterIndex;
544} ADLDisplayID, *LPADLDisplayID;
545
546/////////////////////////////////////////////////////////////////////////////////////////////
547///\brief Structure containing information about the display device.
548///
549/// This structure is used to store various information about the display device. This
550/// information can be returned to the user, or used to access various driver calls to set
551/// or fetch various display-device-related settings upon the user's request
552/// \nosubgrouping
553////////////////////////////////////////////////////////////////////////////////////////////
554typedef struct ADLDisplayInfo
555{
556/// The DisplayID structure
557 ADLDisplayID displayID;
558
559///\deprecated The controller index to which the display is mapped.\n Will not be used in the future\n
560 int iDisplayControllerIndex;
561
562/// The display's EDID name.
563 char strDisplayName[ADL_MAX_PATH];
564
565/// The display's manufacturer name.
566 char strDisplayManufacturerName[ADL_MAX_PATH];
567
568/// The Display type. For example: CRT, TV, CV, DFP.
569 int iDisplayType;
570
571/// The display output type. For example: HDMI, SVIDEO, COMPONMNET VIDEO.
572 int iDisplayOutputType;
573
574/// The connector type for the device.
575 int iDisplayConnector;
576
577///\brief The bit mask identifies the number of bits ADLDisplayInfo is currently using. \n
578/// It will be the sum all the bit definitions in ADL_DISPLAY_DISPLAYINFO_xxx.
579 int iDisplayInfoMask;
580
581/// The bit mask identifies the display status. \ref define_displayinfomask
582 int iDisplayInfoValue;
583} ADLDisplayInfo, *LPADLDisplayInfo;
584
585/////////////////////////////////////////////////////////////////////////////////////////////
586///\brief Structure containing information about the display port MST device.
587///
588/// This structure is used to store various MST information about the display port device. This
589/// information can be returned to the user, or used to access various driver calls to
590/// fetch various display-device-related settings upon the user's request
591/// \nosubgrouping
592////////////////////////////////////////////////////////////////////////////////////////////
593typedef struct ADLDisplayDPMSTInfo
594{
595 /// The ADLDisplayID structure
596 ADLDisplayID displayID;
597
598 /// total bandwidth available on the DP connector
599 int iTotalAvailableBandwidthInMpbs;
600 /// bandwidth allocated to this display
601 int iAllocatedBandwidthInMbps;
602
603 // info from DAL DpMstSinkInfo
604 /// string identifier for the display
605 char strGlobalUniqueIdentifier[ADL_MAX_PATH];
606
607 /// The link count of relative address, rad[0] upto rad[linkCount] are valid
608 int radLinkCount;
609 /// The physical connector ID, used to identify the physical DP port
610 int iPhysicalConnectorID;
611
612 /// Relative address, address scheme starts from source side
613 char rad[ADL_MAX_RAD_LINK_COUNT];
614} ADLDisplayDPMSTInfo, *LPADLDisplayDPMSTInfo;
615
616/////////////////////////////////////////////////////////////////////////////////////////////
617///\brief Structure containing the display mode definition used per controller.
618///
619/// This structure is used to store the display mode definition used per controller.
620/// \nosubgrouping
621////////////////////////////////////////////////////////////////////////////////////////////
622typedef struct ADLDisplayMode
623{
624/// Vertical resolution (in pixels).
625 int iPelsHeight;
626/// Horizontal resolution (in pixels).
627 int iPelsWidth;
628/// Color depth.
629 int iBitsPerPel;
630/// Refresh rate.
631 int iDisplayFrequency;
632} ADLDisplayMode;
633
634/////////////////////////////////////////////////////////////////////////////////////////////
635///\brief Structure containing detailed timing parameters.
636///
637/// This structure is used to store the detailed timing parameters.
638/// \nosubgrouping
639////////////////////////////////////////////////////////////////////////////////////////////
640typedef struct ADLDetailedTiming
641{
642/// Size of the structure.
643 int iSize;
644/// Timing flags. \ref define_detailed_timing_flags
645 short sTimingFlags;
646/// Total width (columns).
647 short sHTotal;
648/// Displayed width.
649 short sHDisplay;
650/// Horizontal sync signal offset.
651 short sHSyncStart;
652/// Horizontal sync signal width.
653 short sHSyncWidth;
654/// Total height (rows).
655 short sVTotal;
656/// Displayed height.
657 short sVDisplay;
658/// Vertical sync signal offset.
659 short sVSyncStart;
660/// Vertical sync signal width.
661 short sVSyncWidth;
662/// Pixel clock value.
663 short sPixelClock;
664/// Overscan right.
665 short sHOverscanRight;
666/// Overscan left.
667 short sHOverscanLeft;
668/// Overscan bottom.
669 short sVOverscanBottom;
670/// Overscan top.
671 short sVOverscanTop;
672 short sOverscan8B;
673 short sOverscanGR;
674} ADLDetailedTiming;
675
676/////////////////////////////////////////////////////////////////////////////////////////////
677///\brief Structure containing display mode information.
678///
679/// This structure is used to store the display mode information.
680/// \nosubgrouping
681////////////////////////////////////////////////////////////////////////////////////////////
682typedef struct ADLDisplayModeInfo
683{
684/// Timing standard of the current mode. \ref define_modetiming_standard
685 int iTimingStandard;
686/// Applicable timing standards for the current mode.
687 int iPossibleStandard;
688/// Refresh rate factor.
689 int iRefreshRate;
690/// Num of pixels in a row.
691 int iPelsWidth;
692/// Num of pixels in a column.
693 int iPelsHeight;
694/// Detailed timing parameters.
695 ADLDetailedTiming sDetailedTiming;
696} ADLDisplayModeInfo;
697
698/////////////////////////////////////////////////////////////////////////////////////////////
699/// \brief Structure containing information about display property.
700///
701/// This structure is used to store the display property for the current adapter.
702/// \nosubgrouping
703////////////////////////////////////////////////////////////////////////////////////////////
704typedef struct ADLDisplayProperty
705{
706/// Must be set to sizeof the structure
707 int iSize;
708/// Must be set to \ref ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE or \ref ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING
709 int iPropertyType;
710/// 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
711 int iExpansionMode;
712/// Display Property supported? 1: Supported, 0: Not supported
713 int iSupport;
714/// Display Property current value
715 int iCurrent;
716/// Display Property Default value
717 int iDefault;
718} ADLDisplayProperty;
719
720/////////////////////////////////////////////////////////////////////////////////////////////
721///\brief Structure containing information about Clock.
722///
723/// This structure is used to store the clock information for the current adapter
724/// such as core clock and memory clock info.
725///\nosubgrouping
726////////////////////////////////////////////////////////////////////////////////////////////
727typedef struct ADLClockInfo
728{
729/// Core clock in 10 KHz.
730 int iCoreClock;
731/// Memory clock in 10 KHz.
732 int iMemoryClock;
733} ADLClockInfo, *LPADLClockInfo;
734
735/////////////////////////////////////////////////////////////////////////////////////////////
736///\brief Structure containing information about I2C.
737///
738/// This structure is used to store the I2C information for the current adapter.
739/// This structure is used by the ADL_Display_WriteAndReadI2C() function.
740/// \nosubgrouping
741////////////////////////////////////////////////////////////////////////////////////////////
742typedef struct ADLI2C
743{
744/// Size of the structure
745 int iSize;
746/// Numerical value representing hardware I2C.
747 int iLine;
748/// The 7-bit I2C slave device address, shifted one bit to the left.
749 int iAddress;
750/// The offset of the data from the address.
751 int iOffset;
752/// 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
753 int iAction;
754/// I2C clock speed in KHz.
755 int iSpeed;
756/// A numerical value representing the number of bytes to be sent or received on the I2C bus.
757 int iDataSize;
758/// Address of the characters which are to be sent or received on the I2C bus.
759 char *pcData;
760} ADLI2C;
761
762/////////////////////////////////////////////////////////////////////////////////////////////
763///\brief Structure containing information about EDID data.
764///
765/// This structure is used to store the information about EDID data for the adapter.
766/// This structure is used by the ADL_Display_EdidData_Get() and ADL_Display_EdidData_Set() functions.
767/// \nosubgrouping
768////////////////////////////////////////////////////////////////////////////////////////////
769typedef struct ADLDisplayEDIDData
770{
771/// Size of the structure
772 int iSize;
773/// Set to 0
774 int iFlag;
775 /// Size of cEDIDData. Set by ADL_Display_EdidData_Get() upon return
776 int iEDIDSize;
777/// 0, 1 or 2. If set to 3 or above an error ADL_ERR_INVALID_PARAM is generated
778 int iBlockIndex;
779/// EDID data
780 char cEDIDData[ADL_MAX_EDIDDATA_SIZE];
781/// Reserved
782 int iReserved[4];
783}ADLDisplayEDIDData;
784
785/////////////////////////////////////////////////////////////////////////////////////////////
786///\brief Structure containing information about input of controller overlay adjustment.
787///
788/// This structure is used to store the information about input of controller overlay adjustment for the adapter.
789/// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get, ADL_Display_ControllerOverlayAdjustmentData_Get, and
790/// ADL_Display_ControllerOverlayAdjustmentData_Set() functions.
791/// \nosubgrouping
792////////////////////////////////////////////////////////////////////////////////////////////
793typedef struct ADLControllerOverlayInput
794{
795/// Should be set to the sizeof the structure
796 int iSize;
797///\ref ADL_DL_CONTROLLER_OVERLAY_ALPHA or \ref ADL_DL_CONTROLLER_OVERLAY_ALPHAPERPIX
798 int iOverlayAdjust;
799/// Data.
800 int iValue;
801/// Should be 0.
802 int iReserved;
803} ADLControllerOverlayInput;
804
805/////////////////////////////////////////////////////////////////////////////////////////////
806///\brief Structure containing information about overlay adjustment.
807///
808/// This structure is used to store the information about overlay adjustment for the adapter.
809/// This structure is used by the ADLControllerOverlayInfo() function.
810/// \nosubgrouping
811////////////////////////////////////////////////////////////////////////////////////////////
812typedef struct ADLAdjustmentinfo
813{
814/// Default value
815 int iDefault;
816/// Minimum value
817 int iMin;
818/// Maximum Value
819 int iMax;
820/// Step value
821 int iStep;
822} ADLAdjustmentinfo;
823
824/////////////////////////////////////////////////////////////////////////////////////////////
825///\brief Structure containing information about controller overlay information.
826///
827/// This structure is used to store information about controller overlay info for the adapter.
828/// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get() function.
829/// \nosubgrouping
830////////////////////////////////////////////////////////////////////////////////////////////
831typedef struct ADLControllerOverlayInfo
832{
833/// Should be set to the sizeof the structure
834 int iSize;
835/// Data.
836 ADLAdjustmentinfo sOverlayInfo;
837/// Should be 0.
838 int iReserved[3];
839} ADLControllerOverlayInfo;
840
841/////////////////////////////////////////////////////////////////////////////////////////////
842///\brief Structure containing GL-Sync module information.
843///
844/// This structure is used to retrieve GL-Sync module information for
845/// Workstation Framelock/Genlock.
846/// \nosubgrouping
847////////////////////////////////////////////////////////////////////////////////////////////
848typedef struct ADLGLSyncModuleID
849{
850/// Unique GL-Sync module ID.
851 int iModuleID;
852/// GL-Sync GPU port index (to be passed into ADLGLSyncGenlockConfig.lSignalSource and ADLGlSyncPortControl.lSignalSource).
853 int iGlSyncGPUPort;
854/// GL-Sync module firmware version of Boot Sector.
855 int iFWBootSectorVersion;
856/// GL-Sync module firmware version of User Sector.
857 int iFWUserSectorVersion;
858} ADLGLSyncModuleID , *LPADLGLSyncModuleID;
859
860/////////////////////////////////////////////////////////////////////////////////////////////
861///\brief Structure containing GL-Sync ports capabilities.
862///
863/// This structure is used to retrieve hardware capabilities for the ports of the GL-Sync module
864/// for Workstation Framelock/Genlock (such as port type and number of associated LEDs).
865/// \nosubgrouping
866////////////////////////////////////////////////////////////////////////////////////////////
867typedef struct ADLGLSyncPortCaps
868{
869/// Port type. Bitfield of ADL_GLSYNC_PORTTYPE_* \ref define_glsync
870 int iPortType;
871/// Number of LEDs associated for this port.
872 int iNumOfLEDs;
873}ADLGLSyncPortCaps, *LPADLGLSyncPortCaps;
874
875/////////////////////////////////////////////////////////////////////////////////////////////
876///\brief Structure containing GL-Sync Genlock settings.
877///
878/// This structure is used to get and set genlock settings for the GPU ports of the GL-Sync module
879/// for Workstation Framelock/Genlock.\n
880/// \see define_glsync
881/// \nosubgrouping
882////////////////////////////////////////////////////////////////////////////////////////////
883typedef struct ADLGLSyncGenlockConfig
884{
885/// Specifies what fields in this structure are valid \ref define_glsync
886 int iValidMask;
887/// Delay (ms) generating a sync signal.
888 int iSyncDelay;
889/// Vector of framelock control bits. Bitfield of ADL_GLSYNC_FRAMELOCKCNTL_* \ref define_glsync
890 int iFramelockCntlVector;
891/// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
892 int iSignalSource;
893/// Use sampled sync signal. A value of 0 specifies no sampling.
894 int iSampleRate;
895/// For interlaced sync signals, the value can be ADL_GLSYNC_SYNCFIELD_1 or *_BOTH \ref define_glsync
896 int iSyncField;
897/// The signal edge that should trigger synchronization. ADL_GLSYNC_TRIGGEREDGE_* \ref define_glsync
898 int iTriggerEdge;
899/// Scan rate multiplier applied to the sync signal. ADL_GLSYNC_SCANRATECOEFF_* \ref define_glsync
900 int iScanRateCoeff;
901}ADLGLSyncGenlockConfig, *LPADLGLSyncGenlockConfig;
902
903/////////////////////////////////////////////////////////////////////////////////////////////
904///\brief Structure containing GL-Sync port information.
905///
906/// This structure is used to get status of the GL-Sync ports (BNC or RJ45s)
907/// for Workstation Framelock/Genlock.
908/// \see define_glsync
909/// \nosubgrouping
910////////////////////////////////////////////////////////////////////////////////////////////
911typedef struct ADLGlSyncPortInfo
912{
913/// Type of GL-Sync port (ADL_GLSYNC_PORT_*).
914 int iPortType;
915/// The number of LEDs for this port. It's also filled within ADLGLSyncPortCaps.
916 int iNumOfLEDs;
917/// Port state ADL_GLSYNC_PORTSTATE_* \ref define_glsync
918 int iPortState;
919/// Scanned frequency for this port (vertical refresh rate in milliHz; 60000 means 60 Hz).
920 int iFrequency;
921/// Used for ADL_GLSYNC_PORT_BNC. It is ADL_GLSYNC_SIGNALTYPE_* \ref define_glsync
922 int iSignalType;
923/// Used for ADL_GLSYNC_PORT_RJ45PORT*. It is GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_*. \ref define_glsync
924 int iSignalSource;
925} ADLGlSyncPortInfo, *LPADLGlSyncPortInfo;
926
927/////////////////////////////////////////////////////////////////////////////////////////////
928///\brief Structure containing GL-Sync port control settings.
929///
930/// This structure is used to configure the GL-Sync ports (RJ45s only)
931/// for Workstation Framelock/Genlock.
932/// \see define_glsync
933/// \nosubgrouping
934////////////////////////////////////////////////////////////////////////////////////////////
935typedef struct ADLGlSyncPortControl
936{
937/// Port to control ADL_GLSYNC_PORT_RJ45PORT1 or ADL_GLSYNC_PORT_RJ45PORT2 \ref define_glsync
938 int iPortType;
939/// Port control data ADL_GLSYNC_PORTCNTL_* \ref define_glsync
940 int iControlVector;
941/// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync
942 int iSignalSource;
943} ADLGlSyncPortControl;
944
945/////////////////////////////////////////////////////////////////////////////////////////////
946///\brief Structure containing GL-Sync mode of a display.
947///
948/// This structure is used to get and set GL-Sync mode settings for a display connected to
949/// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
950/// \see define_glsync
951/// \nosubgrouping
952////////////////////////////////////////////////////////////////////////////////////////////
953typedef struct ADLGlSyncMode
954{
955/// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
956 int iControlVector;
957/// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
958 int iStatusVector;
959/// Index of GL-Sync connector used to genlock the display/controller.
960 int iGLSyncConnectorIndex;
961} ADLGlSyncMode, *LPADLGlSyncMode;
962
963/////////////////////////////////////////////////////////////////////////////////////////////
964///\brief Structure containing GL-Sync mode of a display.
965///
966/// This structure is used to get and set GL-Sync mode settings for a display connected to
967/// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock.
968/// \see define_glsync
969/// \nosubgrouping
970////////////////////////////////////////////////////////////////////////////////////////////
971typedef struct ADLGlSyncMode2
972{
973/// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync
974 int iControlVector;
975/// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync
976 int iStatusVector;
977/// Index of GL-Sync connector used to genlock the display/controller.
978 int iGLSyncConnectorIndex;
979/// Index of the display to which this GLSync applies to.
980 int iDisplayIndex;
981} ADLGlSyncMode2, *LPADLGlSyncMode2;
982
983/////////////////////////////////////////////////////////////////////////////////////////////
984///\brief Structure containing the packet info of a display.
985///
986/// This structure is used to get and set the packet information of a display.
987/// This structure is used by ADLDisplayDataPacket.
988/// \nosubgrouping
989////////////////////////////////////////////////////////////////////////////////////////////
990typedef struct ADLInfoPacket
991{
992 char hb0;
993 char hb1;
994 char hb2;
995/// sb0~sb27
996 char sb[28];
997}ADLInfoPacket;
998
999/////////////////////////////////////////////////////////////////////////////////////////////
1000///\brief Structure containing the AVI packet info of a display.
1001///
1002/// This structure is used to get and set AVI the packet info of a display.
1003/// This structure is used by ADLDisplayDataPacket.
1004/// \nosubgrouping
1005////////////////////////////////////////////////////////////////////////////////////////////
1006typedef struct ADLAVIInfoPacket //Valid user defined data/
1007{
1008/// byte 3, bit 7
1009 char bPB3_ITC;
1010/// byte 5, bit [7:4].
1011 char bPB5;
1012}ADLAVIInfoPacket;
1013
1014// Overdrive clock setting structure definition.
1015
1016/////////////////////////////////////////////////////////////////////////////////////////////
1017///\brief Structure containing the Overdrive clock setting.
1018///
1019/// This structure is used to get the Overdrive clock setting.
1020/// This structure is used by ADLAdapterODClockInfo.
1021/// \nosubgrouping
1022////////////////////////////////////////////////////////////////////////////////////////////
1023typedef struct ADLODClockSetting
1024{
1025/// Deafult clock
1026 int iDefaultClock;
1027/// Current clock
1028 int iCurrentClock;
1029/// Maximum clcok
1030 int iMaxClock;
1031/// Minimum clock
1032 int iMinClock;
1033/// Requested clcock
1034 int iRequestedClock;
1035/// Step
1036 int iStepClock;
1037} ADLODClockSetting;
1038
1039/////////////////////////////////////////////////////////////////////////////////////////////
1040///\brief Structure containing the Overdrive clock information.
1041///
1042/// This structure is used to get the Overdrive clock information.
1043/// This structure is used by the ADL_Display_ODClockInfo_Get() function.
1044/// \nosubgrouping
1045////////////////////////////////////////////////////////////////////////////////////////////
1046typedef struct ADLAdapterODClockInfo
1047{
1048/// Size of the structure
1049 int iSize;
1050/// Flag \ref define_clockinfo_flags
1051 int iFlags;
1052/// Memory Clock
1053 ADLODClockSetting sMemoryClock;
1054/// Engine Clock
1055 ADLODClockSetting sEngineClock;
1056} ADLAdapterODClockInfo;
1057
1058/////////////////////////////////////////////////////////////////////////////////////////////
1059///\brief Structure containing the Overdrive clock configuration.
1060///
1061/// This structure is used to set the Overdrive clock configuration.
1062/// This structure is used by the ADL_Display_ODClockConfig_Set() function.
1063/// \nosubgrouping
1064////////////////////////////////////////////////////////////////////////////////////////////
1065typedef struct ADLAdapterODClockConfig
1066{
1067/// Size of the structure
1068 int iSize;
1069/// Flag \ref define_clockinfo_flags
1070 int iFlags;
1071/// Memory Clock
1072 int iMemoryClock;
1073/// Engine Clock
1074 int iEngineClock;
1075} ADLAdapterODClockConfig;
1076
1077/////////////////////////////////////////////////////////////////////////////////////////////
1078///\brief Structure containing information about current power management related activity.
1079///
1080/// This structure is used to store information about current power management related activity.
1081/// This structure (Overdrive 5 interfaces) is used by the ADL_PM_CurrentActivity_Get() function.
1082/// \nosubgrouping
1083////////////////////////////////////////////////////////////////////////////////////////////
1084typedef struct ADLPMActivity
1085{
1086/// Must be set to the size of the structure
1087 int iSize;
1088/// Current engine clock.
1089 int iEngineClock;
1090/// Current memory clock.
1091 int iMemoryClock;
1092/// Current core voltage.
1093 int iVddc;
1094/// GPU utilization.
1095 int iActivityPercent;
1096/// Performance level index.
1097 int iCurrentPerformanceLevel;
1098/// Current PCIE bus speed.
1099 int iCurrentBusSpeed;
1100/// Number of PCIE bus lanes.
1101 int iCurrentBusLanes;
1102/// Maximum number of PCIE bus lanes.
1103 int iMaximumBusLanes;
1104/// Reserved for future purposes.
1105 int iReserved;
1106} ADLPMActivity;
1107
1108/////////////////////////////////////////////////////////////////////////////////////////////
1109///\brief Structure containing information about thermal controller.
1110///
1111/// This structure is used to store information about thermal controller.
1112/// This structure is used by ADL_PM_ThermalDevices_Enum.
1113/// \nosubgrouping
1114////////////////////////////////////////////////////////////////////////////////////////////
1115typedef struct ADLThermalControllerInfo
1116{
1117/// Must be set to the size of the structure
1118 int iSize;
1119/// Possible valies: \ref ADL_DL_THERMAL_DOMAIN_OTHER or \ref ADL_DL_THERMAL_DOMAIN_GPU.
1120 int iThermalDomain;
1121/// GPU 0, 1, etc.
1122 int iDomainIndex;
1123/// Possible valies: \ref ADL_DL_THERMAL_FLAG_INTERRUPT or \ref ADL_DL_THERMAL_FLAG_FANCONTROL
1124 int iFlags;
1125} ADLThermalControllerInfo;
1126
1127/////////////////////////////////////////////////////////////////////////////////////////////
1128///\brief Structure containing information about thermal controller temperature.
1129///
1130/// This structure is used to store information about thermal controller temperature.
1131/// This structure is used by the ADL_PM_Temperature_Get() function.
1132/// \nosubgrouping
1133////////////////////////////////////////////////////////////////////////////////////////////
1134typedef struct ADLTemperature
1135{
1136/// Must be set to the size of the structure
1137 int iSize;
1138/// Temperature in millidegrees Celsius.
1139 int iTemperature;
1140} ADLTemperature;
1141
1142/////////////////////////////////////////////////////////////////////////////////////////////
1143///\brief Structure containing information about thermal controller fan speed.
1144///
1145/// This structure is used to store information about thermal controller fan speed.
1146/// This structure is used by the ADL_PM_FanSpeedInfo_Get() function.
1147/// \nosubgrouping
1148////////////////////////////////////////////////////////////////////////////////////////////
1149typedef struct ADLFanSpeedInfo
1150{
1151/// Must be set to the size of the structure
1152 int iSize;
1153/// \ref define_fanctrl
1154 int iFlags;
1155/// Minimum possible fan speed value in percents.
1156 int iMinPercent;
1157/// Maximum possible fan speed value in percents.
1158 int iMaxPercent;
1159/// Minimum possible fan speed value in RPM.
1160 int iMinRPM;
1161/// Maximum possible fan speed value in RPM.
1162 int iMaxRPM;
1163} ADLFanSpeedInfo;
1164
1165/////////////////////////////////////////////////////////////////////////////////////////////
1166///\brief Structure containing information about fan speed reported by thermal controller.
1167///
1168/// This structure is used to store information about fan speed reported by thermal controller.
1169/// This structure is used by the ADL_Overdrive5_FanSpeed_Get() and ADL_Overdrive5_FanSpeed_Set() functions.
1170/// \nosubgrouping
1171////////////////////////////////////////////////////////////////////////////////////////////
1172typedef struct ADLFanSpeedValue
1173{
1174/// Must be set to the size of the structure
1175 int iSize;
1176/// Possible valies: \ref ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or \ref ADL_DL_FANCTRL_SPEED_TYPE_RPM
1177 int iSpeedType;
1178/// Fan speed value
1179 int iFanSpeed;
1180/// The only flag for now is: \ref ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED
1181 int iFlags;
1182} ADLFanSpeedValue;
1183
1184////////////////////////////////////////////////////////////////////////////////////////////
1185///\brief Structure containing the range of Overdrive parameter.
1186///
1187/// This structure is used to store information about the range of Overdrive parameter.
1188/// This structure is used by ADLODParameters.
1189/// \nosubgrouping
1190////////////////////////////////////////////////////////////////////////////////////////////
1191typedef struct ADLODParameterRange
1192{
1193/// Minimum parameter value.
1194 int iMin;
1195/// Maximum parameter value.
1196 int iMax;
1197/// Parameter step value.
1198 int iStep;
1199} ADLODParameterRange;
1200
1201/////////////////////////////////////////////////////////////////////////////////////////////
1202///\brief Structure containing information about Overdrive parameters.
1203///
1204/// This structure is used to store information about Overdrive parameters.
1205/// This structure is used by the ADL_Overdrive5_ODParameters_Get() function.
1206/// \nosubgrouping
1207////////////////////////////////////////////////////////////////////////////////////////////
1208typedef struct ADLODParameters
1209{
1210/// Must be set to the size of the structure
1211 int iSize;
1212/// Number of standard performance states.
1213 int iNumberOfPerformanceLevels;
1214/// Indicates whether the GPU is capable to measure its activity.
1215 int iActivityReportingSupported;
1216/// Indicates whether the GPU supports discrete performance levels or performance range.
1217 int iDiscretePerformanceLevels;
1218/// Reserved for future use.
1219 int iReserved;
1220/// Engine clock range.
1221 ADLODParameterRange sEngineClock;
1222/// Memory clock range.
1223 ADLODParameterRange sMemoryClock;
1224/// Core voltage range.
1225 ADLODParameterRange sVddc;
1226} ADLODParameters;
1227
1228/////////////////////////////////////////////////////////////////////////////////////////////
1229///\brief Structure containing information about Overdrive level.
1230///
1231/// This structure is used to store information about Overdrive level.
1232/// This structure is used by ADLODPerformanceLevels.
1233/// \nosubgrouping
1234////////////////////////////////////////////////////////////////////////////////////////////
1235typedef struct ADLODPerformanceLevel
1236{
1237/// Engine clock.
1238 int iEngineClock;
1239/// Memory clock.
1240 int iMemoryClock;
1241/// Core voltage.
1242 int iVddc;
1243} ADLODPerformanceLevel;
1244
1245/////////////////////////////////////////////////////////////////////////////////////////////
1246///\brief Structure containing information about Overdrive performance levels.
1247///
1248/// This structure is used to store information about Overdrive performance levels.
1249/// This structure is used by the ADL_Overdrive5_ODPerformanceLevels_Get() and ADL_Overdrive5_ODPerformanceLevels_Set() functions.
1250/// \nosubgrouping
1251////////////////////////////////////////////////////////////////////////////////////////////
1252typedef struct ADLODPerformanceLevels
1253{
1254/// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
1255 int iSize;
1256 int iReserved;
1257/// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
1258 ADLODPerformanceLevel aLevels [1];
1259} ADLODPerformanceLevels;
1260
1261/////////////////////////////////////////////////////////////////////////////////////////////
1262///\brief Structure containing information about the proper CrossfireX chains combinations.
1263///
1264/// This structure is used to store information about the CrossfireX chains combination for a particular adapter.
1265/// This structure is used by the ADL_Adapter_Crossfire_Caps(), ADL_Adapter_Crossfire_Get(), and ADL_Adapter_Crossfire_Set() functions.
1266/// \nosubgrouping
1267////////////////////////////////////////////////////////////////////////////////////////////
1268typedef struct ADLCrossfireComb
1269{
1270/// Number of adapters in this combination.
1271 int iNumLinkAdapter;
1272/// A list of ADL indexes of the linked adapters in this combination.
1273 int iAdaptLink[3];
1274} ADLCrossfireComb;
1275
1276/////////////////////////////////////////////////////////////////////////////////////////////
1277///\brief Structure containing CrossfireX state and error information.
1278///
1279/// This structure is used to store state and error information about a particular adapter CrossfireX combination.
1280/// This structure is used by the ADL_Adapter_Crossfire_Get() function.
1281/// \nosubgrouping
1282////////////////////////////////////////////////////////////////////////////////////////////
1283typedef struct ADLCrossfireInfo
1284{
1285/// Current error code of this CrossfireX combination.
1286 int iErrorCode;
1287/// Current \ref define_crossfirestate
1288 int iState;
1289/// If CrossfireX is supported by this combination. The value is either \ref ADL_TRUE or \ref ADL_FALSE.
1290 int iSupported;
1291} ADLCrossfireInfo;
1292
1293/////////////////////////////////////////////////////////////////////////////////////////////
1294/// \brief Structure containing information about the BIOS.
1295///
1296/// This structure is used to store various information about the Chipset. This
1297/// information can be returned to the user.
1298/// \nosubgrouping
1299////////////////////////////////////////////////////////////////////////////////////////////
1300typedef struct ADLBiosInfo
1301{
1302 char strPartNumber[ADL_MAX_PATH]; ///< Part number.
1303 char strVersion[ADL_MAX_PATH]; ///< Version number.
1304 char strDate[ADL_MAX_PATH]; ///< BIOS date in yyyy/mm/dd hh:mm format.
1305} ADLBiosInfo, *LPADLBiosInfo;
1306
1307/////////////////////////////////////////////////////////////////////////////////////////////
1308/// \brief Structure containing information about adapter location.
1309///
1310/// This structure is used to store information about adapter location.
1311/// This structure is used by ADLMVPUStatus.
1312/// \nosubgrouping
1313////////////////////////////////////////////////////////////////////////////////////////////
1314typedef struct ADLAdapterLocation
1315{
1316/// PCI Bus number : 8 bits
1317 int iBus;
1318/// Device number : 5 bits
1319 int iDevice;
1320/// Function number : 3 bits
1321 int iFunction;
1322} ADLAdapterLocation,ADLBdf;
1323
1324/////////////////////////////////////////////////////////////////////////////////////////////
1325/// \brief Structure containing version information
1326///
1327/// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers.
1328/// \nosubgrouping
1329////////////////////////////////////////////////////////////////////////////////////////////
1330typedef struct ADLVersionsInfo
1331{
1332 /// Driver Release (Packaging) Version (e.g. 8.71-100128n-094835E-ATI)
1333 char strDriverVer[ADL_MAX_PATH];
1334 /// Catalyst Version(e.g. "10.1").
1335 char strCatalystVersion[ADL_MAX_PATH];
1336 /// Web link to an XML file with information about the latest AMD drivers and locations (e.g. "http://www.amd.com/us/driverxml" )
1337 char strCatalystWebLink[ADL_MAX_PATH];
1338} ADLVersionsInfo, *LPADLVersionsInfo;
1339
1340/////////////////////////////////////////////////////////////////////////////////////////////
1341/// \brief Structure containing version information
1342///
1343/// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers.
1344/// \nosubgrouping
1345////////////////////////////////////////////////////////////////////////////////////////////
1346typedef struct ADLVersionsInfoX2
1347{
1348 /// Driver Release (Packaging) Version (e.g. "16.20.1035-160621a-303814C")
1349 char strDriverVer[ADL_MAX_PATH];
1350 /// Catalyst Version(e.g. "15.8").
1351 char strCatalystVersion[ADL_MAX_PATH];
1352 /// Crimson Version(e.g. "16.6.2").
1353 char strCrimsonVersion[ADL_MAX_PATH];
1354 /// 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" )
1355 char strCatalystWebLink[ADL_MAX_PATH];
1356} ADLVersionsInfoX2, *LPADLVersionsInfoX2;
1357
1358/////////////////////////////////////////////////////////////////////////////////////////////
1359/// \brief Structure containing information about MultiVPU capabilities.
1360///
1361/// This structure is used to store information about MultiVPU capabilities.
1362/// This structure is used by the ADL_Display_MVPUCaps_Get() function.
1363/// \nosubgrouping
1364////////////////////////////////////////////////////////////////////////////////////////////
1365typedef struct ADLMVPUCaps
1366{
1367/// Must be set to sizeof( ADLMVPUCaps ).
1368 int iSize;
1369/// Number of adapters.
1370 int iAdapterCount;
1371/// Bits set for all possible MVPU masters. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
1372 int iPossibleMVPUMasters;
1373/// Bits set for all possible MVPU slaves. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3
1374 int iPossibleMVPUSlaves;
1375/// Registry path for each adapter.
1376 char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH];
1377} ADLMVPUCaps;
1378
1379/////////////////////////////////////////////////////////////////////////////////////////////
1380/// \brief Structure containing information about MultiVPU status.
1381///
1382/// This structure is used to store information about MultiVPU status.
1383/// Ths structure is used by the ADL_Display_MVPUStatus_Get() function.
1384/// \nosubgrouping
1385////////////////////////////////////////////////////////////////////////////////////////////
1386typedef struct ADLMVPUStatus
1387{
1388/// Must be set to sizeof( ADLMVPUStatus ).
1389 int iSize;
1390/// Number of active adapters.
1391 int iActiveAdapterCount;
1392/// MVPU status.
1393 int iStatus;
1394/// PCI Bus/Device/Function for each active adapter participating in MVPU.
1395 ADLAdapterLocation aAdapterLocation[ADL_DL_MAX_MVPU_ADAPTERS];
1396} ADLMVPUStatus;
1397
1398// Displays Manager structures
1399
1400///////////////////////////////////////////////////////////////////////////
1401/// \brief Structure containing information about the activatable source.
1402///
1403/// This structure is used to store activatable source information
1404/// This information can be returned to the user.
1405/// \nosubgrouping
1406////////////////////////////////////////////////////////////////////////////////////////////
1407typedef struct ADLActivatableSource
1408{
1409 /// The Persistent logical Adapter Index.
1410 int iAdapterIndex;
1411 /// The number of Activatable Sources.
1412 int iNumActivatableSources;
1413 /// The bit mask identifies the number of bits ActivatableSourceValue is using. (Not currnetly used)
1414 int iActivatableSourceMask;
1415 /// The bit mask identifies the status. (Not currnetly used)
1416 int iActivatableSourceValue;
1417} ADLActivatableSource, *LPADLActivatableSource;
1418
1419/////////////////////////////////////////////////////////////////////////////////////////////
1420/// \brief Structure containing information about display mode.
1421///
1422/// This structure is used to store the display mode for the current adapter
1423/// such as X, Y positions, screen resolutions, orientation,
1424/// color depth, refresh rate, progressive or interlace mode, etc.
1425/// \nosubgrouping
1426////////////////////////////////////////////////////////////////////////////////////////////
1427
1428typedef struct ADLMode
1429{
1430/// Adapter index.
1431 int iAdapterIndex;
1432/// Display IDs.
1433 ADLDisplayID displayID;
1434/// Screen position X coordinate.
1435 int iXPos;
1436/// Screen position Y coordinate.
1437 int iYPos;
1438/// Screen resolution Width.
1439 int iXRes;
1440/// Screen resolution Height.
1441 int iYRes;
1442/// Screen Color Depth. E.g., 16, 32.
1443 int iColourDepth;
1444/// Screen refresh rate. Could be fractional E.g. 59.97
1445 float fRefreshRate;
1446/// Screen orientation. E.g., 0, 90, 180, 270.
1447 int iOrientation;
1448/// Vista mode flag indicating Progressive or Interlaced mode.
1449 int iModeFlag;
1450/// 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
1451 int iModeMask;
1452/// The bit mask identifying the display status. The detailed definition is in \ref define_displaymode
1453 int iModeValue;
1454} ADLMode, *LPADLMode;
1455
1456/////////////////////////////////////////////////////////////////////////////////////////////
1457/// \brief Structure containing information about display target information.
1458///
1459/// This structure is used to store the display target information.
1460/// \nosubgrouping
1461////////////////////////////////////////////////////////////////////////////////////////////
1462typedef struct ADLDisplayTarget
1463{
1464 /// The Display ID.
1465 ADLDisplayID displayID;
1466
1467 /// The display map index identify this manner and the desktop surface.
1468 int iDisplayMapIndex;
1469
1470 /// 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.
1471 int iDisplayTargetMask;
1472
1473 /// The bit mask identifies the display status. The detailed definition is in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED.
1474 int iDisplayTargetValue;
1475} ADLDisplayTarget, *LPADLDisplayTarget;
1476
1477/////////////////////////////////////////////////////////////////////////////////////////////
1478///\brief Structure containing information about the display SLS bezel Mode information.
1479///
1480/// This structure is used to store the display SLS bezel Mode information.
1481/// \nosubgrouping
1482////////////////////////////////////////////////////////////////////////////////////////////
1483typedef struct tagADLBezelTransientMode
1484{
1485 /// Adapter Index
1486 int iAdapterIndex;
1487
1488 /// SLS Map Index
1489 int iSLSMapIndex;
1490
1491 /// The mode index
1492 int iSLSModeIndex;
1493
1494 /// The mode
1495 ADLMode displayMode;
1496
1497 /// The number of bezel offsets belongs to this map
1498 int iNumBezelOffset;
1499
1500 /// The first bezel offset array index in the native mode array
1501 int iFirstBezelOffsetArrayIndex;
1502
1503 /// The bit mask identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
1504 int iSLSBezelTransientModeMask;
1505
1506 /// The bit mask identifies the display status. The detail definition is defined below.
1507 int iSLSBezelTransientModeValue;
1508} ADLBezelTransientMode, *LPADLBezelTransientMode;
1509
1510/////////////////////////////////////////////////////////////////////////////////////////////
1511/// \brief Structure containing information about the adapter display manner.
1512///
1513/// This structure is used to store adapter display manner information
1514/// This information can be returned to the user. Alternatively, it can be used to access various driver calls to
1515/// fetch various display device related display manner settings upon the user's request.
1516/// \nosubgrouping
1517////////////////////////////////////////////////////////////////////////////////////////////
1518typedef struct ADLAdapterDisplayCap
1519{
1520 /// The Persistent logical Adapter Index.
1521 int iAdapterIndex;
1522 /// The bit mask identifies the number of bits AdapterDisplayCap is currently using. Sum all the bits defined in ADL_ADAPTER_DISPLAYCAP_XXX
1523 int iAdapterDisplayCapMask;
1524 /// The bit mask identifies the status. Refer to ADL_ADAPTER_DISPLAYCAP_XXX
1525 int iAdapterDisplayCapValue;
1526} ADLAdapterDisplayCap, *LPADLAdapterDisplayCap;
1527
1528/////////////////////////////////////////////////////////////////////////////////////////////
1529///\brief Structure containing information about display mapping.
1530///
1531/// This structure is used to store the display mapping data such as display manner.
1532/// For displays with horizontal or vertical stretch manner,
1533/// this structure also stores the display order, display row, and column data.
1534/// \nosubgrouping
1535////////////////////////////////////////////////////////////////////////////////////////////
1536typedef struct ADLDisplayMap
1537{
1538/// 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.
1539 int iDisplayMapIndex;
1540
1541/// The Display Mode for the current map
1542 ADLMode displayMode;
1543
1544/// The number of display targets belongs to this map\n
1545 int iNumDisplayTarget;
1546
1547/// The first target array index in the Target array\n
1548 int iFirstDisplayTargetArrayIndex;
1549
1550/// 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.
1551 int iDisplayMapMask;
1552
1553///The bit mask identifies the display status. The detailed definition is in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx.
1554 int iDisplayMapValue;
1555} ADLDisplayMap, *LPADLDisplayMap;
1556
1557/////////////////////////////////////////////////////////////////////////////////////////////
1558/// \brief Structure containing information about the display device possible map for one GPU
1559///
1560/// This structure is used to store the display device possible map
1561/// This information can be returned to the user.
1562/// \nosubgrouping
1563////////////////////////////////////////////////////////////////////////////////////////////
1564typedef struct ADLPossibleMap
1565{
1566 /// The current PossibleMap index. Each PossibleMap is assigned an index
1567 int iIndex;
1568 /// The adapter index identifying the GPU for which to validate these Maps & Targets
1569 int iAdapterIndex;
1570 /// Number of display Maps for this GPU to be validated
1571 int iNumDisplayMap;
1572 /// The display Maps list to validate
1573 ADLDisplayMap* displayMap;
1574 /// the number of display Targets for these display Maps
1575 int iNumDisplayTarget;
1576 /// The display Targets list for these display Maps to be validated.
1577 ADLDisplayTarget* displayTarget;
1578} ADLPossibleMap, *LPADLPossibleMap;
1579
1580/////////////////////////////////////////////////////////////////////////////////////////////
1581/// \brief Structure containing information about display possible mapping.
1582///
1583/// This structure is used to store the display possible mapping's controller index for the current display.
1584/// \nosubgrouping
1585////////////////////////////////////////////////////////////////////////////////////////////
1586typedef struct ADLPossibleMapping
1587{
1588 int iDisplayIndex; ///< The display index. Each display is assigned an index.
1589 int iDisplayControllerIndex; ///< The controller index to which display is mapped.
1590 int iDisplayMannerSupported; ///< The supported display manner.
1591} ADLPossibleMapping, *LPADLPossibleMapping;
1592
1593/////////////////////////////////////////////////////////////////////////////////////////////
1594/// \brief Structure containing information about the validated display device possible map result.
1595///
1596/// This structure is used to store the validated display device possible map result
1597/// This information can be returned to the user.
1598/// \nosubgrouping
1599////////////////////////////////////////////////////////////////////////////////////////////
1600typedef struct ADLPossibleMapResult
1601{
1602 /// 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.
1603 int iIndex;
1604 // 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.
1605 int iPossibleMapResultMask;
1606 /// The bit mask identifies the possible map result. The detail definition is defined in ADL_DISPLAY_POSSIBLEMAPRESULT_XXX.
1607 int iPossibleMapResultValue;
1608} ADLPossibleMapResult, *LPADLPossibleMapResult;
1609
1610/////////////////////////////////////////////////////////////////////////////////////////////
1611///\brief Structure containing information about the display SLS Grid information.
1612///
1613/// This structure is used to store the display SLS Grid information.
1614/// \nosubgrouping
1615////////////////////////////////////////////////////////////////////////////////////////////
1616typedef struct ADLSLSGrid
1617{
1618/// The Adapter index.
1619 int iAdapterIndex;
1620
1621/// The grid index.
1622 int iSLSGridIndex;
1623
1624/// The grid row.
1625 int iSLSGridRow;
1626
1627/// The grid column.
1628 int iSLSGridColumn;
1629
1630/// The grid bit mask identifies the number of bits DisplayMap is currently using. Sum of all bits defined in ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
1631 int iSLSGridMask;
1632
1633/// The grid bit value identifies the display status. Refer to ADL_DISPLAY_SLSGRID_ORIENTATION_XXX
1634 int iSLSGridValue;
1635} ADLSLSGrid, *LPADLSLSGrid;
1636
1637/////////////////////////////////////////////////////////////////////////////////////////////
1638///\brief Structure containing information about the display SLS Map information.
1639///
1640/// This structure is used to store the display SLS Map information.
1641/// \nosubgrouping
1642////////////////////////////////////////////////////////////////////////////////////////////
1643typedef struct ADLSLSMap
1644{
1645 /// The Adapter Index
1646 int iAdapterIndex;
1647
1648 /// 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.
1649 int iSLSMapIndex;
1650
1651 /// Indicate the current grid
1652 ADLSLSGrid grid;
1653
1654 /// OS surface index
1655 int iSurfaceMapIndex;
1656
1657 /// Screen orientation. E.g., 0, 90, 180, 270
1658 int iOrientation;
1659
1660 /// The number of display targets belongs to this map
1661 int iNumSLSTarget;
1662
1663 /// The first target array index in the Target array
1664 int iFirstSLSTargetArrayIndex;
1665
1666 /// The number of native modes belongs to this map
1667 int iNumNativeMode;
1668
1669 /// The first native mode array index in the native mode array
1670 int iFirstNativeModeArrayIndex;
1671
1672 /// The number of bezel modes belongs to this map
1673 int iNumBezelMode;
1674
1675 /// The first bezel mode array index in the native mode array
1676 int iFirstBezelModeArrayIndex;
1677
1678 /// The number of bezel offsets belongs to this map
1679 int iNumBezelOffset;
1680
1681 /// The first bezel offset array index in the
1682 int iFirstBezelOffsetArrayIndex;
1683
1684 /// The bit mask identifies the number of bits DisplayMap is currently using. Sum all the bit definitions defined in ADL_DISPLAY_SLSMAP_XXX.
1685 int iSLSMapMask;
1686
1687 /// The bit mask identifies the display map status. Refer to ADL_DISPLAY_SLSMAP_XXX
1688 int iSLSMapValue;
1689} ADLSLSMap, *LPADLSLSMap;
1690
1691/////////////////////////////////////////////////////////////////////////////////////////////
1692///\brief Structure containing information about the display SLS Offset information.
1693///
1694/// This structure is used to store the display SLS Offset information.
1695/// \nosubgrouping
1696////////////////////////////////////////////////////////////////////////////////////////////
1697typedef struct ADLSLSOffset
1698{
1699 /// The Adapter Index
1700 int iAdapterIndex;
1701
1702 /// 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.
1703 int iSLSMapIndex;
1704
1705 /// The Display ID.
1706 ADLDisplayID displayID;
1707
1708 /// SLS Bezel Mode Index
1709 int iBezelModeIndex;
1710
1711 /// SLS Bezel Offset X
1712 int iBezelOffsetX;
1713
1714 /// SLS Bezel Offset Y
1715 int iBezelOffsetY;
1716
1717 /// SLS Display Width
1718 int iDisplayWidth;
1719
1720 /// SLS Display Height
1721 int iDisplayHeight;
1722
1723 /// The bit mask identifies the number of bits Offset is currently using.
1724 int iBezelOffsetMask;
1725
1726 /// The bit mask identifies the display status.
1727 int iBezelffsetValue;
1728} ADLSLSOffset, *LPADLSLSOffset;
1729
1730/////////////////////////////////////////////////////////////////////////////////////////////
1731///\brief Structure containing information about the display SLS Mode information.
1732///
1733/// This structure is used to store the display SLS Mode information.
1734/// \nosubgrouping
1735////////////////////////////////////////////////////////////////////////////////////////////
1736typedef struct ADLSLSMode
1737{
1738 /// The Adapter Index
1739 int iAdapterIndex;
1740
1741 /// 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.
1742 int iSLSMapIndex;
1743
1744 /// The mode index
1745 int iSLSModeIndex;
1746
1747 /// The mode for this map.
1748 ADLMode displayMode;
1749
1750 /// The bit mask identifies the number of bits Mode is currently using.
1751 int iSLSNativeModeMask;
1752
1753 /// The bit mask identifies the display status.
1754 int iSLSNativeModeValue;
1755} ADLSLSMode, *LPADLSLSMode;
1756
1757/////////////////////////////////////////////////////////////////////////////////////////////
1758///\brief Structure containing information about the display Possible SLS Map information.
1759///
1760/// This structure is used to store the display Possible SLS Map information.
1761/// \nosubgrouping
1762////////////////////////////////////////////////////////////////////////////////////////////
1763typedef struct ADLPossibleSLSMap
1764{
1765 /// The current display map index. It is the OS Desktop index.
1766 /// For example, OS Index 1 showing clone mode. The Display Map will be 1.
1767 int iSLSMapIndex;
1768
1769 /// Number of display map to be validated.
1770 int iNumSLSMap;
1771
1772 /// The display map list for validation
1773 ADLSLSMap* lpSLSMap;
1774
1775 /// the number of display map config to be validated.
1776 int iNumSLSTarget;
1777
1778 /// The display target list for validation.
1779 ADLDisplayTarget* lpDisplayTarget;
1780} ADLPossibleSLSMap, *LPADLPossibleSLSMap;
1781
1782/////////////////////////////////////////////////////////////////////////////////////////////
1783///\brief Structure containing information about the SLS targets.
1784///
1785/// This structure is used to store the SLS targets information.
1786/// \nosubgrouping
1787////////////////////////////////////////////////////////////////////////////////////////////
1788typedef struct ADLSLSTarget
1789{
1790 /// the logic adapter index
1791 int iAdapterIndex;
1792
1793 /// The SLS map index
1794 int iSLSMapIndex;
1795
1796 /// The target ID
1797 ADLDisplayTarget displayTarget;
1798
1799 /// Target postion X in SLS grid
1800 int iSLSGridPositionX;
1801
1802 /// Target postion Y in SLS grid
1803 int iSLSGridPositionY;
1804
1805 /// The view size width, height and rotation angle per SLS Target
1806 ADLMode viewSize;
1807
1808 /// The bit mask identifies the bits in iSLSTargetValue are currently used
1809 int iSLSTargetMask;
1810
1811 /// The bit mask identifies status info. It is for function extension purpose
1812 int iSLSTargetValue;
1813} ADLSLSTarget, *LPADLSLSTarget;
1814
1815/////////////////////////////////////////////////////////////////////////////////////////////
1816///\brief Structure containing information about the Adapter offset stepping size.
1817///
1818/// This structure is used to store the Adapter offset stepping size information.
1819/// \nosubgrouping
1820////////////////////////////////////////////////////////////////////////////////////////////
1821typedef struct ADLBezelOffsetSteppingSize
1822{
1823 /// the logic adapter index
1824 int iAdapterIndex;
1825
1826 /// The SLS map index
1827 int iSLSMapIndex;
1828
1829 /// Bezel X stepping size offset
1830 int iBezelOffsetSteppingSizeX;
1831
1832 /// Bezel Y stepping size offset
1833 int iBezelOffsetSteppingSizeY;
1834
1835 /// Identifies the bits this structure is currently using. It will be the total OR of all the bit definitions.
1836 int iBezelOffsetSteppingSizeMask;
1837
1838 /// Bit mask identifies the display status.
1839 int iBezelOffsetSteppingSizeValue;
1840} ADLBezelOffsetSteppingSize, *LPADLBezelOffsetSteppingSize;
1841
1842/////////////////////////////////////////////////////////////////////////////////////////////
1843///\brief Structure containing information about the overlap offset info for all the displays for each SLS mode.
1844///
1845/// This structure is used to store the no. of overlapped modes for each SLS Mode once user finishes the configuration from Overlap Widget
1846/// \nosubgrouping
1847////////////////////////////////////////////////////////////////////////////////////////////
1848typedef struct ADLSLSOverlappedMode
1849{
1850 /// the SLS mode for which the overlap is configured
1851 ADLMode SLSMode;
1852 /// the number of target displays in SLS.
1853 int iNumSLSTarget;
1854 /// the first target array index in the target array
1855 int iFirstTargetArrayIndex;
1856}ADLSLSTargetOverlap, *LPADLSLSTargetOverlap;
1857
1858/////////////////////////////////////////////////////////////////////////////////////////////
1859///\brief Structure containing information about driver supported PowerExpress Config Caps
1860///
1861/// This structure is used to store the driver supported PowerExpress Config Caps
1862/// \nosubgrouping
1863////////////////////////////////////////////////////////////////////////////////////////////
1864typedef struct ADLPXConfigCaps
1865{
1866 /// The Persistent logical Adapter Index.
1867 int iAdapterIndex;
1868
1869 /// 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.
1870 int iPXConfigCapMask;
1871
1872 /// The bit mask identifies the PowerExpress Config Caps value. The detailed definition is in ADL_PX_CONFIGCAPS_XXXX /ref define_powerxpress_constants.
1873 int iPXConfigCapValue;
1874} ADLPXConfigCaps, *LPADLPXConfigCaps;
1875
1876/////////////////////////////////////////////////////////////////////////////////////////
1877///\brief Enum containing PX or HG type
1878///
1879/// This enum is used to get PX or hG type
1880///
1881/// \nosubgrouping
1882//////////////////////////////////////////////////////////////////////////////////////////
1883typedef enum ADLPxType
1884{
1885 //Not AMD related PX/HG or not PX or HG at all
1886 ADL_PX_NONE = 0,
1887 //A+A PX
1888 ADL_SWITCHABLE_AMDAMD = 1,
1889 // A+A HG
1890 ADL_HG_AMDAMD = 2,
1891 //A+I PX
1892 ADL_SWITCHABLE_AMDOTHER = 3,
1893 //A+I HG
1894 ADL_HG_AMDOTHER = 4,
1895}ADLPxType;
1896
1897/////////////////////////////////////////////////////////////////////////////////////////////
1898///\brief Structure containing information about an application
1899///
1900/// This structure is used to store basic information of an application
1901/// \nosubgrouping
1902////////////////////////////////////////////////////////////////////////////////////////////
1903typedef struct ADLApplicationData
1904{
1905 /// Path Name
1906 char strPathName[ADL_MAX_PATH];
1907 /// File Name
1908 char strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
1909 /// Creation timestamp
1910 char strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
1911 /// Version
1912 char strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
1913}ADLApplicationData;
1914
1915/////////////////////////////////////////////////////////////////////////////////////////////
1916///\brief Structure containing information about an application
1917///
1918/// This structure is used to store basic information of an application
1919/// \nosubgrouping
1920////////////////////////////////////////////////////////////////////////////////////////////
1921typedef struct ADLApplicationDataX2
1922{
1923 /// Path Name
1924 wchar_t strPathName[ADL_MAX_PATH];
1925 /// File Name
1926 wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
1927 /// Creation timestamp
1928 wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
1929 /// Version
1930 wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
1931}ADLApplicationDataX2;
1932
1933/////////////////////////////////////////////////////////////////////////////////////////////
1934///\brief Structure containing information about an application
1935///
1936/// This structure is used to store basic information of an application including process id
1937/// \nosubgrouping
1938////////////////////////////////////////////////////////////////////////////////////////////
1939typedef struct ADLApplicationDataX3
1940{
1941 /// Path Name
1942 wchar_t strPathName[ADL_MAX_PATH];
1943 /// File Name
1944 wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH];
1945 /// Creation timestamp
1946 wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH];
1947 /// Version
1948 wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH];
1949 //Application Process id
1950 unsigned int iProcessId;
1951}ADLApplicationDataX3;
1952
1953/////////////////////////////////////////////////////////////////////////////////////////////
1954///\brief Structure containing information of a property of an application profile
1955///
1956/// This structure is used to store property information of an application profile
1957/// \nosubgrouping
1958////////////////////////////////////////////////////////////////////////////////////////////
1959typedef struct PropertyRecord
1960{
1961 /// Property Name
1962 char strName [ADL_APP_PROFILE_PROPERTY_LENGTH];
1963 /// Property Type
1964 ADLProfilePropertyType eType;
1965 /// Data Size in bytes
1966 int iDataSize;
1967 /// Property Value, can be any data type
1968 unsigned char uData[1];
1969}PropertyRecord;
1970
1971/////////////////////////////////////////////////////////////////////////////////////////////
1972///\brief Structure containing information about an application profile
1973///
1974/// This structure is used to store information of an application profile
1975/// \nosubgrouping
1976////////////////////////////////////////////////////////////////////////////////////////////
1977typedef struct ADLApplicationProfile
1978{
1979 /// Number of properties
1980 int iCount;
1981 /// Buffer to store all property records
1982 PropertyRecord record[1];
1983}ADLApplicationProfile;
1984
1985/////////////////////////////////////////////////////////////////////////////////////////////
1986///\brief Structure containing information about an OD5 Power Control feature
1987///
1988/// This structure is used to store information of an Power Control feature
1989/// \nosubgrouping
1990////////////////////////////////////////////////////////////////////////////////////////////
1991typedef struct ADLPowerControlInfo
1992{
1993/// Minimum value.
1994int iMinValue;
1995/// Maximum value.
1996int iMaxValue;
1997/// The minimum change in between minValue and maxValue.
1998int iStepValue;
1999 } ADLPowerControlInfo;
2000
2001/////////////////////////////////////////////////////////////////////////////////////////////
2002///\brief Structure containing information about an controller mode
2003///
2004/// This structure is used to store information of an controller mode
2005/// \nosubgrouping
2006////////////////////////////////////////////////////////////////////////////////////////////
2007typedef struct ADLControllerMode
2008{
2009 /// This falg indicates actions that will be applied by set viewport
2010 /// The value can be a combination of ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_POSITION,
2011 /// ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_PANLOCK and ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_SIZE
2012 int iModifiers;
2013
2014 /// Horizontal view starting position
2015 int iViewPositionCx;
2016
2017 /// Vertical view starting position
2018 int iViewPositionCy;
2019
2020 /// Horizontal left panlock position
2021 int iViewPanLockLeft;
2022
2023 /// Horizontal right panlock position
2024 int iViewPanLockRight;
2025
2026 /// Vertical top panlock position
2027 int iViewPanLockTop;
2028
2029 /// Vertical bottom panlock position
2030 int iViewPanLockBottom;
2031
2032 /// View resolution in pixels (width)
2033 int iViewResolutionCx;
2034
2035 /// View resolution in pixels (hight)
2036 int iViewResolutionCy;
2037}ADLControllerMode;
2038
2039/////////////////////////////////////////////////////////////////////////////////////////////
2040///\brief Structure containing information about a display
2041///
2042/// This structure is used to store information about a display
2043/// \nosubgrouping
2044////////////////////////////////////////////////////////////////////////////////////////////
2045typedef struct ADLDisplayIdentifier
2046{
2047 /// ADL display index
2048 long ulDisplayIndex;
2049
2050 /// manufacturer ID of the display
2051 long ulManufacturerId;
2052
2053 /// product ID of the display
2054 long ulProductId;
2055
2056 /// serial number of the display
2057 long ulSerialNo;
2058} ADLDisplayIdentifier;
2059
2060/////////////////////////////////////////////////////////////////////////////////////////////
2061///\brief Structure containing information about Overdrive 6 clock range
2062///
2063/// This structure is used to store information about Overdrive 6 clock range
2064/// \nosubgrouping
2065////////////////////////////////////////////////////////////////////////////////////////////
2066typedef struct ADLOD6ParameterRange
2067{
2068 /// The starting value of the clock range
2069 int iMin;
2070 /// The ending value of the clock range
2071 int iMax;
2072 /// The minimum increment between clock values
2073 int iStep;
2074} ADLOD6ParameterRange;
2075
2076/////////////////////////////////////////////////////////////////////////////////////////////
2077///\brief Structure containing information about Overdrive 6 capabilities
2078///
2079/// This structure is used to store information about Overdrive 6 capabilities
2080/// \nosubgrouping
2081////////////////////////////////////////////////////////////////////////////////////////////
2082typedef struct ADLOD6Capabilities
2083{
2084 /// Contains a bitmap of the OD6 capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION,
2085 /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR
2086 int iCapabilities;
2087 /// Contains a bitmap indicating the power states
2088 /// supported by OD6. Currently only the performance state
2089 /// is supported. Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE
2090 int iSupportedStates;
2091 /// Number of levels. OD6 will always use 2 levels, which describe
2092 /// the minimum to maximum clock ranges.
2093 /// The 1st level indicates the minimum clocks, and the 2nd level
2094 /// indicates the maximum clocks.
2095 int iNumberOfPerformanceLevels;
2096 /// Contains the hard limits of the sclk range. Overdrive
2097 /// clocks cannot be set outside this range.
2098 ADLOD6ParameterRange sEngineClockRange;
2099 /// Contains the hard limits of the mclk range. Overdrive
2100 /// clocks cannot be set outside this range.
2101 ADLOD6ParameterRange sMemoryClockRange;
2102
2103 /// Value for future extension
2104 int iExtValue;
2105 /// Mask for future extension
2106 int iExtMask;
2107} ADLOD6Capabilities;
2108
2109/////////////////////////////////////////////////////////////////////////////////////////////
2110///\brief Structure containing information about Overdrive 6 clock values.
2111///
2112/// This structure is used to store information about Overdrive 6 clock values.
2113/// \nosubgrouping
2114////////////////////////////////////////////////////////////////////////////////////////////
2115typedef struct ADLOD6PerformanceLevel
2116{
2117 /// Engine (core) clock.
2118 int iEngineClock;
2119 /// Memory clock.
2120 int iMemoryClock;
2121} ADLOD6PerformanceLevel;
2122
2123/////////////////////////////////////////////////////////////////////////////////////////////
2124///\brief Structure containing information about Overdrive 6 clocks.
2125///
2126/// This structure is used to store information about Overdrive 6 clocks. This is a
2127/// variable-sized structure. iNumberOfPerformanceLevels indicate how many elements
2128/// are contained in the aLevels array.
2129/// \nosubgrouping
2130////////////////////////////////////////////////////////////////////////////////////////////
2131typedef struct ADLOD6StateInfo
2132{
2133 /// Number of levels. OD6 uses clock ranges instead of discrete performance levels.
2134 /// iNumberOfPerformanceLevels is always 2. The 1st level indicates the minimum clocks
2135 /// in the range. The 2nd level indicates the maximum clocks in the range.
2136 int iNumberOfPerformanceLevels;
2137
2138 /// Value for future extension
2139 int iExtValue;
2140 /// Mask for future extension
2141 int iExtMask;
2142
2143 /// Variable-sized array of levels.
2144 /// The number of elements in the array is specified by iNumberofPerformanceLevels.
2145 ADLOD6PerformanceLevel aLevels [1];
2146} ADLOD6StateInfo;
2147
2148/////////////////////////////////////////////////////////////////////////////////////////////
2149///\brief Structure containing information about current Overdrive 6 performance status.
2150///
2151/// This structure is used to store information about current Overdrive 6 performance status.
2152/// \nosubgrouping
2153////////////////////////////////////////////////////////////////////////////////////////////
2154typedef struct ADLOD6CurrentStatus
2155{
2156 /// Current engine clock in 10 KHz.
2157 int iEngineClock;
2158 /// Current memory clock in 10 KHz.
2159 int iMemoryClock;
2160 /// Current GPU activity in percent. This
2161 /// indicates how "busy" the GPU is.
2162 int iActivityPercent;
2163 /// Not used. Reserved for future use.
2164 int iCurrentPerformanceLevel;
2165 /// Current PCI-E bus speed
2166 int iCurrentBusSpeed;
2167 /// Current PCI-E bus # of lanes
2168 int iCurrentBusLanes;
2169 /// Maximum possible PCI-E bus # of lanes
2170 int iMaximumBusLanes;
2171
2172 /// Value for future extension
2173 int iExtValue;
2174 /// Mask for future extension
2175 int iExtMask;
2176} ADLOD6CurrentStatus;
2177
2178/////////////////////////////////////////////////////////////////////////////////////////////
2179///\brief Structure containing information about Overdrive 6 thermal contoller capabilities
2180///
2181/// This structure is used to store information about Overdrive 6 thermal controller capabilities
2182/// \nosubgrouping
2183////////////////////////////////////////////////////////////////////////////////////////////
2184typedef struct ADLOD6ThermalControllerCaps
2185{
2186 /// Contains a bitmap of thermal controller capability flags. Possible values: \ref ADL_OD6_TCCAPS_THERMAL_CONTROLLER, \ref ADL_OD6_TCCAPS_FANSPEED_CONTROL,
2187 /// \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
2188 int iCapabilities;
2189 /// Minimum fan speed expressed as a percentage
2190 int iFanMinPercent;
2191 /// Maximum fan speed expressed as a percentage
2192 int iFanMaxPercent;
2193 /// Minimum fan speed expressed in revolutions-per-minute
2194 int iFanMinRPM;
2195 /// Maximum fan speed expressed in revolutions-per-minute
2196 int iFanMaxRPM;
2197
2198 /// Value for future extension
2199 int iExtValue;
2200 /// Mask for future extension
2201 int iExtMask;
2202} ADLOD6ThermalControllerCaps;
2203
2204/////////////////////////////////////////////////////////////////////////////////////////////
2205///\brief Structure containing information about Overdrive 6 fan speed information
2206///
2207/// This structure is used to store information about Overdrive 6 fan speed information
2208/// \nosubgrouping
2209////////////////////////////////////////////////////////////////////////////////////////////
2210typedef struct ADLOD6FanSpeedInfo
2211{
2212 /// 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
2213 int iSpeedType;
2214 /// Contains current fan speed in percent (if valid flag exists in iSpeedType)
2215 int iFanSpeedPercent;
2216 /// Contains current fan speed in RPM (if valid flag exists in iSpeedType)
2217 int iFanSpeedRPM;
2218
2219 /// Value for future extension
2220 int iExtValue;
2221 /// Mask for future extension
2222 int iExtMask;
2223} ADLOD6FanSpeedInfo;
2224
2225/////////////////////////////////////////////////////////////////////////////////////////////
2226///\brief Structure containing information about Overdrive 6 fan speed value
2227///
2228/// This structure is used to store information about Overdrive 6 fan speed value
2229/// \nosubgrouping
2230////////////////////////////////////////////////////////////////////////////////////////////
2231typedef struct ADLOD6FanSpeedValue
2232{
2233 /// Indicates the units of the fan speed. Possible values: \ref ADL_OD6_FANSPEED_TYPE_PERCENT, \ref ADL_OD6_FANSPEED_TYPE_RPM
2234 int iSpeedType;
2235 /// Fan speed value (units as indicated above)
2236 int iFanSpeed;
2237
2238 /// Value for future extension
2239 int iExtValue;
2240 /// Mask for future extension
2241 int iExtMask;
2242} ADLOD6FanSpeedValue;
2243
2244/////////////////////////////////////////////////////////////////////////////////////////////
2245///\brief Structure containing information about Overdrive 6 PowerControl settings.
2246///
2247/// This structure is used to store information about Overdrive 6 PowerControl settings.
2248/// PowerControl is the feature which allows the performance characteristics of the GPU
2249/// to be adjusted by changing the PowerTune power limits.
2250/// \nosubgrouping
2251////////////////////////////////////////////////////////////////////////////////////////////
2252typedef struct ADLOD6PowerControlInfo
2253{
2254 /// The minimum PowerControl adjustment value
2255 int iMinValue;
2256 /// The maximum PowerControl adjustment value
2257 int iMaxValue;
2258 /// The minimum difference between PowerControl adjustment values
2259 int iStepValue;
2260
2261 /// Value for future extension
2262 int iExtValue;
2263 /// Mask for future extension
2264 int iExtMask;
2265} ADLOD6PowerControlInfo;
2266
2267/////////////////////////////////////////////////////////////////////////////////////////////
2268///\brief Structure containing information about Overdrive 6 PowerControl settings.
2269///
2270/// This structure is used to store information about Overdrive 6 PowerControl settings.
2271/// PowerControl is the feature which allows the performance characteristics of the GPU
2272/// to be adjusted by changing the PowerTune power limits.
2273/// \nosubgrouping
2274////////////////////////////////////////////////////////////////////////////////////////////
2275typedef struct ADLOD6VoltageControlInfo
2276{
2277 /// The minimum VoltageControl adjustment value
2278 int iMinValue;
2279 /// The maximum VoltageControl adjustment value
2280 int iMaxValue;
2281 /// The minimum difference between VoltageControl adjustment values
2282 int iStepValue;
2283
2284 /// Value for future extension
2285 int iExtValue;
2286 /// Mask for future extension
2287 int iExtMask;
2288} ADLOD6VoltageControlInfo;
2289
2290////////////////////////////////////////////////////////////////////////////////////////////
2291///\brief Structure containing ECC statistics namely SEC counts and DED counts
2292/// Single error count - count of errors that can be corrected
2293/// Doubt Error Detect - count of errors that cannot be corrected
2294/// \nosubgrouping
2295////////////////////////////////////////////////////////////////////////////////////////////
2296typedef struct ADLECCData
2297{
2298 // Single error count - count of errors that can be corrected
2299 int iSec;
2300 // Double error detect - count of errors that cannot be corrected
2301 int iDed;
2302} ADLECCData;
2303
2304/// \brief Handle to ADL client context.
2305///
2306/// ADL clients obtain context handle from initial call to \ref ADL2_Main_Control_Create.
2307/// Clients have to pass the handle to each subsequent ADL call and finally destroy
2308/// the context with call to \ref ADL2_Main_Control_Destroy
2309/// \nosubgrouping
2310typedef void *ADL_CONTEXT_HANDLE;
2311
2312/// \brief Handle to ADL Frame Monitor Token.
2313///
2314/// Frame Monitor clients obtain handle from initial call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Enable
2315/// Clients have to pass the handle to each subsequent ADL call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Get
2316/// and finally destroy the token with call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Disable
2317/// \nosubgrouping
2318typedef void *ADL_FRAME_DURATION_HANDLE;
2319
2320/////////////////////////////////////////////////////////////////////////////////////////////
2321///\brief Structure containing the display mode definition used per controller.
2322///
2323/// This structure is used to store the display mode definition used per controller.
2324/// \nosubgrouping
2325////////////////////////////////////////////////////////////////////////////////////////////
2326typedef struct ADLDisplayModeX2
2327{
2328/// Horizontal resolution (in pixels).
2329 int iWidth;
2330/// Vertical resolution (in lines).
2331 int iHeight;
2332/// 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.
2333 int iScanType;
2334/// Refresh rate.
2335 int iRefreshRate;
2336/// Timing Standard. Refer define_modetiming_standard.
2337 int iTimingStandard;
2338} ADLDisplayModeX2;
2339
2340typedef enum ADLAppProcessState
2341{
2342 APP_PROC_INVALID = 0, // Invalid Application
2343 APP_PROC_PREMPTION = 1, // The Application is being set up for Process Creation
2344 APP_PROC_CREATION = 2, // The Application's Main Process is created by the OS
2345 APP_PROC_READ = 3, // The Application's Data is ready to be read
2346 APP_PROC_WAIT = 4, // The Application is waiting for Timeout or Notification to Resume
2347 APP_PROC_RUNNING = 5, // The Application is running
2348 APP_PROC_TERMINATE = 6 // The Application is about to terminate
2349}ADLAppProcessState;
2350
2351typedef enum ADLAppInterceptionListType
2352{
2353 ADL_INVALID_FORMAT = 0,
2354 ADL_IMAGEFILEFORMAT = 1,
2355 ADL_ENVVAR = 2
2356}ADLAppInterceptionListType;
2357
2358typedef struct ADLAppInterceptionInfo
2359{
2360 wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var
2361 unsigned int ProcessId;
2362 ADLAppInterceptionListType AppFormat;
2363 ADLAppProcessState AppState;
2364} ADLAppInterceptionInfo;
2365
2366typedef enum ADL_AP_DATABASE // same as _SHARED_AP_DATABASE in "inc/shared/shared_escape.h"
2367{
2368 ADL_AP_DATABASE__SYSTEM,
2369 ADL_AP_DATABASE__USER,
2370 ADL_AP_DATABASE__OEM
2371} ADL_AP_DATABASE;
2372
2373typedef struct ADLAppInterceptionInfoX2
2374{
2375 wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var
2376 unsigned int ProcessId;
2377 unsigned int WaitForResumeNeeded;
2378 wchar_t CommandLine[ADL_MAX_PATH]; // The command line on app start/stop event
2379 ADLAppInterceptionListType AppFormat;
2380 ADLAppProcessState AppState;
2381} ADLAppInterceptionInfoX2;
2382
2383typedef struct ADLAppInterceptionInfoX3
2384{
2385 wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var
2386 unsigned int ProcessId;
2387 unsigned int WaitForResumeNeeded;
2388 unsigned int RayTracingStatus; // returns the Ray Tracing status if it is enabled atleast once in session.
2389 wchar_t CommandLine[ADL_MAX_PATH]; // The command line on app start/stop event
2390 ADLAppInterceptionListType AppFormat;
2391 ADLAppProcessState AppState;
2392} ADLAppInterceptionInfoX3;
2393
2394/////////////////////////////////////////////////////////////////////////////////////////////
2395///\brief Structure containing information info for a property record in a profile
2396///
2397/// This structure is used to store info for a property record in a profile
2398/// \nosubgrouping
2399////////////////////////////////////////////////////////////////////////////////////////////
2400typedef struct ADLPropertyRecordCreate
2401{
2402 /// Name of the property
2403 wchar_t * strPropertyName;
2404 /// Data type of the property
2405 ADLProfilePropertyType eType;
2406 // Value of the property
2407 wchar_t * strPropertyValue;
2408} ADLPropertyRecordCreate;
2409
2410/////////////////////////////////////////////////////////////////////////////////////////////
2411///\brief Structure containing information info for an application record
2412///
2413/// This structure is used to store info for an application record
2414/// \nosubgrouping
2415////////////////////////////////////////////////////////////////////////////////////////////
2416typedef struct ADLApplicationRecord
2417{
2418 /// Title of the application
2419 wchar_t * strTitle;
2420 /// File path of the application
2421 wchar_t * strPathName;
2422 /// File name of the application
2423 wchar_t * strFileName;
2424 /// File versin the application
2425 wchar_t * strVersion;
2426 /// Nostes on the application
2427 wchar_t * strNotes;
2428 /// Driver area which the application uses
2429 wchar_t * strArea;
2430 /// Name of profile assigned to the application
2431 wchar_t * strProfileName;
2432 // Source where this application record come from
2433 ADL_AP_DATABASE recordSource;
2434} ADLApplicationRecord;
2435
2436/////////////////////////////////////////////////////////////////////////////////////////////
2437///\brief Structure containing information about Overdrive 6 extension capabilities
2438///
2439/// This structure is used to store information about Overdrive 6 extension capabilities
2440/// \nosubgrouping
2441////////////////////////////////////////////////////////////////////////////////////////////
2442typedef struct ADLOD6CapabilitiesEx
2443{
2444 /// Contains a bitmap of the OD6 extension capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION,
2445 /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR,
2446 /// \ref ADL_OD6_CAPABILITY_POWER_CONTROL, \ref ADL_OD6_CAPABILITY_VOLTAGE_CONTROL, \ref ADL_OD6_CAPABILITY_PERCENT_ADJUSTMENT,
2447 //// \ref ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK
2448 int iCapabilities;
2449 /// The Power states that support clock and power customization. Only performance state is currently supported.
2450 /// Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE
2451 int iSupportedStates;
2452 /// 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.
2453 ADLOD6ParameterRange sEngineClockPercent;
2454 /// 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.
2455 ADLOD6ParameterRange sMemoryClockPercent;
2456 /// 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.
2457 ADLOD6ParameterRange sPowerControlPercent;
2458 /// Reserved for future expansion of the structure.
2459 int iExtValue;
2460 /// Reserved for future expansion of the structure.
2461 int iExtMask;
2462} ADLOD6CapabilitiesEx;
2463
2464/////////////////////////////////////////////////////////////////////////////////////////////
2465///\brief Structure containing information about Overdrive 6 extension state information
2466///
2467/// This structure is used to store information about Overdrive 6 extension state information
2468/// \nosubgrouping
2469////////////////////////////////////////////////////////////////////////////////////////////
2470typedef struct ADLOD6StateEx
2471{
2472 /// The current engine clock adjustment value, specified as a +/- percent.
2473 int iEngineClockPercent;
2474 /// The current memory clock adjustment value, specified as a +/- percent.
2475 int iMemoryClockPercent;
2476 /// The current power control adjustment value, specified as a +/- percent.
2477 int iPowerControlPercent;
2478 /// Reserved for future expansion of the structure.
2479 int iExtValue;
2480 /// Reserved for future expansion of the structure.
2481 int iExtMask;
2482} ADLOD6StateEx;
2483
2484/////////////////////////////////////////////////////////////////////////////////////////////
2485///\brief Structure containing information about Overdrive 6 extension recommended maximum clock adjustment values
2486///
2487/// This structure is used to store information about Overdrive 6 extension recommended maximum clock adjustment values
2488/// \nosubgrouping
2489////////////////////////////////////////////////////////////////////////////////////////////
2490typedef struct ADLOD6MaxClockAdjust
2491{
2492 /// The recommended maximum engine clock adjustment in percent, for the specified power limit value.
2493 int iEngineClockMax;
2494 /// The recommended maximum memory clock adjustment in percent, for the specified power limit value.
2495 /// Currently the memory is independent of the Power Limit setting, so iMemoryClockMax will always return the maximum
2496 /// possible adjustment value. This field is here for future enhancement in case we add a dependency between Memory Clock
2497 /// adjustment and Power Limit setting.
2498 int iMemoryClockMax;
2499 /// Reserved for future expansion of the structure.
2500 int iExtValue;
2501 /// Reserved for future expansion of the structure.
2502 int iExtMask;
2503} ADLOD6MaxClockAdjust;
2504
2505////////////////////////////////////////////////////////////////////////////////////////////
2506///\brief Structure containing the Connector information
2507///
2508/// this structure is used to get the connector information like length, positions & etc.
2509/// \nosubgrouping
2510////////////////////////////////////////////////////////////////////////////////////////////
2511typedef struct ADLConnectorInfo
2512{
2513 ///index of the connector(0-based)
2514 int iConnectorIndex;
2515 ///used for disply identification/ordering
2516 int iConnectorId;
2517 ///index of the slot, 0-based index.
2518 int iSlotIndex;
2519 ///Type of the connector. \ref define_connector_types
2520 int iType;
2521 ///Position of the connector(in millimeters), from the right side of the slot.
2522 int iOffset;
2523 ///Length of the connector(in millimeters).
2524 int iLength;
2525} ADLConnectorInfo;
2526
2527////////////////////////////////////////////////////////////////////////////////////////////
2528///\brief Structure containing the slot information
2529///
2530/// this structure is used to get the slot information like length of the slot, no of connectors on the slot & etc.
2531/// \nosubgrouping
2532////////////////////////////////////////////////////////////////////////////////////////////
2533typedef struct ADLBracketSlotInfo
2534{
2535 ///index of the slot, 0-based index.
2536 int iSlotIndex;
2537 ///length of the slot(in millimeters).
2538 int iLength;
2539 ///width of the slot(in millimeters).
2540 int iWidth;
2541} ADLBracketSlotInfo;
2542
2543////////////////////////////////////////////////////////////////////////////////////////////
2544///\brief Structure containing MST branch information
2545///
2546/// this structure is used to store the MST branch information
2547/// \nosubgrouping
2548////////////////////////////////////////////////////////////////////////////////////////////
2549typedef struct ADLMSTRad
2550{
2551 ///depth of the link.
2552 int iLinkNumber;
2553 /// Relative address, address scheme starts from source side
2554 char rad[ADL_MAX_RAD_LINK_COUNT];
2555} ADLMSTRad;
2556
2557////////////////////////////////////////////////////////////////////////////////////////////
2558///\brief Structure containing port information
2559///
2560/// this structure is used to get the display or MST branch information
2561/// \nosubgrouping
2562////////////////////////////////////////////////////////////////////////////////////////////
2563typedef struct ADLDevicePort
2564{
2565 ///index of the connector.
2566 int iConnectorIndex;
2567 ///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.
2568 ADLMSTRad aMSTRad;
2569} ADLDevicePort;
2570
2571////////////////////////////////////////////////////////////////////////////////////////////
2572///\brief Structure containing supported connection types and properties
2573///
2574/// this structure is used to get the supported connection types and supported properties of given connector
2575/// \nosubgrouping
2576////////////////////////////////////////////////////////////////////////////////////////////
2577typedef struct ADLSupportedConnections
2578{
2579 ///Bit vector of supported connections. Bitmask is defined in constants section. \ref define_connection_types
2580 int iSupportedConnections;
2581 ///Array of bitvectors. Each bit vector represents supported properties for one connection type. Index of this array is connection type (bit number in mask).
2582 int iSupportedProperties[ADL_MAX_CONNECTION_TYPES];
2583} ADLSupportedConnections;
2584
2585////////////////////////////////////////////////////////////////////////////////////////////
2586///\brief Structure containing connection state of the connector
2587///
2588/// this structure is used to get the current Emulation status and mode of the given connector
2589/// \nosubgrouping
2590////////////////////////////////////////////////////////////////////////////////////////////
2591typedef struct ADLConnectionState
2592{
2593 ///The value is bit vector. Each bit represents status. See masks constants for details. \ref define_emulation_status
2594 int iEmulationStatus;
2595 ///It contains information about current emulation mode. See constants for details. \ref define_emulation_mode
2596 int iEmulationMode;
2597 ///If connection is active it will contain display id, otherwise CWDDEDI_INVALID_DISPLAY_INDEX
2598 int iDisplayIndex;
2599} ADLConnectionState;
2600
2601////////////////////////////////////////////////////////////////////////////////////////////
2602///\brief Structure containing connection properties information
2603///
2604/// this structure is used to retrieve the properties of connection type
2605/// \nosubgrouping
2606////////////////////////////////////////////////////////////////////////////////////////////
2607typedef struct ADLConnectionProperties
2608{
2609 //Bit vector. Represents actual properties. Supported properties for specific connection type. \ref define_connection_properties
2610 int iValidProperties;
2611 //Bitrate(in MHz). Could be used for MST branch, DP or DP active dongle. \ref define_linkrate_constants
2612 int iBitrate;
2613 //Number of lanes in DP connection. \ref define_lanecount_constants
2614 int iNumberOfLanes;
2615 //Color depth(in bits). \ref define_colordepth_constants
2616 int iColorDepth;
2617 //3D capabilities. It could be used for some dongles. For instance: alternate framepack. Value of this property is bit vector.
2618 int iStereo3DCaps;
2619 ///Output Bandwidth. Could be used for MST branch, DP or DP Active dongle. \ref define_linkrate_constants
2620 int iOutputBandwidth;
2621} ADLConnectionProperties;
2622
2623////////////////////////////////////////////////////////////////////////////////////////////
2624///\brief Structure containing connection information
2625///
2626/// this structure is used to retrieve the data from driver which includes
2627/// \nosubgrouping
2628////////////////////////////////////////////////////////////////////////////////////////////
2629typedef struct ADLConnectionData
2630{
2631 ///Connection type. based on the connection type either iNumberofPorts or IDataSize,EDIDdata is valid, \ref define_connection_types
2632 int iConnectionType;
2633 ///Specifies the connection properties.
2634 ADLConnectionProperties aConnectionProperties;
2635 ///Number of ports
2636 int iNumberofPorts;
2637 ///Number of Active Connections
2638 int iActiveConnections;
2639 ///actual size of EDID data block size.
2640 int iDataSize;
2641 ///EDID Data
2642 char EdidData[ADL_MAX_DISPLAY_EDID_DATA_SIZE];
2643} ADLConnectionData;
2644
2645/////////////////////////////////////////////////////////////////////////////////////////////
2646///\brief Structure containing information about an controller mode including Number of Connectors
2647///
2648/// This structure is used to store information of an controller mode
2649/// \nosubgrouping
2650////////////////////////////////////////////////////////////////////////////////////////////
2651typedef struct ADLAdapterCapsX2
2652{
2653 /// AdapterID for this adapter
2654 int iAdapterID;
2655 /// Number of controllers for this adapter
2656 int iNumControllers;
2657 /// Number of displays for this adapter
2658 int iNumDisplays;
2659 /// Number of overlays for this adapter
2660 int iNumOverlays;
2661 /// Number of GLSyncConnectors
2662 int iNumOfGLSyncConnectors;
2663 /// The bit mask identifies the adapter caps
2664 int iCapsMask;
2665 /// The bit identifies the adapter caps \ref define_adapter_caps
2666 int iCapsValue;
2667 /// Number of Connectors for this adapter
2668 int iNumConnectors;
2669}ADLAdapterCapsX2;
2670
2671typedef enum ADL_ERROR_RECORD_SEVERITY
2672{
2673 ADL_GLOBALLY_UNCORRECTED = 1,
2674 ADL_LOCALLY_UNCORRECTED = 2,
2675 ADL_DEFFERRED = 3,
2676 ADL_CORRECTED = 4
2677}ADL_ERROR_RECORD_SEVERITY;
2678
2679typedef union _ADL_ECC_EDC_FLAG
2680{
2681 struct
2682 {
2683 unsigned int isEccAccessing : 1;
2684 unsigned int reserved : 31;
2685 }bits;
2686 unsigned int u32All;
2687}ADL_ECC_EDC_FLAG;
2688
2689/////////////////////////////////////////////////////////////////////////////////////////////
2690///\brief Structure containing information about EDC Error Record
2691///
2692/// This structure is used to store EDC Error Record
2693/// \nosubgrouping
2694////////////////////////////////////////////////////////////////////////////////////////////
2695typedef struct ADLErrorRecord
2696{
2697 // Severity of error
2698 ADL_ERROR_RECORD_SEVERITY Severity;
2699
2700 // Is the counter valid?
2701 int countValid;
2702
2703 // Counter value, if valid
2704 unsigned int count;
2705
2706 // Is the location information valid?
2707 int locationValid;
2708
2709 // Physical location of error
2710 unsigned int CU; // CU number on which error occurred, if known
2711 char StructureName[32]; // e.g. LDS, TCC, etc.
2712
2713 // Time of error record creation (e.g. time of query, or time of poison interrupt)
2714 char tiestamp[32];
2715
2716 unsigned int padding[3];
2717}ADLErrorRecord;
2718
2719typedef enum ADL_EDC_BLOCK_ID
2720{
2721 ADL_EDC_BLOCK_ID_SQCIS = 1,
2722 ADL_EDC_BLOCK_ID_SQCDS = 2,
2723 ADL_EDC_BLOCK_ID_SGPR = 3,
2724 ADL_EDC_BLOCK_ID_VGPR = 4,
2725 ADL_EDC_BLOCK_ID_LDS = 5,
2726 ADL_EDC_BLOCK_ID_GDS = 6,
2727 ADL_EDC_BLOCK_ID_TCL1 = 7,
2728 ADL_EDC_BLOCK_ID_TCL2 = 8
2729}ADL_EDC_BLOCK_ID;
2730
2731typedef enum ADL_ERROR_INJECTION_MODE
2732{
2733 ADL_ERROR_INJECTION_MODE_SINGLE = 1,
2734 ADL_ERROR_INJECTION_MODE_MULTIPLE = 2,
2735 ADL_ERROR_INJECTION_MODE_ADDRESS = 3
2736}ADL_ERROR_INJECTION_MODE;
2737
2738typedef union _ADL_ERROR_PATTERN
2739{
2740 struct
2741 {
2742 unsigned long EccInjVector : 16;
2743 unsigned long EccInjEn : 9;
2744 unsigned long EccBeatEn : 4;
2745 unsigned long EccChEn : 4;
2746 unsigned long reserved : 31;
2747 } bits;
2748 unsigned long long u64Value;
2749} ADL_ERROR_PATTERN;
2750
2751typedef struct ADL_ERROR_INJECTION_DATA
2752{
2753 unsigned long long errorAddress;
2754 ADL_ERROR_PATTERN errorPattern;
2755}ADL_ERROR_INJECTION_DATA;
2756
2757/////////////////////////////////////////////////////////////////////////////////////////////
2758///\brief Structure containing information about EDC Error Injection
2759///
2760/// This structure is used to store EDC Error Injection
2761/// \nosubgrouping
2762////////////////////////////////////////////////////////////////////////////////////////////
2763typedef struct ADLErrorInjection
2764{
2765 ADL_EDC_BLOCK_ID blockId;
2766 ADL_ERROR_INJECTION_MODE errorInjectionMode;
2767}ADLErrorInjection;
2768
2769typedef struct ADLErrorInjectionX2
2770{
2771 ADL_EDC_BLOCK_ID blockId;
2772 ADL_ERROR_INJECTION_MODE errorInjectionMode;
2773 ADL_ERROR_INJECTION_DATA errorInjectionData;
2774}ADLErrorInjectionX2;
2775
2776/////////////////////////////////////////////////////////////////////////////////////////////
2777///\brief Structure containing per display FreeSync capability information.
2778///
2779/// This structure is used to store the FreeSync capability of both the display and
2780/// the GPU the display is connected to.
2781/// \nosubgrouping
2782////////////////////////////////////////////////////////////////////////////////////////////
2783typedef struct ADLFreeSyncCap
2784{
2785 /// FreeSync capability flags. \ref define_freesync_caps
2786 int iCaps;
2787 /// Reports minimum FreeSync refresh rate supported by the display in micro hertz
2788 int iMinRefreshRateInMicroHz;
2789 /// Reports maximum FreeSync refresh rate supported by the display in micro hertz
2790 int iMaxRefreshRateInMicroHz;
2791 /// Index of FreeSync Label to use: ADL_FREESYNC_LABEL_*
2792 unsigned char ucLabelIndex;
2793 /// Reserved
2794 char cReserved[3];
2795 int iReserved[4];
2796} ADLFreeSyncCap;
2797
2798/////////////////////////////////////////////////////////////////////////////////////////////
2799///\brief Structure containing per display Display Connectivty Experience Settings
2800///
2801/// This structure is used to store the Display Connectivity Experience settings of a
2802/// display
2803/// \nosubgrouping
2804////////////////////////////////////////////////////////////////////////////////////////////
2805typedef struct ADLDceSettings
2806{
2807 DceSettingsType type; // Defines which structure is in the union below
2808 union
2809 {
2810 struct
2811 {
2812 bool qualityDetectionEnabled;
2813 } HdmiLq;
2814 struct
2815 {
2816 DpLinkRate linkRate; // Read-only
2817 unsigned int numberOfActiveLanes; // Read-only
2818 unsigned int numberofTotalLanes; // Read-only
2819 int relativePreEmphasis; // Allowable values are -2 to +2
2820 int relativeVoltageSwing; // Allowable values are -2 to +2
2821 int persistFlag;
2822 } DpLink;
2823 struct
2824 {
2825 bool linkProtectionEnabled; // Read-only
2826 } Protection;
2827 } Settings;
2828 int iReserved[15];
2829} ADLDceSettings;
2830
2831/////////////////////////////////////////////////////////////////////////////////////////////
2832///\brief Structure containing information about Graphic Core
2833///
2834/// This structure is used to get Graphic Core Info
2835/// \nosubgrouping
2836////////////////////////////////////////////////////////////////////////////////////////////
2837typedef struct ADLGraphicCoreInfo
2838{
2839 /// indicate the graphic core generation
2840 int iGCGen;
2841
2842 union
2843 {
2844 /// Total number of CUs. Valid for GCN (iGCGen == GCN)
2845 int iNumCUs;
2846 /// Total number of WGPs. Valid for RDNA (iGCGen == RDNA)
2847 int iNumWGPs;
2848 };
2849
2850 union
2851 {
2852 /// Number of processing elements per CU. Valid for GCN (iGCGen == GCN)
2853 int iNumPEsPerCU;
2854 /// Number of processing elements per WGP. Valid for RDNA (iGCGen == RDNA)
2855 int iNumPEsPerWGP;
2856 };
2857
2858 /// Total number of SIMDs. Valid for Pre GCN (iGCGen == Pre-GCN)
2859 int iNumSIMDs;
2860
2861 /// Total number of ROPs. Valid for both GCN and Pre GCN
2862 int iNumROPs;
2863
2864 /// reserved for future use
2865 int iReserved[11];
2866}ADLGraphicCoreInfo;
2867
2868/////////////////////////////////////////////////////////////////////////////////////////////
2869///\brief Structure containing information about Overdrive N clock range
2870///
2871/// This structure is used to store information about Overdrive N clock range
2872/// \nosubgrouping
2873////////////////////////////////////////////////////////////////////////////////////////////
2874typedef struct ADLODNParameterRange
2875{
2876 /// The starting value of the clock range
2877 int iMode;
2878 /// The starting value of the clock range
2879 int iMin;
2880 /// The ending value of the clock range
2881 int iMax;
2882 /// The minimum increment between clock values
2883 int iStep;
2884 /// The default clock values
2885 int iDefault;
2886} ADLODNParameterRange;
2887
2888/////////////////////////////////////////////////////////////////////////////////////////////
2889///\brief Structure containing information about Overdrive N capabilities
2890///
2891/// This structure is used to store information about Overdrive N capabilities
2892/// \nosubgrouping
2893////////////////////////////////////////////////////////////////////////////////////////////
2894typedef struct ADLODNCapabilities
2895{
2896 /// Number of levels which describe the minimum to maximum clock ranges.
2897 /// The 1st level indicates the minimum clocks, and the 2nd level
2898 /// indicates the maximum clocks.
2899 int iMaximumNumberOfPerformanceLevels;
2900 /// Contains the hard limits of the sclk range. Overdrive
2901 /// clocks cannot be set outside this range.
2902 ADLODNParameterRange sEngineClockRange;
2903 /// Contains the hard limits of the mclk range. Overdrive
2904 /// clocks cannot be set outside this range.
2905 ADLODNParameterRange sMemoryClockRange;
2906 /// Contains the hard limits of the vddc range. Overdrive
2907 /// clocks cannot be set outside this range.
2908 ADLODNParameterRange svddcRange;
2909 /// Contains the hard limits of the power range. Overdrive
2910 /// clocks cannot be set outside this range.
2911 ADLODNParameterRange power;
2912 /// Contains the hard limits of the power range. Overdrive
2913 /// clocks cannot be set outside this range.
2914 ADLODNParameterRange powerTuneTemperature;
2915 /// Contains the hard limits of the Temperature range. Overdrive
2916 /// clocks cannot be set outside this range.
2917 ADLODNParameterRange fanTemperature;
2918 /// Contains the hard limits of the Fan range. Overdrive
2919 /// clocks cannot be set outside this range.
2920 ADLODNParameterRange fanSpeed;
2921 /// Contains the hard limits of the Fan range. Overdrive
2922 /// clocks cannot be set outside this range.
2923 ADLODNParameterRange minimumPerformanceClock;
2924} ADLODNCapabilities;
2925
2926/////////////////////////////////////////////////////////////////////////////////////////////
2927///\brief Structure containing information about Overdrive N capabilities
2928///
2929/// This structure is used to store information about Overdrive N capabilities
2930/// \nosubgrouping
2931////////////////////////////////////////////////////////////////////////////////////////////
2932typedef struct ADLODNCapabilitiesX2
2933{
2934 /// Number of levels which describe the minimum to maximum clock ranges.
2935 /// The 1st level indicates the minimum clocks, and the 2nd level
2936 /// indicates the maximum clocks.
2937 int iMaximumNumberOfPerformanceLevels;
2938 /// bit vector, which tells what are the features are supported.
2939 /// \ref: ADLODNFEATURECONTROL
2940 int iFlags;
2941 /// Contains the hard limits of the sclk range. Overdrive
2942 /// clocks cannot be set outside this range.
2943 ADLODNParameterRange sEngineClockRange;
2944 /// Contains the hard limits of the mclk range. Overdrive
2945 /// clocks cannot be set outside this range.
2946 ADLODNParameterRange sMemoryClockRange;
2947 /// Contains the hard limits of the vddc range. Overdrive
2948 /// clocks cannot be set outside this range.
2949 ADLODNParameterRange svddcRange;
2950 /// Contains the hard limits of the power range. Overdrive
2951 /// clocks cannot be set outside this range.
2952 ADLODNParameterRange power;
2953 /// Contains the hard limits of the power range. Overdrive
2954 /// clocks cannot be set outside this range.
2955 ADLODNParameterRange powerTuneTemperature;
2956 /// Contains the hard limits of the Temperature range. Overdrive
2957 /// clocks cannot be set outside this range.
2958 ADLODNParameterRange fanTemperature;
2959 /// Contains the hard limits of the Fan range. Overdrive
2960 /// clocks cannot be set outside this range.
2961 ADLODNParameterRange fanSpeed;
2962 /// Contains the hard limits of the Fan range. Overdrive
2963 /// clocks cannot be set outside this range.
2964 ADLODNParameterRange minimumPerformanceClock;
2965 /// Contains the hard limits of the throttleNotification
2966 ADLODNParameterRange throttleNotificaion;
2967 /// Contains the hard limits of the Auto Systemclock
2968 ADLODNParameterRange autoSystemClock;
2969} ADLODNCapabilitiesX2;
2970
2971/////////////////////////////////////////////////////////////////////////////////////////////
2972///\brief Structure containing information about Overdrive level.
2973///
2974/// This structure is used to store information about Overdrive level.
2975/// This structure is used by ADLODPerformanceLevels.
2976/// \nosubgrouping
2977////////////////////////////////////////////////////////////////////////////////////////////
2978typedef struct ADLODNPerformanceLevel
2979{
2980 /// clock.
2981 int iClock;
2982 /// VDCC.
2983 int iVddc;
2984 /// enabled
2985 int iEnabled;
2986} ADLODNPerformanceLevel;
2987
2988/////////////////////////////////////////////////////////////////////////////////////////////
2989///\brief Structure containing information about Overdrive N performance levels.
2990///
2991/// This structure is used to store information about Overdrive performance levels.
2992/// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
2993/// \nosubgrouping
2994////////////////////////////////////////////////////////////////////////////////////////////
2995typedef struct ADLODNPerformanceLevels
2996{
2997 int iSize;
2998 //Automatic/manual
2999 int iMode;
3000 /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
3001 int iNumberOfPerformanceLevels;
3002 /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
3003 ADLODNPerformanceLevel aLevels[1];
3004} ADLODNPerformanceLevels;
3005
3006/////////////////////////////////////////////////////////////////////////////////////////////
3007///\brief Structure containing information about Overdrive N Fan Speed.
3008///
3009/// This structure is used to store information about Overdrive Fan control .
3010/// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
3011/// \nosubgrouping
3012////////////////////////////////////////////////////////////////////////////////////////////
3013typedef struct ADLODNFanControl
3014{
3015 int iMode;
3016 int iFanControlMode;
3017 int iCurrentFanSpeedMode;
3018 int iCurrentFanSpeed;
3019 int iTargetFanSpeed;
3020 int iTargetTemperature;
3021 int iMinPerformanceClock;
3022 int iMinFanLimit;
3023} ADLODNFanControl;
3024
3025/////////////////////////////////////////////////////////////////////////////////////////////
3026///\brief Structure containing information about Overdrive N power limit.
3027///
3028/// This structure is used to store information about Overdrive power limit.
3029/// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
3030/// \nosubgrouping
3031////////////////////////////////////////////////////////////////////////////////////////////
3032typedef struct ADLODNPowerLimitSetting
3033{
3034 int iMode;
3035 int iTDPLimit;
3036 int iMaxOperatingTemperature;
3037} ADLODNPowerLimitSetting;
3038
3039typedef struct ADLODNPerformanceStatus
3040{
3041 int iCoreClock;
3042 int iMemoryClock;
3043 int iDCEFClock;
3044 int iGFXClock;
3045 int iUVDClock;
3046 int iVCEClock;
3047 int iGPUActivityPercent;
3048 int iCurrentCorePerformanceLevel;
3049 int iCurrentMemoryPerformanceLevel;
3050 int iCurrentDCEFPerformanceLevel;
3051 int iCurrentGFXPerformanceLevel;
3052 int iUVDPerformanceLevel;
3053 int iVCEPerformanceLevel;
3054 int iCurrentBusSpeed;
3055 int iCurrentBusLanes;
3056 int iMaximumBusLanes;
3057 int iVDDC;
3058 int iVDDCI;
3059} ADLODNPerformanceStatus;
3060
3061///\brief Structure containing information about Overdrive level.
3062///
3063/// This structure is used to store information about Overdrive level.
3064/// This structure is used by ADLODPerformanceLevels.
3065/// \nosubgrouping
3066////////////////////////////////////////////////////////////////////////////////////////////
3067typedef struct ADLODNPerformanceLevelX2
3068{
3069 /// clock.
3070 int iClock;
3071 /// VDCC.
3072 int iVddc;
3073 /// enabled
3074 int iEnabled;
3075 /// MASK
3076 int iControl;
3077} ADLODNPerformanceLevelX2;
3078
3079/////////////////////////////////////////////////////////////////////////////////////////////
3080///\brief Structure containing information about Overdrive N performance levels.
3081///
3082/// This structure is used to store information about Overdrive performance levels.
3083/// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions.
3084/// \nosubgrouping
3085////////////////////////////////////////////////////////////////////////////////////////////
3086typedef struct ADLODNPerformanceLevelsX2
3087{
3088 int iSize;
3089 //Automatic/manual
3090 int iMode;
3091 /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1)
3092 int iNumberOfPerformanceLevels;
3093 /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements.
3094 ADLODNPerformanceLevelX2 aLevels[1];
3095} ADLODNPerformanceLevelsX2;
3096
3097typedef enum ADLODNCurrentPowerType
3098{
3099 ODN_GPU_TOTAL_POWER = 0,
3100 ODN_GPU_PPT_POWER,
3101 ODN_GPU_SOCKET_POWER,
3102 ODN_GPU_CHIP_POWER
3103} ADLODNCurrentPowerType;
3104
3105// in/out: CWDDEPM_CURRENTPOWERPARAMETERS
3106typedef struct ADLODNCurrentPowerParameters
3107{
3108 int size;
3109 ADLODNCurrentPowerType powerType;
3110 int currentPower;
3111} ADLODNCurrentPowerParameters;
3112
3113//ODN Ext range data structure
3114typedef struct ADLODNExtSingleInitSetting
3115{
3116 int mode;
3117 int minValue;
3118 int maxValue;
3119 int step;
3120 int defaultValue;
3121} ADLODNExtSingleInitSetting;
3122
3123//OD8 Ext range data structure
3124typedef struct ADLOD8SingleInitSetting
3125{
3126 int featureID;
3127 int minValue;
3128 int maxValue;
3129 int defaultValue;
3130} ADLOD8SingleInitSetting;
3131
3132/////////////////////////////////////////////////////////////////////////////////////////////
3133///\brief Structure containing information about Overdrive8 initial setting
3134///
3135/// This structure is used to store information about Overdrive8 initial setting
3136/// \nosubgrouping
3137////////////////////////////////////////////////////////////////////////////////////////////
3138typedef struct ADLOD8InitSetting
3139{
3140 int count;
3141 int overdrive8Capabilities;
3142 ADLOD8SingleInitSetting od8SettingTable[OD8_COUNT];
3143} ADLOD8InitSetting;
3144
3145/////////////////////////////////////////////////////////////////////////////////////////////
3146///\brief Structure containing information about Overdrive8 current setting
3147///
3148/// This structure is used to store information about Overdrive8 current setting
3149/// \nosubgrouping
3150////////////////////////////////////////////////////////////////////////////////////////////
3151typedef struct ADLOD8CurrentSetting
3152{
3153 int count;
3154 int Od8SettingTable[OD8_COUNT];
3155} ADLOD8CurrentSetting;
3156
3157/////////////////////////////////////////////////////////////////////////////////////////////
3158///\brief Structure containing information about Overdrive8 set setting
3159///
3160/// This structure is used to store information about Overdrive8 set setting
3161/// \nosubgrouping
3162////////////////////////////////////////////////////////////////////////////////////////////
3163
3164typedef struct ADLOD8SingleSetSetting
3165{
3166 int value;
3167 int requested; // 0 - default , 1 - requested
3168 int reset; // 0 - do not reset , 1 - reset setting back to default
3169} ADLOD8SingleSetSetting;
3170
3171typedef struct ADLOD8SetSetting
3172{
3173 int count;
3174 ADLOD8SingleSetSetting od8SettingTable[OD8_COUNT];
3175} ADLOD8SetSetting;
3176
3177/////////////////////////////////////////////////////////////////////////////////////////////
3178///\brief Structure containing information about Performance Metrics data
3179///
3180/// This structure is used to store information about Performance Metrics data output
3181/// \nosubgrouping
3182////////////////////////////////////////////////////////////////////////////////////////////
3183typedef struct ADLSingleSensorData
3184{
3185 int supported;
3186 int value;
3187} ADLSingleSensorData;
3188
3189typedef struct ADLPMLogDataOutput
3190{
3191 int size;
3192 ADLSingleSensorData sensors[ADL_PMLOG_MAX_SENSORS];
3193}ADLPMLogDataOutput;
3194
3195/////////////////////////////////////////////////////////////////////////////////////////////
3196///\brief Structure containing information about PPLog settings.
3197///
3198/// This structure is used to store information about PPLog settings.
3199/// This structure is used by the ADL2_PPLogSettings_Set() and ADL2_PPLogSettings_Get() functions.
3200/// \nosubgrouping
3201////////////////////////////////////////////////////////////////////////////////////////////
3202typedef struct ADLPPLogSettings
3203{
3204 int BreakOnAssert;
3205 int BreakOnWarn;
3206 int LogEnabled;
3207 int LogFieldMask;
3208 int LogDestinations;
3209 int LogSeverityEnabled;
3210 int LogSourceMask;
3211 int PowerProfilingEnabled;
3212 int PowerProfilingTimeInterval;
3213}ADLPPLogSettings;
3214
3215/////////////////////////////////////////////////////////////////////////////////////////////
3216///\brief Structure containing information related Frames Per Second for AC and DC.
3217///
3218/// This structure is used to store information related AC and DC Frames Per Second settings
3219/// \nosubgrouping
3220////////////////////////////////////////////////////////////////////////////////////////////
3221typedef struct ADLFPSSettingsOutput
3222{
3223 /// size
3224 int ulSize;
3225 /// FPS Monitor is enabled in the AC state if 1
3226 int bACFPSEnabled;
3227 /// FPS Monitor is enabled in the DC state if 1
3228 int bDCFPSEnabled;
3229 /// Current Value of FPS Monitor in AC state
3230 int ulACFPSCurrent;
3231 /// Current Value of FPS Monitor in DC state
3232 int ulDCFPSCurrent;
3233 /// Maximum FPS Threshold allowed in PPLib for AC
3234 int ulACFPSMaximum;
3235 /// Minimum FPS Threshold allowed in PPLib for AC
3236 int ulACFPSMinimum;
3237 /// Maximum FPS Threshold allowed in PPLib for DC
3238 int ulDCFPSMaximum;
3239 /// Minimum FPS Threshold allowed in PPLib for DC
3240 int ulDCFPSMinimum;
3241} ADLFPSSettingsOutput;
3242
3243/////////////////////////////////////////////////////////////////////////////////////////////
3244///\brief Structure containing information related Frames Per Second for AC and DC.
3245///
3246/// This structure is used to store information related AC and DC Frames Per Second settings
3247/// \nosubgrouping
3248////////////////////////////////////////////////////////////////////////////////////////////
3249typedef struct ADLFPSSettingsInput
3250{
3251 /// size
3252 int ulSize;
3253 /// Settings are for Global FPS (used by CCC)
3254 int bGlobalSettings;
3255 /// Current Value of FPS Monitor in AC state
3256 int ulACFPSCurrent;
3257 /// Current Value of FPS Monitor in DC state
3258 int ulDCFPSCurrent;
3259 /// Reserved
3260 int ulReserved[6];
3261} ADLFPSSettingsInput;
3262
3263/////////////////////////////////////////////////////////////////////////////////////////////
3264///\brief Structure containing information related power management logging.
3265///
3266/// This structure is used to store support information for power management logging.
3267/// \nosubgrouping
3268////////////////////////////////////////////////////////////////////////////////////////////
3269enum { ADL_PMLOG_MAX_SUPPORTED_SENSORS = 256 };
3270
3271typedef struct ADLPMLogSupportInfo
3272{
3273 /// list of sensors defined by ADL_PMLOG_SENSORS
3274 unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS];
3275 /// Reserved
3276 int ulReserved[16];
3277} ADLPMLogSupportInfo;
3278
3279/////////////////////////////////////////////////////////////////////////////////////////////
3280///\brief Structure containing information to start power management logging.
3281///
3282/// This structure is used as input to ADL2_Adapter_PMLog_Start
3283/// \nosubgrouping
3284////////////////////////////////////////////////////////////////////////////////////////////
3285typedef struct ADLPMLogStartInput
3286{
3287 /// list of sensors defined by ADL_PMLOG_SENSORS
3288 unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS];
3289 /// Sample rate in milliseconds
3290 unsigned long ulSampleRate;
3291 /// Reserved
3292 int ulReserved[15];
3293} ADLPMLogStartInput;
3294
3295typedef struct ADLPMLogData
3296{
3297 /// Structure version
3298 unsigned int ulVersion;
3299 /// Current driver sample rate
3300 unsigned int ulActiveSampleRate;
3301 /// Timestamp of last update
3302 unsigned long long ulLastUpdated;
3303 /// 2D array of senesor and values
3304 unsigned int ulValues[ADL_PMLOG_MAX_SUPPORTED_SENSORS][2];
3305 /// Reserved
3306 unsigned int ulReserved[256];
3307} ADLPMLogData;
3308
3309/////////////////////////////////////////////////////////////////////////////////////////////
3310///\brief Structure containing information to start power management logging.
3311///
3312/// This structure is returned as output from ADL2_Adapter_PMLog_Start
3313/// \nosubgrouping
3314////////////////////////////////////////////////////////////////////////////////////////////
3315typedef struct ADLPMLogStartOutput
3316{
3317 /// Pointer to memory address containing logging data
3318 union
3319 {
3320 void* pLoggingAddress;
3321 unsigned long long ptr_LoggingAddress;
3322 };
3323 /// Reserved
3324 int ulReserved[14];
3325} ADLPMLogStartOutput;
3326
3327/////////////////////////////////////////////////////////////////////////////////////////////
3328///\brief Structure containing information to query limts of power management logging.
3329///
3330/// This structure is returned as output from ADL2_Adapter_PMLog_SensorLimits_Get
3331/// \nosubgrouping
3332////////////////////////////////////////////////////////////////////////////////////////////
3333typedef struct ADLPMLogSensorLimits
3334{
3335 int SensorLimits[ADL_PMLOG_MAX_SENSORS][2]; //index 0: min, 1: max
3336} ADLPMLogSensorLimits;
3337
3338/////////////////////////////////////////////////////////////////////////////////////////////
3339///\brief Structure containing information related RAS Get Error Counts Information
3340///
3341/// This structure is used to store RAS Error Counts Get Input Information
3342/// \nosubgrouping
3343////////////////////////////////////////////////////////////////////////////////////////////
3344
3345typedef struct ADLRASGetErrorCountsInput
3346{
3347 unsigned int Reserved[16];
3348} ADLRASGetErrorCountsInput;
3349
3350/////////////////////////////////////////////////////////////////////////////////////////////
3351///\brief Structure containing information related RAS Get Error Counts Information
3352///
3353/// This structure is used to store RAS Error Counts Get Output Information
3354/// \nosubgrouping
3355////////////////////////////////////////////////////////////////////////////////////////////
3356
3357typedef struct ADLRASGetErrorCountsOutput
3358{
3359 unsigned int CorrectedErrors; // includes both DRAM and SRAM ECC
3360 unsigned int UnCorrectedErrors; // includes both DRAM and SRAM ECC
3361 unsigned int Reserved[14];
3362} ADLRASGetErrorCountsOutput;
3363
3364/////////////////////////////////////////////////////////////////////////////////////////////
3365///\brief Structure containing information related RAS Get Error Counts Information
3366///
3367/// This structure is used to store RAS Error Counts Get Information
3368/// \nosubgrouping
3369////////////////////////////////////////////////////////////////////////////////////////////
3370
3371typedef struct ADLRASGetErrorCounts
3372{
3373 unsigned int InputSize;
3374 ADLRASGetErrorCountsInput Input;
3375 unsigned int OutputSize;
3376 ADLRASGetErrorCountsOutput Output;
3377} ADLRASGetErrorCounts;
3378
3379/////////////////////////////////////////////////////////////////////////////////////////////
3380///\brief Structure containing information related RAS Error Counts Reset Information
3381///
3382/// This structure is used to store RAS Error Counts Reset Input Information
3383/// \nosubgrouping
3384////////////////////////////////////////////////////////////////////////////////////////////
3385
3386typedef struct ADLRASResetErrorCountsInput
3387{
3388 unsigned int Reserved[8];
3389} ADLRASResetErrorCountsInput;
3390
3391/////////////////////////////////////////////////////////////////////////////////////////////
3392///\brief Structure containing information related RAS Error Counts Reset Information
3393///
3394/// This structure is used to store RAS Error Counts Reset Output Information
3395/// \nosubgrouping
3396////////////////////////////////////////////////////////////////////////////////////////////
3397
3398typedef struct ADLRASResetErrorCountsOutput
3399{
3400 unsigned int Reserved[8];
3401} ADLRASResetErrorCountsOutput;
3402
3403/////////////////////////////////////////////////////////////////////////////////////////////
3404///\brief Structure containing information related RAS Error Counts Reset Information
3405///
3406/// This structure is used to store RAS Error Counts Reset Information
3407/// \nosubgrouping
3408////////////////////////////////////////////////////////////////////////////////////////////
3409
3410typedef struct ADLRASResetErrorCounts
3411{
3412 unsigned int InputSize;
3413 ADLRASResetErrorCountsInput Input;
3414 unsigned int OutputSize;
3415 ADLRASResetErrorCountsOutput Output;
3416} ADLRASResetErrorCounts;
3417
3418/////////////////////////////////////////////////////////////////////////////////////////////
3419///\brief Structure containing information related RAS Error Injection information
3420///
3421/// This structure is used to store RAS Error Injection input information
3422/// \nosubgrouping
3423////////////////////////////////////////////////////////////////////////////////////////////
3424
3425typedef struct ADLRASErrorInjectonInput
3426{
3427 unsigned long long Address;
3428 ADL_RAS_INJECTION_METHOD Value;
3429 ADL_RAS_BLOCK_ID BlockId;
3430 ADL_RAS_ERROR_TYPE InjectErrorType;
3431 ADL_MEM_SUB_BLOCK_ID SubBlockIndex;
3432 unsigned int padding[9];
3433} ADLRASErrorInjectonInput;
3434
3435/////////////////////////////////////////////////////////////////////////////////////////////
3436///\brief Structure containing information related RAS Error Injection information
3437///
3438/// This structure is used to store RAS Error Injection output information
3439/// \nosubgrouping
3440////////////////////////////////////////////////////////////////////////////////////////////
3441
3442typedef struct ADLRASErrorInjectionOutput
3443{
3444 unsigned int ErrorInjectionStatus;
3445 unsigned int padding[15];
3446} ADLRASErrorInjectionOutput;
3447
3448/////////////////////////////////////////////////////////////////////////////////////////////
3449///\brief Structure containing information related RAS Error Injection information
3450///
3451/// This structure is used to store RAS Error Injection information
3452/// \nosubgrouping
3453////////////////////////////////////////////////////////////////////////////////////////////
3454
3455typedef struct ADLRASErrorInjection
3456{
3457 unsigned int InputSize;
3458 ADLRASErrorInjectonInput Input;
3459 unsigned int OutputSize;
3460 ADLRASErrorInjectionOutput Output;
3461} ADLRASErrorInjection;
3462
3463/////////////////////////////////////////////////////////////////////////////////////////////
3464///\brief Structure containing information about an application
3465///
3466/// This structure is used to store basic information of a recently ran or currently running application
3467/// \nosubgrouping
3468////////////////////////////////////////////////////////////////////////////////////////////
3469typedef struct ADLSGApplicationInfo
3470{
3471 /// Application file name
3472 wchar_t strFileName[ADL_MAX_PATH];
3473 /// Application file path
3474 wchar_t strFilePath[ADL_MAX_PATH];
3475 /// Application version
3476 wchar_t strVersion[ADL_MAX_PATH];
3477 /// Timestamp at which application has run
3478 long long int timeStamp;
3479 /// Holds whether the applicaition profile exists or not
3480 unsigned int iProfileExists;
3481 /// The GPU on which application runs
3482 unsigned int iGPUAffinity;
3483 /// The BDF of the GPU on which application runs
3484 ADLBdf GPUBdf;
3485} ADLSGApplicationInfo;
3486
3487/////////////////////////////////////////////////////////////////////////////////////////////
3488///\brief Structure containing information related Frames Per Second for AC and DC.
3489///
3490/// This structure is used to store information related AC and DC Frames Per Second settings
3491/// \nosubgrouping
3492////////////////////////////////////////////////////////////////////////////////////////////
3493enum { ADLPreFlipPostProcessingInfoInvalidLUTIndex = 0xFFFFFFFF };
3494
3495enum ADLPreFlipPostProcessingLUTAlgorithm
3496{
3497 ADLPreFlipPostProcessingLUTAlgorithm_Default = 0,
3498 ADLPreFlipPostProcessingLUTAlgorithm_Full,
3499 ADLPreFlipPostProcessingLUTAlgorithm_Approximation
3500};
3501
3502typedef struct ADLPreFlipPostProcessingInfo
3503{
3504 /// size
3505 int ulSize;
3506 /// Current active state
3507 int bEnabled;
3508 /// Current selected LUT index. 0xFFFFFFF returned if nothing selected.
3509 int ulSelectedLUTIndex;
3510 /// Current selected LUT Algorithm
3511 int ulSelectedLUTAlgorithm;
3512 /// Reserved
3513 int ulReserved[12];
3514} ADLPreFlipPostProcessingInfo;
3515
3516typedef struct ADL_ERROR_REASON
3517{
3518 int boost; //ON, when boost is Enabled
3519 int delag; //ON, when delag is Enabled
3520 int chill; //ON, when chill is Enabled
3521 int proVsr; //ON, when proVsr is Enabled
3522}ADL_ERROR_REASON;
3523
3524typedef struct ADL_ERROR_REASON2
3525{
3526 int boost; //ON, when boost is Enabled
3527 int delag; //ON, when delag is Enabled
3528 int chill; //ON, when chill is Enabled
3529 int proVsr; //ON, when proVsr is Enabled
3530 int upscale; //ON, when RSR is Enabled
3531}ADL_ERROR_REASON2;
3532
3533/////////////////////////////////////////////////////////////////////////////////////////////
3534///\brief Structure containing information about DELAG Settings change reason
3535///
3536/// Elements of DELAG settings changed reason.
3537/// \nosubgrouping
3538////////////////////////////////////////////////////////////////////////////////////////////
3539typedef struct ADL_DELAG_NOTFICATION_REASON
3540{
3541 int HotkeyChanged; //Set when Hotkey value is changed
3542 int GlobalEnableChanged; //Set when Global enable value is changed
3543 int GlobalLimitFPSChanged; //Set when Global enable value is changed
3544}ADL_DELAG_NOTFICATION_REASON;
3545
3546/////////////////////////////////////////////////////////////////////////////////////////////
3547///\brief Structure containing information about DELAG Settings
3548///
3549/// Elements of DELAG settings.
3550/// \nosubgrouping
3551////////////////////////////////////////////////////////////////////////////////////////////
3552typedef struct ADL_DELAG_SETTINGS
3553{
3554 int Hotkey; // Hotkey value
3555 int GlobalEnable; //Global enable value
3556 int GlobalLimitFPS; //Global Limit FPS
3557 int GlobalLimitFPS_MinLimit; //Gloabl Limit FPS slider min limit value
3558 int GlobalLimitFPS_MaxLimit; //Gloabl Limit FPS slider max limit value
3559 int GlobalLimitFPS_Step; //Gloabl Limit FPS step value
3560}ADL_DELAG_SETTINGS;
3561
3562/////////////////////////////////////////////////////////////////////////////////////////////
3563///\brief Structure containing information about BOOST Settings change reason
3564///
3565/// Elements of BOOST settings changed reason.
3566/// \nosubgrouping
3567////////////////////////////////////////////////////////////////////////////////////////////
3568typedef struct ADL_BOOST_NOTFICATION_REASON
3569{
3570 int HotkeyChanged; //Set when Hotkey value is changed
3571 int GlobalEnableChanged; //Set when Global enable value is changed
3572 int GlobalMinResChanged; //Set when Global min resolution value is changed
3573}ADL_BOOST_NOTFICATION_REASON;
3574
3575/////////////////////////////////////////////////////////////////////////////////////////////
3576///\brief Structure containing information about BOOST Settings
3577///
3578/// Elements of BOOST settings.
3579/// \nosubgrouping
3580////////////////////////////////////////////////////////////////////////////////////////////
3581typedef struct ADL_BOOST_SETTINGS
3582{
3583 int Hotkey; // Hotkey value
3584 int GlobalEnable; //Global enable value
3585 int GlobalMinRes; //Gloabl Min Resolution value
3586 int GlobalMinRes_MinLimit; //Gloabl Min Resolution slider min limit value
3587 int GlobalMinRes_MaxLimit; //Gloabl Min Resolution slider max limit value
3588 int GlobalMinRes_Step; //Gloabl Min Resolution step value
3589}ADL_BOOST_SETTINGS;
3590
3591/////////////////////////////////////////////////////////////////////////////////////////////
3592///\brief Structure containing information about BOOST Settings
3593///
3594/// Elements of BOOST settings.
3595/// \nosubgrouping
3596////////////////////////////////////////////////////////////////////////////////////////////
3597typedef struct ADL_BOOST_SETTINGSX2
3598{
3599 int Hotkey; // Hotkey value
3600 int GlobalEnable; //Global enable value
3601 int GlobalMinRes; //Gloabl Min Resolution value
3602 int GlobalMinRes_MinLimit; //Gloabl Min Resolution slider min limit value
3603 int GlobalMinRes_MaxLimit; //Gloabl Min Resolution slider max limit value
3604 int GlobalMinRes_Step; //Gloabl Min Resolution step value
3605 int VsrSupported; //Allows for interop with Upscaling/RSR
3606}ADL_BOOST_SETTINGSX2;
3607
3608
3609/////////////////////////////////////////////////////////////////////////////////////////////
3610///\brief Structure containing information about ProVSR Settings change reason
3611///
3612/// Elements of ProVSR settings changed reason.
3613/// \nosubgrouping
3614////////////////////////////////////////////////////////////////////////////////////////////
3615typedef struct ADL_PROVSR_NOTFICATION_REASON
3616{
3617 int HotkeyChanged; //Set when Hotkey value is changed
3618 int GlobalEnableChanged; //Set when Global enable value is changed
3619}ADL_PROVSR_NOTFICATION_REASON;
3620
3621/////////////////////////////////////////////////////////////////////////////////////////////
3622///\brief Structure containing information about Pro VSR Settings
3623///
3624/// Elements of ProVSR settings.
3625/// \nosubgrouping
3626////////////////////////////////////////////////////////////////////////////////////////////
3627typedef struct ADL_PROVSR_SETTINGS
3628{
3629 int Hotkey; // Hotkey value
3630 int GlobalEnable; //Global enable value
3631}ADL_PROVSR_SETTINGS;
3632
3633/////////////////////////////////////////////////////////////////////////////////////////////
3634///\brief Structure containing information about Image Boost(OGL) Settings change reason
3635///
3636/// Elements of Image Boost settings changed reason.
3637/// \nosubgrouping
3638////////////////////////////////////////////////////////////////////////////////////////////
3639typedef struct ADL_IMAGE_BOOST_NOTFICATION_REASON
3640{
3641 int HotkeyChanged; //Set when Hotkey value is changed
3642 int GlobalEnableChanged; //Set when Global enable value is changed
3643}ADL_IMAGE_BOOST_NOTFICATION_REASON;
3644
3645/////////////////////////////////////////////////////////////////////////////////////////////
3646///\brief Structure containing information about OGL IMAGE BOOST Settings
3647///
3648/// Elements of OGL IMAGE BOOST settings.
3649/// \nosubgrouping
3650////////////////////////////////////////////////////////////////////////////////////////////
3651typedef struct ADL_IMAGE_BOOST_SETTINGS
3652{
3653 int Hotkey; // Hotkey value
3654 int GlobalEnable; //Global enable value
3655}ADL_IMAGE_BOOST_SETTINGS;
3656
3657/////////////////////////////////////////////////////////////////////////////////////////////
3658
3659/////////////////////////////////////////////////////////////////////////////////////////////
3660///\brief Structure containing information about RIS Settings change reason
3661///
3662/// Elements of RIS settings changed reason.
3663/// \nosubgrouping
3664////////////////////////////////////////////////////////////////////////////////////////////
3665typedef struct ADL_RIS_NOTFICATION_REASON
3666{
3667 unsigned int GlobalEnableChanged; //Set when Global enable value is changed
3668 unsigned int GlobalSharpeningDegreeChanged; //Set when Global sharpening Degree value is changed
3669}ADL_RIS_NOTFICATION_REASON;
3670
3671/////////////////////////////////////////////////////////////////////////////////////////////
3672///\brief Structure containing information about RIS Settings
3673///
3674/// Elements of RIS settings.
3675/// \nosubgrouping
3676////////////////////////////////////////////////////////////////////////////////////////////
3677typedef struct ADL_RIS_SETTINGS
3678{
3679 int GlobalEnable; //Global enable value
3680 int GlobalSharpeningDegree; //Global sharpening value
3681 int GlobalSharpeningDegree_MinLimit; //Gloabl sharpening slider min limit value
3682 int GlobalSharpeningDegree_MaxLimit; //Gloabl sharpening slider max limit value
3683 int GlobalSharpeningDegree_Step; //Gloabl sharpening step value
3684}ADL_RIS_SETTINGS;
3685
3686/////////////////////////////////////////////////////////////////////////////////////////////
3687///\brief Structure containing information about CHILL Settings change reason
3688///
3689/// Elements of Chiil settings changed reason.
3690/// \nosubgrouping
3691////////////////////////////////////////////////////////////////////////////////////////////
3692typedef struct ADL_CHILL_NOTFICATION_REASON
3693{
3694 int HotkeyChanged; //Set when Hotkey value is changed
3695 int GlobalEnableChanged; //Set when Global enable value is changed
3696 int GlobalMinFPSChanged; //Set when Global min FPS value is changed
3697 int GlobalMaxFPSChanged; //Set when Global max FPS value is changed
3698}ADL_CHILL_NOTFICATION_REASON;
3699
3700/////////////////////////////////////////////////////////////////////////////////////////////
3701///\brief Structure containing information about CHILL Settings
3702///
3703/// Elements of Chill settings.
3704/// \nosubgrouping
3705////////////////////////////////////////////////////////////////////////////////////////////
3706typedef struct ADL_CHILL_SETTINGS
3707{
3708 int Hotkey; // Hotkey value
3709 int GlobalEnable; //Global enable value
3710 int GlobalMinFPS; //Global Min FPS value
3711 int GlobalMaxFPS; //Global Max FPS value
3712 int GlobalFPS_MinLimit; //Gloabl FPS slider min limit value
3713 int GlobalFPS_MaxLimit; //Gloabl FPS slider max limit value
3714 int GlobalFPS_Step; //Gloabl FPS Slider step value
3715}ADL_CHILL_SETTINGS;
3716
3717/////////////////////////////////////////////////////////////////////////////////////////////
3718///\brief Structure containing information about DRIVERUPSCALE Settings change reason
3719///
3720/// Elements of DRIVERUPSCALE settings changed reason.
3721/// \nosubgrouping
3722////////////////////////////////////////////////////////////////////////////////////////////
3723typedef struct ADL_DRIVERUPSCALE_NOTFICATION_REASON
3724{
3725 int ModeOverrideEnabledChanged; //Set when Global min resolution value is changed
3726 int GlobalEnabledChanged; //Set when Global enable value is changed
3727}ADL_DRIVERUPSCALE_NOTFICATION_REASON;
3728
3729/////////////////////////////////////////////////////////////////////////////////////////////
3730///\brief Structure containing information about DRIVERUPSCALE Settings
3731///
3732/// Elements of DRIVERUPSCALE settings.
3733/// \nosubgrouping
3734////////////////////////////////////////////////////////////////////////////////////////////
3735typedef struct ADL_DRIVERUPSCALE_SETTINGS
3736{
3737 int ModeOverrideEnabled;
3738 int GlobalEnabled;
3739}ADL_DRIVERUPSCALE_SETTINGS;
3740
3741/////////////////////////////////////////////////////////////////////////////////////////////
3742///\brief Structure Containing R G B values for Radeon USB LED Bar
3743///
3744/// Elements of RGB Values.
3745/// \nosubgrouping
3746////////////////////////////////////////////////////////////////////////////////////////////
3747typedef struct ADL_RADEON_LED_COLOR_CONFIG
3748{
3749 unsigned short R : 8; // Red Value
3750 unsigned short G : 8; // Green Value
3751 unsigned short B : 8; // Blue Value
3752}ADL_RADEON_LED_COLOR_CONFIG;
3753
3754/////////////////////////////////////////////////////////////////////////////////////////////
3755///\brief Structure Containing All Generic LED configuration for user requested LED pattern. The driver will apply the confgiuration as requested
3756///
3757/// Elements of Radeon USB LED configuration.
3758/// \nosubgrouping
3759////////////////////////////////////////////////////////////////////////////////////////////
3760typedef struct ADL_RADEON_LED_PATTERN_CONFIG_GENERIC
3761{
3762 short brightness : 8; // Brightness of LED
3763 short speed : 8; // Speed of LED pattern
3764 bool directionCounterClockWise; //Direction of LED Pattern
3765 ADL_RADEON_LED_COLOR_CONFIG colorConfig; // RGB value of LED pattern
3766 char morseCodeText[ADL_RADEON_LED_MAX_MORSE_CODE]; // Morse Code user input for Morse Code LED pattern
3767 char morseCodeTextOutPut[ADL_RADEON_LED_MAX_MORSE_CODE]; // Driver set output representation of Morse Code
3768 int morseCodeTextOutPutLen; // Length of Morse Code output
3769}ADL_RADEON_LED_PATTERN_CONFIG_GENERIC;
3770
3771/////////////////////////////////////////////////////////////////////////////////////////////
3772///\brief Structure Containing All custom grid pattern LED configuration for user requested LED grid pattern. The driver will apply the confgiuration as requested
3773///
3774/// Elements of Radeon USB LED custom grid configuration.
3775/// \nosubgrouping
3776////////////////////////////////////////////////////////////////////////////////////////////
3777typedef struct ADL_RADEON_LED_CUSTOM_LED_CONFIG
3778{
3779 short brightness : 8; // Brightness of LED
3780 ADL_RADEON_LED_COLOR_CONFIG colorConfig[ADL_RADEON_LED_MAX_LED_ROW_ON_GRID][ADL_RADEON_LED_MAX_LED_COLUMN_ON_GRID]; // Full grid array representation of Radeon LED to be populated by user
3781}ADL_RADEON_LED_CUSTOM_GRID_LED_CONFIG;
3782
3783/////////////////////////////////////////////////////////////////////////////////////////////
3784///\brief Structure Containing All Radeon USB LED requests and controls.
3785///
3786/// Elements of Radeon USB LED Controls.
3787/// \nosubgrouping
3788////////////////////////////////////////////////////////////////////////////////////////////
3789typedef struct ADL_RADEON_LED_PATTERN_CONFIG
3790{
3791 ADL_RADEON_USB_LED_BAR_CONTROLS control; //Requested LED pattern
3792
3793 union
3794 {
3795 ADL_RADEON_LED_PATTERN_CONFIG_GENERIC genericPararmeters; //Requested pattern configuration settings
3796 ADL_RADEON_LED_CUSTOM_GRID_LED_CONFIG customGridConfig; //Requested custom grid configuration settings
3797 };
3798}ADL_RADEON_LED_PATTERN_CONFIG;
3799
3800/////////////////////////////////////////////////////////////////////////////////////////////
3801///\brief Structure containing information about the graphics adapter with extended caps
3802///
3803/// This structure is used to store various information about the graphics adapter. This
3804/// information can be returned to the user. Alternatively, it can be used to access various driver calls to set
3805/// or fetch various settings upon the user's request.
3806/// This AdapterInfoX2 struct extends the AdapterInfo struct in adl_structures.h
3807/// \nosubgrouping
3808////////////////////////////////////////////////////////////////////////////////////////////
3809typedef struct AdapterInfoX2
3810{
3811 /// \WIN_STRUCT_MEM
3812
3813 /// Size of the structure.
3814 int iSize;
3815 /// The ADL index handle. One GPU may be associated with one or two index handles
3816 int iAdapterIndex;
3817 /// The unique device ID associated with this adapter.
3818 char strUDID[ADL_MAX_PATH];
3819 /// The BUS number associated with this adapter.
3820 int iBusNumber;
3821 /// The driver number associated with this adapter.
3822 int iDeviceNumber;
3823 /// The function number.
3824 int iFunctionNumber;
3825 /// The vendor ID associated with this adapter.
3826 int iVendorID;
3827 /// Adapter name.
3828 char strAdapterName[ADL_MAX_PATH];
3829 /// Display name. For example, "\\\\Display0"
3830 char strDisplayName[ADL_MAX_PATH];
3831 /// 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
3832 int iPresent;
3833 /// Exist or not; 1 is exist and 0 is not present.
3834 int iExist;
3835 /// Driver registry path.
3836 char strDriverPath[ADL_MAX_PATH];
3837 /// Driver registry path Ext for.
3838 char strDriverPathExt[ADL_MAX_PATH];
3839 /// PNP string from Windows.
3840 char strPNPString[ADL_MAX_PATH];
3841 /// It is generated from EnumDisplayDevices.
3842 int iOSDisplayIndex;
3843 /// The bit mask identifies the adapter info
3844 int iInfoMask;
3845 /// The bit identifies the adapter info \ref define_adapter_info
3846 int iInfoValue;
3847} AdapterInfoX2, *LPAdapterInfoX2;
3848
3849/////////////////////////////////////////////////////////////////////////////////////////////
3850///\brief Structure containing information about driver gamut space , whether it is related to source or to destination, overlay or graphics
3851/// \nosubgrouping
3852////////////////////////////////////////////////////////////////////////////////////////////
3853
3854typedef struct ADLGamutReference
3855{
3856 /// mask whether it is related to source or to destination, overlay or graphics
3857 int iGamutRef;
3858}ADLGamutReference;
3859
3860/////////////////////////////////////////////////////////////////////////////////////////////
3861///\brief Structure containing information about driver supported gamut spaces , capability method
3862///
3863/// This structure is used to get driver all supported gamut spaces
3864/// \nosubgrouping
3865////////////////////////////////////////////////////////////////////////////////////////////
3866
3867typedef struct ADLGamutInfo
3868{
3869 ///Any combination of following ADL_GAMUT_SPACE_CCIR_709 - ADL_GAMUT_SPACE_CUSTOM
3870 int SupportedGamutSpace;
3871
3872 ///Any combination of following ADL_WHITE_POINT_5000K - ADL_WHITE_POINT_CUSTOM
3873 int SupportedWhitePoint;
3874} ADLGamutInfo;
3875
3876/////////////////////////////////////////////////////////////////////////////////////////////
3877///\brief Structure containing information about driver point coordinates
3878///
3879/// This structure is used to store the driver point coodinates for gamut and white point
3880/// \nosubgrouping
3881////////////////////////////////////////////////////////////////////////////////////////////
3882
3883typedef struct ADLPoint
3884{
3885 /// x coordinate
3886 int iX;
3887 /// y coordinate
3888 int iY;
3889} ADLPoint;
3890/////////////////////////////////////////////////////////////////////////////////////////////
3891///\brief Structure containing information about driver supported gamut coordinates
3892///
3893/// This structure is used to store the driver supported supported gamut coordinates
3894/// \nosubgrouping
3895////////////////////////////////////////////////////////////////////////////////////////////
3896
3897typedef struct ADLGamutCoordinates
3898{
3899 /// red channel chromasity coordinate
3900 ADLPoint Red;
3901 /// green channel chromasity coordinate
3902 ADLPoint Green;
3903 /// blue channel chromasity coordinate
3904 ADLPoint Blue;
3905} ADLGamutCoordinates;
3906
3907/////////////////////////////////////////////////////////////////////////////////////////////
3908///\brief Structure containing information about driver current gamut space , parent struct for ADLGamutCoordinates and ADLWhitePoint
3909/// This structure is used to get/set driver supported gamut space
3910/// \nosubgrouping
3911////////////////////////////////////////////////////////////////////////////////////////////
3912
3913typedef struct ADLGamutData
3914{
3915 ///used as mask and could be 4 options
3916 ///BIT_0 If flag ADL_GAMUT_REFERENCE_SOURCE is asserted set operation is related to gamut source ,
3917 ///if not gamut destination
3918 ///BIT_1 If flag ADL_GAMUT_GAMUT_VIDEO_CONTENT is asserted
3919 ///BIT_2,BIT_3 used as mask and could be 4 options custom (2) + predefined (2)
3920 ///0. Gamut predefined, white point predefined -> 0 | 0
3921 ///1. Gamut predefined, white point custom -> 0 | ADL_CUSTOM_WHITE_POINT
3922 ///2. White point predefined, gamut custom -> 0 | ADL_CUSTOM_GAMUT
3923 ///3. White point custom, gamut custom -> ADL_CUSTOM_GAMUT | ADL_CUSTOM_WHITE_POINT
3924 int iFeature;
3925
3926 ///one of ADL_GAMUT_SPACE_CCIR_709 - ADL_GAMUT_SPACE_CIE_RGB
3927 int iPredefinedGamut;
3928
3929 ///one of ADL_WHITE_POINT_5000K - ADL_WHITE_POINT_9300K
3930 int iPredefinedWhitePoint;
3931
3932 ///valid when in mask avails ADL_CUSTOM_WHITE_POINT
3933 ADLPoint CustomWhitePoint;
3934
3935 ///valid when in mask avails ADL_CUSTOM_GAMUT
3936 ADLGamutCoordinates CustomGamut;
3937} ADLGamutData;
3938
3939/////////////////////////////////////////////////////////////////////////////////////////////
3940///\brief Structure containing detailed timing parameters.
3941///
3942/// This structure is used to store the detailed timing parameters.
3943/// \nosubgrouping
3944////////////////////////////////////////////////////////////////////////////////////////////
3945typedef struct ADLDetailedTimingX2
3946{
3947 /// Size of the structure.
3948 int iSize;
3949 /// Timing flags. \ref define_detailed_timing_flags
3950 int sTimingFlags;
3951 /// Total width (columns).
3952 int sHTotal;
3953 /// Displayed width.
3954 int sHDisplay;
3955 /// Horizontal sync signal offset.
3956 int sHSyncStart;
3957 /// Horizontal sync signal width.
3958 int sHSyncWidth;
3959 /// Total height (rows).
3960 int sVTotal;
3961 /// Displayed height.
3962 int sVDisplay;
3963 /// Vertical sync signal offset.
3964 int sVSyncStart;
3965 /// Vertical sync signal width.
3966 int sVSyncWidth;
3967 /// Pixel clock value.
3968 int sPixelClock;
3969 /// Overscan right.
3970 short sHOverscanRight;
3971 /// Overscan left.
3972 short sHOverscanLeft;
3973 /// Overscan bottom.
3974 short sVOverscanBottom;
3975 /// Overscan top.
3976 short sVOverscanTop;
3977 short sOverscan8B;
3978 short sOverscanGR;
3979} ADLDetailedTimingX2;
3980
3981/////////////////////////////////////////////////////////////////////////////////////////////
3982///\brief Structure containing display mode information.
3983///
3984/// This structure is used to store the display mode information.
3985/// \nosubgrouping
3986////////////////////////////////////////////////////////////////////////////////////////////
3987typedef struct ADLDisplayModeInfoX2
3988{
3989 /// Timing standard of the current mode. \ref define_modetiming_standard
3990 int iTimingStandard;
3991 /// Applicable timing standards for the current mode.
3992 int iPossibleStandard;
3993 /// Refresh rate factor.
3994 int iRefreshRate;
3995 /// Num of pixels in a row.
3996 int iPelsWidth;
3997 /// Num of pixels in a column.
3998 int iPelsHeight;
3999 /// Detailed timing parameters.
4000 ADLDetailedTimingX2 sDetailedTiming;
4001} ADLDisplayModeInfoX2;
4002
4003/////////////////////////////////////////////////////////////////////////////////////////////
4004///\brief Structure containing information about I2C.
4005///
4006/// This structure is used to store the I2C information for the current adapter.
4007/// This structure is used by \ref ADL_Display_WriteAndReadI2CLargePayload
4008/// \nosubgrouping
4009////////////////////////////////////////////////////////////////////////////////////////////
4010typedef struct ADLI2CLargePayload
4011{
4012 /// Size of the structure
4013 int iSize;
4014 /// Numerical value representing hardware I2C.
4015 int iLine;
4016 /// The 7-bit I2C slave device address.
4017 int iAddress;
4018 /// The offset of the data from the address.
4019 int iOffset;
4020 /// Read from or write to slave device. \ref ADL_DL_I2C_ACTIONREAD or \ref ADL_DL_I2C_ACTIONWRITE
4021 int iAction;
4022 /// I2C clock speed in KHz.
4023 int iSpeed;
4024 /// I2C option flags. \ref define_ADLI2CLargePayload
4025 int iFlags;
4026 /// A numerical value representing the number of bytes to be sent or received on the I2C bus.
4027 int iDataSize;
4028 /// Address of the characters which are to be sent or received on the I2C bus.
4029 char *pcData;
4030} ADLI2CLargePayload;
4031
4032/// Size in bytes of the Feature Name
4033#define ADL_FEATURE_NAME_LENGTH 16
4034
4035/////////////////////////////////////////////////////////////////////////////////////////////
4036///\brief Structure containing the Multimedia Feature Name
4037///
4038////////////////////////////////////////////////////////////////////////////////////////////
4039typedef struct ADLFeatureName
4040{
4041 /// The Feature Name
4042 char FeatureName[ADL_FEATURE_NAME_LENGTH];
4043} ADLFeatureName, *LPADLFeatureName;
4044
4045/////////////////////////////////////////////////////////////////////////////////////////////
4046///\brief Structure containing information about MM Feature Capabilities.
4047///
4048////////////////////////////////////////////////////////////////////////////////////////////
4049typedef struct ADLFeatureCaps
4050{
4051 /// The Feature Name
4052 ADLFeatureName Name;
4053 // char strFeatureName[ADL_FEATURE_NAME_LENGTH];
4054
4055 /// Group ID. All Features in the same group are shown sequentially in the same UI Page.
4056 int iGroupID;
4057
4058 /// Visual ID. Places one or more features in a Group Box. If zero, no Group Box is added.
4059 int iVisualID;
4060
4061 /// Page ID. All Features with the same Page ID value are shown together on the same UI page.
4062 int iPageID;
4063
4064 /// Feature Property Mask. Indicates which are the valid bits for iFeatureProperties.
4065 int iFeatureMask;
4066
4067 /// Feature Property Values. See definitions for ADL_FEATURE_PROPERTIES_XXX
4068 int iFeatureProperties;
4069
4070 /// Apperance of the User-Controlled Boolean.
4071 int iControlType;
4072
4073 /// Style of the User-Controlled Boolean.
4074 int iControlStyle;
4075
4076 /// Apperance of the Adjustment Controls.
4077 int iAdjustmentType;
4078
4079 /// Style of the Adjustment Controls.
4080 int iAdjustmentStyle;
4081
4082 /// Default user-controlled boolean value. Valid only if ADLFeatureCaps supports user-controlled boolean.
4083 int bDefault;
4084
4085 /// Minimum integer value. Valid only if ADLFeatureCaps indicates support for integers.
4086 int iMin;
4087
4088 /// Maximum integer value. Valid only if ADLFeatureCaps indicates support for integers.
4089 int iMax;
4090
4091 /// Step integer value. Valid only if ADLFeatureCaps indicates support for integers.
4092 int iStep;
4093
4094 /// Default integer value. Valid only if ADLFeatureCaps indicates support for integers.
4095 int iDefault;
4096
4097 /// Minimum float value. Valid only if ADLFeatureCaps indicates support for floats.
4098 float fMin;
4099
4100 /// Maximum float value. Valid only if ADLFeatureCaps indicates support for floats.
4101 float fMax;
4102
4103 /// Step float value. Valid only if ADLFeatureCaps indicates support for floats.
4104 float fStep;
4105
4106 /// Default float value. Valid only if ADLFeatureCaps indicates support for floats.
4107 float fDefault;
4108
4109 /// The Mask for available bits for enumerated values.(If ADLFeatureCaps supports ENUM values)
4110 int EnumMask;
4111} ADLFeatureCaps, *LPADLFeatureCaps;
4112
4113/////////////////////////////////////////////////////////////////////////////////////////////
4114///\brief Structure containing information about MM Feature Values.
4115///
4116////////////////////////////////////////////////////////////////////////////////////////////
4117typedef struct ADLFeatureValues
4118{
4119 /// The Feature Name
4120 ADLFeatureName Name;
4121 // char strFeatureName[ADL_FEATURE_NAME_LENGTH];
4122
4123 /// User controlled Boolean current value. Valid only if ADLFeatureCaps supports Boolean.
4124 int bCurrent;
4125
4126 /// Current integer value. Valid only if ADLFeatureCaps indicates support for integers.
4127 int iCurrent;
4128
4129 /// Current float value. Valid only if ADLFeatureCaps indicates support for floats.
4130 float fCurrent;
4131
4132 /// The States for the available bits for enumerated values.
4133 int EnumStates;
4134} ADLFeatureValues, *LPADLFeatureValues;
4135
4136/////////////////////////////////////////////////////////////////////////////////////////////
4137///\brief Structure containing HDCP Settings info
4138///
4139/// This structure is used to store the HDCP settings of a
4140/// display
4141/// \nosubgrouping
4142////////////////////////////////////////////////////////////////////////////////////////////
4143
4144typedef struct ADLHDCPSettings
4145{
4146 int iHDCPProtectionVersion; // Version, starting from 1
4147 int iHDCPCaps; //Caps used to ensure at least one protection scheme is supported, 1 is HDCP1X and 2 is HDCP22
4148 int iAllowAll; //Allow all is true, disable all is false
4149 int iHDCPVale;
4150 int iHDCPMask;
4151} ADLHDCPSettings;
4152
4153/////////////////////////////////////////////////////////////////////////////////////////////
4154///\brief Structure containing Mantle App info
4155///
4156/// This structure is used to store the Mantle Driver information
4157/// \nosubgrouping
4158/// \deprecated This structure has been deprecated.
4159////////////////////////////////////////////////////////////////////////////////////////////
4160
4161typedef struct ADLMantleAppInfo
4162{
4163 /// mantle api version
4164 int apiVersion;
4165 /// mantle driver version
4166 long driverVersion;
4167 /// mantle vendroe id
4168 long vendorId;
4169 /// mantle device id
4170 long deviceId;
4171 /// mantle gpu type;
4172 int gpuType;
4173 /// gpu name
4174 char gpuName[256];
4175 /// mem size
4176 int maxMemRefsPerSubmission;
4177 /// virtual mem size
4178 long long virtualMemPageSize;
4179 /// mem update
4180 long long maxInlineMemoryUpdateSize;
4181 /// bound descriptot
4182 long maxBoundDescriptorSets;
4183 /// thread group size
4184 long maxThreadGroupSize;
4185 /// time stamp frequency
4186 long long timestampFrequency;
4187 /// color target
4188 long multiColorTargetClears;
4189}ADLMantleAppInfo, *LPADLMantleAppInfo;
4190
4191////////////////////////////////////////////////////////////////////////////////////////////
4192///\brief Structure containing information about SDIData
4193///This structure is used to store information about the state of the SDI whether it is on
4194///or off and the current size of the segment or aperture size.
4195////////////////////////////////////////////////////////////////////////////////////////////
4196typedef struct ADLSDIData
4197{
4198 /// The SDI state, ADL_SDI_ON or ADL_SDI_OFF, for the current SDI mode
4199 int iSDIState;
4200 /// Size of the memory segment for SDI (in MB).
4201 int iSizeofSDISegment;
4202} ADLSDIData, *LPADLSDIData;
4203
4204
4205/////////////////////////////////////////////////////////////////////////////////////////////
4206///\brief Structure containing information about FRTCPRO Settings
4207///
4208/// Elements of FRTCPRO settings.
4209/// \nosubgrouping
4210////////////////////////////////////////////////////////////////////////////////////////////
4211typedef struct ADL_FRTCPRO_Settings
4212{
4213 int DefaultState; //The default status for FRTC pro
4214 int CurrentState; //The current enable/disable status for FRTC pro
4215 unsigned int DefaultValue; //The default FPS value for FRTC pro.
4216 unsigned int CurrentValue; //The current FPS value for FRTC pro.
4217 unsigned int maxSupportedFps; //The max value for FRTC pro.
4218 unsigned int minSupportedFps; //The min value for FRTC pro.
4219}ADL_FRTCPRO_Settings, *LPADLFRTCProSettings;
4220
4221/////////////////////////////////////////////////////////////////////////////////////////////
4222///\brief Structure containing information about FRTCPRO Settings changed reason
4223///
4224/// Reason of FRTCPRO changed.
4225/// \nosubgrouping
4226////////////////////////////////////////////////////////////////////////////////////////////
4227typedef struct ADL_FRTCPRO_CHANGED_REASON
4228{
4229 int StateChanged; // FRTCPro state changed
4230 int ValueChanged; // FRTCPro value changed
4231}ADL_FRTCPRO_CHANGED_REASON;
4232
4233/////////////////////////////////////////////////////////////////////////////////////////////
4234/// \brief Structure containing the display mode definition used per controller.
4235///
4236/// This structure is used to store the display mode definition used per controller.
4237/// \nosubgrouping
4238////////////////////////////////////////////////////////////////////////////////////////////
4239typedef struct ADL_DL_DISPLAY_MODE
4240{
4241 int iPelsHeight; // Vertical resolution (in pixels).
4242 int iPelsWidth; // Horizontal resolution (in pixels).
4243 int iBitsPerPel; // Color depth.
4244 int iDisplayFrequency; // Refresh rate.
4245} ADL_DL_DISPLAY_MODE;
4246
4247/////////////////////////////////////////////////////////////////////////////////////////////
4248///\brief Structure containing information related DCE support
4249///
4250/// This structure is used to store a bit vector of possible DCE support
4251///
4252/// \nosubgrouping
4253////////////////////////////////////////////////////////////////////////////////////////////
4254typedef union _ADLDCESupport
4255{
4256 struct
4257 {
4258 unsigned int PrePhasis : 1;
4259 unsigned int voltageSwing : 1;
4260 unsigned int reserved : 30;
4261 }bits;
4262 unsigned int u32All;
4263}ADLDCESupport;
4264
4265/////////////////////////////////////////////////////////////////////////////////////////////
4266/// \brief Structure for Smart shift 2.0 settings
4267///
4268/// This structure is used to return the smart shift settings
4269/// \nosubgrouping
4270////////////////////////////////////////////////////////////////////////////////////////////
4271typedef struct ADLSmartShiftSettings
4272{
4273 int iMinRange;
4274 int iMaxRange;
4275 int iDefaultMode; //Refer to CWDDEPM_ODN_CONTROL_TYPE
4276 int iDefaultValue;
4277 int iCurrentMode;
4278 int iCurrentValue;
4279 int iFlags; //refer to define_smartshift_bits
4280}ADLSmartShiftSettings, *LPADLSmartShiftSettings;
4281
4282#endif /* ADL_STRUCTURES_H_ */