diff --git a/renderdoc/driver/ihv/amd/official/RGP/ADL/README.md b/renderdoc/driver/ihv/amd/official/RGP/ADL/README.md new file mode 100644 index 000000000..9e057ec48 --- /dev/null +++ b/renderdoc/driver/ihv/amd/official/RGP/ADL/README.md @@ -0,0 +1 @@ +This comes from https://github.com/GPUOpen-Tools/common-lib-amd-ADL @ 04b97aa3138c282d9c2b84b3b2f3d06decbea6df diff --git a/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_defines.h b/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_defines.h index 442908b12..649cf63b6 100644 --- a/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_defines.h +++ b/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_defines.h @@ -1,6 +1,6 @@ // // Copyright (c) 2008 - 2013 Advanced Micro Devices, Inc. - + // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, // EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. @@ -8,7 +8,7 @@ /// \file adl_defines.h /// \brief Contains all definitions exposed by ADL for \ALL platforms.\n Included in ADL SDK /// -/// This file contains all definitions used by ADL. +/// This file contains all definitions used by ADL. /// The ADL definitions include the following: /// \li ADL error codes /// \li Enumerations for the ADLDisplayInfo structure @@ -56,9 +56,9 @@ #define ADL_DDC_OPTION_SWITCHDDC2 0x00000001 /// Save command in the registry under a unique key, corresponding to parameter \b iCommandIndex #define ADL_DDC_OPTION_RESTORECOMMAND 0x00000002 -/// Combine write-read DDC block access command. +/// Combine write-read DDC block access command. #define ADL_DDC_OPTION_COMBOWRITEREAD 0x00000010 -/// Direct DDC access to the immediate device connected to graphics card. +/// Direct DDC access to the immediate device connected to graphics card. /// MST with this option set: DDC command is sent to first branch. /// MST with this option not set: DDC command is sent to the end node sink device. #define ADL_DDC_OPTION_SENDTOIMMEDIATEDEVICE 0x00000020 @@ -87,7 +87,7 @@ #define ADL_OK_MODE_CHANGE 2 /// All OK, but with warning #define ADL_OK_WARNING 1 -/// ADL function completed successfully +/// ADL function completed successfully #define ADL_OK 0 /// Generic Error. Most likely one or more of the Escape calls to the driver failed! #define ADL_ERR -1 @@ -115,6 +115,8 @@ #define ADL_ERR_RESOURCE_CONFLICT -12 //Failed to update some of the values. Can be returned by set request that include multiple values if not all values were successfully committed. #define ADL_ERR_SET_INCOMPLETE -20 +/// There's no Linux XDisplay in Linux Console environment +#define ADL_ERR_NO_XDISPLAY -21 // @} /// @@ -157,7 +159,7 @@ #define ADL_DISPLAY_COLOR_CONTRAST (1 << 1) #define ADL_DISPLAY_COLOR_SATURATION (1 << 2) #define ADL_DISPLAY_COLOR_HUE (1 << 3) -#define ADL_DISPLAY_COLOR_TEMPERATURE (1 << 4) +#define ADL_DISPLAY_COLOR_TEMPERATURE (1 << 4) /// Color Temperature Source is EDID #define ADL_DISPLAY_COLOR_TEMPERATURE_SOURCE_EDID (1 << 5) @@ -178,6 +180,11 @@ #define ADL_DISPLAY_ADJUST_UNDERSCAN (1<<6) // @} +///Down-scale support +#define ADL_DISPLAY_CAPS_DOWNSCALE (1 << 0) + +/// Sharpness support +#define ADL_DISPLAY_CAPS_SHARPNESS (1 << 0) /// \defgroup define_desktop_config Desktop Configuration Flags /// These flags are used by ADL_DesktopConfig_xxx @@ -366,16 +373,16 @@ /// This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave #define ADL_STEREO_AUTO_VERTICAL (1 << 31) /// This value indicates that the workstation card supports passive stereo, ie. non stereo sync -#define ADL_STEREO_PASSIVE (1 << 6) +#define ADL_STEREO_PASSIVE (1 << 6) /// This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave #define ADL_STEREO_PASSIVE_HORIZ (1 << 7) /// This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave #define ADL_STEREO_PASSIVE_VERT (1 << 8) -/// This value indicates that the workstation card supports auto-stereo monitors with Samsung. +/// This value indicates that the workstation card supports auto-stereo monitors with Samsung. #define ADL_STEREO_AUTO_SAMSUNG (1 << 11) -/// This value indicates that the workstation card supports auto-stereo monitors with Tridility. +/// This value indicates that the workstation card supports auto-stereo monitors with Tridility. #define ADL_STEREO_AUTO_TSL (1 << 12) -/// This value indicates that the workstation card supports DeepBitDepth (10 bpp) +/// This value indicates that the workstation card supports DeepBitDepth (10 bpp) #define ADL_DEEPBITDEPTH_10BPP_SUPPORTED (1 << 5) /// This value indicates that the workstation supports 8-Bit Grayscale @@ -672,6 +679,7 @@ #define ADL_DISPLAY_PIXELFORMAT_YCRCB422 (1 << 2) //Limited range #define ADL_DISPLAY_PIXELFORMAT_RGB_LIMITED_RANGE (1 << 3) #define ADL_DISPLAY_PIXELFORMAT_RGB_FULL_RANGE ADL_DISPLAY_PIXELFORMAT_RGB //Full range +#define ADL_DISPLAY_PIXELFORMAT_YCRCB420 (1 << 4) // @} /// \defgroup define_contype Connector Type Values @@ -691,7 +699,7 @@ // @} /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_DISPLAYINFO_ Definitions +// ADL_DISPLAY_DISPLAYINFO_ Definitions // for ADLDisplayInfo.iDisplayInfoMask and ADLDisplayInfo.iDisplayInfoValue // (bit-vector) /////////////////////////////////////////////////////////////////////////// @@ -709,14 +717,14 @@ #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_SINGLE 0x00000100 #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_CLONE 0x00000200 -/// Legacy support for XP +/// Legacy support for XP #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_2VSTRETCH 0x00000400 #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_2HSTRETCH 0x00000800 #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_EXTENDED 0x00001000 -/// More support manners +/// More support manners #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_NSTRETCH1GPU 0x00010000 -#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_NSTRETCHNGPU 0x00020000 +#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_NSTRETCHNGPU 0x00020000 #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_RESERVED2 0x00040000 #define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_RESERVED3 0x00080000 @@ -727,7 +735,7 @@ /////////////////////////////////////////////////////////////////////////// -// ADL_ADAPTER_DISPLAY_MANNER_SUPPORTED_ Definitions +// ADL_ADAPTER_DISPLAY_MANNER_SUPPORTED_ Definitions // for ADLAdapterDisplayCap of ADL_Adapter_Display_Cap() // (bit-vector) /////////////////////////////////////////////////////////////////////////// @@ -739,7 +747,7 @@ #define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_NSTRETCH1GPU 0x00000008 #define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_NSTRETCHNGPU 0x00000010 -/// Legacy support for XP +/// Legacy support for XP #define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_2VSTRETCH 0x00000020 #define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_2HSTRETCH 0x00000040 #define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_EXTENDED 0x00000080 @@ -749,7 +757,7 @@ /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_DISPLAYMAP_MANNER_ Definitions +// ADL_DISPLAY_DISPLAYMAP_MANNER_ Definitions // for ADLDisplayMap.iDisplayMapMask and ADLDisplayMap.iDisplayMapValue // (bit-vector) /////////////////////////////////////////////////////////////////////////// @@ -765,21 +773,21 @@ // @} /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_DISPLAYMAP_OPTION_ Definitions +// ADL_DISPLAY_DISPLAYMAP_OPTION_ Definitions // for iOption in function ADL_Display_DisplayMapConfig_Get // (bit-vector) /////////////////////////////////////////////////////////////////////////// #define ADL_DISPLAY_DISPLAYMAP_OPTION_GPUINFO 0x00000001 /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_DISPLAYTARGET_ Definitions +// ADL_DISPLAY_DISPLAYTARGET_ Definitions // for ADLDisplayTarget.iDisplayTargetMask and ADLDisplayTarget.iDisplayTargetValue // (bit-vector) /////////////////////////////////////////////////////////////////////////// #define ADL_DISPLAY_DISPLAYTARGET_PREFERRED 0x00000001 /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_POSSIBLEMAPRESULT_VALID Definitions +// ADL_DISPLAY_POSSIBLEMAPRESULT_VALID Definitions // for ADLPossibleMapResult.iPossibleMapResultMask and ADLPossibleMapResult.iPossibleMapResultValue // (bit-vector) /////////////////////////////////////////////////////////////////////////// @@ -788,7 +796,7 @@ #define ADL_DISPLAY_POSSIBLEMAPRESULT_OVERLAPSUPPORTED 0x00000004 /////////////////////////////////////////////////////////////////////////// -// ADL_DISPLAY_MODE_ Definitions +// ADL_DISPLAY_MODE_ Definitions // for ADLMode.iModeMask, ADLMode.iModeValue, and ADLMode.iModeFlag // (bit-vector) /////////////////////////////////////////////////////////////////////////// @@ -808,7 +816,7 @@ // @} /////////////////////////////////////////////////////////////////////////// -// ADL_OSMODEINFO Definitions +// ADL_OSMODEINFO Definitions /////////////////////////////////////////////////////////////////////////// /// \defgroup define_osmode OS Mode Values // @{ @@ -832,9 +840,9 @@ /////////////////////////////////////////////////////////////////////////// // ADLThreadingModel Enumeration /////////////////////////////////////////////////////////////////////////// -/// \defgroup thread_model -/// Used with \ref ADL_Main_ControlX2_Create and \ref ADL2_Main_ControlX2_Create to specify how ADL handles API calls when executed by multiple threads concurrently. -/// \brief Declares ADL threading behavior. +/// \defgroup thread_model +/// Used with \ref ADL_Main_ControlX2_Create and \ref ADL2_Main_ControlX2_Create to specify how ADL handles API calls when executed by multiple threads concurrently. +/// \brief Declares ADL threading behavior. // @{ typedef enum ADLThreadingModel { @@ -847,15 +855,15 @@ typedef enum ADLThreadingModel // ADLPurposeCode Enumeration /////////////////////////////////////////////////////////////////////////// enum ADLPurposeCode -{ - ADL_PURPOSECODE_NORMAL = 0, - ADL_PURPOSECODE_HIDE_MODE_SWITCH, - ADL_PURPOSECODE_MODE_SWITCH, - ADL_PURPOSECODE_ATTATCH_DEVICE, - ADL_PURPOSECODE_DETACH_DEVICE, - ADL_PURPOSECODE_SETPRIMARY_DEVICE, - ADL_PURPOSECODE_GDI_ROTATION, - ADL_PURPOSECODE_ATI_ROTATION +{ + ADL_PURPOSECODE_NORMAL = 0, + ADL_PURPOSECODE_HIDE_MODE_SWITCH, + ADL_PURPOSECODE_MODE_SWITCH, + ADL_PURPOSECODE_ATTATCH_DEVICE, + ADL_PURPOSECODE_DETACH_DEVICE, + ADL_PURPOSECODE_SETPRIMARY_DEVICE, + ADL_PURPOSECODE_GDI_ROTATION, + ADL_PURPOSECODE_ATI_ROTATION }; /////////////////////////////////////////////////////////////////////////// // ADLAngle Enumeration @@ -871,20 +879,20 @@ enum ADLAngle /////////////////////////////////////////////////////////////////////////// // ADLOrientationDataType Enumeration /////////////////////////////////////////////////////////////////////////// -enum ADLOrientationDataType -{ - ADL_ORIENTATIONTYPE_OSDATATYPE, - ADL_ORIENTATIONTYPE_NONOSDATATYPE +enum ADLOrientationDataType +{ + ADL_ORIENTATIONTYPE_OSDATATYPE, + ADL_ORIENTATIONTYPE_NONOSDATATYPE }; /////////////////////////////////////////////////////////////////////////// // ADLPanningMode Enumeration /////////////////////////////////////////////////////////////////////////// enum ADLPanningMode -{ - ADL_PANNINGMODE_NO_PANNING = 0, - ADL_PANNINGMODE_AT_LEAST_ONE_NO_PANNING = 1, - ADL_PANNINGMODE_ALLOW_PANNING = 2, +{ + ADL_PANNINGMODE_NO_PANNING = 0, + ADL_PANNINGMODE_AT_LEAST_ONE_NO_PANNING = 1, + ADL_PANNINGMODE_ALLOW_PANNING = 2, }; /////////////////////////////////////////////////////////////////////////// @@ -892,7 +900,7 @@ enum ADLPanningMode /////////////////////////////////////////////////////////////////////////// enum ADLLARGEDESKTOPTYPE { - ADL_LARGEDESKTOPTYPE_NORMALDESKTOP = 0, + ADL_LARGEDESKTOPTYPE_NORMALDESKTOP = 0, ADL_LARGEDESKTOPTYPE_PSEUDOLARGEDESKTOP = 1, ADL_LARGEDESKTOPTYPE_VERYLARGEDESKTOP = 2 }; @@ -905,6 +913,17 @@ enum ADLPlatForm GRAPHICS_PLATFORM_DESKTOP = 0, GRAPHICS_PLATFORM_MOBILE = 1 }; + +/////////////////////////////////////////////////////////////////////////// +// ADLGraphicCoreGeneration Enumeration +/////////////////////////////////////////////////////////////////////////// +enum ADLGraphicCoreGeneration +{ + ADL_GRAPHIC_CORE_GENERATION_UNDEFINED = 0, + ADL_GRAPHIC_CORE_GENERATION_PRE_GCN = 1, + ADL_GRAPHIC_CORE_GENERATION_GCN = 2 +}; + // Other Definitions for internal use // Values for ADL_Display_WriteAndReadI2CRev_Get() @@ -934,30 +953,79 @@ enum ADLPlatForm #define ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE 1 #define ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING 2 /// Enables ITC processing for HDMI panels that are capable of the feature -#define ADL_DL_DISPLAYPROPERTY_TYPE_ITCFLAGENABLE 9 +#define ADL_DL_DISPLAYPROPERTY_TYPE_ITCFLAGENABLE 9 +#define ADL_DL_DISPLAYPROPERTY_TYPE_DOWNSCALE 11 /// Values for ADLDisplayContent.iContentType -/// Certain HDMI panels that support ITC have support for a feature such that, the display on the panel +/// Certain HDMI panels that support ITC have support for a feature such that, the display on the panel /// can be adjusted to optimize the view of the content being displayed, depending on the type of content. #define ADL_DL_DISPLAYCONTENT_TYPE_GRAPHICS 1 #define ADL_DL_DISPLAYCONTENT_TYPE_PHOTO 2 -#define ADL_DL_DISPLAYCONTENT_TYPE_CINEMA 4 +#define ADL_DL_DISPLAYCONTENT_TYPE_CINEMA 4 #define ADL_DL_DISPLAYCONTENT_TYPE_GAME 8 - - //values for ADLDisplayProperty.iExpansionMode #define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_CENTER 0 #define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_FULLSCREEN 1 #define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_ASPECTRATIO 2 -//values for ADL_Display_DitherState_Get -#define ADL_DL_DISPLAY_DITHER_UNKNOWN 0 -#define ADL_DL_DISPLAY_DITHER_DISABLED 1 -#define ADL_DL_DISPLAY_DITHER_ENABLED 2 + +///\defgroup define_dither_states Dithering options +// @{ +/// Dithering disabled. +#define ADL_DL_DISPLAY_DITHER_DISABLED 0 +/// Use default driver settings for dithering. Note that the default setting could be dithering disabled. +#define ADL_DL_DISPLAY_DITHER_DRIVER_DEFAULT 1 +/// Temporal dithering to 6 bpc. Note that if the input is 12 bits, the two least significant bits will be truncated. +#define ADL_DL_DISPLAY_DITHER_FM6 2 +/// Temporal dithering to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_FM8 3 +/// Temporal dithering to 10 bpc. +#define ADL_DL_DISPLAY_DITHER_FM10 4 +/// Spatial dithering to 6 bpc. Note that if the input is 12 bits, the two least significant bits will be truncated. +#define ADL_DL_DISPLAY_DITHER_DITH6 5 +/// Spatial dithering to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_DITH8 6 +/// Spatial dithering to 10 bpc. +#define ADL_DL_DISPLAY_DITHER_DITH10 7 +/// Spatial dithering to 6 bpc. Random number generators are reset every frame, so the same input value of a certain pixel will always be dithered to the same output value. Note that if the input is 12 bits, the two least significant bits will be truncated. +#define ADL_DL_DISPLAY_DITHER_DITH6_NO_FRAME_RAND 8 +/// Spatial dithering to 8 bpc. Random number generators are reset every frame, so the same input value of a certain pixel will always be dithered to the same output value. +#define ADL_DL_DISPLAY_DITHER_DITH8_NO_FRAME_RAND 9 +/// Spatial dithering to 10 bpc. Random number generators are reset every frame, so the same input value of a certain pixel will always be dithered to the same output value. +#define ADL_DL_DISPLAY_DITHER_DITH10_NO_FRAME_RAND 10 +/// Truncation to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN6 11 +/// Truncation to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN8 12 +/// Truncation to 10 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10 13 +/// Truncation to 10 bpc followed by spatial dithering to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH8 14 +/// Truncation to 10 bpc followed by spatial dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH6 15 +/// Truncation to 10 bpc followed by temporal dithering to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10_FM8 16 +/// Truncation to 10 bpc followed by temporal dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10_FM6 17 +/// Truncation to 10 bpc followed by spatial dithering to 8 bpc and temporal dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH8_FM6 18 +/// Spatial dithering to 10 bpc followed by temporal dithering to 8 bpc. +#define ADL_DL_DISPLAY_DITHER_DITH10_FM8 19 +/// Spatial dithering to 10 bpc followed by temporal dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_DITH10_FM6 20 +/// Truncation to 8 bpc followed by spatial dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN8_DITH6 21 +/// Truncation to 8 bpc followed by temporal dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_TRUN8_FM6 22 +/// Spatial dithering to 8 bpc followed by temporal dithering to 6 bpc. +#define ADL_DL_DISPLAY_DITHER_DITH8_FM6 23 +#define ADL_DL_DISPLAY_DITHER_LAST ADL_DL_DISPLAY_DITHER_DITH8_FM6 +// @} + /// Display Get Cached EDID flag #define ADL_MAX_EDIDDATA_SIZE 256 // number of UCHAR @@ -974,8 +1042,10 @@ enum ADLPlatForm ///\defgroup define_display_packet Display Data Packet Types // @{ #define ADL_DL_DISPLAY_DATA_PACKET__TYPE__AVI 0x00000001 -#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__RESERVED 0x00000002 +#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__GAMMUT 0x00000002 #define ADL_DL_DISPLAY_DATA_PACKET__TYPE__VENDORINFO 0x00000004 +#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__HDR 0x00000008 +#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__SPD 0x00000010 // @} // matrix types @@ -1058,6 +1128,7 @@ enum ADLPlatForm #define ADL_ASIC_XGP (1 << 4) #define ADL_ASIC_FUSION (1 << 5) #define ADL_ASIC_FIRESTREAM (1 << 6) +#define ADL_ASIC_EMBEDDED (1 << 7) // @} ///\defgroup define_detailed_timing_flags Detailed Timimg Flags @@ -1091,7 +1162,7 @@ enum ADLPlatForm /// may not be active in x-server #define ADL_XSERVERINFO_XINERAMAACTIVE (1<<0) -/// RandR 1.2 is supported by driver, RandR extension may report version 1.2 +/// RandR 1.2 is supported by driver, RandR extension may report version 1.2 /// but driver may not support it #define ADL_XSERVERINFO_RANDR12SUPPORTED (1<<1) // @ @@ -1110,7 +1181,21 @@ enum ADLPlatForm #define ADL_DISPLAY_SLSGRID_CAP_OPTION_RELATIVETO_LANDSCAPE 0x00000001 #define ADL_DISPLAY_SLSGRID_CAP_OPTION_RELATIVETO_CURRENTANGLE 0x00000002 #define ADL_DISPLAY_SLSGRID_PORTAIT_MODE 0x00000004 +#define ADL_DISPLAY_SLSGRID_KEEPTARGETROTATION 0x00000080 +#define ADL_DISPLAY_SLSGRID_SAMEMODESLS_SUPPORT 0x00000010 +#define ADL_DISPLAY_SLSGRID_MIXMODESLS_SUPPORT 0x00000020 +#define ADL_DISPLAY_SLSGRID_DISPLAYROTATION_SUPPORT 0x00000040 +#define ADL_DISPLAY_SLSGRID_DESKTOPROTATION_SUPPORT 0x00000080 + + +#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_FIT 0x0100 +#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_FILL 0x0200 +#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_EXPAND 0x0400 + +#define ADL_DISPLAY_SLSMAP_IS_SLS 0x1000 +#define ADL_DISPLAY_SLSMAP_IS_SLSBUILDER 0x2000 +#define ADL_DISPLAY_SLSMAP_IS_CLONEVT 0x4000 #define ADL_DISPLAY_SLSMAPCONFIG_GET_OPTION_RELATIVETO_LANDSCAPE 0x00000001 #define ADL_DISPLAY_SLSMAPCONFIG_GET_OPTION_RELATIVETO_CURRENTANGLE 0x00000002 @@ -1121,6 +1206,18 @@ enum ADLPlatForm #define ADL_DISPLAY_SLSMAPCONFIG_REARRANGE_OPTION_RELATIVETO_LANDSCAPE 0x00000001 #define ADL_DISPLAY_SLSMAPCONFIG_REARRANGE_OPTION_RELATIVETO_CURRENTANGLE 0x00000002 +#define ADL_SLS_SAMEMODESLS_SUPPORT 0x0001 +#define ADL_SLS_MIXMODESLS_SUPPORT 0x0002 +#define ADL_SLS_DISPLAYROTATIONSLS_SUPPORT 0x0004 +#define ADL_SLS_DESKTOPROTATIONSLS_SUPPORT 0x0008 + +#define ADL_SLS_TARGETS_INVALID 0x0001 +#define ADL_SLS_MODES_INVALID 0x0002 +#define ADL_SLS_ROTATIONS_INVALID 0x0004 +#define ADL_SLS_POSITIONS_INVALID 0x0008 +#define ADL_SLS_LAYOUTMODE_INVALID 0x0010 + +#define ADL_DISPLAY_SLSDISPLAYOFFSET_VALID 0x0002 #define ADL_DISPLAY_SLSGRID_RELATIVETO_LANDSCAPE 0x00000010 #define ADL_DISPLAY_SLSGRID_RELATIVETO_CURRENTANGLE 0x00000020 @@ -1133,17 +1230,38 @@ enum ADLPlatForm /// The bit mask identifies this map is currently in used for the current adapter. #define ADL_DISPLAY_SLSMAP_CURRENTCONFIG 0x00000004 - ///For onlay active SLS map info +///For onlay active SLS map info #define ADL_DISPLAY_SLSMAPINDEXLIST_OPTION_ACTIVE 0x00000001 ///For Bezel #define ADL_DISPLAY_BEZELOFFSET_STEPBYSTEPSET 0x00000004 #define ADL_DISPLAY_BEZELOFFSET_COMMIT 0x00000008 +typedef enum _SLS_ImageCropType { + Fit = 1, + Fill = 2, + Expand = 3 +}SLS_ImageCropType; + + +typedef enum _DceSettingsType { + DceSetting_HdmiLq, + DceSetting_DpSettings, + DceSetting_Protection +} DceSettingsType; + +typedef enum _DpLinkRate { + DPLinkRate_Unknown, + DPLinkRate_RBR, + DPLinkRate_HBR, + DPLinkRate_HBR2, + DPLinkRate_HBR3 +} DpLinkRate; + // @} ///\defgroup define_powerxpress_constants PowerXpress Definitions -// @{ +/// @{ /// The bit mask identifies PX caps for ADLPXConfigCaps.iPXConfigCapMask and ADLPXConfigCaps.iPXConfigCapValue #define ADL_PX_CONFIGCAPS_SPLASHSCREEN_SUPPORT 0x0001 @@ -1170,16 +1288,16 @@ typedef enum _ADLPXScheme /// Just keep the old definitions for compatibility, need to be removed later typedef enum PXScheme { - PX_SCHEME_INVALID = 0, - PX_SCHEME_FIXED = 1, - PX_SCHEME_DYNAMIC = 2 + PX_SCHEME_INVALID = 0, + PX_SCHEME_FIXED = 1, + PX_SCHEME_DYNAMIC = 2 } PXScheme; -// @} +/// @} ///\defgroup define_appprofiles For Application Profiles -// @{ +/// @{ #define ADL_APP_PROFILE_FILENAME_LENGTH 64 #define ADL_APP_PROFILE_TIMESTAMP_LENGTH 32 @@ -1188,37 +1306,37 @@ typedef enum PXScheme enum ApplicationListType { - ADL_PX40_MRU, - ADL_PX40_MISSED, - ADL_PX40_DISCRETE, - ADL_PX40_INTEGRATED, - - ADL_PX40_TOTAL + ADL_PX40_MRU, + ADL_PX40_MISSED, + ADL_PX40_DISCRETE, + ADL_PX40_INTEGRATED, + ADL_MMD_PROFILED, + ADL_PX40_TOTAL }; typedef enum _ADLProfilePropertyType { - ADL_PROFILEPROPERTY_TYPE_BINARY = 0, - ADL_PROFILEPROPERTY_TYPE_BOOLEAN, - ADL_PROFILEPROPERTY_TYPE_DWORD, - ADL_PROFILEPROPERTY_TYPE_QWORD, - ADL_PROFILEPROPERTY_TYPE_ENUMERATED, - ADL_PROFILEPROPERTY_TYPE_STRING + ADL_PROFILEPROPERTY_TYPE_BINARY = 0, + ADL_PROFILEPROPERTY_TYPE_BOOLEAN, + ADL_PROFILEPROPERTY_TYPE_DWORD, + ADL_PROFILEPROPERTY_TYPE_QWORD, + ADL_PROFILEPROPERTY_TYPE_ENUMERATED, + ADL_PROFILEPROPERTY_TYPE_STRING }ADLProfilePropertyType; -// @} +/// @} ///\defgroup define_dp12 For Display Port 1.2 -// @{ +/// @{ /// Maximum Relative Address Link #define ADL_MAX_RAD_LINK_COUNT 15 -// @} +/// @} ///\defgroup defines_gamutspace Driver Supported Gamut Space -// @{ +/// @{ /// The flags desribes that gamut is related to source or to destination and to overlay or to graphics #define ADL_GAMUT_REFERENCE_SOURCE (1 << 0) @@ -1227,6 +1345,7 @@ typedef enum _ADLProfilePropertyType /// The flags are used to describe the source of gamut and how read information from struct ADLGamutData #define ADL_CUSTOM_WHITE_POINT (1 << 0) #define ADL_CUSTOM_GAMUT (1 << 1) +#define ADL_GAMUT_REMAP_ONLY (1 << 2) /// The define means the predefined gamut values . ///Driver uses to find entry in the table and apply appropriate gamut space. @@ -1235,6 +1354,8 @@ typedef enum _ADLProfilePropertyType #define ADL_GAMUT_SPACE_ADOBE_RGB (1 << 2) #define ADL_GAMUT_SPACE_CIE_RGB (1 << 3) #define ADL_GAMUT_SPACE_CUSTOM (1 << 4) +#define ADL_GAMUT_SPACE_CCIR_2020 (1 << 5) +#define ADL_GAMUT_SPACE_APPCTRL (1 << 6) /// Predefine white point values are structed similar to gamut . #define ADL_WHITE_POINT_5000K (1 << 0) @@ -1258,11 +1379,23 @@ typedef enum _ADLProfilePropertyType #define ADL_USE_GAMMA_RAMP (1 << 4) ///Used for struct ADLRegamma. If the gamma ramp flag is used then the driver could apply de gamma corretion to the supplied curve and this depends on this flag #define ADL_APPLY_DEGAMMA (1 << 5) +///specifies that standard SRGB gamma should be applied +#define ADL_EDID_REGAMMA_PREDEFINED_SRGB (1 << 1) +///specifies that PQ gamma curve should be applied +#define ADL_EDID_REGAMMA_PREDEFINED_PQ (1 << 2) +///specifies that PQ gamma curve should be applied, lower max nits +#define ADL_EDID_REGAMMA_PREDEFINED_PQ_2084_INTERIM (1 << 3) +///specifies that 3.6 gamma should be applied +#define ADL_EDID_REGAMMA_PREDEFINED_36 (1 << 6) +///specifies that BT709 gama should be applied +#define ADL_EDID_REGAMMA_PREDEFINED_BT709 (1 << 7) +///specifies that regamma should be disabled, and application controls regamma content (of the whole screen) +#define ADL_EDID_REGAMMA_PREDEFINED_APPCTRL (1 << 8) -// @} +/// @} /// \defgroup define_ddcinfo_pixelformats DDCInfo Pixel Formats -// @{ +/// @{ /// defines for iPanelPixelFormat in struct ADLDDCInfo2 #define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB656 0x00000001L #define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB666 0x00000002L @@ -1279,20 +1412,63 @@ typedef enum _ADLProfilePropertyType #define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_8BPCC 0x00001000L #define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_10BPCC 0x00002000L #define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_12BPCC 0x00004000L -// @} +#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_8BPCC 0x00008000L +#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_10BPCC 0x00010000L +#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_12BPCC 0x00020000L +/// @} +/// \defgroup define_source_content_TF ADLSourceContentAttributes transfer functions (gamma) +/// @{ +/// defines for iTransferFunction in ADLSourceContentAttributes +#define ADL_TF_sRGB 0x0001 ///< sRGB +#define ADL_TF_BT709 0x0002 ///< BT.709 +#define ADL_TF_PQ2084 0x0004 ///< PQ2084 +#define ADL_TF_PQ2084_INTERIM 0x0008 ///< PQ2084-Interim +#define ADL_TF_LINEAR_0_1 0x0010 ///< Linear 0 - 1 +#define ADL_TF_LINEAR_0_125 0x0020 ///< Linear 0 - 125 +#define ADL_TF_DOLBYVISION 0x0040 ///< DolbyVision +#define ADL_TF_GAMMA_22 0x0080 ///< Plain 2.2 gamma curve +/// @} +/// \defgroup define_source_content_CS ADLSourceContentAttributes color spaces +/// @{ +/// defines for iColorSpace in ADLSourceContentAttributes +#define ADL_CS_sRGB 0x0001 ///< sRGB +#define ADL_CS_BT601 0x0002 ///< BT.601 +#define ADL_CS_BT709 0x0004 ///< BT.709 +#define ADL_CS_BT2020 0x0008 ///< BT.2020 +#define ADL_CS_ADOBE 0x0010 ///< Adobe RGB +#define ADL_CS_P3 0x0020 ///< DCI-P3 +#define ADL_CS_scRGB_MS_REF 0x0040 ///< scRGB (MS Reference) +#define ADL_CS_DISPLAY_NATIVE 0x0080 ///< Display Native +#define ADL_CS_APP_CONTROL 0x0100 ///< Application Controlled +#define ADL_CS_DOLBYVISION 0x0200 ///< DolbyVision +/// @} + +/// \defgroup define_HDR_support ADLDDCInfo2 HDR support options +/// @{ +/// defines for iSupportedHDR in ADLDDCInfo2 +#define ADL_HDR_CEA861_3 0x0001 ///< HDR10/CEA861.3 HDR supported +#define ADL_HDR_DOLBYVISION 0x0002 ///< DolbyVision HDR supported +#define ADL_HDR_FREESYNC_HDR 0x0004 ///< FreeSync HDR supported +/// @} + +/// \defgroup define_FreesyncFlags ADLDDCInfo2 Freesync HDR flags +/// @{ +/// defines for iFreesyncFlags in ADLDDCInfo2 +#define ADL_HDR_FREESYNC_BACKLIGHT_SUPPORT 0x0001 ///< Backlight supported +/// @} /// \defgroup define_dbd_state Deep Bit Depth -// @{ +/// @{ /// defines for ADL_Workstation_DeepBitDepth_Get and ADL_Workstation_DeepBitDepth_Set functions // This value indicates that the deep bit depth state is forced off -#define ADL_DEEPBITDEPTH_FORCEOFF 0 -/// This value indicates that the deep bit depth state is set to auto, the driver will automatically enable the +#define ADL_DEEPBITDEPTH_FORCEOFF 0 +/// This value indicates that the deep bit depth state is set to auto, the driver will automatically enable the /// appropriate deep bit depth state depending on what connected display supports. #define ADL_DEEPBITDEPTH_10BPP_AUTO 1 -/// This value indicates that the deep bit depth state is forced on to 10 bits per pixel, this is regardless if the display +/// This value indicates that the deep bit depth state is forced on to 10 bits per pixel, this is regardless if the display /// supports 10 bpp. #define ADL_DEEPBITDEPTH_10BPP_FORCEON 2 @@ -1370,9 +1546,11 @@ typedef enum _ADLProfilePropertyType /// requisite rendering adapter. For eample, for adapters in a Crossfire configuration, this bit would be set /// on all adapters that are currently not driving the display(s) #define ADL_ADAPTERCONFIGSTATE_ANCILLARY_RENDER ( 1 << 1 ) +/// Indicates that scatter gather feature enabled on the adapter +#define ADL_ADAPTERCONFIGSTATE_SCATTERGATHER ( 1 << 4 ) /// @} -/// \defgroup define_controllermode_ulModifiers +/// \defgroup define_controllermode_ulModifiers /// These defines the detailed actions supported by set viewport. It is used by \ref ADL_Display_ViewPort_Set /// @{ /// Indicate that the viewport set will change the view position @@ -1407,19 +1585,19 @@ enum ADLMultiChannelSplitStateFlag /////////////////////////////////////////////////////////////////////////// enum ADLSampleRate { - ADLSampleRate_32KHz =0, - ADLSampleRate_44P1KHz, - ADLSampleRate_48KHz, - ADLSampleRate_88P2KHz, - ADLSampleRate_96KHz, - ADLSampleRate_176P4KHz, - ADLSampleRate_192KHz, - ADLSampleRate_384KHz, //DP1.2 - ADLSampleRate_768KHz, //DP1.2 + ADLSampleRate_32KHz =0, + ADLSampleRate_44P1KHz, + ADLSampleRate_48KHz, + ADLSampleRate_88P2KHz, + ADLSampleRate_96KHz, + ADLSampleRate_176P4KHz, + ADLSampleRate_192KHz, + ADLSampleRate_384KHz, //DP1.2 + ADLSampleRate_768KHz, //DP1.2 ADLSampleRate_Undefined }; -/// \defgroup define_overdrive6_capabilities +/// \defgroup define_overdrive6_capabilities /// These defines the capabilities supported by Overdrive 6. It is used by \ref ADL_Overdrive6_Capabilities_Get // @{ /// Indicate that core (engine) clock can be changed. @@ -1436,9 +1614,11 @@ enum ADLSampleRate #define ADL_OD6_CAPABILITY_PERCENT_ADJUSTMENT 0x00000020 /// Indicate that Thermal Limit Unlock is supported. #define ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK 0x00000040 +///Indicate that Fan speed needs to be displayed in RPM +#define ADL_OD6_CAPABILITY_FANSPEED_IN_RPM 0x00000080 // @} -/// \defgroup define_overdrive6_supported_states +/// \defgroup define_overdrive6_supported_states /// These defines the power states supported by Overdrive 6. It is used by \ref ADL_Overdrive6_Capabilities_Get // @{ /// Indicate that overdrive is supported in the performance state. This is currently the only state supported. @@ -1447,7 +1627,7 @@ enum ADLSampleRate #define ADL_OD6_SUPPORTEDSTATE_POWER_SAVING 0x00000002 // @} -/// \defgroup define_overdrive6_getstateinfo +/// \defgroup define_overdrive6_getstateinfo /// These defines the power states to get information about. It is used by \ref ADL_Overdrive6_StateInfo_Get // @{ /// Get default clocks for the performance state. @@ -1471,7 +1651,7 @@ enum ADLSampleRate #define ADL_OD6_STATE_PERFORMANCE 0x00000001 // @} -/// \defgroup define_overdrive6_setstate +/// \defgroup define_overdrive6_setstate /// These define which power state to set customized clocks on. It is used by \ref ADL_Overdrive6_State_Set // @{ /// Set customized clocks for the performance state. @@ -1480,7 +1660,7 @@ enum ADLSampleRate #define ADL_OD6_SETSTATE_POWER_SAVING 0x00000002 // @} -/// \defgroup define_overdrive6_thermalcontroller_caps +/// \defgroup define_overdrive6_thermalcontroller_caps /// These defines the capabilities of the GPU thermal controller. It is used by \ref ADL_Overdrive6_ThermalController_Caps // @{ /// GPU thermal controller is supported. @@ -1497,7 +1677,7 @@ enum ADLSampleRate #define ADL_OD6_TCCAPS_FANSPEED_RPM_WRITE 0x00000800 // @} -/// \defgroup define_overdrive6_fanspeed_type +/// \defgroup define_overdrive6_fanspeed_type /// These defines the fan speed type being reported. It is used by \ref ADL_Overdrive6_FanSpeed_Get // @{ /// Fan speed reported in percentage. @@ -1508,15 +1688,308 @@ enum ADLSampleRate #define ADL_OD6_FANSPEED_USER_DEFINED 0x00000100 // @} -/// \defgroup define_ecc_mode_states +/// \defgroup define_overdrive_EventCounter_type +/// These defines the EventCounter type being reported. It is used by \ref ADL2_OverdriveN_CountOfEvents_Get ,can be used on older OD version supported ASICs also. +// @{ +#define ADL_ODN_EVENTCOUNTER_THERMAL 0 +#define ADL_ODN_EVENTCOUNTER_VPURECOVERY 1 +// @} + +/////////////////////////////////////////////////////////////////////////// +// ADLODNControlType Enumeration +/////////////////////////////////////////////////////////////////////////// +enum ADLODNControlType +{ + ODNControlType_Current = 0, + ODNControlType_Default, + ODNControlType_Auto, + ODNControlType_Manual +}; + +/// \defgroup define_ecc_mode_states /// These defines the ECC(Error Correction Code) state. It is used by \ref ADL_Workstation_ECC_Get,ADL_Workstation_ECC_Set // @{ -/// Error Correction is disabled. +/// Error Correction is OFF. #define ECC_MODE_OFF 0 -/// Error Correction is enabled. +/// Error Correction is ECCV2. #define ECC_MODE_ON 2 +/// Error Correction is HBM. +#define ECC_MODE_HBM 3 // @} +/// \defgroup define_board_layout_flags +/// These defines are the board layout flags state which indicates what are the valid properties of \ref ADLBoardLayoutInfo . It is used by \ref ADL_Adapter_BoardLayout_Get +// @{ +/// Indicates the number of slots is valid. +#define ADL_BLAYOUT_VALID_NUMBER_OF_SLOTS 0x1 +/// Indicates the slot sizes are valid. Size of the slot consists of the length and width. +#define ADL_BLAYOUT_VALID_SLOT_SIZES 0x2 +/// Indicates the connector offsets are valid. +#define ADL_BLAYOUT_VALID_CONNECTOR_OFFSETS 0x4 +/// Indicates the connector lengths is valid. +#define ADL_BLAYOUT_VALID_CONNECTOR_LENGTHS 0x8 +// @} + +/// \defgroup define_max_constants +/// These defines are the maximum value constants. +// @{ +/// Indicates the Maximum supported slots on board. +#define ADL_ADAPTER_MAX_SLOTS 4 +/// Indicates the Maximum supported connectors on slot. +#define ADL_ADAPTER_MAX_CONNECTORS 10 +/// Indicates the Maximum supported properties of connection +#define ADL_MAX_CONNECTION_TYPES 32 +/// Indicates the Maximum relative address link count. +#define ADL_MAX_RELATIVE_ADDRESS_LINK_COUNT 15 +/// Indicates the Maximum size of EDID data block size +#define ADL_MAX_DISPLAY_EDID_DATA_SIZE 1024 +/// Indicates the Maximum count of Error Records. +#define ADL_MAX_ERROR_RECORDS_COUNT 256 +/// Indicates the maximum number of power states supported +#define ADL_MAX_POWER_POLICY 6 +// @} + +/// \defgroup define_connection_types +/// These defines are the connection types constants which indicates what are the valid connection type of given connector. It is used by \ref ADL_Adapter_SupportedConnections_Get +// @{ +/// Indicates the VGA connection type is valid. +#define ADL_CONNECTION_TYPE_VGA 0 +/// Indicates the DVI_I connection type is valid. +#define ADL_CONNECTION_TYPE_DVI 1 +/// Indicates the DVI_SL connection type is valid. +#define ADL_CONNECTION_TYPE_DVI_SL 2 +/// Indicates the HDMI connection type is valid. +#define ADL_CONNECTION_TYPE_HDMI 3 +/// Indicates the DISPLAY PORT connection type is valid. +#define ADL_CONNECTION_TYPE_DISPLAY_PORT 4 +/// Indicates the Active dongle DP->DVI(single link) connection type is valid. +#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_DVI_SL 5 +/// Indicates the Active dongle DP->DVI(double link) connection type is valid. +#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_DVI_DL 6 +/// Indicates the Active dongle DP->HDMI connection type is valid. +#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_HDMI 7 +/// Indicates the Active dongle DP->VGA connection type is valid. +#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_VGA 8 +/// Indicates the Passive dongle DP->HDMI connection type is valid. +#define ADL_CONNECTION_TYPE_PASSIVE_DONGLE_DP_HDMI 9 +/// Indicates the Active dongle DP->VGA connection type is valid. +#define ADL_CONNECTION_TYPE_PASSIVE_DONGLE_DP_DVI 10 +/// Indicates the MST type is valid. +#define ADL_CONNECTION_TYPE_MST 11 +/// Indicates the active dongle, all types. +#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE 12 +/// Indicates the Virtual Connection Type. +#define ADL_CONNECTION_TYPE_VIRTUAL 13 +/// Macros for generating bitmask from index. +#define ADL_CONNECTION_BITMAST_FROM_INDEX(index) (1 << index) +// @} + +/// \defgroup define_connection_properties +/// These defines are the connection properties which indicates what are the valid properties of given connection type. It is used by \ref ADL_Adapter_SupportedConnections_Get +// @{ +/// Indicates the property Bitrate is valid. +#define ADL_CONNECTION_PROPERTY_BITRATE 0x1 +/// Indicates the property number of lanes is valid. +#define ADL_CONNECTION_PROPERTY_NUMBER_OF_LANES 0x2 +/// Indicates the property 3D caps is valid. +#define ADL_CONNECTION_PROPERTY_3DCAPS 0x4 +/// Indicates the property output bandwidth is valid. +#define ADL_CONNECTION_PROPERTY_OUTPUT_BANDWIDTH 0x8 +/// Indicates the property colordepth is valid. +#define ADL_CONNECTION_PROPERTY_COLORDEPTH 0x10 +// @} + +/// \defgroup define_lanecount_constants +/// These defines are the Lane count constants which will be used in DP & etc. +// @{ +/// Indicates if lane count is unknown +#define ADL_LANECOUNT_UNKNOWN 0 +/// Indicates if lane count is 1 +#define ADL_LANECOUNT_ONE 1 +/// Indicates if lane count is 2 +#define ADL_LANECOUNT_TWO 2 +/// Indicates if lane count is 4 +#define ADL_LANECOUNT_FOUR 4 +/// Indicates if lane count is 8 +#define ADL_LANECOUNT_EIGHT 8 +/// Indicates default value of lane count +#define ADL_LANECOUNT_DEF ADL_LANECOUNT_FOUR +// @} + +/// \defgroup define_linkrate_constants +/// These defines are the link rate constants which will be used in DP & etc. +// @{ +/// Indicates if link rate is unknown +#define ADL_LINK_BITRATE_UNKNOWN 0 +/// Indicates if link rate is 1.62Ghz +#define ADL_LINK_BITRATE_1_62_GHZ 0x06 +/// Indicates if link rate is 2.7Ghz +#define ADL_LINK_BITRATE_2_7_GHZ 0x0A +/// Indicates if link rate is 3.24Ghz +#define ADL_LINK_BTIRATE_3_24_GHZ 0x0C +/// Indicates if link rate is 5.4Ghz +#define ADL_LINK_BITRATE_5_4_GHZ 0x14 +/// Indicates default value of link rate +#define ADL_LINK_BITRATE_DEF ADL_LINK_BITRATE_2_7_GHZ +// @} + +/// \defgroup define_colordepth_constants +/// These defines are the color depth constants which will be used in DP & etc. +// @{ +#define ADL_CONNPROP_S3D_ALTERNATE_TO_FRAME_PACK 0x00000001 +// @} + + +/// \defgroup define_colordepth_constants +/// These defines are the color depth constants which will be used in DP & etc. +// @{ +/// Indicates if color depth is unknown +#define ADL_COLORDEPTH_UNKNOWN 0 +/// Indicates if color depth is 666 +#define ADL_COLORDEPTH_666 1 +/// Indicates if color depth is 888 +#define ADL_COLORDEPTH_888 2 +/// Indicates if color depth is 101010 +#define ADL_COLORDEPTH_101010 3 +/// Indicates if color depth is 121212 +#define ADL_COLORDEPTH_121212 4 +/// Indicates if color depth is 141414 +#define ADL_COLORDEPTH_141414 5 +/// Indicates if color depth is 161616 +#define ADL_COLORDEPTH_161616 6 +/// Indicates default value of color depth +#define ADL_COLOR_DEPTH_DEF ADL_COLORDEPTH_888 +// @} + + +/// \defgroup define_emulation_status +/// These defines are the status of emulation +// @{ +/// Indicates if real device is connected. +#define ADL_EMUL_STATUS_REAL_DEVICE_CONNECTED 0x1 +/// Indicates if emulated device is presented. +#define ADL_EMUL_STATUS_EMULATED_DEVICE_PRESENT 0x2 +/// Indicates if emulated device is used. +#define ADL_EMUL_STATUS_EMULATED_DEVICE_USED 0x4 +/// In case when last active real/emulated device used (when persistence is enabled but no emulation enforced then persistence will use last connected/emulated device). +#define ADL_EMUL_STATUS_LAST_ACTIVE_DEVICE_USED 0x8 +// @} + +/// \defgroup define_emulation_mode +/// These defines are the modes of emulation +// @{ +/// Indicates if no emulation is used +#define ADL_EMUL_MODE_OFF 0 +/// Indicates if emulation is used when display connected +#define ADL_EMUL_MODE_ON_CONNECTED 1 +/// Indicates if emulation is used when display dis connected +#define ADL_EMUL_MODE_ON_DISCONNECTED 2 +/// Indicates if emulation is used always +#define ADL_EMUL_MODE_ALWAYS 3 +// @} + +/// \defgroup define_emulation_query +/// These defines are the modes of emulation +// @{ +/// Indicates Data from real device +#define ADL_QUERY_REAL_DATA 0 +/// Indicates Emulated data +#define ADL_QUERY_EMULATED_DATA 1 +/// Indicates Data currently in use +#define ADL_QUERY_CURRENT_DATA 2 +// @} + +/// \defgroup define_persistence_state +/// These defines are the states of persistence +// @{ +/// Indicates persistence is disabled +#define ADL_EDID_PERSISTANCE_DISABLED 0 +/// Indicates persistence is enabled +#define ADL_EDID_PERSISTANCE_ENABLED 1 +// @} + +/// \defgroup define_connector_types Connector Type +/// defines for ADLConnectorInfo.iType +// @{ +/// Indicates unknown Connector type +#define ADL_CONNECTOR_TYPE_UNKNOWN 0 +/// Indicates VGA Connector type +#define ADL_CONNECTOR_TYPE_VGA 1 +/// Indicates DVI-D Connector type +#define ADL_CONNECTOR_TYPE_DVI_D 2 +/// Indicates DVI-I Connector type +#define ADL_CONNECTOR_TYPE_DVI_I 3 +/// Indicates Active Dongle-NA Connector type +#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NA 4 +/// Indicates Active Dongle-JP Connector type +#define ADL_CONNECTOR_TYPE_ATICVDONGLE_JP 5 +/// Indicates Active Dongle-NONI2C Connector type +#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C 6 +/// Indicates Active Dongle-NONI2C-D Connector type +#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C_D 7 +/// Indicates HDMI-Type A Connector type +#define ADL_CONNECTOR_TYPE_HDMI_TYPE_A 8 +/// Indicates HDMI-Type B Connector type +#define ADL_CONNECTOR_TYPE_HDMI_TYPE_B 9 +/// Indicates Display port Connector type +#define ADL_CONNECTOR_TYPE_DISPLAYPORT 10 +/// Indicates EDP Connector type +#define ADL_CONNECTOR_TYPE_EDP 11 +/// Indicates MiniDP Connector type +#define ADL_CONNECTOR_TYPE_MINI_DISPLAYPORT 12 +/// Indicates Virtual Connector type +#define ADL_CONNECTOR_TYPE_VIRTUAL 13 +// @} + +/// \defgroup define_freesync_usecase +/// These defines are to specify use cases in which FreeSync should be enabled +/// They are a bit mask. To specify FreeSync for more than one use case, the input value +/// should be set to include multiple bits set +// @{ +/// Indicates FreeSync is enabled for Static Screen case +#define ADL_FREESYNC_USECASE_STATIC 0x1 +/// Indicates FreeSync is enabled for Video use case +#define ADL_FREESYNC_USECASE_VIDEO 0x2 +/// Indicates FreeSync is enabled for Gaming use case +#define ADL_FREESYNC_USECASE_GAMING 0x4 +// @} + +/// \defgroup define_freesync_caps +/// These defines are used to retrieve FreeSync display capabilities. +/// GPU support flag also indicates whether the display is +/// connected to a GPU that actually supports FreeSync +// @{ +#define ADL_FREESYNC_CAP_SUPPORTED (1 << 0) +#define ADL_FREESYNC_CAP_GPUSUPPORTED (1 << 1) +#define ADL_FREESYNC_CAP_DISPLAYSUPPORTED (1 << 2) +#define ADL_FREESYNC_CAP_CURRENTMODESUPPORTED (1 << 3) +#define ADL_FREESYNC_CAP_NOCFXORCFXSUPPORTED (1 << 4) +#define ADL_FREESYNC_CAP_NOGENLOCKORGENLOCKSUPPORTED (1 << 5) +#define ADL_FREESYNC_CAP_BORDERLESSWINDOWSUPPORTED (1 << 6) +// @} + + +/// \defgroup define_MST_CommandLine_execute +// @{ +/// Indicates the MST command line for branch message if the bit is set. Otherwise, it is display message +#define ADL_MST_COMMANDLINE_PATH_MSG 0x1 +/// Indicates the MST command line to send message in broadcast way it the bit is set +#define ADL_MST_COMMANDLINE_BROADCAST 0x2 + +// @} + + +/// \defgroup define_Adapter_CloneTypes_Get +// @{ +/// Indicates there is crossGPU clone with non-AMD dispalys +#define ADL_CROSSGPUDISPLAYCLONE_AMD_WITH_NONAMD 0x1 +/// Indicates there is crossGPU clone +#define ADL_CROSSGPUDISPLAYCLONE 0x2 + +// @} + + + // End Bracket for Constants and Definitions. Add new groups ABOVE this line! // @} diff --git a/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_structures.h b/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_structures.h index 1bfb57950..dd2c4edb0 100644 --- a/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_structures.h +++ b/renderdoc/driver/ihv/amd/official/RGP/ADL/include/adl_structures.h @@ -1,6 +1,6 @@ /// /// Copyright (c) 2008 - 2013 Advanced Micro Devices, Inc. - + /// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, /// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED /// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. @@ -19,7 +19,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the graphics adapter. /// -/// This structure is used to store various information about the graphics adapter. This +/// 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 @@ -33,7 +33,7 @@ typedef struct AdapterInfo /// 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]; + char strUDID[ADL_MAX_PATH]; /// The BUS number associated with this adapter. int iBusNumber; /// The driver number associated with this adapter. @@ -44,11 +44,10 @@ typedef struct AdapterInfo int iVendorID; /// Adapter name. char strAdapterName[ADL_MAX_PATH]; -/// Display name. For example, "\\Display0" for Windows or ":0:0" for Linux. +/// 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; -// @} +/// 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 @@ -62,8 +61,7 @@ typedef struct AdapterInfo /// PNP string from Windows. char strPNPString[ADL_MAX_PATH]; /// It is generated from EnumDisplayDevices. - int iOSDisplayIndex; -// @} + int iOSDisplayIndex; #endif /* (_WIN32) || (_WIN64) */ #if defined (LINUX) @@ -75,17 +73,16 @@ typedef struct AdapterInfo 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 +/// 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 //////////////////////////////////////////////////////////////////////////////////////////// @@ -103,14 +100,14 @@ typedef struct XScreenInfo ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the ASIC memory. /// -/// This structure is used to store various information about the ASIC memory. This +/// 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; + long long iMemorySize; /// Memory type in string. char strMemoryType[ADL_MAX_PATH]; /// Memory bandwidth in Mbytes/s. @@ -190,7 +187,7 @@ 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 +/// 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. @@ -213,21 +210,60 @@ typedef struct ADLDDCInfo2 int ulPTMRefreshRate; /// Return EDID flags. int ulDDCInfoFlag; -// Returns 1 if the display supported packed pixel, 0 otherwise +/// Returns 1 if the display supported packed pixel, 0 otherwise int bPackedPixelSupported; -// Returns the Pixel formats the display supports \ref define_ddcinfo_pixelformats +/// Returns the Pixel formats the display supports \ref define_ddcinfo_pixelformats int iPanelPixelFormat; /// Return EDID serial ID. int ulSerialID; -// Reserved for future use - int iReserved[26]; +/// 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; + + // Reserved for future use + int iReserved[9]; } 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 +/// controller gamma setting. This information is returned by ADL, and it can also be used to /// set the controller gamma setting. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// @@ -301,7 +337,7 @@ typedef struct ADLDisplayConfig /// Overridden HDTV capabilities. long ulOverridedDeviceData; /// Reserved field - long ulReserved; + long ulReserved; } ADLDisplayConfig; @@ -309,7 +345,7 @@ typedef struct 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, +/// 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. @@ -322,7 +358,7 @@ typedef struct ADLDisplayID ///\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 +/// So current adapter may enumerate this adapter as logical display 7 but the physical display /// index is still 2. int iDisplayPhysicalIndex; @@ -331,7 +367,7 @@ typedef struct ADLDisplayID ///\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, +/// If this adapter index is different than the current adapter, /// the Display Non Local flag is set inside DisplayInfoValue. int iDisplayPhysicalAdapterIndex; } ADLDisplayID, *LPADLDisplayID; @@ -339,7 +375,7 @@ typedef struct ADLDisplayID ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display device. /// -/// This structure is used to store various information about the display device. This +/// 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 @@ -347,39 +383,39 @@ typedef struct ADLDisplayID typedef struct ADLDisplayInfo { /// The DisplayID structure - ADLDisplayID displayID; + ADLDisplayID displayID; ///\deprecated The controller index to which the display is mapped.\n Will not be used in the future\n - int iDisplayControllerIndex; - + int iDisplayControllerIndex; + /// The display's EDID name. - char strDisplayName[ADL_MAX_PATH]; - + char strDisplayName[ADL_MAX_PATH]; + /// The display's manufacturer name. - char strDisplayManufacturerName[ADL_MAX_PATH]; + char strDisplayManufacturerName[ADL_MAX_PATH]; /// The Display type. For example: CRT, TV, CV, DFP. - int iDisplayType; - + int iDisplayType; + /// The display output type. For example: HDMI, SVIDEO, COMPONMNET VIDEO. - int iDisplayOutputType; - -/// The connector type for the device. - int iDisplayConnector; + 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; - +/// 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; + 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 +/// 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 //////////////////////////////////////////////////////////////////////////////////////////// @@ -387,7 +423,7 @@ typedef struct ADLDisplayDPMSTInfo { /// The ADLDisplayID structure ADLDisplayID displayID; - + /// total bandwidth available on the DP connector int iTotalAvailableBandwidthInMpbs; /// bandwidth allocated to this display @@ -395,13 +431,13 @@ typedef struct ADLDisplayDPMSTInfo // info from DAL DpMstSinkInfo /// string identifier for the display - char strGlobalUniqueIdentifier[ADL_MAX_PATH]; + 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; @@ -497,23 +533,23 @@ typedef struct ADLDisplayModeInfo typedef struct ADLDisplayProperty { /// Must be set to sizeof the structure - int iSize; + 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 +/// Display Property current value int iCurrent; /// Display Property Default value - int iDefault; + int iDefault; } ADLDisplayProperty; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Clock. /// -/// This structure is used to store the clock information for the current adapter +/// This structure is used to store the clock information for the current adapter /// such as core clock and memory clock info. ///\nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// @@ -522,7 +558,7 @@ typedef struct ADLClockInfo /// Core clock in 10 KHz. int iCoreClock; /// Memory clock in 10 KHz. - int iMemoryClock; + int iMemoryClock; } ADLClockInfo, *LPADLClockInfo; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -549,7 +585,7 @@ typedef struct ADLI2C /// 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; + char *pcData; } ADLI2C; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -578,7 +614,7 @@ typedef struct 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 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 @@ -588,17 +624,17 @@ 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; + int iOverlayAdjust; /// Data. int iValue; /// Should be 0. - int iReserved; + 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 to store the information about overlay adjustment for the adapter. /// This structure is used by the ADLControllerOverlayInfo() function. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// @@ -670,7 +706,7 @@ typedef struct ADLGLSyncPortCaps /// /// 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 +/// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGLSyncGenlockConfig @@ -682,7 +718,7 @@ typedef struct ADLGLSyncGenlockConfig /// 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; + 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 @@ -698,7 +734,7 @@ typedef struct ADLGLSyncGenlockConfig /// /// This structure is used to get status of the GL-Sync ports (BNC or RJ45s) /// for Workstation Framelock/Genlock. -/// \see define_glsync +/// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncPortInfo @@ -714,7 +750,7 @@ typedef struct ADLGlSyncPortInfo /// 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; + int iSignalSource; } ADLGlSyncPortInfo, *LPADLGlSyncPortInfo; @@ -723,7 +759,7 @@ typedef struct ADLGlSyncPortInfo /// /// This structure is used to configure the GL-Sync ports (RJ45s only) /// for Workstation Framelock/Genlock. -/// \see define_glsync +/// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncPortControl @@ -731,7 +767,7 @@ 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; + int iControlVector; /// Source of the sync signal. Either GL_Sync GPU Port index or ADL_GLSYNC_SIGNALSOURCE_* \ref define_glsync int iSignalSource; } ADLGlSyncPortControl; @@ -741,13 +777,13 @@ typedef struct ADLGlSyncPortControl /// /// 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 +/// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncMode { /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync - int iControlVector; + 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. @@ -759,13 +795,13 @@ typedef struct ADLGlSyncMode /// /// 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 +/// \see define_glsync /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLGlSyncMode2 { /// Mode control vector. Bitfield of ADL_GLSYNC_MODECNTL_* \ref define_glsync - int iControlVector; + 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. @@ -778,7 +814,7 @@ typedef struct ADLGlSyncMode2 ///////////////////////////////////////////////////////////////////////////////////////////// ///\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 to get and set the packet information of a display. /// This structure is used by ADLDisplayDataPacket. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// @@ -788,7 +824,7 @@ typedef struct ADLInfoPacket char hb1; char hb2; /// sb0~sb27 - char sb[28]; + char sb[28]; }ADLInfoPacket; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -803,7 +839,7 @@ typedef struct ADLAVIInfoPacket //Valid user defined data/ /// byte 3, bit 7 char bPB3_ITC; /// byte 5, bit [7:4]. - char bPB5; + char bPB5; }ADLAVIInfoPacket; // Overdrive clock setting structure definition. @@ -897,7 +933,7 @@ typedef struct ADLPMActivity /// Maximum number of PCIE bus lanes. int iMaximumBusLanes; /// Reserved for future purposes. - int iReserved; + int iReserved; } ADLPMActivity; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -910,28 +946,28 @@ typedef struct ADLPMActivity typedef struct ADLThermalControllerInfo { /// Must be set to the size of the structure - int iSize; + 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; + 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 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; + int iSize; /// Temperature in millidegrees Celsius. - int iTemperature; + int iTemperature; } ADLTemperature; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -944,13 +980,13 @@ typedef struct ADLTemperature typedef struct ADLFanSpeedInfo { /// Must be set to the size of the structure - int iSize; + 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; + int iMaxPercent; /// Minimum possible fan speed value in RPM. int iMinRPM; /// Maximum possible fan speed value in RPM. @@ -973,7 +1009,7 @@ typedef struct ADLFanSpeedValue /// Fan speed value int iFanSpeed; /// The only flag for now is: \ref ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED - int iFlags; + int iFlags; } ADLFanSpeedValue; //////////////////////////////////////////////////////////////////////////////////////////// @@ -988,9 +1024,9 @@ typedef struct ADLODParameterRange /// Minimum parameter value. int iMin; /// Maximum parameter value. - int iMax; + int iMax; /// Parameter step value. - int iStep; + int iStep; } ADLODParameterRange; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -1003,7 +1039,7 @@ typedef struct ADLODParameterRange typedef struct ADLODParameters { /// Must be set to the size of the structure - int iSize; + int iSize; /// Number of standard performance states. int iNumberOfPerformanceLevels; /// Indicates whether the GPU is capable to measure its activity. @@ -1011,13 +1047,13 @@ typedef struct ADLODParameters /// Indicates whether the GPU supports discrete performance levels or performance range. int iDiscretePerformanceLevels; /// Reserved for future use. - int iReserved; + int iReserved; /// Engine clock range. - ADLODParameterRange sEngineClock; + ADLODParameterRange sEngineClock; /// Memory clock range. ADLODParameterRange sMemoryClock; /// Core voltage range. - ADLODParameterRange sVddc; + ADLODParameterRange sVddc; } ADLODParameters; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -1050,7 +1086,7 @@ typedef struct ADLODPerformanceLevels int iSize; int iReserved; /// Array of performance state descriptors. Must have ADLODParameters.iNumberOfPerformanceLevels elements. - ADLODPerformanceLevel aLevels [1]; + ADLODPerformanceLevel aLevels [1]; } ADLODPerformanceLevels; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -1088,7 +1124,7 @@ typedef struct ADLCrossfireInfo ///////////////////////////////////////////////////////////////////////////////////////////// /// \brief Structure containing information about the BIOS. /// -/// This structure is used to store various information about the Chipset. This +/// This structure is used to store various information about the Chipset. This /// information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// @@ -1109,7 +1145,7 @@ typedef struct ADLBiosInfo //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLAdapterLocation { -/// PCI Bus number : 8 bits +/// PCI Bus number : 8 bits int iBus; /// Device number : 5 bits int iDevice; @@ -1117,6 +1153,41 @@ typedef struct ADLAdapterLocation 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. @@ -1135,7 +1206,7 @@ typedef struct ADLMVPUCaps int iPossibleMVPUMasters; /// Bits set for all possible MVPU slaves. \ref MVPU_ADAPTER_0 .. \ref MVPU_ADAPTER_3 int iPossibleMVPUSlaves; -/// Registry path for each adapter. +/// Registry path for each adapter. char cAdapterPath[ADL_DL_MAX_MVPU_ADAPTERS][ADL_DL_MAX_REGISTRY_PATH]; } ADLMVPUCaps; @@ -1164,26 +1235,26 @@ typedef struct ADLMVPUStatus /// \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. +/// 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; +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; +} 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, +/// 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 //////////////////////////////////////////////////////////////////////////////////////////// @@ -1211,7 +1282,7 @@ typedef struct ADLMode /// 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; + int iModeMask; /// The bit mask identifying the display status. The detailed definition is in \ref define_displaymode int iModeValue; } ADLMode, *LPADLMode; @@ -1226,16 +1297,16 @@ typedef struct ADLMode typedef struct ADLDisplayTarget { /// The Display ID. - ADLDisplayID displayID; + ADLDisplayID displayID; /// The display map index identify this manner and the desktop surface. - int iDisplayMapIndex; + 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; + int iDisplayTargetMask; /// The bit mask identifies the display status. The detailed definition is in \ref ADL_DISPLAY_DISPLAYTARGET_PREFERRED. - int iDisplayTargetValue; + int iDisplayTargetValue; } ADLDisplayTarget, *LPADLDisplayTarget; @@ -1243,7 +1314,7 @@ typedef struct ADLDisplayTarget ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display SLS bezel Mode information. /// -/// This structure is used to store the display SLS bezel Mode information. +/// This structure is used to store the display SLS bezel Mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct tagADLBezelTransientMode @@ -1255,23 +1326,23 @@ typedef struct tagADLBezelTransientMode int iSLSMapIndex; /// The mode index - int iSLSModeIndex; + int iSLSModeIndex; /// The mode ADLMode displayMode; - /// The number of bezel offsets belongs to this map - int iNumBezelOffset; + /// 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 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; - + int iSLSBezelTransientModeMask; + /// The bit mask identifies the display status. The detail definition is defined below. - int iSLSBezelTransientModeValue; - + int iSLSBezelTransientModeValue; + } ADLBezelTransientMode, *LPADLBezelTransientMode; @@ -1286,11 +1357,11 @@ typedef struct tagADLBezelTransientMode typedef struct ADLAdapterDisplayCap { /// The Persistent logical Adapter Index. - int iAdapterIndex; + 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; + int iAdapterDisplayCapValue; } ADLAdapterDisplayCap, *LPADLAdapterDisplayCap; @@ -1298,29 +1369,29 @@ typedef struct ADLAdapterDisplayCap ///\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, +/// 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 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; + ADLMode displayMode; /// The number of display targets belongs to this map\n - int iNumDisplayTarget; - + int iNumDisplayTarget; + /// The first target array index in the Target array\n - int iFirstDisplayTargetArrayIndex; - + 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; - + int iDisplayMapMask; + ///The bit mask identifies the display status. The detailed definition is in ADL_DISPLAY_DISPLAYMAP_MANNER_xxx. - int iDisplayMapValue; + int iDisplayMapValue; } ADLDisplayMap, *LPADLDisplayMap; @@ -1329,7 +1400,7 @@ typedef struct ADLDisplayMap /// \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. +/// This information can be returned to the user. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLPossibleMap @@ -1339,13 +1410,13 @@ typedef struct ADLPossibleMap /// 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; + int iNumDisplayMap; /// The display Maps list to validate - ADLDisplayMap* displayMap; + ADLDisplayMap* displayMap; /// the number of display Targets for these display Maps - int iNumDisplayTarget; + int iNumDisplayTarget; /// The display Targets list for these display Maps to be validated. - ADLDisplayTarget* displayTarget; + ADLDisplayTarget* displayTarget; } ADLPossibleMap, *LPADLPossibleMap; @@ -1366,167 +1437,167 @@ typedef struct ADLPossibleMapping /// \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. +/// 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 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; + int iPossibleMapResultMask; /// The bit mask identifies the possible map result. The detail definition is defined in ADL_DISPLAY_POSSIBLEMAPRESULT_XXX. - int iPossibleMapResultValue; + 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. +/// This structure is used to store the display SLS Grid information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSGrid { /// The Adapter index. - int iAdapterIndex; + int iAdapterIndex; /// The grid index. - int iSLSGridIndex; - + int iSLSGridIndex; + /// The grid row. - int iSLSGridRow; - + int iSLSGridRow; + /// The grid column. - int iSLSGridColumn; + 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; - + int iSLSGridMask; + /// The grid bit value identifies the display status. Refer to ADL_DISPLAY_SLSGRID_ORIENTATION_XXX - int iSLSGridValue; + 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. +/// This structure is used to store the display SLS Map information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSMap { /// The Adapter Index - int iAdapterIndex; + 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 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; + ADLSLSGrid grid; /// OS surface index int iSurfaceMapIndex; - /// Screen orientation. E.g., 0, 90, 180, 270 + /// 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 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; + int iNumNativeMode; - /// The first native mode array index in the native mode array - int iFirstNativeModeArrayIndex; + /// 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 number of bezel modes belongs to this map + int iNumBezelMode; - /// The first bezel mode array index in the native mode array - int iFirstBezelModeArrayIndex; + /// 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 number of bezel offsets belongs to this map + int iNumBezelOffset; - /// The first bezel offset array index in the - int iFirstBezelOffsetArrayIndex; + /// 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; + int iSLSMapMask; - /// The bit mask identifies the display map status. Refer to ADL_DISPLAY_SLSMAP_XXX + /// 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. +/// This structure is used to store the display SLS Offset information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSOffset { /// The Adapter Index - int iAdapterIndex; + 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 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; - + ADLDisplayID displayID; + /// SLS Bezel Mode Index int iBezelModeIndex; - /// SLS Bezel Offset X - int iBezelOffsetX; + /// SLS Bezel Offset X + int iBezelOffsetX; /// SLS Bezel Offset Y - int iBezelOffsetY; - - /// SLS Display Width - int iDisplayWidth; + int iBezelOffsetY; + + /// SLS Display Width + int iDisplayWidth; /// SLS Display Height - int iDisplayHeight; - + 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; + 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. +/// This structure is used to store the display SLS Mode information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSMode { /// The Adapter Index - int iAdapterIndex; + 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 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; + int iSLSModeIndex; /// The mode for this map. - ADLMode displayMode; + 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; + /// 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; @@ -1535,91 +1606,107 @@ typedef struct ADLSLSMode ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the display Possible SLS Map information. /// -/// This structure is used to store 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; + /// 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; + int iNumSLSMap; /// The display map list for validation - ADLSLSMap* lpSLSMap; + ADLSLSMap* lpSLSMap; /// the number of display map config to be validated. - int iNumSLSTarget; + int iNumSLSTarget; /// The display target list for validation. - ADLDisplayTarget* lpDisplayTarget; + ADLDisplayTarget* lpDisplayTarget; } ADLPossibleSLSMap, *LPADLPossibleSLSMap; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about the SLS targets. /// -/// This structure is used to store the SLS targets information. +/// This structure is used to store the SLS targets information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLSLSTarget { /// the logic adapter index - int iAdapterIndex; + int iAdapterIndex; /// The SLS map index - int iSLSMapIndex; + int iSLSMapIndex; /// The target ID - ADLDisplayTarget displayTarget; - + ADLDisplayTarget displayTarget; + /// Target postion X in SLS grid - int iSLSGridPositionX; + int iSLSGridPositionX; /// Target postion Y in SLS grid - int iSLSGridPositionY; + int iSLSGridPositionY; - /// The view size width, height and rotation angle per SLS Target - ADLMode viewSize; + /// 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; + int iSLSTargetMask; /// The bit mask identifies status info. It is for function extension purpose - int iSLSTargetValue; + 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. +/// This structure is used to store the Adapter offset stepping size information. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// typedef struct ADLBezelOffsetSteppingSize { /// the logic adapter index - int iAdapterIndex; + int iAdapterIndex; /// The SLS map index - int iSLSMapIndex; + int iSLSMapIndex; /// Bezel X stepping size offset - int iBezelOffsetSteppingSizeX; + int iBezelOffsetSteppingSizeX; /// Bezel Y stepping size offset - int iBezelOffsetSteppingSizeY; + int iBezelOffsetSteppingSizeY; /// Identifies the bits this structure is currently using. It will be the total OR of all the bit definitions. - int iBezelOffsetSteppingSizeMask; + int iBezelOffsetSteppingSizeMask; /// Bit mask identifies the display status. - int iBezelOffsetSteppingSizeValue; + 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 /// @@ -1629,13 +1716,13 @@ typedef struct ADLBezelOffsetSteppingSize typedef struct ADLPXConfigCaps { /// The Persistent logical Adapter Index. - int iAdapterIndex; + 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 \ref ADL_PX_CONFIGCAPS_XXXX. - int iPXConfigCapMask; + /// 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 \ref ADL_PX_CONFIGCAPS_XXXX. - int iPXConfigCapValue; + /// 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; @@ -1676,6 +1763,26 @@ typedef struct _ADLApplicationDataX2 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 /// @@ -1708,7 +1815,6 @@ typedef struct _ADLApplicationProfile PropertyRecord record[1]; }ADLApplicationProfile; -// @} ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about an OD5 Power Control feature @@ -1716,14 +1822,14 @@ typedef struct _ADLApplicationProfile /// This structure is used to store information of an Power Control feature /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// -typedef struct ADLPowerControlInfo +typedef struct ADLPowerControlInfo { /// Minimum value. -int iMinValue; +int iMinValue; /// Maximum value. int iMaxValue; /// The minimum change in between minValue and maxValue. -int iStepValue; +int iStepValue; } ADLPowerControlInfo; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -1737,31 +1843,31 @@ 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; + int iModifiers; /// Horizontal view starting position - int iViewPositionCx; + int iViewPositionCx; /// Vertical view starting position - int iViewPositionCy; + int iViewPositionCy; /// Horizontal left panlock position - int iViewPanLockLeft; + int iViewPanLockLeft; /// Horizontal right panlock position - int iViewPanLockRight; + int iViewPanLockRight; /// Vertical top panlock position - int iViewPanLockTop; + int iViewPanLockTop; /// Vertical bottom panlock position - int iViewPanLockBottom; + int iViewPanLockBottom; /// View resolution in pixels (width) - int iViewResolutionCx; + int iViewResolutionCx; /// View resolution in pixels (hight) - int iViewResolutionCy; + int iViewResolutionCy; }ADLControllerMode; ///////////////////////////////////////////////////////////////////////////////////////////// @@ -1776,13 +1882,13 @@ typedef struct ADLDisplayIdentifier long ulDisplayIndex; /// manufacturer ID of the display - long ulManufacturerId; + long ulManufacturerId; /// product ID of the display - long ulProductId; + long ulProductId; /// serial number of the display - long ulSerialNo; + long ulSerialNo; } ADLDisplayIdentifier; @@ -1797,9 +1903,9 @@ typedef struct _ADLOD6ParameterRange /// The starting value of the clock range int iMin; /// The ending value of the clock range - int iMax; + int iMax; /// The minimum increment between clock values - int iStep; + int iStep; } ADLOD6ParameterRange; @@ -1811,7 +1917,7 @@ typedef struct _ADLOD6ParameterRange //////////////////////////////////////////////////////////////////////////////////////////// typedef struct _ADLOD6Capabilities { - /// Contains a bitmap of the OD6 capability flags. Possible values: \ref ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION, + /// 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 @@ -1820,7 +1926,7 @@ typedef struct _ADLOD6Capabilities 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 + /// 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 @@ -1863,7 +1969,7 @@ typedef struct _ADLOD6PerformanceLevel 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 + /// 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; @@ -1872,9 +1978,9 @@ typedef struct _ADLOD6StateInfo /// Mask for future extension int iExtMask; - /// Variable-sized array of levels. + /// Variable-sized array of levels. /// The number of elements in the array is specified by iNumberofPerformanceLevels. - ADLOD6PerformanceLevel aLevels [1]; + ADLOD6PerformanceLevel aLevels [1]; } ADLOD6StateInfo; @@ -1886,9 +1992,9 @@ typedef struct _ADLOD6StateInfo //////////////////////////////////////////////////////////////////////////////////////////// typedef struct _ADLOD6CurrentStatus { - /// Current engine clock + /// Current engine clock in 10 KHz. int iEngineClock; - /// Current memory clock + /// Current memory clock in 10 KHz. int iMemoryClock; /// Current GPU activity in percent. This /// indicates how "busy" the GPU is. @@ -1986,14 +2092,14 @@ typedef struct _ADLOD6FanSpeedValue /// to be adjusted by changing the PowerTune power limits. /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// -typedef struct _ADLOD6PowerControlInfo +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; + int iStepValue; /// Value for future extension int iExtValue; @@ -2034,19 +2140,19 @@ typedef struct _ADLOD6VoltageControlInfo //////////////////////////////////////////////////////////////////////////////////////////// typedef struct _ADLECCData { - // Single error count - count of errors that can be corrected - int iSec; + // Single error count - count of errors that can be corrected + int iSec; // Double error detect - count of errors that cannot be corrected - int iDed; + int iDed; } ADLECCData; /// \brief Handle to ADL client context. /// -/// ADL clients obtain context handle from initial call to \ref ADL2_Main_Control_Create. +/// 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 +/// the context with call to \ref ADL2_Main_Control_Destroy /// \nosubgrouping typedef void *ADL_CONTEXT_HANDLE; @@ -2078,17 +2184,17 @@ typedef struct ADLDisplayModeX2 //////////////////////////////////////////////////////////////////////////////////////////// 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, + /// 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 + //// \ref ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK int iCapabilities; - /// The Power states that support clock and power customization. Only performance state is currently supported. + /// 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. + /// 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; @@ -2139,5 +2245,527 @@ typedef struct _ADLOD6MaxClockAdjust 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; + /// Reserved + int iReserved[5]; +} 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; + + /// Total number of CUs. Valid for GCN (iGCGen == GCN) + int iNumCUs; + + /// Number of processing elements per CU. Valid for GCN (iGCGen == GCN) + int iNumPEsPerCU; + + /// 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 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 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; + #endif /* ADL_STRUCTURES_H_ */ diff --git a/renderdoc/driver/ihv/amd/official/RGP/DevDriverAPI/ADLGetDriverVersion.cpp b/renderdoc/driver/ihv/amd/official/RGP/DevDriverAPI/ADLGetDriverVersion.cpp index 20978e799..7da41131a 100644 --- a/renderdoc/driver/ihv/amd/official/RGP/DevDriverAPI/ADLGetDriverVersion.cpp +++ b/renderdoc/driver/ihv/amd/official/RGP/DevDriverAPI/ADLGetDriverVersion.cpp @@ -18,18 +18,6 @@ #include "ADLGetDriverVersion.h" -/// Structure used to query driver version info -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; - // Definitions of the used ADL function pointers. typedef int(*ADL2_MAIN_CONTROL_CREATE)(ADL_MAIN_MALLOC_CALLBACK, int, ADL_CONTEXT_HANDLE*); typedef int(*ADL2_MAIN_CONTROL_DESTROY)(ADL_CONTEXT_HANDLE); diff --git a/renderdoc/driver/ihv/amd/official/RGP/DevDriverComponents/inc/protocols/rgpProtocol.h b/renderdoc/driver/ihv/amd/official/RGP/DevDriverComponents/inc/protocols/rgpProtocol.h index 7c13ab4e6..50d7828db 100644 --- a/renderdoc/driver/ihv/amd/official/RGP/DevDriverComponents/inc/protocols/rgpProtocol.h +++ b/renderdoc/driver/ihv/amd/official/RGP/DevDriverComponents/inc/protocols/rgpProtocol.h @@ -299,3 +299,5 @@ namespace DevDriver DD_CHECK_SIZE(RGPPayload, kMaxPayloadSizeInBytes); } } + +#pragma pack(pop) diff --git a/renderdoc/driver/ihv/amd/official/RGP/README.md b/renderdoc/driver/ihv/amd/official/RGP/README.md new file mode 100644 index 000000000..480f47c16 --- /dev/null +++ b/renderdoc/driver/ihv/amd/official/RGP/README.md @@ -0,0 +1,2 @@ +This comes from https://github.com/GPUOpen-Tools/DevDriverTools @ 7772fd0f51055b80fe897bbdaae0e7944687a71d +