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