// // Copyright (c) 2016 - 2022 Advanced Micro Devices, Inc. All rights reserved. // // MIT LICENSE: // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. /// \file adl_structures.h ///\brief This file contains the structure declarations that are used by the public ADL interfaces for \ALL platforms.\n Included in ADL SDK /// /// All data structures used in AMD Display Library (ADL) public interfaces should be defined in this header file. /// #ifndef ADL_STRUCTURES_H_ #define ADL_STRUCTURES_H_ #include "adl_defines.h" #include ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the graphics adapter. /// /// This structure is used to store various information about the graphics adapter. This /// information can be returned to the user. Alternatively, it can be used to access various driver calls to set /// or fetch various settings upon the user's request. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct AdapterInfo { /// \ALL_STRUCT_MEM /// Size of the structure. int iSize; /// The ADL index handle. One GPU may be associated with one or two index handles int iAdapterIndex; /// The unique device ID associated with this adapter. char strUDID[ADL_MAX_PATH]; /// The BUS number associated with this adapter. int iBusNumber; /// The driver number associated with this adapter. int iDeviceNumber; /// The function number. int iFunctionNumber; /// The vendor ID associated with this adapter. int iVendorID; /// Adapter name. char strAdapterName[ADL_MAX_PATH]; /// Display name. For example, "\\\\Display0" for Windows or ":0:0" for Linux. char strDisplayName[ADL_MAX_PATH]; /// 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 int iPresent; #if defined (_WIN32) || defined (_WIN64) /// \WIN_STRUCT_MEM /// Exist or not; 1 is exist and 0 is not present. int iExist; /// Driver registry path. char strDriverPath[ADL_MAX_PATH]; /// Driver registry path Ext for. char strDriverPathExt[ADL_MAX_PATH]; /// PNP string from Windows. char strPNPString[ADL_MAX_PATH]; /// It is generated from EnumDisplayDevices. int iOSDisplayIndex; #endif /* (_WIN32) || (_WIN64) */ #if defined (LINUX) /// \LNX_STRUCT_MEM /// Internal X screen number from GPUMapInfo (DEPRICATED use XScreenInfo) int iXScreenNum; /// Internal driver index from GPUMapInfo int iDrvIndex; /// \deprecated Internal x config file screen identifier name. Use XScreenInfo instead. char strXScreenConfigName[ADL_MAX_PATH]; #endif /* (LINUX) */ } AdapterInfo, *LPAdapterInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the Linux X screen information. /// /// This structure is used to store the current screen number and xorg.conf ID name assoicated with an adapter index. /// This structure is updated during ADL_Main_Control_Refresh or ADL_ScreenInfo_Update. /// Note: This structure should be used in place of iXScreenNum and strXScreenConfigName in AdapterInfo as they will be /// deprecated. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// #if defined (LINUX) typedef struct XScreenInfo { /// Internal X screen number from GPUMapInfo. int iXScreenNum; /// Internal x config file screen identifier name. char strXScreenConfigName[ADL_MAX_PATH]; } XScreenInfo, *LPXScreenInfo; #endif /* (LINUX) */ ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an controller mode /// /// This structure is used to store information of an controller mode /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterCaps { /// AdapterID for this adapter int iAdapterID; /// Number of controllers for this adapter int iNumControllers; /// Number of displays for this adapter int iNumDisplays; /// Number of overlays for this adapter int iNumOverlays; /// Number of GLSyncConnectors int iNumOfGLSyncConnectors; /// The bit mask identifies the adapter caps int iCapsMask; /// The bit identifies the adapter caps \ref define_adapter_caps int iCapsValue; }ADLAdapterCaps; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing additional information about the ASIC memory /// /// This structure is used to store additional information about the ASIC memory. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryInfo2 { /// Memory size in bytes. long long iMemorySize; /// Memory type in string. char strMemoryType[ADL_MAX_PATH]; /// Highest default performance level Memory bandwidth in Mbytes/s long long iMemoryBandwidth; /// HyperMemory size in bytes. long long iHyperMemorySize; /// Invisible Memory size in bytes. long long iInvisibleMemorySize; /// Visible Memory size in bytes. long long iVisibleMemorySize; } ADLMemoryInfo2, *LPADLMemoryInfo2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing additional information about the ASIC memory /// /// This structure is used to store additional information about the ASIC memory. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryInfo3 { /// Memory size in bytes. long long iMemorySize; /// Memory type in string. char strMemoryType[ADL_MAX_PATH]; /// Highest default performance level Memory bandwidth in Mbytes/s long long iMemoryBandwidth; /// HyperMemory size in bytes. long long iHyperMemorySize; /// Invisible Memory size in bytes. long long iInvisibleMemorySize; /// Visible Memory size in bytes. long long iVisibleMemorySize; /// Vram vendor ID long long iVramVendorRevId; } ADLMemoryInfo3, *LPADLMemoryInfo3; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing additional information about the ASIC memory /// /// This structure is used to store additional information about the ASIC memory. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryInfoX4 { /// Memory size in bytes. long long iMemorySize; /// Memory type in string. char strMemoryType[ADL_MAX_PATH]; /// Highest default performance level Memory bandwidth in Mbytes/s long long iMemoryBandwidth; /// HyperMemory size in bytes. long long iHyperMemorySize; /// Invisible Memory size in bytes. long long iInvisibleMemorySize; /// Visible Memory size in bytes. long long iVisibleMemorySize; /// Vram vendor ID long long iVramVendorRevId; /// Memory Bandiwidth that is calculated and finalized on the driver side, grab and go. long long iMemoryBandwidthX2; /// Memory Bit Rate that is calculated and finalized on the driver side, grab and go. long long iMemoryBitRateX2; } ADLMemoryInfoX4, *LPADLMemoryInfoX4; /////////////////////////////////////////////////////////////////////////// // ADLvRamVendor Enumeration /////////////////////////////////////////////////////////////////////////// enum ADLvRamVendors { ADLvRamVendor_Unsupported = 0x0, ADLvRamVendor_SAMSUNG, ADLvRamVendor_INFINEON, ADLvRamVendor_ELPIDA, ADLvRamVendor_ETRON, ADLvRamVendor_NANYA, ADLvRamVendor_HYNIX, ADLvRamVendor_MOSEL, ADLvRamVendor_WINBOND, ADLvRamVendor_ESMT, ADLvRamVendor_MICRON = 0xF, ADLvRamVendor_Undefined }; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about components of ASIC GCN architecture /// /// Elements of GCN info are compute units, number of Tex (Texture filtering units) , number of ROPs (render back-ends). /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGcnInfo { int CuCount; //Number of compute units on the ASIC. int TexCount; //Number of texture mapping units. int RopCount; //Number of Render backend Units. int ASICFamilyId; //Such SI, VI. See /inc/asic_reg/atiid.h for family ids int ASICRevisionId; //Such as Ellesmere, Fiji. For example - VI family revision ids are stored in /inc/asic_reg/vi_id.h }ADLGcnInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related virtual segment config information. /// /// This structure is used to store information related virtual segment config /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLVirtualSegmentSettingsOutput { int virtualSegmentSupported; // 1 - subsequent values are valid int virtualSegmentDefault; //virtual segment default, 1: enable, 0: disable int virtualSegmentCurrent; //virtual segment current, 1: enable, 0: disable int iMinSizeInMB; //minimum value int iMaxSizeInMB; //maximum value int icurrentSizeInMB; //last configured otherwise same as factory default int idefaultSizeInMB; //factory default int iMask; //fileds for extension in the future int iValue; //fileds for extension in the future } ADLVirtualSegmentSettingsOutput; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the Chipset. /// /// This structure is used to store various information about the Chipset. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLChipSetInfo { int iBusType; ///< Bus type. int iBusSpeedType; ///Maximum Bus Speed of the current platform int iMaxPCIELaneWidth; ///< Number of PCIE lanes. int iCurrentPCIELaneWidth; ///< Current PCIE Lane Width int iSupportedAGPSpeeds; ///< Bit mask or AGP transfer speed. int iCurrentAGPSpeed; ///< Current AGP speed } ADLChipSetInfo, *LPADLChipSetInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the ASIC memory. /// /// This structure is used to store various information about the ASIC memory. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryInfo { /// Memory size in bytes. long long iMemorySize; /// Memory type in string. char strMemoryType[ADL_MAX_PATH]; /// Memory bandwidth in Mbytes/s. long long iMemoryBandwidth; } ADLMemoryInfo, *LPADLMemoryInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about memory required by type /// /// This structure is returned by ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration /// will return the Memory used. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryRequired { long long iMemoryReq; /// Memory in bytes required int iType; /// Type of Memory \ref define_adl_validmemoryrequiredfields int iDisplayFeatureValue; /// Display features \ref define_adl_visiblememoryfeatures that are using this type of memory } ADLMemoryRequired, *LPADLMemoryRequired; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the features associated with a display /// /// This structure is a parameter to ADL_Adapter_ConfigMemory_Get, which given a desktop and display configuration /// will return the Memory used. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMemoryDisplayFeatures { int iDisplayIndex; /// ADL Display index int iDisplayFeatureValue; /// features that the display is using \ref define_adl_visiblememoryfeatures } ADLMemoryDisplayFeatures, *LPADLMemoryDisplayFeatures; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing DDC information. /// /// This structure is used to store various DDC information that can be returned to the user. /// Note that all fields of type int are actually defined as unsigned int types within the driver. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDDCInfo { /// Size of the structure int ulSize; /// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC information fields will be used. int ulSupportsDDC; /// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available. int ulManufacturerID; /// Returns the product ID of the display device. Should be zeroed if this information is not available. int ulProductID; /// Returns the name of the display device. Should be zeroed if this information is not available. char cDisplayName[ADL_MAX_DISPLAY_NAME]; /// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available. int ulMaxHResolution; /// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available. int ulMaxVResolution; /// Returns the maximum supported refresh rate. Should be zeroed if this information is not available. int ulMaxRefresh; /// Returns the display device preferred timing mode's horizontal resolution. int ulPTMCx; /// Returns the display device preferred timing mode's vertical resolution. int ulPTMCy; /// Returns the display device preferred timing mode's refresh rate. int ulPTMRefreshRate; /// Return EDID flags. int ulDDCInfoFlag; } ADLDDCInfo, *LPADLDDCInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing DDC information. /// /// This structure is used to store various DDC information that can be returned to the user. /// Note that all fields of type int are actually defined as unsigned int types within the driver. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDDCInfo2 { /// Size of the structure int ulSize; /// Indicates whether the attached display supports DDC. If this field is zero on return, no other DDC /// information fields will be used. int ulSupportsDDC; /// Returns the manufacturer ID of the display device. Should be zeroed if this information is not available. int ulManufacturerID; /// Returns the product ID of the display device. Should be zeroed if this information is not available. int ulProductID; /// Returns the name of the display device. Should be zeroed if this information is not available. char cDisplayName[ADL_MAX_DISPLAY_NAME]; /// Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available. int ulMaxHResolution; /// Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available. int ulMaxVResolution; /// Returns the maximum supported refresh rate. Should be zeroed if this information is not available. int ulMaxRefresh; /// Returns the display device preferred timing mode's horizontal resolution. int ulPTMCx; /// Returns the display device preferred timing mode's vertical resolution. int ulPTMCy; /// Returns the display device preferred timing mode's refresh rate. int ulPTMRefreshRate; /// Return EDID flags. int ulDDCInfoFlag; /// Returns 1 if the display supported packed pixel, 0 otherwise int bPackedPixelSupported; /// Returns the Pixel formats the display supports \ref define_ddcinfo_pixelformats int iPanelPixelFormat; /// Return EDID serial ID. int ulSerialID; /// Return minimum monitor luminance data int ulMinLuminanceData; /// Return average monitor luminance data int ulAvgLuminanceData; /// Return maximum monitor luminance data int ulMaxLuminanceData; /// Bit vector of supported transfer functions \ref define_source_content_TF int iSupportedTransferFunction; /// Bit vector of supported color spaces \ref define_source_content_CS int iSupportedColorSpace; /// Display Red Chromaticity X coordinate multiplied by 10000 int iNativeDisplayChromaticityRedX; /// Display Red Chromaticity Y coordinate multiplied by 10000 int iNativeDisplayChromaticityRedY; /// Display Green Chromaticity X coordinate multiplied by 10000 int iNativeDisplayChromaticityGreenX; /// Display Green Chromaticity Y coordinate multiplied by 10000 int iNativeDisplayChromaticityGreenY; /// Display Blue Chromaticity X coordinate multiplied by 10000 int iNativeDisplayChromaticityBlueX; /// Display Blue Chromaticity Y coordinate multiplied by 10000 int iNativeDisplayChromaticityBlueY; /// Display White Point X coordinate multiplied by 10000 int iNativeDisplayChromaticityWhitePointX; /// Display White Point Y coordinate multiplied by 10000 int iNativeDisplayChromaticityWhitePointY; /// Display diffuse screen reflectance 0-1 (100%) in units of 0.01 int iDiffuseScreenReflectance; /// Display specular screen reflectance 0-1 (100%) in units of 0.01 int iSpecularScreenReflectance; /// Bit vector of supported color spaces \ref define_HDR_support int iSupportedHDR; /// Bit vector for freesync flags int iFreesyncFlags; /// Return minimum monitor luminance without dimming data int ulMinLuminanceNoDimmingData; int ulMaxBacklightMaxLuminanceData; int ulMinBacklightMaxLuminanceData; int ulMaxBacklightMinLuminanceData; int ulMinBacklightMinLuminanceData; // Reserved for future use int iReserved[4]; } ADLDDCInfo2, *LPADLDDCInfo2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information controller Gamma settings. /// /// This structure is used to store the red, green and blue color channel information for the. /// controller gamma setting. This information is returned by ADL, and it can also be used to /// set the controller gamma setting. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGamma { /// Red color channel gamma value. float fRed; /// Green color channel gamma value. float fGreen; /// Blue color channel gamma value. float fBlue; } ADLGamma, *LPADLGamma; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about component video custom modes. /// /// This structure is used to store the component video custom mode. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLCustomMode { /// Custom mode flags. They are returned by the ADL driver. int iFlags; /// Custom mode width. int iModeWidth; /// Custom mode height. int iModeHeight; /// Custom mode base width. int iBaseModeWidth; /// Custom mode base height. int iBaseModeHeight; /// Custom mode refresh rate. int iRefreshRate; } ADLCustomMode, *LPADLCustomMode; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing Clock information for OD5 calls. /// /// This structure is used to retrieve clock information for OD5 calls. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGetClocksOUT { long ulHighCoreClock; long ulHighMemoryClock; long ulHighVddc; long ulCoreMin; long ulCoreMax; long ulMemoryMin; long ulMemoryMax; long ulActivityPercent; long ulCurrentCoreClock; long ulCurrentMemoryClock; long ulReserved; } ADLGetClocksOUT; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing HDTV information for display calls. /// /// This structure is used to retrieve HDTV information information for display calls. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayConfig { /// Size of the structure long ulSize; /// HDTV connector type. long ulConnectorType; /// HDTV capabilities. long ulDeviceData; /// Overridden HDTV capabilities. long ulOverridedDeviceData; /// Reserved field long ulReserved; } ADLDisplayConfig; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display device. /// /// This structure is used to store display device information /// such as display index, type, name, connection status, mapped adapter and controller indexes, /// whether or not multiple VPUs are supported, local display connections or not (through Lasso), etc. /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to set /// or fetch various display device related settings upon the user's request. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayID { /// The logical display index belonging to this adapter. int iDisplayLogicalIndex; ///\brief The physical display index. /// For example, display index 2 from adapter 2 can be used by current adapter 1.\n /// So current adapter may enumerate this adapter as logical display 7 but the physical display /// index is still 2. int iDisplayPhysicalIndex; /// The persistent logical adapter index for the display. int iDisplayLogicalAdapterIndex; ///\brief The persistent physical adapter index for the display. /// It can be the current adapter or a non-local adapter. \n /// If this adapter index is different than the current adapter, /// the Display Non Local flag is set inside DisplayInfoValue. int iDisplayPhysicalAdapterIndex; } ADLDisplayID, *LPADLDisplayID; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display device. /// /// This structure is used to store various information about the display device. This /// information can be returned to the user, or used to access various driver calls to set /// or fetch various display-device-related settings upon the user's request /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayInfo { /// The DisplayID structure ADLDisplayID displayID; ///\deprecated The controller index to which the display is mapped.\n Will not be used in the future\n int iDisplayControllerIndex; /// The display's EDID name. char strDisplayName[ADL_MAX_PATH]; /// The display's manufacturer name. char strDisplayManufacturerName[ADL_MAX_PATH]; /// The Display type. For example: CRT, TV, CV, DFP. int iDisplayType; /// The display output type. For example: HDMI, SVIDEO, COMPONMNET VIDEO. int iDisplayOutputType; /// The connector type for the device. int iDisplayConnector; ///\brief The bit mask identifies the number of bits ADLDisplayInfo is currently using. \n /// It will be the sum all the bit definitions in ADL_DISPLAY_DISPLAYINFO_xxx. int iDisplayInfoMask; /// The bit mask identifies the display status. \ref define_displayinfomask int iDisplayInfoValue; } ADLDisplayInfo, *LPADLDisplayInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display port MST device. /// /// This structure is used to store various MST information about the display port device. This /// information can be returned to the user, or used to access various driver calls to /// fetch various display-device-related settings upon the user's request /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayDPMSTInfo { /// The ADLDisplayID structure ADLDisplayID displayID; /// total bandwidth available on the DP connector int iTotalAvailableBandwidthInMpbs; /// bandwidth allocated to this display int iAllocatedBandwidthInMbps; // info from DAL DpMstSinkInfo /// string identifier for the display char strGlobalUniqueIdentifier[ADL_MAX_PATH]; /// The link count of relative address, rad[0] upto rad[linkCount] are valid int radLinkCount; /// The physical connector ID, used to identify the physical DP port int iPhysicalConnectorID; /// Relative address, address scheme starts from source side char rad[ADL_MAX_RAD_LINK_COUNT]; } ADLDisplayDPMSTInfo, *LPADLDisplayDPMSTInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the display mode definition used per controller. /// /// This structure is used to store the display mode definition used per controller. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayMode { /// Vertical resolution (in pixels). int iPelsHeight; /// Horizontal resolution (in pixels). int iPelsWidth; /// Color depth. int iBitsPerPel; /// Refresh rate. int iDisplayFrequency; } ADLDisplayMode; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing detailed timing parameters. /// /// This structure is used to store the detailed timing parameters. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDetailedTiming { /// Size of the structure. int iSize; /// Timing flags. \ref define_detailed_timing_flags short sTimingFlags; /// Total width (columns). short sHTotal; /// Displayed width. short sHDisplay; /// Horizontal sync signal offset. short sHSyncStart; /// Horizontal sync signal width. short sHSyncWidth; /// Total height (rows). short sVTotal; /// Displayed height. short sVDisplay; /// Vertical sync signal offset. short sVSyncStart; /// Vertical sync signal width. short sVSyncWidth; /// Pixel clock value. short sPixelClock; /// Overscan right. short sHOverscanRight; /// Overscan left. short sHOverscanLeft; /// Overscan bottom. short sVOverscanBottom; /// Overscan top. short sVOverscanTop; short sOverscan8B; short sOverscanGR; } ADLDetailedTiming; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing display mode information. /// /// This structure is used to store the display mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayModeInfo { /// Timing standard of the current mode. \ref define_modetiming_standard int iTimingStandard; /// Applicable timing standards for the current mode. int iPossibleStandard; /// Refresh rate factor. int iRefreshRate; /// Num of pixels in a row. int iPelsWidth; /// Num of pixels in a column. int iPelsHeight; /// Detailed timing parameters. ADLDetailedTiming sDetailedTiming; } ADLDisplayModeInfo; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about display property. /// /// This structure is used to store the display property for the current adapter. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayProperty { /// Must be set to sizeof the structure int iSize; /// Must be set to \ref ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE or \ref ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING int iPropertyType; /// 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 int iExpansionMode; /// Display Property supported? 1: Supported, 0: Not supported int iSupport; /// Display Property current value int iCurrent; /// Display Property Default value int iDefault; } ADLDisplayProperty; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Clock. /// /// This structure is used to store the clock information for the current adapter /// such as core clock and memory clock info. ///\nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLClockInfo { /// Core clock in 10 KHz. int iCoreClock; /// Memory clock in 10 KHz. int iMemoryClock; } ADLClockInfo, *LPADLClockInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about I2C. /// /// This structure is used to store the I2C information for the current adapter. /// This structure is used by the ADL_Display_WriteAndReadI2C() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLI2C { /// Size of the structure int iSize; /// Numerical value representing hardware I2C. int iLine; /// The 7-bit I2C slave device address, shifted one bit to the left. int iAddress; /// The offset of the data from the address. int iOffset; /// 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 int iAction; /// I2C clock speed in KHz. int iSpeed; /// A numerical value representing the number of bytes to be sent or received on the I2C bus. int iDataSize; /// Address of the characters which are to be sent or received on the I2C bus. char *pcData; } ADLI2C; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about EDID data. /// /// This structure is used to store the information about EDID data for the adapter. /// This structure is used by the ADL_Display_EdidData_Get() and ADL_Display_EdidData_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayEDIDData { /// Size of the structure int iSize; /// Set to 0 int iFlag; /// Size of cEDIDData. Set by ADL_Display_EdidData_Get() upon return int iEDIDSize; /// 0, 1 or 2. If set to 3 or above an error ADL_ERR_INVALID_PARAM is generated int iBlockIndex; /// EDID data char cEDIDData[ADL_MAX_EDIDDATA_SIZE]; /// Reserved int iReserved[4]; }ADLDisplayEDIDData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about input of controller overlay adjustment. /// /// This structure is used to store the information about input of controller overlay adjustment for the adapter. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get, ADL_Display_ControllerOverlayAdjustmentData_Get, and /// ADL_Display_ControllerOverlayAdjustmentData_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLControllerOverlayInput { /// Should be set to the sizeof the structure int iSize; ///\ref ADL_DL_CONTROLLER_OVERLAY_ALPHA or \ref ADL_DL_CONTROLLER_OVERLAY_ALPHAPERPIX int iOverlayAdjust; /// Data. int iValue; /// Should be 0. int iReserved; } ADLControllerOverlayInput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about overlay adjustment. /// /// This structure is used to store the information about overlay adjustment for the adapter. /// This structure is used by the ADLControllerOverlayInfo() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdjustmentinfo { /// Default value int iDefault; /// Minimum value int iMin; /// Maximum Value int iMax; /// Step value int iStep; } ADLAdjustmentinfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about controller overlay information. /// /// This structure is used to store information about controller overlay info for the adapter. /// This structure is used by the ADL_Display_ControllerOverlayAdjustmentCaps_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLControllerOverlayInfo { /// Should be set to the sizeof the structure int iSize; /// Data. ADLAdjustmentinfo sOverlayInfo; /// Should be 0. int iReserved[3]; } ADLControllerOverlayInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync module information. /// /// This structure is used to retrieve GL-Sync module information for /// Workstation Framelock/Genlock. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGLSyncModuleID { /// Unique GL-Sync module ID. int iModuleID; /// GL-Sync GPU port index (to be passed into ADLGLSyncGenlockConfig.lSignalSource and ADLGlSyncPortControl.lSignalSource). int iGlSyncGPUPort; /// GL-Sync module firmware version of Boot Sector. int iFWBootSectorVersion; /// GL-Sync module firmware version of User Sector. int iFWUserSectorVersion; } ADLGLSyncModuleID , *LPADLGLSyncModuleID; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync ports capabilities. /// /// This structure is used to retrieve hardware capabilities for the ports of the GL-Sync module /// for Workstation Framelock/Genlock (such as port type and number of associated LEDs). /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGLSyncPortCaps { /// Port type. Bitfield of ADL_GLSYNC_PORTTYPE_* \ref define_glsync int iPortType; /// Number of LEDs associated for this port. int iNumOfLEDs; }ADLGLSyncPortCaps, *LPADLGLSyncPortCaps; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync Genlock settings. /// /// This structure is used to get and set genlock settings for the GPU ports of the GL-Sync module /// for Workstation Framelock/Genlock.\n /// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGLSyncGenlockConfig { /// Specifies what fields in this structure are valid \ref define_glsync int iValidMask; /// Delay (ms) generating a sync signal. int iSyncDelay; /// Vector of framelock control bits. Bitfield of ADL_GLSYNC_FRAMELOCKCNTL_* \ref define_glsync int iFramelockCntlVector; /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync int iSignalSource; /// Use sampled sync signal. A value of 0 specifies no sampling. int iSampleRate; /// For interlaced sync signals, the value can be ADL_GLSYNC_SYNCFIELD_1 or *_BOTH \ref define_glsync int iSyncField; /// The signal edge that should trigger synchronization. ADL_GLSYNC_TRIGGEREDGE_* \ref define_glsync int iTriggerEdge; /// Scan rate multiplier applied to the sync signal. ADL_GLSYNC_SCANRATECOEFF_* \ref define_glsync int iScanRateCoeff; }ADLGLSyncGenlockConfig, *LPADLGLSyncGenlockConfig; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync port information. /// /// This structure is used to get status of the GL-Sync ports (BNC or RJ45s) /// for Workstation Framelock/Genlock. /// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncPortInfo { /// Type of GL-Sync port (ADL_GLSYNC_PORT_*). int iPortType; /// The number of LEDs for this port. It's also filled within ADLGLSyncPortCaps. int iNumOfLEDs; /// Port state ADL_GLSYNC_PORTSTATE_* \ref define_glsync int iPortState; /// Scanned frequency for this port (vertical refresh rate in milliHz; 60000 means 60 Hz). int iFrequency; /// Used for ADL_GLSYNC_PORT_BNC. It is ADL_GLSYNC_SIGNALTYPE_* \ref define_glsync int iSignalType; /// Used for ADL_GLSYNC_PORT_RJ45PORT*. It is GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_*. \ref define_glsync int iSignalSource; } ADLGlSyncPortInfo, *LPADLGlSyncPortInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync port control settings. /// /// This structure is used to configure the GL-Sync ports (RJ45s only) /// for Workstation Framelock/Genlock. /// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncPortControl { /// Port to control ADL_GLSYNC_PORT_RJ45PORT1 or ADL_GLSYNC_PORT_RJ45PORT2 \ref define_glsync int iPortType; /// Port control data ADL_GLSYNC_PORTCNTL_* \ref define_glsync int iControlVector; /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync int iSignalSource; } ADLGlSyncPortControl; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync mode of a display. /// /// This structure is used to get and set GL-Sync mode settings for a display connected to /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock. /// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncMode { /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync int iControlVector; /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync int iStatusVector; /// Index of GL-Sync connector used to genlock the display/controller. int iGLSyncConnectorIndex; } ADLGlSyncMode, *LPADLGlSyncMode; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing GL-Sync mode of a display. /// /// This structure is used to get and set GL-Sync mode settings for a display connected to /// an adapter attached to a GL-Sync module for Workstation Framelock/Genlock. /// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncMode2 { /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync int iControlVector; /// Mode status vector. Bitfield of ADL_GLSYNC_MODECNTL_STATUS_* \ref define_glsync int iStatusVector; /// Index of GL-Sync connector used to genlock the display/controller. int iGLSyncConnectorIndex; /// Index of the display to which this GLSync applies to. int iDisplayIndex; } ADLGlSyncMode2, *LPADLGlSyncMode2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the packet info of a display. /// /// This structure is used to get and set the packet information of a display. /// This structure is used by ADLDisplayDataPacket. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLInfoPacket { char hb0; char hb1; char hb2; /// sb0~sb27 char sb[28]; }ADLInfoPacket; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the AVI packet info of a display. /// /// This structure is used to get and set AVI the packet info of a display. /// This structure is used by ADLDisplayDataPacket. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAVIInfoPacket //Valid user defined data/ { /// byte 3, bit 7 char bPB3_ITC; /// byte 5, bit [7:4]. char bPB5; }ADLAVIInfoPacket; // Overdrive clock setting structure definition. ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the Overdrive clock setting. /// /// This structure is used to get the Overdrive clock setting. /// This structure is used by ADLAdapterODClockInfo. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODClockSetting { /// Deafult clock int iDefaultClock; /// Current clock int iCurrentClock; /// Maximum clcok int iMaxClock; /// Minimum clock int iMinClock; /// Requested clcock int iRequestedClock; /// Step int iStepClock; } ADLODClockSetting; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the Overdrive clock information. /// /// This structure is used to get the Overdrive clock information. /// This structure is used by the ADL_Display_ODClockInfo_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterODClockInfo { /// Size of the structure int iSize; /// Flag \ref define_clockinfo_flags int iFlags; /// Memory Clock ADLODClockSetting sMemoryClock; /// Engine Clock ADLODClockSetting sEngineClock; } ADLAdapterODClockInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the Overdrive clock configuration. /// /// This structure is used to set the Overdrive clock configuration. /// This structure is used by the ADL_Display_ODClockConfig_Set() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterODClockConfig { /// Size of the structure int iSize; /// Flag \ref define_clockinfo_flags int iFlags; /// Memory Clock int iMemoryClock; /// Engine Clock int iEngineClock; } ADLAdapterODClockConfig; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about current power management related activity. /// /// This structure is used to store information about current power management related activity. /// This structure (Overdrive 5 interfaces) is used by the ADL_PM_CurrentActivity_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPMActivity { /// Must be set to the size of the structure int iSize; /// Current engine clock. int iEngineClock; /// Current memory clock. int iMemoryClock; /// Current core voltage. int iVddc; /// GPU utilization. int iActivityPercent; /// Performance level index. int iCurrentPerformanceLevel; /// Current PCIE bus speed. int iCurrentBusSpeed; /// Number of PCIE bus lanes. int iCurrentBusLanes; /// Maximum number of PCIE bus lanes. int iMaximumBusLanes; /// Reserved for future purposes. int iReserved; } ADLPMActivity; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about thermal controller. /// /// This structure is used to store information about thermal controller. /// This structure is used by ADL_PM_ThermalDevices_Enum. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLThermalControllerInfo { /// Must be set to the size of the structure int iSize; /// Possible valies: \ref ADL_DL_THERMAL_DOMAIN_OTHER or \ref ADL_DL_THERMAL_DOMAIN_GPU. int iThermalDomain; /// GPU 0, 1, etc. int iDomainIndex; /// Possible valies: \ref ADL_DL_THERMAL_FLAG_INTERRUPT or \ref ADL_DL_THERMAL_FLAG_FANCONTROL int iFlags; } ADLThermalControllerInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about thermal controller temperature. /// /// This structure is used to store information about thermal controller temperature. /// This structure is used by the ADL_PM_Temperature_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLTemperature { /// Must be set to the size of the structure int iSize; /// Temperature in millidegrees Celsius. int iTemperature; } ADLTemperature; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about thermal controller fan speed. /// /// This structure is used to store information about thermal controller fan speed. /// This structure is used by the ADL_PM_FanSpeedInfo_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFanSpeedInfo { /// Must be set to the size of the structure int iSize; /// \ref define_fanctrl int iFlags; /// Minimum possible fan speed value in percents. int iMinPercent; /// Maximum possible fan speed value in percents. int iMaxPercent; /// Minimum possible fan speed value in RPM. int iMinRPM; /// Maximum possible fan speed value in RPM. int iMaxRPM; } ADLFanSpeedInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about fan speed reported by thermal controller. /// /// This structure is used to store information about fan speed reported by thermal controller. /// This structure is used by the ADL_Overdrive5_FanSpeed_Get() and ADL_Overdrive5_FanSpeed_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFanSpeedValue { /// Must be set to the size of the structure int iSize; /// Possible valies: \ref ADL_DL_FANCTRL_SPEED_TYPE_PERCENT or \ref ADL_DL_FANCTRL_SPEED_TYPE_RPM int iSpeedType; /// Fan speed value int iFanSpeed; /// The only flag for now is: \ref ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED int iFlags; } ADLFanSpeedValue; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the range of Overdrive parameter. /// /// This structure is used to store information about the range of Overdrive parameter. /// This structure is used by ADLODParameters. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODParameterRange { /// Minimum parameter value. int iMin; /// Maximum parameter value. int iMax; /// Parameter step value. int iStep; } ADLODParameterRange; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive parameters. /// /// This structure is used to store information about Overdrive parameters. /// This structure is used by the ADL_Overdrive5_ODParameters_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODParameters { /// Must be set to the size of the structure int iSize; /// Number of standard performance states. int iNumberOfPerformanceLevels; /// Indicates whether the GPU is capable to measure its activity. int iActivityReportingSupported; /// Indicates whether the GPU supports discrete performance levels or performance range. int iDiscretePerformanceLevels; /// Reserved for future use. int iReserved; /// Engine clock range. ADLODParameterRange sEngineClock; /// Memory clock range. ADLODParameterRange sMemoryClock; /// Core voltage range. ADLODParameterRange sVddc; } ADLODParameters; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive level. /// /// This structure is used to store information about Overdrive level. /// This structure is used by ADLODPerformanceLevels. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODPerformanceLevel { /// Engine clock. int iEngineClock; /// Memory clock. int iMemoryClock; /// Core voltage. int iVddc; } ADLODPerformanceLevel; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive performance levels. /// /// This structure is used to store information about Overdrive performance levels. /// This structure is used by the ADL_Overdrive5_ODPerformanceLevels_Get() and ADL_Overdrive5_ODPerformanceLevels_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODPerformanceLevels { /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1) int iSize; int iReserved; /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements. ADLODPerformanceLevel aLevels [1]; } ADLODPerformanceLevels; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the proper CrossfireX chains combinations. /// /// This structure is used to store information about the CrossfireX chains combination for a particular adapter. /// This structure is used by the ADL_Adapter_Crossfire_Caps(), ADL_Adapter_Crossfire_Get(), and ADL_Adapter_Crossfire_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLCrossfireComb { /// Number of adapters in this combination. int iNumLinkAdapter; /// A list of ADL indexes of the linked adapters in this combination. int iAdaptLink[3]; } ADLCrossfireComb; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing CrossfireX state and error information. /// /// This structure is used to store state and error information about a particular adapter CrossfireX combination. /// This structure is used by the ADL_Adapter_Crossfire_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLCrossfireInfo { /// Current error code of this CrossfireX combination. int iErrorCode; /// Current \ref define_crossfirestate int iState; /// If CrossfireX is supported by this combination. The value is either \ref ADL_TRUE or \ref ADL_FALSE. int iSupported; } ADLCrossfireInfo; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the BIOS. /// /// This structure is used to store various information about the Chipset. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLBiosInfo { char strPartNumber[ADL_MAX_PATH]; ///< Part number. char strVersion[ADL_MAX_PATH]; ///< Version number. char strDate[ADL_MAX_PATH]; ///< BIOS date in yyyy/mm/dd hh:mm format. } ADLBiosInfo, *LPADLBiosInfo; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about adapter location. /// /// This structure is used to store information about adapter location. /// This structure is used by ADLMVPUStatus. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterLocation { /// PCI Bus number : 8 bits int iBus; /// Device number : 5 bits int iDevice; /// Function number : 3 bits int iFunction; } ADLAdapterLocation,ADLBdf; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing version information /// /// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLVersionsInfo { /// Driver Release (Packaging) Version (e.g. 8.71-100128n-094835E-ATI) char strDriverVer[ADL_MAX_PATH]; /// Catalyst Version(e.g. "10.1"). char strCatalystVersion[ADL_MAX_PATH]; /// Web link to an XML file with information about the latest AMD drivers and locations (e.g. "http://www.amd.com/us/driverxml" ) char strCatalystWebLink[ADL_MAX_PATH]; } ADLVersionsInfo, *LPADLVersionsInfo; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing version information /// /// This structure is used to store software version information, description of the display device and a web link to the latest installed Catalyst drivers. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLVersionsInfoX2 { /// Driver Release (Packaging) Version (e.g. "16.20.1035-160621a-303814C") char strDriverVer[ADL_MAX_PATH]; /// Catalyst Version(e.g. "15.8"). char strCatalystVersion[ADL_MAX_PATH]; /// Crimson Version(e.g. "16.6.2"). char strCrimsonVersion[ADL_MAX_PATH]; /// 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" ) char strCatalystWebLink[ADL_MAX_PATH]; } ADLVersionsInfoX2, *LPADLVersionsInfoX2; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about MultiVPU capabilities. /// /// This structure is used to store information about MultiVPU capabilities. /// This structure is used by the ADL_Display_MVPUCaps_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMVPUCaps { /// Must be set to sizeof( ADLMVPUCaps ). int iSize; /// Number of adapters. int iAdapterCount; /// Bits set for all possible MVPU masters. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3 int iPossibleMVPUMasters; /// Bits set for all possible MVPU slaves. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3 int iPossibleMVPUSlaves; /// Registry path for each adapter. char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH]; } ADLMVPUCaps; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about MultiVPU status. /// /// This structure is used to store information about MultiVPU status. /// Ths structure is used by the ADL_Display_MVPUStatus_Get() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMVPUStatus { /// Must be set to sizeof( ADLMVPUStatus ). int iSize; /// Number of active adapters. int iActiveAdapterCount; /// MVPU status. int iStatus; /// PCI Bus/Device/Function for each active adapter participating in MVPU. ADLAdapterLocation aAdapterLocation[ADL_DL_MAX_MVPU_ADAPTERS]; } ADLMVPUStatus; // Displays Manager structures /////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the activatable source. /// /// This structure is used to store activatable source information /// This information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLActivatableSource { /// The Persistent logical Adapter Index. int iAdapterIndex; /// The number of Activatable Sources. int iNumActivatableSources; /// The bit mask identifies the number of bits ActivatableSourceValue is using. (Not currnetly used) int iActivatableSourceMask; /// The bit mask identifies the status. (Not currnetly used) int iActivatableSourceValue; } ADLActivatableSource, *LPADLActivatableSource; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about display mode. /// /// This structure is used to store the display mode for the current adapter /// such as X, Y positions, screen resolutions, orientation, /// color depth, refresh rate, progressive or interlace mode, etc. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMode { /// Adapter index. int iAdapterIndex; /// Display IDs. ADLDisplayID displayID; /// Screen position X coordinate. int iXPos; /// Screen position Y coordinate. int iYPos; /// Screen resolution Width. int iXRes; /// Screen resolution Height. int iYRes; /// Screen Color Depth. E.g., 16, 32. int iColourDepth; /// Screen refresh rate. Could be fractional E.g. 59.97 float fRefreshRate; /// Screen orientation. E.g., 0, 90, 180, 270. int iOrientation; /// Vista mode flag indicating Progressive or Interlaced mode. int iModeFlag; /// 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 int iModeMask; /// The bit mask identifying the display status. The detailed definition is in \ref define_displaymode int iModeValue; } ADLMode, *LPADLMode; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about display target information. /// /// This structure is used to store the display target information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayTarget { /// The Display ID. ADLDisplayID displayID; /// The display map index identify this manner and the desktop surface. int iDisplayMapIndex; /// 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. int iDisplayTargetMask; /// The bit mask identifies the display status. The detailed definition is in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED. int iDisplayTargetValue; } ADLDisplayTarget, *LPADLDisplayTarget; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS bezel Mode information. /// /// This structure is used to store the display SLS bezel Mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct tagADLBezelTransientMode { /// Adapter Index int iAdapterIndex; /// SLS Map Index int iSLSMapIndex; /// The mode index int iSLSModeIndex; /// The mode ADLMode displayMode; /// The number of bezel offsets belongs to this map int iNumBezelOffset; /// The first bezel offset array index in the native mode array int iFirstBezelOffsetArrayIndex; /// The bit mask identifies the bits this structure is currently using. It will be the total OR of all the bit definitions. int iSLSBezelTransientModeMask; /// The bit mask identifies the display status. The detail definition is defined below. int iSLSBezelTransientModeValue; } ADLBezelTransientMode, *LPADLBezelTransientMode; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the adapter display manner. /// /// This structure is used to store adapter display manner information /// This information can be returned to the user. Alternatively, it can be used to access various driver calls to /// fetch various display device related display manner settings upon the user's request. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterDisplayCap { /// The Persistent logical Adapter Index. int iAdapterIndex; /// The bit mask identifies the number of bits AdapterDisplayCap is currently using. Sum all the bits defined in ADL_ADAPTER_DISPLAYCAP_XXX int iAdapterDisplayCapMask; /// The bit mask identifies the status. Refer to ADL_ADAPTER_DISPLAYCAP_XXX int iAdapterDisplayCapValue; } ADLAdapterDisplayCap, *LPADLAdapterDisplayCap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about display mapping. /// /// This structure is used to store the display mapping data such as display manner. /// For displays with horizontal or vertical stretch manner, /// this structure also stores the display order, display row, and column data. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayMap { /// 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. int iDisplayMapIndex; /// The Display Mode for the current map ADLMode displayMode; /// The number of display targets belongs to this map\n int iNumDisplayTarget; /// The first target array index in the Target array\n int iFirstDisplayTargetArrayIndex; /// 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. int iDisplayMapMask; ///The bit mask identifies the display status. The detailed definition is in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx. int iDisplayMapValue; } ADLDisplayMap, *LPADLDisplayMap; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the display device possible map for one GPU /// /// This structure is used to store the display device possible map /// This information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPossibleMap { /// The current PossibleMap index. Each PossibleMap is assigned an index int iIndex; /// The adapter index identifying the GPU for which to validate these Maps & Targets int iAdapterIndex; /// Number of display Maps for this GPU to be validated int iNumDisplayMap; /// The display Maps list to validate ADLDisplayMap* displayMap; /// the number of display Targets for these display Maps int iNumDisplayTarget; /// The display Targets list for these display Maps to be validated. ADLDisplayTarget* displayTarget; } ADLPossibleMap, *LPADLPossibleMap; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about display possible mapping. /// /// This structure is used to store the display possible mapping's controller index for the current display. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPossibleMapping { int iDisplayIndex; ///< The display index. Each display is assigned an index. int iDisplayControllerIndex; ///< The controller index to which display is mapped. int iDisplayMannerSupported; ///< The supported display manner. } ADLPossibleMapping, *LPADLPossibleMapping; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the validated display device possible map result. /// /// This structure is used to store the validated display device possible map result /// This information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPossibleMapResult { /// 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. int iIndex; // 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. int iPossibleMapResultMask; /// The bit mask identifies the possible map result. The detail definition is defined in ADL_DISPLAY_POSSIBLEMAPRESULT_XXX. int iPossibleMapResultValue; } ADLPossibleMapResult, *LPADLPossibleMapResult; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS Grid information. /// /// This structure is used to store the display SLS Grid information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSGrid { /// The Adapter index. int iAdapterIndex; /// The grid index. int iSLSGridIndex; /// The grid row. int iSLSGridRow; /// The grid column. int iSLSGridColumn; /// The grid bit mask identifies the number of bits DisplayMap is currently using. Sum of all bits defined in ADL_DISPLAY_SLSGRID_ORIENTATION_XXX int iSLSGridMask; /// The grid bit value identifies the display status. Refer to ADL_DISPLAY_SLSGRID_ORIENTATION_XXX int iSLSGridValue; } ADLSLSGrid, *LPADLSLSGrid; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS Map information. /// /// This structure is used to store the display SLS Map information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSMap { /// The Adapter Index int iAdapterIndex; /// 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. int iSLSMapIndex; /// Indicate the current grid ADLSLSGrid grid; /// OS surface index int iSurfaceMapIndex; /// Screen orientation. E.g., 0, 90, 180, 270 int iOrientation; /// The number of display targets belongs to this map int iNumSLSTarget; /// The first target array index in the Target array int iFirstSLSTargetArrayIndex; /// The number of native modes belongs to this map int iNumNativeMode; /// The first native mode array index in the native mode array int iFirstNativeModeArrayIndex; /// The number of bezel modes belongs to this map int iNumBezelMode; /// The first bezel mode array index in the native mode array int iFirstBezelModeArrayIndex; /// The number of bezel offsets belongs to this map int iNumBezelOffset; /// The first bezel offset array index in the int iFirstBezelOffsetArrayIndex; /// The bit mask identifies the number of bits DisplayMap is currently using. Sum all the bit definitions defined in ADL_DISPLAY_SLSMAP_XXX. int iSLSMapMask; /// The bit mask identifies the display map status. Refer to ADL_DISPLAY_SLSMAP_XXX int iSLSMapValue; } ADLSLSMap, *LPADLSLSMap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS Offset information. /// /// This structure is used to store the display SLS Offset information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSOffset { /// The Adapter Index int iAdapterIndex; /// 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. int iSLSMapIndex; /// The Display ID. ADLDisplayID displayID; /// SLS Bezel Mode Index int iBezelModeIndex; /// SLS Bezel Offset X int iBezelOffsetX; /// SLS Bezel Offset Y int iBezelOffsetY; /// SLS Display Width int iDisplayWidth; /// SLS Display Height int iDisplayHeight; /// The bit mask identifies the number of bits Offset is currently using. int iBezelOffsetMask; /// The bit mask identifies the display status. int iBezelffsetValue; } ADLSLSOffset, *LPADLSLSOffset; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS Mode information. /// /// This structure is used to store the display SLS Mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSMode { /// The Adapter Index int iAdapterIndex; /// 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. int iSLSMapIndex; /// The mode index int iSLSModeIndex; /// The mode for this map. ADLMode displayMode; /// The bit mask identifies the number of bits Mode is currently using. int iSLSNativeModeMask; /// The bit mask identifies the display status. int iSLSNativeModeValue; } ADLSLSMode, *LPADLSLSMode; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display Possible SLS Map information. /// /// This structure is used to store the display Possible SLS Map information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPossibleSLSMap { /// 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. int iSLSMapIndex; /// Number of display map to be validated. int iNumSLSMap; /// The display map list for validation ADLSLSMap* lpSLSMap; /// the number of display map config to be validated. int iNumSLSTarget; /// The display target list for validation. ADLDisplayTarget* lpDisplayTarget; } ADLPossibleSLSMap, *LPADLPossibleSLSMap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the SLS targets. /// /// This structure is used to store the SLS targets information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSTarget { /// the logic adapter index int iAdapterIndex; /// The SLS map index int iSLSMapIndex; /// The target ID ADLDisplayTarget displayTarget; /// Target postion X in SLS grid int iSLSGridPositionX; /// Target postion Y in SLS grid int iSLSGridPositionY; /// The view size width, height and rotation angle per SLS Target ADLMode viewSize; /// The bit mask identifies the bits in iSLSTargetValue are currently used int iSLSTargetMask; /// The bit mask identifies status info. It is for function extension purpose int iSLSTargetValue; } ADLSLSTarget, *LPADLSLSTarget; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the Adapter offset stepping size. /// /// This structure is used to store the Adapter offset stepping size information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLBezelOffsetSteppingSize { /// the logic adapter index int iAdapterIndex; /// The SLS map index int iSLSMapIndex; /// Bezel X stepping size offset int iBezelOffsetSteppingSizeX; /// Bezel Y stepping size offset int iBezelOffsetSteppingSizeY; /// Identifies the bits this structure is currently using. It will be the total OR of all the bit definitions. int iBezelOffsetSteppingSizeMask; /// Bit mask identifies the display status. int iBezelOffsetSteppingSizeValue; } ADLBezelOffsetSteppingSize, *LPADLBezelOffsetSteppingSize; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the overlap offset info for all the displays for each SLS mode. /// /// This structure is used to store the no. of overlapped modes for each SLS Mode once user finishes the configuration from Overlap Widget /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSOverlappedMode { /// the SLS mode for which the overlap is configured ADLMode SLSMode; /// the number of target displays in SLS. int iNumSLSTarget; /// the first target array index in the target array int iFirstTargetArrayIndex; }ADLSLSTargetOverlap, *LPADLSLSTargetOverlap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver supported PowerExpress Config Caps /// /// This structure is used to store the driver supported PowerExpress Config Caps /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPXConfigCaps { /// The Persistent logical Adapter Index. int iAdapterIndex; /// 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. int iPXConfigCapMask; /// The bit mask identifies the PowerExpress Config Caps value. The detailed definition is in ADL_PX_CONFIGCAPS_XXXX /ref define_powerxpress_constants. int iPXConfigCapValue; } ADLPXConfigCaps, *LPADLPXConfigCaps; ///////////////////////////////////////////////////////////////////////////////////////// ///\brief Enum containing PX or HG type /// /// This enum is used to get PX or hG type /// /// \nosubgrouping ////////////////////////////////////////////////////////////////////////////////////////// typedef enum ADLPxType { //Not AMD related PX/HG or not PX or HG at all ADL_PX_NONE = 0, //A+A PX ADL_SWITCHABLE_AMDAMD = 1, // A+A HG ADL_HG_AMDAMD = 2, //A+I PX ADL_SWITCHABLE_AMDOTHER = 3, //A+I HG ADL_HG_AMDOTHER = 4, }ADLPxType; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an application /// /// This structure is used to store basic information of an application /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLApplicationData { /// Path Name char strPathName[ADL_MAX_PATH]; /// File Name char strFileName[ADL_APP_PROFILE_FILENAME_LENGTH]; /// Creation timestamp char strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH]; /// Version char strVersion[ADL_APP_PROFILE_VERSION_LENGTH]; }ADLApplicationData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an application /// /// This structure is used to store basic information of an application /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLApplicationDataX2 { /// Path Name wchar_t strPathName[ADL_MAX_PATH]; /// File Name wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH]; /// Creation timestamp wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH]; /// Version wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH]; }ADLApplicationDataX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an application /// /// This structure is used to store basic information of an application including process id /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLApplicationDataX3 { /// Path Name wchar_t strPathName[ADL_MAX_PATH]; /// File Name wchar_t strFileName[ADL_APP_PROFILE_FILENAME_LENGTH]; /// Creation timestamp wchar_t strTimeStamp[ADL_APP_PROFILE_TIMESTAMP_LENGTH]; /// Version wchar_t strVersion[ADL_APP_PROFILE_VERSION_LENGTH]; //Application Process id unsigned int iProcessId; }ADLApplicationDataX3; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information of a property of an application profile /// /// This structure is used to store property information of an application profile /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct PropertyRecord { /// Property Name char strName [ADL_APP_PROFILE_PROPERTY_LENGTH]; /// Property Type ADLProfilePropertyType eType; /// Data Size in bytes int iDataSize; /// Property Value, can be any data type unsigned char uData[1]; }PropertyRecord; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an application profile /// /// This structure is used to store information of an application profile /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLApplicationProfile { /// Number of properties int iCount; /// Buffer to store all property records PropertyRecord record[1]; }ADLApplicationProfile; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an OD5 Power Control feature /// /// This structure is used to store information of an Power Control feature /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPowerControlInfo { /// Minimum value. int iMinValue; /// Maximum value. int iMaxValue; /// The minimum change in between minValue and maxValue. int iStepValue; } ADLPowerControlInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an controller mode /// /// This structure is used to store information of an controller mode /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLControllerMode { /// This falg indicates actions that will be applied by set viewport /// The value can be a combination of ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_POSITION, /// ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_PANLOCK and ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_SIZE int iModifiers; /// Horizontal view starting position int iViewPositionCx; /// Vertical view starting position int iViewPositionCy; /// Horizontal left panlock position int iViewPanLockLeft; /// Horizontal right panlock position int iViewPanLockRight; /// Vertical top panlock position int iViewPanLockTop; /// Vertical bottom panlock position int iViewPanLockBottom; /// View resolution in pixels (width) int iViewResolutionCx; /// View resolution in pixels (hight) int iViewResolutionCy; }ADLControllerMode; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about a display /// /// This structure is used to store information about a display /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayIdentifier { /// ADL display index long ulDisplayIndex; /// manufacturer ID of the display long ulManufacturerId; /// product ID of the display long ulProductId; /// serial number of the display long ulSerialNo; } ADLDisplayIdentifier; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 clock range /// /// This structure is used to store information about Overdrive 6 clock range /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6ParameterRange { /// The starting value of the clock range int iMin; /// The ending value of the clock range int iMax; /// The minimum increment between clock values int iStep; } ADLOD6ParameterRange; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 capabilities /// /// This structure is used to store information about Overdrive 6 capabilities /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6Capabilities { /// Contains a bitmap of the OD6 capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION, /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR int iCapabilities; /// Contains a bitmap indicating the power states /// supported by OD6. Currently only the performance state /// is supported. Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE int iSupportedStates; /// Number of levels. OD6 will always use 2 levels, which describe /// the minimum to maximum clock ranges. /// The 1st level indicates the minimum clocks, and the 2nd level /// indicates the maximum clocks. int iNumberOfPerformanceLevels; /// Contains the hard limits of the sclk range. Overdrive /// clocks cannot be set outside this range. ADLOD6ParameterRange sEngineClockRange; /// Contains the hard limits of the mclk range. Overdrive /// clocks cannot be set outside this range. ADLOD6ParameterRange sMemoryClockRange; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6Capabilities; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 clock values. /// /// This structure is used to store information about Overdrive 6 clock values. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6PerformanceLevel { /// Engine (core) clock. int iEngineClock; /// Memory clock. int iMemoryClock; } ADLOD6PerformanceLevel; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 clocks. /// /// This structure is used to store information about Overdrive 6 clocks. This is a /// variable-sized structure. iNumberOfPerformanceLevels indicate how many elements /// are contained in the aLevels array. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6StateInfo { /// Number of levels. OD6 uses clock ranges instead of discrete performance levels. /// iNumberOfPerformanceLevels is always 2. The 1st level indicates the minimum clocks /// in the range. The 2nd level indicates the maximum clocks in the range. int iNumberOfPerformanceLevels; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; /// Variable-sized array of levels. /// The number of elements in the array is specified by iNumberofPerformanceLevels. ADLOD6PerformanceLevel aLevels [1]; } ADLOD6StateInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about current Overdrive 6 performance status. /// /// This structure is used to store information about current Overdrive 6 performance status. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6CurrentStatus { /// Current engine clock in 10 KHz. int iEngineClock; /// Current memory clock in 10 KHz. int iMemoryClock; /// Current GPU activity in percent. This /// indicates how "busy" the GPU is. int iActivityPercent; /// Not used. Reserved for future use. int iCurrentPerformanceLevel; /// Current PCI-E bus speed int iCurrentBusSpeed; /// Current PCI-E bus # of lanes int iCurrentBusLanes; /// Maximum possible PCI-E bus # of lanes int iMaximumBusLanes; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6CurrentStatus; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 thermal contoller capabilities /// /// This structure is used to store information about Overdrive 6 thermal controller capabilities /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6ThermalControllerCaps { /// Contains a bitmap of thermal controller capability flags. Possible values: \ref ADL_OD6_TCCAPS_THERMAL_CONTROLLER, \ref ADL_OD6_TCCAPS_FANSPEED_CONTROL, /// \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 int iCapabilities; /// Minimum fan speed expressed as a percentage int iFanMinPercent; /// Maximum fan speed expressed as a percentage int iFanMaxPercent; /// Minimum fan speed expressed in revolutions-per-minute int iFanMinRPM; /// Maximum fan speed expressed in revolutions-per-minute int iFanMaxRPM; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6ThermalControllerCaps; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 fan speed information /// /// This structure is used to store information about Overdrive 6 fan speed information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6FanSpeedInfo { /// 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 int iSpeedType; /// Contains current fan speed in percent (if valid flag exists in iSpeedType) int iFanSpeedPercent; /// Contains current fan speed in RPM (if valid flag exists in iSpeedType) int iFanSpeedRPM; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6FanSpeedInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 fan speed value /// /// This structure is used to store information about Overdrive 6 fan speed value /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6FanSpeedValue { /// Indicates the units of the fan speed. Possible values: \ref ADL_OD6_FANSPEED_TYPE_PERCENT, \ref ADL_OD6_FANSPEED_TYPE_RPM int iSpeedType; /// Fan speed value (units as indicated above) int iFanSpeed; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6FanSpeedValue; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 PowerControl settings. /// /// This structure is used to store information about Overdrive 6 PowerControl settings. /// PowerControl is the feature which allows the performance characteristics of the GPU /// to be adjusted by changing the PowerTune power limits. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6PowerControlInfo { /// The minimum PowerControl adjustment value int iMinValue; /// The maximum PowerControl adjustment value int iMaxValue; /// The minimum difference between PowerControl adjustment values int iStepValue; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6PowerControlInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 PowerControl settings. /// /// This structure is used to store information about Overdrive 6 PowerControl settings. /// PowerControl is the feature which allows the performance characteristics of the GPU /// to be adjusted by changing the PowerTune power limits. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6VoltageControlInfo { /// The minimum VoltageControl adjustment value int iMinValue; /// The maximum VoltageControl adjustment value int iMaxValue; /// The minimum difference between VoltageControl adjustment values int iStepValue; /// Value for future extension int iExtValue; /// Mask for future extension int iExtMask; } ADLOD6VoltageControlInfo; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing ECC statistics namely SEC counts and DED counts /// Single error count - count of errors that can be corrected /// Doubt Error Detect - count of errors that cannot be corrected /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLECCData { // Single error count - count of errors that can be corrected int iSec; // Double error detect - count of errors that cannot be corrected int iDed; } ADLECCData; /// \brief Handle to ADL client context. /// /// ADL clients obtain context handle from initial call to \ref ADL2_Main_Control_Create. /// Clients have to pass the handle to each subsequent ADL call and finally destroy /// the context with call to \ref ADL2_Main_Control_Destroy /// \nosubgrouping typedef void *ADL_CONTEXT_HANDLE; /// \brief Handle to ADL Frame Monitor Token. /// /// Frame Monitor clients obtain handle from initial call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Enable /// Clients have to pass the handle to each subsequent ADL call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Get /// and finally destroy the token with call to \ref ADL2_Adapter_FrameMetrics_FrameDuration_Disable /// \nosubgrouping typedef void *ADL_FRAME_DURATION_HANDLE; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the display mode definition used per controller. /// /// This structure is used to store the display mode definition used per controller. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayModeX2 { /// Horizontal resolution (in pixels). int iWidth; /// Vertical resolution (in lines). int iHeight; /// 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. int iScanType; /// Refresh rate. int iRefreshRate; /// Timing Standard. Refer define_modetiming_standard. int iTimingStandard; } ADLDisplayModeX2; typedef enum ADLAppProcessState { APP_PROC_INVALID = 0, // Invalid Application APP_PROC_PREMPTION = 1, // The Application is being set up for Process Creation APP_PROC_CREATION = 2, // The Application's Main Process is created by the OS APP_PROC_READ = 3, // The Application's Data is ready to be read APP_PROC_WAIT = 4, // The Application is waiting for Timeout or Notification to Resume APP_PROC_RUNNING = 5, // The Application is running APP_PROC_TERMINATE = 6 // The Application is about to terminate }ADLAppProcessState; typedef enum ADLAppInterceptionListType { ADL_INVALID_FORMAT = 0, ADL_IMAGEFILEFORMAT = 1, ADL_ENVVAR = 2 }ADLAppInterceptionListType; typedef struct ADLAppInterceptionInfo { wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var unsigned int ProcessId; ADLAppInterceptionListType AppFormat; ADLAppProcessState AppState; } ADLAppInterceptionInfo; typedef enum ADL_AP_DATABASE // same as _SHARED_AP_DATABASE in "inc/shared/shared_escape.h" { ADL_AP_DATABASE__SYSTEM, ADL_AP_DATABASE__USER, ADL_AP_DATABASE__OEM } ADL_AP_DATABASE; typedef struct ADLAppInterceptionInfoX2 { wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var unsigned int ProcessId; unsigned int WaitForResumeNeeded; wchar_t CommandLine[ADL_MAX_PATH]; // The command line on app start/stop event ADLAppInterceptionListType AppFormat; ADLAppProcessState AppState; } ADLAppInterceptionInfoX2; typedef struct ADLAppInterceptionInfoX3 { wchar_t AppName[ADL_MAX_PATH]; // the file name of the application or env var unsigned int ProcessId; unsigned int WaitForResumeNeeded; unsigned int RayTracingStatus; // returns the Ray Tracing status if it is enabled atleast once in session. wchar_t CommandLine[ADL_MAX_PATH]; // The command line on app start/stop event ADLAppInterceptionListType AppFormat; ADLAppProcessState AppState; } ADLAppInterceptionInfoX3; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information info for a property record in a profile /// /// This structure is used to store info for a property record in a profile /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPropertyRecordCreate { /// Name of the property wchar_t * strPropertyName; /// Data type of the property ADLProfilePropertyType eType; // Value of the property wchar_t * strPropertyValue; } ADLPropertyRecordCreate; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information info for an application record /// /// This structure is used to store info for an application record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLApplicationRecord { /// Title of the application wchar_t * strTitle; /// File path of the application wchar_t * strPathName; /// File name of the application wchar_t * strFileName; /// File versin the application wchar_t * strVersion; /// Nostes on the application wchar_t * strNotes; /// Driver area which the application uses wchar_t * strArea; /// Name of profile assigned to the application wchar_t * strProfileName; // Source where this application record come from ADL_AP_DATABASE recordSource; } ADLApplicationRecord; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 extension capabilities /// /// This structure is used to store information about Overdrive 6 extension capabilities /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6CapabilitiesEx { /// Contains a bitmap of the OD6 extension capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION, /// \ref ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION, \ref ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR, /// \ref ADL_OD6_CAPABILITY_POWER_CONTROL, \ref ADL_OD6_CAPABILITY_VOLTAGE_CONTROL, \ref ADL_OD6_CAPABILITY_PERCENT_ADJUSTMENT, //// \ref ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK int iCapabilities; /// The Power states that support clock and power customization. Only performance state is currently supported. /// Possible Values: \ref ADL_OD6_SUPPORTEDSTATE_PERFORMANCE int iSupportedStates; /// 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. ADLOD6ParameterRange sEngineClockPercent; /// 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. ADLOD6ParameterRange sMemoryClockPercent; /// 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. ADLOD6ParameterRange sPowerControlPercent; /// Reserved for future expansion of the structure. int iExtValue; /// Reserved for future expansion of the structure. int iExtMask; } ADLOD6CapabilitiesEx; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 extension state information /// /// This structure is used to store information about Overdrive 6 extension state information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6StateEx { /// The current engine clock adjustment value, specified as a +/- percent. int iEngineClockPercent; /// The current memory clock adjustment value, specified as a +/- percent. int iMemoryClockPercent; /// The current power control adjustment value, specified as a +/- percent. int iPowerControlPercent; /// Reserved for future expansion of the structure. int iExtValue; /// Reserved for future expansion of the structure. int iExtMask; } ADLOD6StateEx; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive 6 extension recommended maximum clock adjustment values /// /// This structure is used to store information about Overdrive 6 extension recommended maximum clock adjustment values /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD6MaxClockAdjust { /// The recommended maximum engine clock adjustment in percent, for the specified power limit value. int iEngineClockMax; /// The recommended maximum memory clock adjustment in percent, for the specified power limit value. /// Currently the memory is independent of the Power Limit setting, so iMemoryClockMax will always return the maximum /// possible adjustment value. This field is here for future enhancement in case we add a dependency between Memory Clock /// adjustment and Power Limit setting. int iMemoryClockMax; /// Reserved for future expansion of the structure. int iExtValue; /// Reserved for future expansion of the structure. int iExtMask; } ADLOD6MaxClockAdjust; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the Connector information /// /// this structure is used to get the connector information like length, positions & etc. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLConnectorInfo { ///index of the connector(0-based) int iConnectorIndex; ///used for disply identification/ordering int iConnectorId; ///index of the slot, 0-based index. int iSlotIndex; ///Type of the connector. \ref define_connector_types int iType; ///Position of the connector(in millimeters), from the right side of the slot. int iOffset; ///Length of the connector(in millimeters). int iLength; } ADLConnectorInfo; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the slot information /// /// this structure is used to get the slot information like length of the slot, no of connectors on the slot & etc. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLBracketSlotInfo { ///index of the slot, 0-based index. int iSlotIndex; ///length of the slot(in millimeters). int iLength; ///width of the slot(in millimeters). int iWidth; } ADLBracketSlotInfo; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing MST branch information /// /// this structure is used to store the MST branch information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMSTRad { ///depth of the link. int iLinkNumber; /// Relative address, address scheme starts from source side char rad[ADL_MAX_RAD_LINK_COUNT]; } ADLMSTRad; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing port information /// /// this structure is used to get the display or MST branch information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDevicePort { ///index of the connector. int iConnectorIndex; ///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. ADLMSTRad aMSTRad; } ADLDevicePort; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing supported connection types and properties /// /// this structure is used to get the supported connection types and supported properties of given connector /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSupportedConnections { ///Bit vector of supported connections. Bitmask is defined in constants section. \ref define_connection_types int iSupportedConnections; ///Array of bitvectors. Each bit vector represents supported properties for one connection type. Index of this array is connection type (bit number in mask). int iSupportedProperties[ADL_MAX_CONNECTION_TYPES]; } ADLSupportedConnections; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing connection state of the connector /// /// this structure is used to get the current Emulation status and mode of the given connector /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLConnectionState { ///The value is bit vector. Each bit represents status. See masks constants for details. \ref define_emulation_status int iEmulationStatus; ///It contains information about current emulation mode. See constants for details. \ref define_emulation_mode int iEmulationMode; ///If connection is active it will contain display id, otherwise CWDDEDI_INVALID_DISPLAY_INDEX int iDisplayIndex; } ADLConnectionState; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing connection properties information /// /// this structure is used to retrieve the properties of connection type /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLConnectionProperties { //Bit vector. Represents actual properties. Supported properties for specific connection type. \ref define_connection_properties int iValidProperties; //Bitrate(in MHz). Could be used for MST branch, DP or DP active dongle. \ref define_linkrate_constants int iBitrate; //Number of lanes in DP connection. \ref define_lanecount_constants int iNumberOfLanes; //Color depth(in bits). \ref define_colordepth_constants int iColorDepth; //3D capabilities. It could be used for some dongles. For instance: alternate framepack. Value of this property is bit vector. int iStereo3DCaps; ///Output Bandwidth. Could be used for MST branch, DP or DP Active dongle. \ref define_linkrate_constants int iOutputBandwidth; } ADLConnectionProperties; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing connection information /// /// this structure is used to retrieve the data from driver which includes /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLConnectionData { ///Connection type. based on the connection type either iNumberofPorts or IDataSize,EDIDdata is valid, \ref define_connection_types int iConnectionType; ///Specifies the connection properties. ADLConnectionProperties aConnectionProperties; ///Number of ports int iNumberofPorts; ///Number of Active Connections int iActiveConnections; ///actual size of EDID data block size. int iDataSize; ///EDID Data char EdidData[ADL_MAX_DISPLAY_EDID_DATA_SIZE]; } ADLConnectionData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an controller mode including Number of Connectors /// /// This structure is used to store information of an controller mode /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterCapsX2 { /// AdapterID for this adapter int iAdapterID; /// Number of controllers for this adapter int iNumControllers; /// Number of displays for this adapter int iNumDisplays; /// Number of overlays for this adapter int iNumOverlays; /// Number of GLSyncConnectors int iNumOfGLSyncConnectors; /// The bit mask identifies the adapter caps int iCapsMask; /// The bit identifies the adapter caps \ref define_adapter_caps int iCapsValue; /// Number of Connectors for this adapter int iNumConnectors; }ADLAdapterCapsX2; typedef enum ADL_ERROR_RECORD_SEVERITY { ADL_GLOBALLY_UNCORRECTED = 1, ADL_LOCALLY_UNCORRECTED = 2, ADL_DEFFERRED = 3, ADL_CORRECTED = 4 }ADL_ERROR_RECORD_SEVERITY; typedef union _ADL_ECC_EDC_FLAG { struct { unsigned int isEccAccessing : 1; unsigned int reserved : 31; }bits; unsigned int u32All; }ADL_ECC_EDC_FLAG; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about EDC Error Record /// /// This structure is used to store EDC Error Record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLErrorRecord { // Severity of error ADL_ERROR_RECORD_SEVERITY Severity; // Is the counter valid? int countValid; // Counter value, if valid unsigned int count; // Is the location information valid? int locationValid; // Physical location of error unsigned int CU; // CU number on which error occurred, if known char StructureName[32]; // e.g. LDS, TCC, etc. // Time of error record creation (e.g. time of query, or time of poison interrupt) char tiestamp[32]; unsigned int padding[3]; }ADLErrorRecord; typedef enum ADL_EDC_BLOCK_ID { ADL_EDC_BLOCK_ID_SQCIS = 1, ADL_EDC_BLOCK_ID_SQCDS = 2, ADL_EDC_BLOCK_ID_SGPR = 3, ADL_EDC_BLOCK_ID_VGPR = 4, ADL_EDC_BLOCK_ID_LDS = 5, ADL_EDC_BLOCK_ID_GDS = 6, ADL_EDC_BLOCK_ID_TCL1 = 7, ADL_EDC_BLOCK_ID_TCL2 = 8 }ADL_EDC_BLOCK_ID; typedef enum ADL_ERROR_INJECTION_MODE { ADL_ERROR_INJECTION_MODE_SINGLE = 1, ADL_ERROR_INJECTION_MODE_MULTIPLE = 2, ADL_ERROR_INJECTION_MODE_ADDRESS = 3 }ADL_ERROR_INJECTION_MODE; typedef union _ADL_ERROR_PATTERN { struct { unsigned long EccInjVector : 16; unsigned long EccInjEn : 9; unsigned long EccBeatEn : 4; unsigned long EccChEn : 4; unsigned long reserved : 31; } bits; unsigned long long u64Value; } ADL_ERROR_PATTERN; typedef struct ADL_ERROR_INJECTION_DATA { unsigned long long errorAddress; ADL_ERROR_PATTERN errorPattern; }ADL_ERROR_INJECTION_DATA; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about EDC Error Injection /// /// This structure is used to store EDC Error Injection /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLErrorInjection { ADL_EDC_BLOCK_ID blockId; ADL_ERROR_INJECTION_MODE errorInjectionMode; }ADLErrorInjection; typedef struct ADLErrorInjectionX2 { ADL_EDC_BLOCK_ID blockId; ADL_ERROR_INJECTION_MODE errorInjectionMode; ADL_ERROR_INJECTION_DATA errorInjectionData; }ADLErrorInjectionX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing per display FreeSync capability information. /// /// This structure is used to store the FreeSync capability of both the display and /// the GPU the display is connected to. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFreeSyncCap { /// FreeSync capability flags. \ref define_freesync_caps int iCaps; /// Reports minimum FreeSync refresh rate supported by the display in micro hertz int iMinRefreshRateInMicroHz; /// Reports maximum FreeSync refresh rate supported by the display in micro hertz int iMaxRefreshRateInMicroHz; /// Index of FreeSync Label to use: ADL_FREESYNC_LABEL_* unsigned char ucLabelIndex; /// Reserved char cReserved[3]; int iReserved[4]; } ADLFreeSyncCap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing per display Display Connectivty Experience Settings /// /// This structure is used to store the Display Connectivity Experience settings of a /// display /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDceSettings { DceSettingsType type; // Defines which structure is in the union below union { struct { bool qualityDetectionEnabled; } HdmiLq; struct { DpLinkRate linkRate; // Read-only unsigned int numberOfActiveLanes; // Read-only unsigned int numberofTotalLanes; // Read-only int relativePreEmphasis; // Allowable values are -2 to +2 int relativeVoltageSwing; // Allowable values are -2 to +2 int persistFlag; } DpLink; struct { bool linkProtectionEnabled; // Read-only } Protection; } Settings; int iReserved[15]; } ADLDceSettings; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Graphic Core /// /// This structure is used to get Graphic Core Info /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGraphicCoreInfo { /// indicate the graphic core generation int iGCGen; union { /// Total number of CUs. Valid for GCN (iGCGen == GCN) int iNumCUs; /// Total number of WGPs. Valid for RDNA (iGCGen == RDNA) int iNumWGPs; }; union { /// Number of processing elements per CU. Valid for GCN (iGCGen == GCN) int iNumPEsPerCU; /// Number of processing elements per WGP. Valid for RDNA (iGCGen == RDNA) int iNumPEsPerWGP; }; /// Total number of SIMDs. Valid for Pre GCN (iGCGen == Pre-GCN) int iNumSIMDs; /// Total number of ROPs. Valid for both GCN and Pre GCN int iNumROPs; /// reserved for future use int iReserved[11]; }ADLGraphicCoreInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N clock range /// /// This structure is used to store information about Overdrive N clock range /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNParameterRange { /// The starting value of the clock range int iMode; /// The starting value of the clock range int iMin; /// The ending value of the clock range int iMax; /// The minimum increment between clock values int iStep; /// The default clock values int iDefault; } ADLODNParameterRange; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N capabilities /// /// This structure is used to store information about Overdrive N capabilities /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNCapabilities { /// Number of levels which describe the minimum to maximum clock ranges. /// The 1st level indicates the minimum clocks, and the 2nd level /// indicates the maximum clocks. int iMaximumNumberOfPerformanceLevels; /// Contains the hard limits of the sclk range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange sEngineClockRange; /// Contains the hard limits of the mclk range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange sMemoryClockRange; /// Contains the hard limits of the vddc range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange svddcRange; /// Contains the hard limits of the power range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange power; /// Contains the hard limits of the power range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange powerTuneTemperature; /// Contains the hard limits of the Temperature range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange fanTemperature; /// Contains the hard limits of the Fan range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange fanSpeed; /// Contains the hard limits of the Fan range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange minimumPerformanceClock; } ADLODNCapabilities; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N capabilities /// /// This structure is used to store information about Overdrive N capabilities /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNCapabilitiesX2 { /// Number of levels which describe the minimum to maximum clock ranges. /// The 1st level indicates the minimum clocks, and the 2nd level /// indicates the maximum clocks. int iMaximumNumberOfPerformanceLevels; /// bit vector, which tells what are the features are supported. /// \ref: ADLODNFEATURECONTROL int iFlags; /// Contains the hard limits of the sclk range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange sEngineClockRange; /// Contains the hard limits of the mclk range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange sMemoryClockRange; /// Contains the hard limits of the vddc range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange svddcRange; /// Contains the hard limits of the power range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange power; /// Contains the hard limits of the power range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange powerTuneTemperature; /// Contains the hard limits of the Temperature range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange fanTemperature; /// Contains the hard limits of the Fan range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange fanSpeed; /// Contains the hard limits of the Fan range. Overdrive /// clocks cannot be set outside this range. ADLODNParameterRange minimumPerformanceClock; /// Contains the hard limits of the throttleNotification ADLODNParameterRange throttleNotificaion; /// Contains the hard limits of the Auto Systemclock ADLODNParameterRange autoSystemClock; } ADLODNCapabilitiesX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive level. /// /// This structure is used to store information about Overdrive level. /// This structure is used by ADLODPerformanceLevels. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNPerformanceLevel { /// clock. int iClock; /// VDCC. int iVddc; /// enabled int iEnabled; } ADLODNPerformanceLevel; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N performance levels. /// /// This structure is used to store information about Overdrive performance levels. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNPerformanceLevels { int iSize; //Automatic/manual int iMode; /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1) int iNumberOfPerformanceLevels; /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements. ADLODNPerformanceLevel aLevels[1]; } ADLODNPerformanceLevels; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N Fan Speed. /// /// This structure is used to store information about Overdrive Fan control . /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNFanControl { int iMode; int iFanControlMode; int iCurrentFanSpeedMode; int iCurrentFanSpeed; int iTargetFanSpeed; int iTargetTemperature; int iMinPerformanceClock; int iMinFanLimit; } ADLODNFanControl; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N power limit. /// /// This structure is used to store information about Overdrive power limit. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNPowerLimitSetting { int iMode; int iTDPLimit; int iMaxOperatingTemperature; } ADLODNPowerLimitSetting; typedef struct ADLODNPerformanceStatus { int iCoreClock; int iMemoryClock; int iDCEFClock; int iGFXClock; int iUVDClock; int iVCEClock; int iGPUActivityPercent; int iCurrentCorePerformanceLevel; int iCurrentMemoryPerformanceLevel; int iCurrentDCEFPerformanceLevel; int iCurrentGFXPerformanceLevel; int iUVDPerformanceLevel; int iVCEPerformanceLevel; int iCurrentBusSpeed; int iCurrentBusLanes; int iMaximumBusLanes; int iVDDC; int iVDDCI; } ADLODNPerformanceStatus; ///\brief Structure containing information about Overdrive level. /// /// This structure is used to store information about Overdrive level. /// This structure is used by ADLODPerformanceLevels. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNPerformanceLevelX2 { /// clock. int iClock; /// VDCC. int iVddc; /// enabled int iEnabled; /// MASK int iControl; } ADLODNPerformanceLevelX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N performance levels. /// /// This structure is used to store information about Overdrive performance levels. /// This structure is used by the ADL_OverdriveN_ODPerformanceLevels_Get() and ADL_OverdriveN_ODPerformanceLevels_Set() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLODNPerformanceLevelsX2 { int iSize; //Automatic/manual int iMode; /// Must be set to sizeof( \ref ADLODPerformanceLevels ) + sizeof( \ref ADLODPerformanceLevel ) * (ADLODParameters.iNumberOfPerformanceLevels - 1) int iNumberOfPerformanceLevels; /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements. ADLODNPerformanceLevelX2 aLevels[1]; } ADLODNPerformanceLevelsX2; typedef enum ADLODNCurrentPowerType { ODN_GPU_TOTAL_POWER = 0, ODN_GPU_PPT_POWER, ODN_GPU_SOCKET_POWER, ODN_GPU_CHIP_POWER } ADLODNCurrentPowerType; // in/out: CWDDEPM_CURRENTPOWERPARAMETERS typedef struct ADLODNCurrentPowerParameters { int size; ADLODNCurrentPowerType powerType; int currentPower; } ADLODNCurrentPowerParameters; //ODN Ext range data structure typedef struct ADLODNExtSingleInitSetting { int mode; int minValue; int maxValue; int step; int defaultValue; } ADLODNExtSingleInitSetting; //OD8 Ext range data structure typedef struct ADLOD8SingleInitSetting { int featureID; int minValue; int maxValue; int defaultValue; } ADLOD8SingleInitSetting; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive8 initial setting /// /// This structure is used to store information about Overdrive8 initial setting /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD8InitSetting { int count; int overdrive8Capabilities; ADLOD8SingleInitSetting od8SettingTable[OD8_COUNT]; } ADLOD8InitSetting; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive8 current setting /// /// This structure is used to store information about Overdrive8 current setting /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD8CurrentSetting { int count; int Od8SettingTable[OD8_COUNT]; } ADLOD8CurrentSetting; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive8 set setting /// /// This structure is used to store information about Overdrive8 set setting /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLOD8SingleSetSetting { int value; int requested; // 0 - default , 1 - requested int reset; // 0 - do not reset , 1 - reset setting back to default } ADLOD8SingleSetSetting; typedef struct ADLOD8SetSetting { int count; ADLOD8SingleSetSetting od8SettingTable[OD8_COUNT]; } ADLOD8SetSetting; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Performance Metrics data /// /// This structure is used to store information about Performance Metrics data output /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSingleSensorData { int supported; int value; } ADLSingleSensorData; typedef struct ADLPMLogDataOutput { int size; ADLSingleSensorData sensors[ADL_PMLOG_MAX_SENSORS]; }ADLPMLogDataOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about PPLog settings. /// /// This structure is used to store information about PPLog settings. /// This structure is used by the ADL2_PPLogSettings_Set() and ADL2_PPLogSettings_Get() functions. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPPLogSettings { int BreakOnAssert; int BreakOnWarn; int LogEnabled; int LogFieldMask; int LogDestinations; int LogSeverityEnabled; int LogSourceMask; int PowerProfilingEnabled; int PowerProfilingTimeInterval; }ADLPPLogSettings; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related Frames Per Second for AC and DC. /// /// This structure is used to store information related AC and DC Frames Per Second settings /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFPSSettingsOutput { /// size int ulSize; /// FPS Monitor is enabled in the AC state if 1 int bACFPSEnabled; /// FPS Monitor is enabled in the DC state if 1 int bDCFPSEnabled; /// Current Value of FPS Monitor in AC state int ulACFPSCurrent; /// Current Value of FPS Monitor in DC state int ulDCFPSCurrent; /// Maximum FPS Threshold allowed in PPLib for AC int ulACFPSMaximum; /// Minimum FPS Threshold allowed in PPLib for AC int ulACFPSMinimum; /// Maximum FPS Threshold allowed in PPLib for DC int ulDCFPSMaximum; /// Minimum FPS Threshold allowed in PPLib for DC int ulDCFPSMinimum; } ADLFPSSettingsOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related Frames Per Second for AC and DC. /// /// This structure is used to store information related AC and DC Frames Per Second settings /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFPSSettingsInput { /// size int ulSize; /// Settings are for Global FPS (used by CCC) int bGlobalSettings; /// Current Value of FPS Monitor in AC state int ulACFPSCurrent; /// Current Value of FPS Monitor in DC state int ulDCFPSCurrent; /// Reserved int ulReserved[6]; } ADLFPSSettingsInput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related power management logging. /// /// This structure is used to store support information for power management logging. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// enum { ADL_PMLOG_MAX_SUPPORTED_SENSORS = 256 }; typedef struct ADLPMLogSupportInfo { /// list of sensors defined by ADL_PMLOG_SENSORS unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS]; /// Reserved int ulReserved[16]; } ADLPMLogSupportInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information to start power management logging. /// /// This structure is used as input to ADL2_Adapter_PMLog_Start /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPMLogStartInput { /// list of sensors defined by ADL_PMLOG_SENSORS unsigned short usSensors[ADL_PMLOG_MAX_SUPPORTED_SENSORS]; /// Sample rate in milliseconds unsigned long ulSampleRate; /// Reserved int ulReserved[15]; } ADLPMLogStartInput; typedef struct ADLPMLogData { /// Structure version unsigned int ulVersion; /// Current driver sample rate unsigned int ulActiveSampleRate; /// Timestamp of last update unsigned long long ulLastUpdated; /// 2D array of senesor and values unsigned int ulValues[ADL_PMLOG_MAX_SUPPORTED_SENSORS][2]; /// Reserved unsigned int ulReserved[256]; } ADLPMLogData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information to start power management logging. /// /// This structure is returned as output from ADL2_Adapter_PMLog_Start /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPMLogStartOutput { /// Pointer to memory address containing logging data union { void* pLoggingAddress; unsigned long long ptr_LoggingAddress; }; /// Reserved int ulReserved[14]; } ADLPMLogStartOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information to query limts of power management logging. /// /// This structure is returned as output from ADL2_Adapter_PMLog_SensorLimits_Get /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPMLogSensorLimits { int SensorLimits[ADL_PMLOG_MAX_SENSORS][2]; //index 0: min, 1: max } ADLPMLogSensorLimits; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Get Error Counts Information /// /// This structure is used to store RAS Error Counts Get Input Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASGetErrorCountsInput { unsigned int Reserved[16]; } ADLRASGetErrorCountsInput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Get Error Counts Information /// /// This structure is used to store RAS Error Counts Get Output Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASGetErrorCountsOutput { unsigned int CorrectedErrors; // includes both DRAM and SRAM ECC unsigned int UnCorrectedErrors; // includes both DRAM and SRAM ECC unsigned int Reserved[14]; } ADLRASGetErrorCountsOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Get Error Counts Information /// /// This structure is used to store RAS Error Counts Get Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASGetErrorCounts { unsigned int InputSize; ADLRASGetErrorCountsInput Input; unsigned int OutputSize; ADLRASGetErrorCountsOutput Output; } ADLRASGetErrorCounts; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Counts Reset Information /// /// This structure is used to store RAS Error Counts Reset Input Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASResetErrorCountsInput { unsigned int Reserved[8]; } ADLRASResetErrorCountsInput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Counts Reset Information /// /// This structure is used to store RAS Error Counts Reset Output Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASResetErrorCountsOutput { unsigned int Reserved[8]; } ADLRASResetErrorCountsOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Counts Reset Information /// /// This structure is used to store RAS Error Counts Reset Information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASResetErrorCounts { unsigned int InputSize; ADLRASResetErrorCountsInput Input; unsigned int OutputSize; ADLRASResetErrorCountsOutput Output; } ADLRASResetErrorCounts; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Injection information /// /// This structure is used to store RAS Error Injection input information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASErrorInjectonInput { unsigned long long Address; ADL_RAS_INJECTION_METHOD Value; ADL_RAS_BLOCK_ID BlockId; ADL_RAS_ERROR_TYPE InjectErrorType; ADL_MEM_SUB_BLOCK_ID SubBlockIndex; unsigned int padding[9]; } ADLRASErrorInjectonInput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Injection information /// /// This structure is used to store RAS Error Injection output information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASErrorInjectionOutput { unsigned int ErrorInjectionStatus; unsigned int padding[15]; } ADLRASErrorInjectionOutput; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related RAS Error Injection information /// /// This structure is used to store RAS Error Injection information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLRASErrorInjection { unsigned int InputSize; ADLRASErrorInjectonInput Input; unsigned int OutputSize; ADLRASErrorInjectionOutput Output; } ADLRASErrorInjection; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an application /// /// This structure is used to store basic information of a recently ran or currently running application /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSGApplicationInfo { /// Application file name wchar_t strFileName[ADL_MAX_PATH]; /// Application file path wchar_t strFilePath[ADL_MAX_PATH]; /// Application version wchar_t strVersion[ADL_MAX_PATH]; /// Timestamp at which application has run long long int timeStamp; /// Holds whether the applicaition profile exists or not unsigned int iProfileExists; /// The GPU on which application runs unsigned int iGPUAffinity; /// The BDF of the GPU on which application runs ADLBdf GPUBdf; } ADLSGApplicationInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related Frames Per Second for AC and DC. /// /// This structure is used to store information related AC and DC Frames Per Second settings /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// enum { ADLPreFlipPostProcessingInfoInvalidLUTIndex = 0xFFFFFFFF }; enum ADLPreFlipPostProcessingLUTAlgorithm { ADLPreFlipPostProcessingLUTAlgorithm_Default = 0, ADLPreFlipPostProcessingLUTAlgorithm_Full, ADLPreFlipPostProcessingLUTAlgorithm_Approximation }; typedef struct ADLPreFlipPostProcessingInfo { /// size int ulSize; /// Current active state int bEnabled; /// Current selected LUT index. 0xFFFFFFF returned if nothing selected. int ulSelectedLUTIndex; /// Current selected LUT Algorithm int ulSelectedLUTAlgorithm; /// Reserved int ulReserved[12]; } ADLPreFlipPostProcessingInfo; typedef struct ADL_ERROR_REASON { int boost; //ON, when boost is Enabled int delag; //ON, when delag is Enabled int chill; //ON, when chill is Enabled int proVsr; //ON, when proVsr is Enabled }ADL_ERROR_REASON; typedef struct ADL_ERROR_REASON2 { int boost; //ON, when boost is Enabled int delag; //ON, when delag is Enabled int chill; //ON, when chill is Enabled int proVsr; //ON, when proVsr is Enabled int upscale; //ON, when RSR is Enabled }ADL_ERROR_REASON2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about DELAG Settings change reason /// /// Elements of DELAG settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_DELAG_NOTFICATION_REASON { int HotkeyChanged; //Set when Hotkey value is changed int GlobalEnableChanged; //Set when Global enable value is changed int GlobalLimitFPSChanged; //Set when Global enable value is changed }ADL_DELAG_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about DELAG Settings /// /// Elements of DELAG settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_DELAG_SETTINGS { int Hotkey; // Hotkey value int GlobalEnable; //Global enable value int GlobalLimitFPS; //Global Limit FPS int GlobalLimitFPS_MinLimit; //Gloabl Limit FPS slider min limit value int GlobalLimitFPS_MaxLimit; //Gloabl Limit FPS slider max limit value int GlobalLimitFPS_Step; //Gloabl Limit FPS step value }ADL_DELAG_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about BOOST Settings change reason /// /// Elements of BOOST settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_BOOST_NOTFICATION_REASON { int HotkeyChanged; //Set when Hotkey value is changed int GlobalEnableChanged; //Set when Global enable value is changed int GlobalMinResChanged; //Set when Global min resolution value is changed }ADL_BOOST_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about BOOST Settings /// /// Elements of BOOST settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_BOOST_SETTINGS { int Hotkey; // Hotkey value int GlobalEnable; //Global enable value int GlobalMinRes; //Gloabl Min Resolution value int GlobalMinRes_MinLimit; //Gloabl Min Resolution slider min limit value int GlobalMinRes_MaxLimit; //Gloabl Min Resolution slider max limit value int GlobalMinRes_Step; //Gloabl Min Resolution step value }ADL_BOOST_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about ProVSR Settings change reason /// /// Elements of ProVSR settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_PROVSR_NOTFICATION_REASON { int HotkeyChanged; //Set when Hotkey value is changed int GlobalEnableChanged; //Set when Global enable value is changed }ADL_PROVSR_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Pro VSR Settings /// /// Elements of ProVSR settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_PROVSR_SETTINGS { int Hotkey; // Hotkey value int GlobalEnable; //Global enable value }ADL_PROVSR_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Image Boost(OGL) Settings change reason /// /// Elements of Image Boost settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_IMAGE_BOOST_NOTFICATION_REASON { int HotkeyChanged; //Set when Hotkey value is changed int GlobalEnableChanged; //Set when Global enable value is changed }ADL_IMAGE_BOOST_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about OGL IMAGE BOOST Settings /// /// Elements of OGL IMAGE BOOST settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_IMAGE_BOOST_SETTINGS { int Hotkey; // Hotkey value int GlobalEnable; //Global enable value }ADL_IMAGE_BOOST_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about RIS Settings change reason /// /// Elements of RIS settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RIS_NOTFICATION_REASON { unsigned int GlobalEnableChanged; //Set when Global enable value is changed unsigned int GlobalSharpeningDegreeChanged; //Set when Global sharpening Degree value is changed }ADL_RIS_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about RIS Settings /// /// Elements of RIS settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RIS_SETTINGS { int GlobalEnable; //Global enable value int GlobalSharpeningDegree; //Global sharpening value int GlobalSharpeningDegree_MinLimit; //Gloabl sharpening slider min limit value int GlobalSharpeningDegree_MaxLimit; //Gloabl sharpening slider max limit value int GlobalSharpeningDegree_Step; //Gloabl sharpening step value }ADL_RIS_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about CHILL Settings change reason /// /// Elements of Chiil settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_CHILL_NOTFICATION_REASON { int HotkeyChanged; //Set when Hotkey value is changed int GlobalEnableChanged; //Set when Global enable value is changed int GlobalMinFPSChanged; //Set when Global min FPS value is changed int GlobalMaxFPSChanged; //Set when Global max FPS value is changed }ADL_CHILL_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about CHILL Settings /// /// Elements of Chill settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_CHILL_SETTINGS { int Hotkey; // Hotkey value int GlobalEnable; //Global enable value int GlobalMinFPS; //Global Min FPS value int GlobalMaxFPS; //Global Max FPS value int GlobalFPS_MinLimit; //Gloabl FPS slider min limit value int GlobalFPS_MaxLimit; //Gloabl FPS slider max limit value int GlobalFPS_Step; //Gloabl FPS Slider step value }ADL_CHILL_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about DRIVERUPSCALE Settings change reason /// /// Elements of DRIVERUPSCALE settings changed reason. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_DRIVERUPSCALE_NOTFICATION_REASON { int ModeOverrideEnabledChanged; //Set when Global min resolution value is changed int GlobalEnabledChanged; //Set when Global enable value is changed }ADL_DRIVERUPSCALE_NOTFICATION_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about DRIVERUPSCALE Settings /// /// Elements of DRIVERUPSCALE settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_DRIVERUPSCALE_SETTINGS { int ModeOverrideEnabled; int GlobalEnabled; }ADL_DRIVERUPSCALE_SETTINGS; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure Containing R G B values for Radeon USB LED Bar /// /// Elements of RGB Values. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RADEON_LED_COLOR_CONFIG { unsigned short R : 8; // Red Value unsigned short G : 8; // Green Value unsigned short B : 8; // Blue Value }ADL_RADEON_LED_COLOR_CONFIG; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure Containing All Generic LED configuration for user requested LED pattern. The driver will apply the confgiuration as requested /// /// Elements of Radeon USB LED configuration. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RADEON_LED_PATTERN_CONFIG_GENERIC { short brightness : 8; // Brightness of LED short speed : 8; // Speed of LED pattern bool directionCounterClockWise; //Direction of LED Pattern ADL_RADEON_LED_COLOR_CONFIG colorConfig; // RGB value of LED pattern char morseCodeText[ADL_RADEON_LED_MAX_MORSE_CODE]; // Morse Code user input for Morse Code LED pattern char morseCodeTextOutPut[ADL_RADEON_LED_MAX_MORSE_CODE]; // Driver set output representation of Morse Code int morseCodeTextOutPutLen; // Length of Morse Code output }ADL_RADEON_LED_PATTERN_CONFIG_GENERIC; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure Containing All custom grid pattern LED configuration for user requested LED grid pattern. The driver will apply the confgiuration as requested /// /// Elements of Radeon USB LED custom grid configuration. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RADEON_LED_CUSTOM_LED_CONFIG { short brightness : 8; // Brightness of LED 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 }ADL_RADEON_LED_CUSTOM_GRID_LED_CONFIG; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure Containing All Radeon USB LED requests and controls. /// /// Elements of Radeon USB LED Controls. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_RADEON_LED_PATTERN_CONFIG { ADL_RADEON_USB_LED_BAR_CONTROLS control; //Requested LED pattern union { ADL_RADEON_LED_PATTERN_CONFIG_GENERIC genericPararmeters; //Requested pattern configuration settings ADL_RADEON_LED_CUSTOM_GRID_LED_CONFIG customGridConfig; //Requested custom grid configuration settings }; }ADL_RADEON_LED_PATTERN_CONFIG; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the graphics adapter with extended caps /// /// This structure is used to store various information about the graphics adapter. This /// information can be returned to the user. Alternatively, it can be used to access various driver calls to set /// or fetch various settings upon the user's request. /// This AdapterInfoX2 struct extends the AdapterInfo struct in adl_structures.h /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct AdapterInfoX2 { /// \ALL_STRUCT_MEM /// Size of the structure. int iSize; /// The ADL index handle. One GPU may be associated with one or two index handles int iAdapterIndex; /// The unique device ID associated with this adapter. char strUDID[ADL_MAX_PATH]; /// The BUS number associated with this adapter. int iBusNumber; /// The driver number associated with this adapter. int iDeviceNumber; /// The function number. int iFunctionNumber; /// The vendor ID associated with this adapter. int iVendorID; /// Adapter name. char strAdapterName[ADL_MAX_PATH]; /// Display name. For example, "\\\\Display0" char strDisplayName[ADL_MAX_PATH]; /// 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 int iPresent; /// Exist or not; 1 is exist and 0 is not present. int iExist; /// Driver registry path. char strDriverPath[ADL_MAX_PATH]; /// Driver registry path Ext for. char strDriverPathExt[ADL_MAX_PATH]; /// PNP string from Windows. char strPNPString[ADL_MAX_PATH]; /// It is generated from EnumDisplayDevices. int iOSDisplayIndex; /// The bit mask identifies the adapter info int iInfoMask; /// The bit identifies the adapter info \ref define_adapter_info int iInfoValue; } AdapterInfoX2, *LPAdapterInfoX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver gamut space , whether it is related to source or to destination, overlay or graphics /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGamutReference { /// mask whether it is related to source or to destination, overlay or graphics int iGamutRef; }ADLGamutReference; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver supported gamut spaces , capability method /// /// This structure is used to get driver all supported gamut spaces /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGamutInfo { ///Any combination of following ADL_GAMUT_SPACE_CCIR_709 - ADL_GAMUT_SPACE_CUSTOM int SupportedGamutSpace; ///Any combination of following ADL_WHITE_POINT_5000K - ADL_WHITE_POINT_CUSTOM int SupportedWhitePoint; } ADLGamutInfo; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver point coordinates /// /// This structure is used to store the driver point coodinates for gamut and white point /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPoint { /// x coordinate int iX; /// y coordinate int iY; } ADLPoint; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver supported gamut coordinates /// /// This structure is used to store the driver supported supported gamut coordinates /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGamutCoordinates { /// red channel chromasity coordinate ADLPoint Red; /// green channel chromasity coordinate ADLPoint Green; /// blue channel chromasity coordinate ADLPoint Blue; } ADLGamutCoordinates; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about driver current gamut space , parent struct for ADLGamutCoordinates and ADLWhitePoint /// This structure is used to get/set driver supported gamut space /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGamutData { ///used as mask and could be 4 options ///BIT_0 If flag ADL_GAMUT_REFERENCE_SOURCE is asserted set operation is related to gamut source , ///if not gamut destination ///BIT_1 If flag ADL_GAMUT_GAMUT_VIDEO_CONTENT is asserted ///BIT_2,BIT_3 used as mask and could be 4 options custom (2) + predefined (2) ///0. Gamut predefined, white point predefined -> 0 | 0 ///1. Gamut predefined, white point custom -> 0 | ADL_CUSTOM_WHITE_POINT ///2. White point predefined, gamut custom -> 0 | ADL_CUSTOM_GAMUT ///3. White point custom, gamut custom -> ADL_CUSTOM_GAMUT | ADL_CUSTOM_WHITE_POINT int iFeature; ///one of ADL_GAMUT_SPACE_CCIR_709 - ADL_GAMUT_SPACE_CIE_RGB int iPredefinedGamut; ///one of ADL_WHITE_POINT_5000K - ADL_WHITE_POINT_9300K int iPredefinedWhitePoint; ///valid when in mask avails ADL_CUSTOM_WHITE_POINT ADLPoint CustomWhitePoint; ///valid when in mask avails ADL_CUSTOM_GAMUT ADLGamutCoordinates CustomGamut; } ADLGamutData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing detailed timing parameters. /// /// This structure is used to store the detailed timing parameters. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDetailedTimingX2 { /// Size of the structure. int iSize; /// Timing flags. \ref define_detailed_timing_flags int sTimingFlags; /// Total width (columns). int sHTotal; /// Displayed width. int sHDisplay; /// Horizontal sync signal offset. int sHSyncStart; /// Horizontal sync signal width. int sHSyncWidth; /// Total height (rows). int sVTotal; /// Displayed height. int sVDisplay; /// Vertical sync signal offset. int sVSyncStart; /// Vertical sync signal width. int sVSyncWidth; /// Pixel clock value. int sPixelClock; /// Overscan right. short sHOverscanRight; /// Overscan left. short sHOverscanLeft; /// Overscan bottom. short sVOverscanBottom; /// Overscan top. short sVOverscanTop; short sOverscan8B; short sOverscanGR; } ADLDetailedTimingX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing display mode information. /// /// This structure is used to store the display mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLDisplayModeInfoX2 { /// Timing standard of the current mode. \ref define_modetiming_standard int iTimingStandard; /// Applicable timing standards for the current mode. int iPossibleStandard; /// Refresh rate factor. int iRefreshRate; /// Num of pixels in a row. int iPelsWidth; /// Num of pixels in a column. int iPelsHeight; /// Detailed timing parameters. ADLDetailedTimingX2 sDetailedTiming; } ADLDisplayModeInfoX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about I2C. /// /// This structure is used to store the I2C information for the current adapter. /// This structure is used by \ref ADL_Display_WriteAndReadI2CLargePayload /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLI2CLargePayload { /// Size of the structure int iSize; /// Numerical value representing hardware I2C. int iLine; /// The 7-bit I2C slave device address. int iAddress; /// The offset of the data from the address. int iOffset; /// Read from or write to slave device. \ref ADL_DL_I2C_ACTIONREAD or \ref ADL_DL_I2C_ACTIONWRITE int iAction; /// I2C clock speed in KHz. int iSpeed; /// I2C option flags. \ref define_ADLI2CLargePayload int iFlags; /// A numerical value representing the number of bytes to be sent or received on the I2C bus. int iDataSize; /// Address of the characters which are to be sent or received on the I2C bus. char *pcData; } ADLI2CLargePayload; /// Size in bytes of the Feature Name #define ADL_FEATURE_NAME_LENGTH 16 ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing the Multimedia Feature Name /// //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFeatureName { /// The Feature Name char FeatureName[ADL_FEATURE_NAME_LENGTH]; } ADLFeatureName, *LPADLFeatureName; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about MM Feature Capabilities. /// //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFeatureCaps { /// The Feature Name ADLFeatureName Name; // char strFeatureName[ADL_FEATURE_NAME_LENGTH]; /// Group ID. All Features in the same group are shown sequentially in the same UI Page. int iGroupID; /// Visual ID. Places one or more features in a Group Box. If zero, no Group Box is added. int iVisualID; /// Page ID. All Features with the same Page ID value are shown together on the same UI page. int iPageID; /// Feature Property Mask. Indicates which are the valid bits for iFeatureProperties. int iFeatureMask; /// Feature Property Values. See definitions for ADL_FEATURE_PROPERTIES_XXX int iFeatureProperties; /// Apperance of the User-Controlled Boolean. int iControlType; /// Style of the User-Controlled Boolean. int iControlStyle; /// Apperance of the Adjustment Controls. int iAdjustmentType; /// Style of the Adjustment Controls. int iAdjustmentStyle; /// Default user-controlled boolean value. Valid only if ADLFeatureCaps supports user-controlled boolean. int bDefault; /// Minimum integer value. Valid only if ADLFeatureCaps indicates support for integers. int iMin; /// Maximum integer value. Valid only if ADLFeatureCaps indicates support for integers. int iMax; /// Step integer value. Valid only if ADLFeatureCaps indicates support for integers. int iStep; /// Default integer value. Valid only if ADLFeatureCaps indicates support for integers. int iDefault; /// Minimum float value. Valid only if ADLFeatureCaps indicates support for floats. float fMin; /// Maximum float value. Valid only if ADLFeatureCaps indicates support for floats. float fMax; /// Step float value. Valid only if ADLFeatureCaps indicates support for floats. float fStep; /// Default float value. Valid only if ADLFeatureCaps indicates support for floats. float fDefault; /// The Mask for available bits for enumerated values.(If ADLFeatureCaps supports ENUM values) int EnumMask; } ADLFeatureCaps, *LPADLFeatureCaps; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about MM Feature Values. /// //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLFeatureValues { /// The Feature Name ADLFeatureName Name; // char strFeatureName[ADL_FEATURE_NAME_LENGTH]; /// User controlled Boolean current value. Valid only if ADLFeatureCaps supports Boolean. int bCurrent; /// Current integer value. Valid only if ADLFeatureCaps indicates support for integers. int iCurrent; /// Current float value. Valid only if ADLFeatureCaps indicates support for floats. float fCurrent; /// The States for the available bits for enumerated values. int EnumStates; } ADLFeatureValues, *LPADLFeatureValues; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing HDCP Settings info /// /// This structure is used to store the HDCP settings of a /// display /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLHDCPSettings { int iHDCPProtectionVersion; // Version, starting from 1 int iHDCPCaps; //Caps used to ensure at least one protection scheme is supported, 1 is HDCP1X and 2 is HDCP22 int iAllowAll; //Allow all is true, disable all is false int iHDCPVale; int iHDCPMask; } ADLHDCPSettings; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing Mantle App info /// /// This structure is used to store the Mantle Driver information /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLMantleAppInfo { /// mantle api version int apiVersion; /// mantle driver version long driverVersion; /// mantle vendroe id long vendorId; /// mantle device id long deviceId; /// mantle gpu type; int gpuType; /// gpu name char gpuName[256]; /// mem size int maxMemRefsPerSubmission; /// virtual mem size long long virtualMemPageSize; /// mem update long long maxInlineMemoryUpdateSize; /// bound descriptot long maxBoundDescriptorSets; /// thread group size long maxThreadGroupSize; /// time stamp frequency long long timestampFrequency; /// color target long multiColorTargetClears; }ADLMantleAppInfo, *LPADLMantleAppInfo; //////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about SDIData ///This structure is used to store information about the state of the SDI whether it is on ///or off and the current size of the segment or aperture size. //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSDIData { /// The SDI state, ADL_SDI_ON or ADL_SDI_OFF, for the current SDI mode int iSDIState; /// Size of the memory segment for SDI (in MB). int iSizeofSDISegment; } ADLSDIData, *LPADLSDIData; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about FRTCPRO Settings /// /// Elements of FRTCPRO settings. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_FRTCPRO_Settings { int DefaultState; //The default status for FRTC pro int CurrentState; //The current enable/disable status for FRTC pro unsigned int DefaultValue; //The default FPS value for FRTC pro. unsigned int CurrentValue; //The current FPS value for FRTC pro. unsigned int maxSupportedFps; //The max value for FRTC pro. unsigned int minSupportedFps; //The min value for FRTC pro. }ADL_FRTCPRO_Settings, *LPADLFRTCProSettings; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about FRTCPRO Settings changed reason /// /// Reason of FRTCPRO changed. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_FRTCPRO_CHANGED_REASON { int StateChanged; // FRTCPro state changed int ValueChanged; // FRTCPro value changed }ADL_FRTCPRO_CHANGED_REASON; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing the display mode definition used per controller. /// /// This structure is used to store the display mode definition used per controller. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADL_DL_DISPLAY_MODE { int iPelsHeight; // Vertical resolution (in pixels). int iPelsWidth; // Horizontal resolution (in pixels). int iBitsPerPel; // Color depth. int iDisplayFrequency; // Refresh rate. } ADL_DL_DISPLAY_MODE; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information related DCE support /// /// This structure is used to store a bit vector of possible DCE support /// /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef union _ADLDCESupport { struct { unsigned int PrePhasis : 1; unsigned int voltageSwing : 1; unsigned int reserved : 30; }bits; unsigned int u32All; }ADLDCESupport; ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure for Smart shift 2.0 settings /// /// This structure is used to return the smart shift settings /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSmartShiftSettings { int iMinRange; int iMaxRange; int iDefaultMode; //Refer to CWDDEPM_ODN_CONTROL_TYPE int iDefaultValue; int iCurrentMode; int iCurrentValue; int iFlags; //refer to define_smartshift_bits }ADLSmartShiftSettings, *LPADLSmartShiftSettings; #endif /* ADL_STRUCTURES_H_ */