master ohmu/fastfetch-openbsd / src / 3rdparty / display-library / adl_defines.h
ohmu  ·  2026-10-15
   1//
   2// Copyright (c) 2016 - 2022 Advanced Micro Devices, Inc. All rights reserved.
   3//
   4// MIT LICENSE:
   5// Permission is hereby granted, free of charge, to any person obtaining a copy
   6// of this software and associated documentation files (the "Software"), to deal
   7// in the Software without restriction, including without limitation the rights
   8// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   9// copies of the Software, and to permit persons to whom the Software is
  10// furnished to do so, subject to the following conditions:
  11//
  12// The above copyright notice and this permission notice shall be included in
  13// all copies or substantial portions of the Software.
  14//
  15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21// SOFTWARE.
  22
  23/// \file adl_defines.h
  24/// \brief Contains all definitions exposed by ADL for \WIN platforms.\n <b>Included in ADL SDK</b>
  25///
  26/// This file contains all definitions used by ADL.
  27/// The ADL definitions include the following:
  28/// \li ADL error codes
  29/// \li Enumerations for the ADLDisplayInfo structure
  30/// \li Maximum limits
  31///
  32
  33#ifndef ADL_DEFINES_H_
  34#define ADL_DEFINES_H_
  35
  36/// \defgroup DEFINES Constants and Definitions
  37/// @{
  38
  39/// \defgroup define_misc Miscellaneous Constant Definitions
  40/// @{
  41
  42/// \name General Definitions
  43/// @{
  44
  45/// Defines ADL_TRUE
  46#define ADL_TRUE    1
  47/// Defines ADL_FALSE
  48#define ADL_FALSE        0
  49
  50/// Defines the maximum string length
  51#define ADL_MAX_CHAR                                    4096
  52/// Defines the maximum string length
  53#define ADL_MAX_PATH                                    256
  54/// Defines the maximum number of supported adapters
  55#define ADL_MAX_ADAPTERS                               250
  56/// Defines the maxumum number of supported displays
  57#define ADL_MAX_DISPLAYS                                150
  58/// Defines the maxumum string length for device name
  59#define ADL_MAX_DEVICENAME                                32
  60/// Defines for all adapters
  61#define ADL_ADAPTER_INDEX_ALL                            -1
  62///    Defines APIs with iOption none
  63#define ADL_MAIN_API_OPTION_NONE                        0
  64///    Defines the maximum of RPC endpoint
  65#define ADL_MAX_RPC_ENDPOINT                        32
  66/// @}
  67
  68/// \name Definitions for iOption parameter used by
  69/// ADL_Display_DDCBlockAccess_Get()
  70/// @{
  71
  72/// Switch to DDC line 2 before sending the command to the display.
  73#define ADL_DDC_OPTION_SWITCHDDC2              0x00000001
  74/// Save command in the registry under a unique key, corresponding to parameter \b iCommandIndex
  75#define ADL_DDC_OPTION_RESTORECOMMAND 0x00000002
  76/// Combine write-read DDC block access command.
  77#define ADL_DDC_OPTION_COMBOWRITEREAD 0x00000010
  78/// Direct DDC access to the immediate device connected to graphics card.
  79/// MST with this option set: DDC command is sent to first branch.
  80/// MST with this option not set: DDC command is sent to the end node sink device.
  81#define ADL_DDC_OPTION_SENDTOIMMEDIATEDEVICE 0x00000020
  82/// @}
  83
  84/// \name Values for
  85/// ADLI2C.iAction used with ADL_Display_WriteAndReadI2C()
  86/// @{
  87
  88#define ADL_DL_I2C_ACTIONREAD								0x00000001
  89#define ADL_DL_I2C_ACTIONWRITE								0x00000002
  90#define ADL_DL_I2C_ACTIONREAD_REPEATEDSTART    				0x00000003
  91#define ADL_DL_I2C_ACTIONIS_PRESENT							0x00000004
  92/// @}
  93
  94
  95/// @}        //Misc
  96
  97/// \defgroup define_adl_results Result Codes
  98/// This group of definitions are the various results returned by all ADL functions \n
  99/// @{
 100/// All OK, but need to wait
 101#define ADL_OK_WAIT                4
 102/// All OK, but need restart
 103#define ADL_OK_RESTART                3
 104/// All OK but need mode change
 105#define ADL_OK_MODE_CHANGE            2
 106/// All OK, but with warning
 107#define ADL_OK_WARNING                1
 108/// ADL function completed successfully
 109#define ADL_OK                    0
 110/// Generic Error. Most likely one or more of the Escape calls to the driver failed!
 111#define ADL_ERR                    -1
 112/// ADL not initialized
 113#define ADL_ERR_NOT_INIT            -2
 114/// One of the parameter passed is invalid
 115#define ADL_ERR_INVALID_PARAM            -3
 116/// One of the parameter size is invalid
 117#define ADL_ERR_INVALID_PARAM_SIZE        -4
 118/// Invalid ADL index passed
 119#define ADL_ERR_INVALID_ADL_IDX            -5
 120/// Invalid controller index passed
 121#define ADL_ERR_INVALID_CONTROLLER_IDX        -6
 122/// Invalid display index passed
 123#define ADL_ERR_INVALID_DIPLAY_IDX        -7
 124/// Function  not supported by the driver
 125#define ADL_ERR_NOT_SUPPORTED            -8
 126/// Null Pointer error
 127#define ADL_ERR_NULL_POINTER            -9
 128/// Call can't be made due to disabled adapter
 129#define ADL_ERR_DISABLED_ADAPTER        -10
 130/// Invalid Callback
 131#define ADL_ERR_INVALID_CALLBACK            -11
 132/// Display Resource conflict
 133#define ADL_ERR_RESOURCE_CONFLICT                -12
 134//Failed to update some of the values. Can be returned by set request that include multiple values if not all values were successfully committed.
 135#define ADL_ERR_SET_INCOMPLETE                 -20
 136/// There's no Linux XDisplay in Linux Console environment
 137#define ADL_ERR_NO_XDISPLAY                    -21
 138/// escape call failed becuse of incompatiable driver found in driver store
 139#define ADL_ERR_CALL_TO_INCOMPATIABLE_DRIVER            -22
 140/// not running as administrator
 141#define ADL_ERR_NO_ADMINISTRATOR_PRIVILEGES            -23
 142/// Feature Sync Start api is not called yet
 143#define ADL_ERR_FEATURESYNC_NOT_STARTED            -24
 144/// Adapter is in an invalid power state
 145#define ADL_ERR_INVALID_POWER_STATE             -25
 146/// The RPC server is in busy state
 147#define ADL_ERR_SERVER_BUSY             -26
 148/// The GPU is occupied by application which cannot be powered off
 149#define ADL_ERR_GPU_IN_USE            -27
 150/// The general RPC connection error
 151#define ADL_ERR_RPC            -28
 152
 153/// @}
 154/// </A>
 155
 156/// \defgroup define_display_type Display Type
 157/// Define Monitor/CRT display type
 158/// @{
 159/// Define Monitor display type
 160#define ADL_DT_MONITOR                  0
 161/// Define TV display type
 162#define ADL_DT_TELEVISION                    1
 163/// Define LCD display type
 164#define ADL_DT_LCD_PANEL                       2
 165/// Define DFP display type
 166#define ADL_DT_DIGITAL_FLAT_PANEL        3
 167/// Define Componment Video display type
 168#define ADL_DT_COMPONENT_VIDEO               4
 169/// Define Projector display type
 170#define ADL_DT_PROJECTOR                       5
 171/// @}
 172
 173/// \defgroup define_display_connection_type Display Connection Type
 174/// @{
 175/// Define unknown display output type
 176#define ADL_DOT_UNKNOWN                0
 177/// Define composite display output type
 178#define ADL_DOT_COMPOSITE            1
 179/// Define SVideo display output type
 180#define ADL_DOT_SVIDEO                2
 181/// Define analog display output type
 182#define ADL_DOT_ANALOG                3
 183/// Define digital display output type
 184#define ADL_DOT_DIGITAL                4
 185/// @}
 186
 187/// \defgroup define_color_type Display Color Type and Source
 188/// Define  Display Color Type and Source
 189/// @{
 190#define ADL_DISPLAY_COLOR_BRIGHTNESS    (1 << 0)
 191#define ADL_DISPLAY_COLOR_CONTRAST    (1 << 1)
 192#define ADL_DISPLAY_COLOR_SATURATION    (1 << 2)
 193#define ADL_DISPLAY_COLOR_HUE        (1 << 3)
 194#define ADL_DISPLAY_COLOR_TEMPERATURE    (1 << 4)
 195
 196/// Color Temperature Source is EDID
 197#define ADL_DISPLAY_COLOR_TEMPERATURE_SOURCE_EDID    (1 << 5)
 198/// Color Temperature Source is User
 199#define ADL_DISPLAY_COLOR_TEMPERATURE_SOURCE_USER    (1 << 6)
 200/// @}
 201
 202/// \defgroup define_adjustment_capabilities Display Adjustment Capabilities
 203/// Display adjustment capabilities values.  Returned by ADL_Display_AdjustCaps_Get
 204/// @{
 205#define ADL_DISPLAY_ADJUST_OVERSCAN        (1 << 0)
 206#define ADL_DISPLAY_ADJUST_VERT_POS        (1 << 1)
 207#define ADL_DISPLAY_ADJUST_HOR_POS        (1 << 2)
 208#define ADL_DISPLAY_ADJUST_VERT_SIZE        (1 << 3)
 209#define ADL_DISPLAY_ADJUST_HOR_SIZE        (1 << 4)
 210#define ADL_DISPLAY_ADJUST_SIZEPOS        (ADL_DISPLAY_ADJUST_VERT_POS | ADL_DISPLAY_ADJUST_HOR_POS | ADL_DISPLAY_ADJUST_VERT_SIZE | ADL_DISPLAY_ADJUST_HOR_SIZE)
 211#define ADL_DISPLAY_CUSTOMMODES            (1<<5)
 212#define ADL_DISPLAY_ADJUST_UNDERSCAN        (1<<6)
 213/// @}
 214
 215///Down-scale support
 216#define ADL_DISPLAY_CAPS_DOWNSCALE        (1 << 0)
 217
 218/// Sharpness support
 219#define ADL_DISPLAY_CAPS_SHARPNESS      (1 << 0)
 220
 221/// \defgroup define_desktop_config Desktop Configuration Flags
 222/// These flags are used by ADL_DesktopConfig_xxx
 223/// \deprecated This API has been deprecated because it was only used for RandR 1.1 (Red Hat 5.x) distributions which is now not supported.
 224/// @{
 225#define ADL_DESKTOPCONFIG_UNKNOWN    0          /* UNKNOWN desktop config   */
 226#define ADL_DESKTOPCONFIG_SINGLE     (1 <<  0)    /* Single                   */
 227#define ADL_DESKTOPCONFIG_CLONE      (1 <<  2)    /* Clone                    */
 228#define ADL_DESKTOPCONFIG_BIGDESK_H  (1 <<  4)    /* Big Desktop Horizontal   */
 229#define ADL_DESKTOPCONFIG_BIGDESK_V  (1 <<  5)    /* Big Desktop Vertical     */
 230#define ADL_DESKTOPCONFIG_BIGDESK_HR (1 <<  6)    /* Big Desktop Reverse Horz */
 231#define ADL_DESKTOPCONFIG_BIGDESK_VR (1 <<  7)    /* Big Desktop Reverse Vert */
 232#define ADL_DESKTOPCONFIG_RANDR12    (1 <<  8)    /* RandR 1.2 Multi-display */
 233/// @}
 234
 235/// needed for ADLDDCInfo structure
 236#define ADL_MAX_DISPLAY_NAME                                256
 237
 238/// \defgroup define_edid_flags Values for ulDDCInfoFlag
 239/// defines for ulDDCInfoFlag EDID flag
 240/// @{
 241#define ADL_DISPLAYDDCINFOEX_FLAG_PROJECTORDEVICE       (1 << 0)
 242#define ADL_DISPLAYDDCINFOEX_FLAG_EDIDEXTENSION         (1 << 1)
 243#define ADL_DISPLAYDDCINFOEX_FLAG_DIGITALDEVICE         (1 << 2)
 244#define ADL_DISPLAYDDCINFOEX_FLAG_HDMIAUDIODEVICE       (1 << 3)
 245#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORTS_AI           (1 << 4)
 246#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORT_xvYCC601      (1 << 5)
 247#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORT_xvYCC709      (1 << 6)
 248/// @}
 249
 250/// \defgroup define_displayinfo_connector Display Connector Type
 251/// defines for ADLDisplayInfo.iDisplayConnector
 252/// @{
 253#define ADL_DISPLAY_CONTYPE_UNKNOWN                 0
 254#define ADL_DISPLAY_CONTYPE_VGA                     1
 255#define ADL_DISPLAY_CONTYPE_DVI_D                   2
 256#define ADL_DISPLAY_CONTYPE_DVI_I                   3
 257#define ADL_DISPLAY_CONTYPE_ATICVDONGLE_NTSC        4
 258#define ADL_DISPLAY_CONTYPE_ATICVDONGLE_JPN         5
 259#define ADL_DISPLAY_CONTYPE_ATICVDONGLE_NONI2C_JPN  6
 260#define ADL_DISPLAY_CONTYPE_ATICVDONGLE_NONI2C_NTSC 7
 261#define ADL_DISPLAY_CONTYPE_PROPRIETARY                8
 262#define ADL_DISPLAY_CONTYPE_HDMI_TYPE_A             10
 263#define ADL_DISPLAY_CONTYPE_HDMI_TYPE_B             11
 264#define ADL_DISPLAY_CONTYPE_SVIDEO                   12
 265#define ADL_DISPLAY_CONTYPE_COMPOSITE               13
 266#define ADL_DISPLAY_CONTYPE_RCA_3COMPONENT          14
 267#define ADL_DISPLAY_CONTYPE_DISPLAYPORT             15
 268#define ADL_DISPLAY_CONTYPE_EDP                     16
 269#define ADL_DISPLAY_CONTYPE_WIRELESSDISPLAY         17
 270#define ADL_DISPLAY_CONTYPE_USB_TYPE_C              18
 271/// @}
 272
 273/// TV Capabilities and Standards
 274/// \defgroup define_tv_caps TV Capabilities and Standards
 275/// \deprecated Dropping support for TV displays
 276/// @{
 277#define ADL_TV_STANDARDS            (1 << 0)
 278#define ADL_TV_SCART                (1 << 1)
 279
 280/// TV Standards Definitions
 281#define ADL_STANDARD_NTSC_M        (1 << 0)
 282#define ADL_STANDARD_NTSC_JPN        (1 << 1)
 283#define ADL_STANDARD_NTSC_N        (1 << 2)
 284#define ADL_STANDARD_PAL_B        (1 << 3)
 285#define ADL_STANDARD_PAL_COMB_N        (1 << 4)
 286#define ADL_STANDARD_PAL_D        (1 << 5)
 287#define ADL_STANDARD_PAL_G        (1 << 6)
 288#define ADL_STANDARD_PAL_H        (1 << 7)
 289#define ADL_STANDARD_PAL_I        (1 << 8)
 290#define ADL_STANDARD_PAL_K        (1 << 9)
 291#define ADL_STANDARD_PAL_K1        (1 << 10)
 292#define ADL_STANDARD_PAL_L        (1 << 11)
 293#define ADL_STANDARD_PAL_M        (1 << 12)
 294#define ADL_STANDARD_PAL_N        (1 << 13)
 295#define ADL_STANDARD_PAL_SECAM_D    (1 << 14)
 296#define ADL_STANDARD_PAL_SECAM_K    (1 << 15)
 297#define ADL_STANDARD_PAL_SECAM_K1    (1 << 16)
 298#define ADL_STANDARD_PAL_SECAM_L    (1 << 17)
 299/// @}
 300
 301
 302/// \defgroup define_video_custom_mode Video Custom Mode flags
 303/// Component Video Custom Mode flags.  This is used by the iFlags parameter in ADLCustomMode
 304/// @{
 305#define ADL_CUSTOMIZEDMODEFLAG_MODESUPPORTED    (1 << 0)
 306#define ADL_CUSTOMIZEDMODEFLAG_NOTDELETETABLE    (1 << 1)
 307#define ADL_CUSTOMIZEDMODEFLAG_INSERTBYDRIVER    (1 << 2)
 308#define ADL_CUSTOMIZEDMODEFLAG_INTERLACED    (1 << 3)
 309#define ADL_CUSTOMIZEDMODEFLAG_BASEMODE        (1 << 4)
 310/// @}
 311
 312/// \defgroup define_ddcinfoflag Values used for DDCInfoFlag
 313/// ulDDCInfoFlag field values used by the ADLDDCInfo structure
 314/// @{
 315#define ADL_DISPLAYDDCINFOEX_FLAG_PROJECTORDEVICE    (1 << 0)
 316#define ADL_DISPLAYDDCINFOEX_FLAG_EDIDEXTENSION        (1 << 1)
 317#define ADL_DISPLAYDDCINFOEX_FLAG_DIGITALDEVICE        (1 << 2)
 318#define ADL_DISPLAYDDCINFOEX_FLAG_HDMIAUDIODEVICE    (1 << 3)
 319#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORTS_AI        (1 << 4)
 320#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORT_xvYCC601    (1 << 5)
 321#define ADL_DISPLAYDDCINFOEX_FLAG_SUPPORT_xvYCC709    (1 << 6)
 322/// @}
 323
 324/// \defgroup define_cv_dongle Values used by ADL_CV_DongleSettings_xxx
 325/// The following is applicable to ADL_DISPLAY_CONTYPE_ATICVDONGLE_JP and ADL_DISPLAY_CONTYPE_ATICVDONGLE_NONI2C_D only
 326/// \deprecated Dropping support for Component Video displays
 327/// @{
 328#define ADL_DISPLAY_CV_DONGLE_D1          (1 << 0)
 329#define ADL_DISPLAY_CV_DONGLE_D2          (1 << 1)
 330#define ADL_DISPLAY_CV_DONGLE_D3          (1 << 2)
 331#define ADL_DISPLAY_CV_DONGLE_D4          (1 << 3)
 332#define ADL_DISPLAY_CV_DONGLE_D5          (1 << 4)
 333
 334/// The following is applicable to ADL_DISPLAY_CONTYPE_ATICVDONGLE_NA and ADL_DISPLAY_CONTYPE_ATICVDONGLE_NONI2C only
 335
 336#define ADL_DISPLAY_CV_DONGLE_480I        (1 << 0)
 337#define ADL_DISPLAY_CV_DONGLE_480P        (1 << 1)
 338#define ADL_DISPLAY_CV_DONGLE_540P        (1 << 2)
 339#define ADL_DISPLAY_CV_DONGLE_720P        (1 << 3)
 340#define ADL_DISPLAY_CV_DONGLE_1080I       (1 << 4)
 341#define ADL_DISPLAY_CV_DONGLE_1080P       (1 << 5)
 342#define ADL_DISPLAY_CV_DONGLE_16_9        (1 << 6)
 343#define ADL_DISPLAY_CV_DONGLE_720P50      (1 << 7)
 344#define ADL_DISPLAY_CV_DONGLE_1080I25     (1 << 8)
 345#define ADL_DISPLAY_CV_DONGLE_576I25      (1 << 9)
 346#define ADL_DISPLAY_CV_DONGLE_576P50      (1 << 10)
 347#define ADL_DISPLAY_CV_DONGLE_1080P24      (1 << 11)
 348#define ADL_DISPLAY_CV_DONGLE_1080P25      (1 << 12)
 349#define ADL_DISPLAY_CV_DONGLE_1080P30      (1 << 13)
 350#define ADL_DISPLAY_CV_DONGLE_1080P50      (1 << 14)
 351/// @}
 352
 353/// \defgroup define_formats_ovr    Formats Override Settings
 354/// Display force modes flags
 355/// @{
 356///
 357#define ADL_DISPLAY_FORMAT_FORCE_720P        0x00000001
 358#define ADL_DISPLAY_FORMAT_FORCE_1080I        0x00000002
 359#define ADL_DISPLAY_FORMAT_FORCE_1080P        0x00000004
 360#define ADL_DISPLAY_FORMAT_FORCE_720P50        0x00000008
 361#define ADL_DISPLAY_FORMAT_FORCE_1080I25    0x00000010
 362#define ADL_DISPLAY_FORMAT_FORCE_576I25        0x00000020
 363#define ADL_DISPLAY_FORMAT_FORCE_576P50        0x00000040
 364#define ADL_DISPLAY_FORMAT_FORCE_1080P24    0x00000080
 365#define ADL_DISPLAY_FORMAT_FORCE_1080P25    0x00000100
 366#define ADL_DISPLAY_FORMAT_FORCE_1080P30    0x00000200
 367#define ADL_DISPLAY_FORMAT_FORCE_1080P50    0x00000400
 368
 369///< Below are \b EXTENDED display mode flags
 370
 371#define ADL_DISPLAY_FORMAT_CVDONGLEOVERIDE  0x00000001
 372#define ADL_DISPLAY_FORMAT_CVMODEUNDERSCAN  0x00000002
 373#define ADL_DISPLAY_FORMAT_FORCECONNECT_SUPPORTED  0x00000004
 374#define ADL_DISPLAY_FORMAT_RESTRICT_FORMAT_SELECTION 0x00000008
 375#define ADL_DISPLAY_FORMAT_SETASPECRATIO 0x00000010
 376#define ADL_DISPLAY_FORMAT_FORCEMODES    0x00000020
 377#define ADL_DISPLAY_FORMAT_LCDRTCCOEFF   0x00000040
 378/// @}
 379
 380/// Defines used by OD5
 381#define ADL_PM_PARAM_DONT_CHANGE    0
 382
 383/// The following defines Bus types
 384/// @{
 385#define ADL_BUSTYPE_PCI           0       /* PCI bus                          */
 386#define ADL_BUSTYPE_AGP           1       /* AGP bus                          */
 387#define ADL_BUSTYPE_PCIE          2       /* PCI Express bus                  */
 388#define ADL_BUSTYPE_PCIE_GEN2     3       /* PCI Express 2nd generation bus   */
 389#define ADL_BUSTYPE_PCIE_GEN3     4       /* PCI Express 3rd generation bus   */
 390#define ADL_BUSTYPE_PCIE_GEN4     5       /* PCI Express 4th generation bus   */
 391#define ADL_BUSTYPE_PCIE_GEN5     6       /* PCI Express 5th generation bus   */
 392/// @}
 393
 394/// \defgroup define_ws_caps    Workstation Capabilities
 395/// Workstation values
 396/// @{
 397
 398/// This value indicates that the workstation card supports active stereo though stereo output connector
 399#define ADL_STEREO_SUPPORTED        (1 << 2)
 400/// This value indicates that the workstation card supports active stereo via "blue-line"
 401#define ADL_STEREO_BLUE_LINE        (1 << 3)
 402/// This value is used to turn off stereo mode.
 403#define ADL_STEREO_OFF                0
 404/// This value indicates that the workstation card supports active stereo.  This is also used to set the stereo mode to active though the stereo output connector
 405#define ADL_STEREO_ACTIVE             (1 << 1)
 406/// This value indicates that the workstation card supports auto-stereo monitors with horizontal interleave. This is also used to set the stereo mode to use the auto-stereo monitor with horizontal interleave
 407#define ADL_STEREO_AUTO_HORIZONTAL    (1 << 30)
 408/// 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
 409#define ADL_STEREO_AUTO_VERTICAL    (1 << 31)
 410/// This value indicates that the workstation card supports passive stereo, ie. non stereo sync
 411#define ADL_STEREO_PASSIVE              (1 << 6)
 412/// 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
 413#define ADL_STEREO_PASSIVE_HORIZ        (1 << 7)
 414/// 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
 415#define ADL_STEREO_PASSIVE_VERT         (1 << 8)
 416/// This value indicates that the workstation card supports auto-stereo monitors with Samsung.
 417#define ADL_STEREO_AUTO_SAMSUNG        (1 << 11)
 418/// This value indicates that the workstation card supports auto-stereo monitors with Tridility.
 419#define ADL_STEREO_AUTO_TSL         (1 << 12)
 420/// This value indicates that the workstation card supports DeepBitDepth (10 bpp)
 421#define ADL_DEEPBITDEPTH_10BPP_SUPPORTED   (1 << 5)
 422
 423/// This value indicates that the workstation supports 8-Bit Grayscale
 424#define ADL_8BIT_GREYSCALE_SUPPORTED   (1 << 9)
 425/// This value indicates that the workstation supports CUSTOM TIMING
 426#define ADL_CUSTOM_TIMING_SUPPORTED   (1 << 10)
 427
 428/// Load balancing is supported.
 429#define ADL_WORKSTATION_LOADBALANCING_SUPPORTED         0x00000001
 430/// Load balancing is available.
 431#define ADL_WORKSTATION_LOADBALANCING_AVAILABLE         0x00000002
 432
 433/// Load balancing is disabled.
 434#define ADL_WORKSTATION_LOADBALANCING_DISABLED          0x00000000
 435/// Load balancing is Enabled.
 436#define ADL_WORKSTATION_LOADBALANCING_ENABLED           0x00000001
 437
 438
 439
 440/// @}
 441
 442/// \defgroup define_adapterspeed speed setting from the adapter
 443/// @{
 444#define ADL_CONTEXT_SPEED_UNFORCED        0        /* default asic running speed */
 445#define ADL_CONTEXT_SPEED_FORCEHIGH        1        /* asic running speed is forced to high */
 446#define ADL_CONTEXT_SPEED_FORCELOW        2        /* asic running speed is forced to low */
 447
 448#define ADL_ADAPTER_SPEEDCAPS_SUPPORTED        (1 << 0)    /* change asic running speed setting is supported */
 449/// @}
 450
 451/// \defgroup define_glsync Genlock related values
 452/// GL-Sync port types (unique values)
 453/// @{
 454/// Unknown port of GL-Sync module
 455#define ADL_GLSYNC_PORT_UNKNOWN        0
 456/// BNC port of of GL-Sync module
 457#define ADL_GLSYNC_PORT_BNC            1
 458/// RJ45(1) port of of GL-Sync module
 459#define ADL_GLSYNC_PORT_RJ45PORT1    2
 460/// RJ45(2) port of of GL-Sync module
 461#define ADL_GLSYNC_PORT_RJ45PORT2    3
 462
 463// GL-Sync Genlock settings mask (bit-vector)
 464
 465/// None of the ADLGLSyncGenlockConfig members are valid
 466#define ADL_GLSYNC_CONFIGMASK_NONE                0
 467/// The ADLGLSyncGenlockConfig.lSignalSource member is valid
 468#define ADL_GLSYNC_CONFIGMASK_SIGNALSOURCE        (1 << 0)
 469/// The ADLGLSyncGenlockConfig.iSyncField member is valid
 470#define ADL_GLSYNC_CONFIGMASK_SYNCFIELD            (1 << 1)
 471/// The ADLGLSyncGenlockConfig.iSampleRate member is valid
 472#define ADL_GLSYNC_CONFIGMASK_SAMPLERATE        (1 << 2)
 473/// The ADLGLSyncGenlockConfig.lSyncDelay member is valid
 474#define ADL_GLSYNC_CONFIGMASK_SYNCDELAY            (1 << 3)
 475/// The ADLGLSyncGenlockConfig.iTriggerEdge member is valid
 476#define ADL_GLSYNC_CONFIGMASK_TRIGGEREDGE        (1 << 4)
 477/// The ADLGLSyncGenlockConfig.iScanRateCoeff member is valid
 478#define ADL_GLSYNC_CONFIGMASK_SCANRATECOEFF        (1 << 5)
 479/// The ADLGLSyncGenlockConfig.lFramelockCntlVector member is valid
 480#define ADL_GLSYNC_CONFIGMASK_FRAMELOCKCNTL        (1 << 6)
 481
 482
 483// GL-Sync Framelock control mask (bit-vector)
 484
 485/// Framelock is disabled
 486#define ADL_GLSYNC_FRAMELOCKCNTL_NONE            0
 487/// Framelock is enabled
 488#define ADL_GLSYNC_FRAMELOCKCNTL_ENABLE            ( 1 << 0)
 489
 490#define ADL_GLSYNC_FRAMELOCKCNTL_DISABLE        ( 1 << 1)
 491#define ADL_GLSYNC_FRAMELOCKCNTL_SWAP_COUNTER_RESET    ( 1 << 2)
 492#define ADL_GLSYNC_FRAMELOCKCNTL_SWAP_COUNTER_ACK    ( 1 << 3)
 493#define ADL_GLSYNC_FRAMELOCKCNTL_VERSION_KMD    (1 << 4)
 494
 495#define ADL_GLSYNC_FRAMELOCKCNTL_STATE_ENABLE        ( 1 << 0)
 496#define ADL_GLSYNC_FRAMELOCKCNTL_STATE_KMD        (1 << 4)
 497
 498// GL-Sync Framelock counters mask (bit-vector)
 499#define ADL_GLSYNC_COUNTER_SWAP                ( 1 << 0 )
 500
 501// GL-Sync Signal Sources (unique values)
 502
 503/// GL-Sync signal source is undefined
 504#define ADL_GLSYNC_SIGNALSOURCE_UNDEFINED    0x00000100
 505/// GL-Sync signal source is Free Run
 506#define ADL_GLSYNC_SIGNALSOURCE_FREERUN      0x00000101
 507/// GL-Sync signal source is the BNC GL-Sync port
 508#define ADL_GLSYNC_SIGNALSOURCE_BNCPORT      0x00000102
 509/// GL-Sync signal source is the RJ45(1) GL-Sync port
 510#define ADL_GLSYNC_SIGNALSOURCE_RJ45PORT1    0x00000103
 511/// GL-Sync signal source is the RJ45(2) GL-Sync port
 512#define ADL_GLSYNC_SIGNALSOURCE_RJ45PORT2    0x00000104
 513
 514
 515// GL-Sync Signal Types (unique values)
 516
 517/// GL-Sync signal type is unknown
 518#define ADL_GLSYNC_SIGNALTYPE_UNDEFINED      0
 519/// GL-Sync signal type is 480I
 520#define ADL_GLSYNC_SIGNALTYPE_480I           1
 521/// GL-Sync signal type is 576I
 522#define ADL_GLSYNC_SIGNALTYPE_576I           2
 523/// GL-Sync signal type is 480P
 524#define ADL_GLSYNC_SIGNALTYPE_480P           3
 525/// GL-Sync signal type is 576P
 526#define ADL_GLSYNC_SIGNALTYPE_576P           4
 527/// GL-Sync signal type is 720P
 528#define ADL_GLSYNC_SIGNALTYPE_720P           5
 529/// GL-Sync signal type is 1080P
 530#define ADL_GLSYNC_SIGNALTYPE_1080P          6
 531/// GL-Sync signal type is 1080I
 532#define ADL_GLSYNC_SIGNALTYPE_1080I          7
 533/// GL-Sync signal type is SDI
 534#define ADL_GLSYNC_SIGNALTYPE_SDI            8
 535/// GL-Sync signal type is TTL
 536#define ADL_GLSYNC_SIGNALTYPE_TTL            9
 537/// GL_Sync signal type is Analog
 538#define ADL_GLSYNC_SIGNALTYPE_ANALOG        10
 539
 540// GL-Sync Sync Field options (unique values)
 541
 542///GL-Sync sync field option is undefined
 543#define ADL_GLSYNC_SYNCFIELD_UNDEFINED        0
 544///GL-Sync sync field option is Sync to Field 1 (used for Interlaced signal types)
 545#define ADL_GLSYNC_SYNCFIELD_BOTH            1
 546///GL-Sync sync field option is Sync to Both fields (used for Interlaced signal types)
 547#define ADL_GLSYNC_SYNCFIELD_1                2
 548
 549
 550// GL-Sync trigger edge options (unique values)
 551
 552/// GL-Sync trigger edge is undefined
 553#define ADL_GLSYNC_TRIGGEREDGE_UNDEFINED     0
 554/// GL-Sync trigger edge is the rising edge
 555#define ADL_GLSYNC_TRIGGEREDGE_RISING        1
 556/// GL-Sync trigger edge is the falling edge
 557#define ADL_GLSYNC_TRIGGEREDGE_FALLING       2
 558/// GL-Sync trigger edge is both the rising and the falling edge
 559#define ADL_GLSYNC_TRIGGEREDGE_BOTH          3
 560
 561
 562// GL-Sync scan rate coefficient/multiplier options (unique values)
 563
 564/// GL-Sync scan rate coefficient/multiplier is undefined
 565#define ADL_GLSYNC_SCANRATECOEFF_UNDEFINED   0
 566/// GL-Sync scan rate coefficient/multiplier is 5
 567#define ADL_GLSYNC_SCANRATECOEFF_x5          1
 568/// GL-Sync scan rate coefficient/multiplier is 4
 569#define ADL_GLSYNC_SCANRATECOEFF_x4          2
 570/// GL-Sync scan rate coefficient/multiplier is 3
 571#define ADL_GLSYNC_SCANRATECOEFF_x3          3
 572/// GL-Sync scan rate coefficient/multiplier is 5:2 (SMPTE)
 573#define ADL_GLSYNC_SCANRATECOEFF_x5_DIV_2    4
 574/// GL-Sync scan rate coefficient/multiplier is 2
 575#define ADL_GLSYNC_SCANRATECOEFF_x2          5
 576/// GL-Sync scan rate coefficient/multiplier is 3 : 2
 577#define ADL_GLSYNC_SCANRATECOEFF_x3_DIV_2    6
 578/// GL-Sync scan rate coefficient/multiplier is 5 : 4
 579#define ADL_GLSYNC_SCANRATECOEFF_x5_DIV_4    7
 580/// GL-Sync scan rate coefficient/multiplier is 1 (default)
 581#define ADL_GLSYNC_SCANRATECOEFF_x1          8
 582/// GL-Sync scan rate coefficient/multiplier is 4 : 5
 583#define ADL_GLSYNC_SCANRATECOEFF_x4_DIV_5    9
 584/// GL-Sync scan rate coefficient/multiplier is 2 : 3
 585#define ADL_GLSYNC_SCANRATECOEFF_x2_DIV_3    10
 586/// GL-Sync scan rate coefficient/multiplier is 1 : 2
 587#define ADL_GLSYNC_SCANRATECOEFF_x1_DIV_2    11
 588/// GL-Sync scan rate coefficient/multiplier is 2 : 5 (SMPTE)
 589#define ADL_GLSYNC_SCANRATECOEFF_x2_DIV_5    12
 590/// GL-Sync scan rate coefficient/multiplier is 1 : 3
 591#define ADL_GLSYNC_SCANRATECOEFF_x1_DIV_3    13
 592/// GL-Sync scan rate coefficient/multiplier is 1 : 4
 593#define ADL_GLSYNC_SCANRATECOEFF_x1_DIV_4    14
 594/// GL-Sync scan rate coefficient/multiplier is 1 : 5
 595#define ADL_GLSYNC_SCANRATECOEFF_x1_DIV_5    15
 596
 597
 598// GL-Sync port (signal presence) states (unique values)
 599
 600/// GL-Sync port state is undefined
 601#define ADL_GLSYNC_PORTSTATE_UNDEFINED       0
 602/// GL-Sync port is not connected
 603#define ADL_GLSYNC_PORTSTATE_NOCABLE         1
 604/// GL-Sync port is Idle
 605#define ADL_GLSYNC_PORTSTATE_IDLE            2
 606/// GL-Sync port has an Input signal
 607#define ADL_GLSYNC_PORTSTATE_INPUT           3
 608/// GL-Sync port is Output
 609#define ADL_GLSYNC_PORTSTATE_OUTPUT          4
 610
 611
 612// GL-Sync LED types (used index within ADL_Workstation_GLSyncPortState_Get returned ppGlSyncLEDs array) (unique values)
 613
 614/// Index into the ADL_Workstation_GLSyncPortState_Get returned ppGlSyncLEDs array for the one LED of the BNC port
 615#define ADL_GLSYNC_LEDTYPE_BNC               0
 616/// Index into the ADL_Workstation_GLSyncPortState_Get returned ppGlSyncLEDs array for the Left LED of the RJ45(1) or RJ45(2) port
 617#define ADL_GLSYNC_LEDTYPE_RJ45_LEFT         0
 618/// Index into the ADL_Workstation_GLSyncPortState_Get returned ppGlSyncLEDs array for the Right LED of the RJ45(1) or RJ45(2) port
 619#define ADL_GLSYNC_LEDTYPE_RJ45_RIGHT        1
 620
 621
 622// GL-Sync LED colors (unique values)
 623
 624/// GL-Sync LED undefined color
 625#define ADL_GLSYNC_LEDCOLOR_UNDEFINED        0
 626/// GL-Sync LED is unlit
 627#define ADL_GLSYNC_LEDCOLOR_NOLIGHT          1
 628/// GL-Sync LED is yellow
 629#define ADL_GLSYNC_LEDCOLOR_YELLOW           2
 630/// GL-Sync LED is red
 631#define ADL_GLSYNC_LEDCOLOR_RED              3
 632/// GL-Sync LED is green
 633#define ADL_GLSYNC_LEDCOLOR_GREEN            4
 634/// GL-Sync LED is flashing green
 635#define ADL_GLSYNC_LEDCOLOR_FLASH_GREEN      5
 636
 637
 638// GL-Sync Port Control (refers one GL-Sync Port) (unique values)
 639
 640/// Used to configure the RJ54(1) or RJ42(2) port of GL-Sync is as Idle
 641#define ADL_GLSYNC_PORTCNTL_NONE             0x00000000
 642/// Used to configure the RJ54(1) or RJ42(2) port of GL-Sync is as Output
 643#define ADL_GLSYNC_PORTCNTL_OUTPUT           0x00000001
 644
 645
 646// GL-Sync Mode Control (refers one Display/Controller) (bitfields)
 647
 648/// Used to configure the display to use internal timing (not genlocked)
 649#define ADL_GLSYNC_MODECNTL_NONE             0x00000000
 650/// Bitfield used to configure the display as genlocked (either as Timing Client or as Timing Server)
 651#define ADL_GLSYNC_MODECNTL_GENLOCK          0x00000001
 652/// Bitfield used to configure the display as Timing Server
 653#define ADL_GLSYNC_MODECNTL_TIMINGSERVER     0x00000002
 654
 655// GL-Sync Mode Status
 656/// Display is currently not genlocked
 657#define ADL_GLSYNC_MODECNTL_STATUS_NONE         0x00000000
 658/// Display is currently genlocked
 659#define ADL_GLSYNC_MODECNTL_STATUS_GENLOCK   0x00000001
 660/// Display requires a mode switch
 661#define ADL_GLSYNC_MODECNTL_STATUS_SETMODE_REQUIRED 0x00000002
 662/// Display is capable of being genlocked
 663#define ADL_GLSYNC_MODECNTL_STATUS_GENLOCK_ALLOWED 0x00000004
 664
 665#define ADL_MAX_GLSYNC_PORTS                            8
 666#define ADL_MAX_GLSYNC_PORT_LEDS                        8
 667
 668/// @}
 669
 670/// \defgroup define_crossfirestate CrossfireX state of a particular adapter CrossfireX combination
 671/// @{
 672#define ADL_XFIREX_STATE_NOINTERCONNECT            ( 1 << 0 )    /* Dongle / cable is missing */
 673#define ADL_XFIREX_STATE_DOWNGRADEPIPES            ( 1 << 1 )    /* CrossfireX can be enabled if pipes are downgraded */
 674#define ADL_XFIREX_STATE_DOWNGRADEMEM            ( 1 << 2 )    /* CrossfireX cannot be enabled unless mem downgraded */
 675#define ADL_XFIREX_STATE_REVERSERECOMMENDED        ( 1 << 3 )    /* Card reversal recommended, CrossfireX cannot be enabled. */
 676#define ADL_XFIREX_STATE_3DACTIVE            ( 1 << 4 )    /* 3D client is active - CrossfireX cannot be safely enabled */
 677#define ADL_XFIREX_STATE_MASTERONSLAVE            ( 1 << 5 )    /* Dongle is OK but master is on slave */
 678#define ADL_XFIREX_STATE_NODISPLAYCONNECT        ( 1 << 6 )    /* No (valid) display connected to master card. */
 679#define ADL_XFIREX_STATE_NOPRIMARYVIEW            ( 1 << 7 )    /* CrossfireX is enabled but master is not current primary device */
 680#define ADL_XFIREX_STATE_DOWNGRADEVISMEM        ( 1 << 8 )    /* CrossfireX cannot be enabled unless visible mem downgraded */
 681#define ADL_XFIREX_STATE_LESSTHAN8LANE_MASTER        ( 1 << 9 )     /* CrossfireX can be enabled however performance not optimal due to <8 lanes */
 682#define ADL_XFIREX_STATE_LESSTHAN8LANE_SLAVE        ( 1 << 10 )    /* CrossfireX can be enabled however performance not optimal due to <8 lanes */
 683#define ADL_XFIREX_STATE_PEERTOPEERFAILED        ( 1 << 11 )    /* CrossfireX cannot be enabled due to failed peer to peer test */
 684#define ADL_XFIREX_STATE_MEMISDOWNGRADED        ( 1 << 16 )    /* Notification that memory is currently downgraded */
 685#define ADL_XFIREX_STATE_PIPESDOWNGRADED        ( 1 << 17 )    /* Notification that pipes are currently downgraded */
 686#define ADL_XFIREX_STATE_XFIREXACTIVE            ( 1 << 18 )    /* CrossfireX is enabled on current device */
 687#define ADL_XFIREX_STATE_VISMEMISDOWNGRADED        ( 1 << 19 )    /* Notification that visible FB memory is currently downgraded */
 688#define ADL_XFIREX_STATE_INVALIDINTERCONNECTION        ( 1 << 20 )    /* Cannot support current inter-connection configuration */
 689#define ADL_XFIREX_STATE_NONP2PMODE            ( 1 << 21 )    /* CrossfireX will only work with clients supporting non P2P mode */
 690#define ADL_XFIREX_STATE_DOWNGRADEMEMBANKS        ( 1 << 22 )    /* CrossfireX cannot be enabled unless memory banks downgraded */
 691#define ADL_XFIREX_STATE_MEMBANKSDOWNGRADED        ( 1 << 23 )    /* Notification that memory banks are currently downgraded */
 692#define ADL_XFIREX_STATE_DUALDISPLAYSALLOWED        ( 1 << 24 )    /* Extended desktop or clone mode is allowed. */
 693#define ADL_XFIREX_STATE_P2P_APERTURE_MAPPING        ( 1 << 25 )    /* P2P mapping was through peer aperture */
 694#define ADL_XFIREX_STATE_P2PFLUSH_REQUIRED        ADL_XFIREX_STATE_P2P_APERTURE_MAPPING    /* For back compatible */
 695#define ADL_XFIREX_STATE_XSP_CONNECTED            ( 1 << 26 )    /* There is CrossfireX side port connection between GPUs */
 696#define ADL_XFIREX_STATE_ENABLE_CF_REBOOT_REQUIRED    ( 1 << 27 )    /* System needs a reboot bofore enable CrossfireX */
 697#define ADL_XFIREX_STATE_DISABLE_CF_REBOOT_REQUIRED    ( 1 << 28 )    /* System needs a reboot after disable CrossfireX */
 698#define ADL_XFIREX_STATE_DRV_HANDLE_DOWNGRADE_KEY    ( 1 << 29 )    /* Indicate base driver handles the downgrade key updating */
 699#define ADL_XFIREX_STATE_CF_RECONFIG_REQUIRED        ( 1 << 30 )    /* CrossfireX need to be reconfigured by CCC because of a LDA chain broken */
 700#define ADL_XFIREX_STATE_ERRORGETTINGSTATUS        ( 1 << 31 )    /* Could not obtain current status */
 701/// @}
 702
 703///////////////////////////////////////////////////////////////////////////
 704// ADL_DISPLAY_ADJUSTMENT_PIXELFORMAT adjustment values
 705// (bit-vector)
 706///////////////////////////////////////////////////////////////////////////
 707/// \defgroup define_pixel_formats Pixel Formats values
 708/// This group defines the various Pixel Formats that a particular digital display can support. \n
 709/// Since a display can support multiple formats, these values can be bit-or'ed to indicate the various formats \n
 710/// @{
 711#define ADL_DISPLAY_PIXELFORMAT_UNKNOWN             0
 712#define ADL_DISPLAY_PIXELFORMAT_RGB                       (1 << 0)
 713#define ADL_DISPLAY_PIXELFORMAT_YCRCB444                  (1 << 1)    //Limited range
 714#define ADL_DISPLAY_PIXELFORMAT_YCRCB422                 (1 << 2)    //Limited range
 715#define ADL_DISPLAY_PIXELFORMAT_RGB_LIMITED_RANGE      (1 << 3)
 716#define ADL_DISPLAY_PIXELFORMAT_RGB_FULL_RANGE    ADL_DISPLAY_PIXELFORMAT_RGB  //Full range
 717#define ADL_DISPLAY_PIXELFORMAT_YCRCB420              (1 << 4)
 718/// @}
 719
 720/// \defgroup define_contype Connector Type Values
 721/// ADLDisplayConfig.ulConnectorType defines
 722/// @{
 723#define ADL_DL_DISPLAYCONFIG_CONTYPE_UNKNOWN      0
 724#define ADL_DL_DISPLAYCONFIG_CONTYPE_CV_NONI2C_JP 1
 725#define ADL_DL_DISPLAYCONFIG_CONTYPE_CV_JPN       2
 726#define ADL_DL_DISPLAYCONFIG_CONTYPE_CV_NA        3
 727#define ADL_DL_DISPLAYCONFIG_CONTYPE_CV_NONI2C_NA 4
 728#define ADL_DL_DISPLAYCONFIG_CONTYPE_VGA          5
 729#define ADL_DL_DISPLAYCONFIG_CONTYPE_DVI_D        6
 730#define ADL_DL_DISPLAYCONFIG_CONTYPE_DVI_I        7
 731#define ADL_DL_DISPLAYCONFIG_CONTYPE_HDMI_TYPE_A  8
 732#define ADL_DL_DISPLAYCONFIG_CONTYPE_HDMI_TYPE_B  9
 733#define ADL_DL_DISPLAYCONFIG_CONTYPE_DISPLAYPORT  10
 734/// @}
 735
 736///////////////////////////////////////////////////////////////////////////
 737// ADL_DISPLAY_DISPLAYINFO_ Definitions
 738// for ADLDisplayInfo.iDisplayInfoMask and ADLDisplayInfo.iDisplayInfoValue
 739// (bit-vector)
 740///////////////////////////////////////////////////////////////////////////
 741/// \defgroup define_displayinfomask Display Info Mask Values
 742/// @{
 743#define ADL_DISPLAY_DISPLAYINFO_DISPLAYCONNECTED            0x00000001
 744#define ADL_DISPLAY_DISPLAYINFO_DISPLAYMAPPED                0x00000002
 745#define ADL_DISPLAY_DISPLAYINFO_NONLOCAL                    0x00000004
 746#define ADL_DISPLAY_DISPLAYINFO_FORCIBLESUPPORTED            0x00000008
 747#define ADL_DISPLAY_DISPLAYINFO_GENLOCKSUPPORTED            0x00000010
 748#define ADL_DISPLAY_DISPLAYINFO_MULTIVPU_SUPPORTED            0x00000020
 749#define ADL_DISPLAY_DISPLAYINFO_LDA_DISPLAY                    0x00000040
 750#define ADL_DISPLAY_DISPLAYINFO_MODETIMING_OVERRIDESSUPPORTED            0x00000080
 751
 752#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_SINGLE            0x00000100
 753#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_CLONE            0x00000200
 754
 755/// Legacy support for XP
 756#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_2VSTRETCH        0x00000400
 757#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_2HSTRETCH        0x00000800
 758#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_EXTENDED        0x00001000
 759
 760/// More support manners
 761#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_NSTRETCH1GPU    0x00010000
 762#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_NSTRETCHNGPU    0x00020000
 763#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_RESERVED2        0x00040000
 764#define ADL_DISPLAY_DISPLAYINFO_MANNER_SUPPORTED_RESERVED3        0x00080000
 765
 766/// Projector display type
 767#define ADL_DISPLAY_DISPLAYINFO_SHOWTYPE_PROJECTOR                0x00100000
 768
 769/// @}
 770
 771
 772///////////////////////////////////////////////////////////////////////////
 773// ADL_ADAPTER_DISPLAY_MANNER_SUPPORTED_ Definitions
 774// for ADLAdapterDisplayCap of ADL_Adapter_Display_Cap()
 775// (bit-vector)
 776///////////////////////////////////////////////////////////////////////////
 777/// \defgroup define_adaptermanner Adapter Manner Support Values
 778/// @{
 779#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_NOTACTIVE        0x00000001
 780#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_SINGLE            0x00000002
 781#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_CLONE            0x00000004
 782#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_NSTRETCH1GPU    0x00000008
 783#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_NSTRETCHNGPU    0x00000010
 784
 785/// Legacy support for XP
 786#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_2VSTRETCH        0x00000020
 787#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_2HSTRETCH        0x00000040
 788#define ADL_ADAPTER_DISPLAYCAP_MANNER_SUPPORTED_EXTENDED        0x00000080
 789
 790#define ADL_ADAPTER_DISPLAYCAP_PREFERDISPLAY_SUPPORTED            0x00000100
 791#define ADL_ADAPTER_DISPLAYCAP_BEZEL_SUPPORTED                    0x00000200
 792
 793
 794///////////////////////////////////////////////////////////////////////////
 795// ADL_DISPLAY_DISPLAYMAP_MANNER_ Definitions
 796// for ADLDisplayMap.iDisplayMapMask and ADLDisplayMap.iDisplayMapValue
 797// (bit-vector)
 798///////////////////////////////////////////////////////////////////////////
 799#define ADL_DISPLAY_DISPLAYMAP_MANNER_RESERVED            0x00000001
 800#define ADL_DISPLAY_DISPLAYMAP_MANNER_NOTACTIVE            0x00000002
 801#define ADL_DISPLAY_DISPLAYMAP_MANNER_SINGLE            0x00000004
 802#define ADL_DISPLAY_DISPLAYMAP_MANNER_CLONE                0x00000008
 803#define ADL_DISPLAY_DISPLAYMAP_MANNER_RESERVED1            0x00000010  // Removed NSTRETCH
 804#define ADL_DISPLAY_DISPLAYMAP_MANNER_HSTRETCH            0x00000020
 805#define ADL_DISPLAY_DISPLAYMAP_MANNER_VSTRETCH            0x00000040
 806#define ADL_DISPLAY_DISPLAYMAP_MANNER_VLD                0x00000080
 807
 808/// @}
 809
 810///////////////////////////////////////////////////////////////////////////
 811// ADL_DISPLAY_DISPLAYMAP_OPTION_ Definitions
 812// for iOption in function ADL_Display_DisplayMapConfig_Get
 813// (bit-vector)
 814///////////////////////////////////////////////////////////////////////////
 815#define ADL_DISPLAY_DISPLAYMAP_OPTION_GPUINFO            0x00000001
 816
 817///////////////////////////////////////////////////////////////////////////
 818// ADL_DISPLAY_DISPLAYTARGET_ Definitions
 819// for ADLDisplayTarget.iDisplayTargetMask and ADLDisplayTarget.iDisplayTargetValue
 820// (bit-vector)
 821///////////////////////////////////////////////////////////////////////////
 822#define ADL_DISPLAY_DISPLAYTARGET_PREFERRED            0x00000001
 823
 824///////////////////////////////////////////////////////////////////////////
 825// ADL_DISPLAY_POSSIBLEMAPRESULT_VALID Definitions
 826// for ADLPossibleMapResult.iPossibleMapResultMask and ADLPossibleMapResult.iPossibleMapResultValue
 827// (bit-vector)
 828///////////////////////////////////////////////////////////////////////////
 829#define ADL_DISPLAY_POSSIBLEMAPRESULT_VALID                0x00000001
 830#define ADL_DISPLAY_POSSIBLEMAPRESULT_BEZELSUPPORTED    0x00000002
 831#define ADL_DISPLAY_POSSIBLEMAPRESULT_OVERLAPSUPPORTED    0x00000004
 832
 833///////////////////////////////////////////////////////////////////////////
 834// ADL_DISPLAY_MODE_ Definitions
 835// for ADLMode.iModeMask, ADLMode.iModeValue, and ADLMode.iModeFlag
 836// (bit-vector)
 837///////////////////////////////////////////////////////////////////////////
 838/// \defgroup define_displaymode Display Mode Values
 839/// @{
 840#define ADL_DISPLAY_MODE_COLOURFORMAT_565                0x00000001
 841#define ADL_DISPLAY_MODE_COLOURFORMAT_8888                0x00000002
 842#define ADL_DISPLAY_MODE_ORIENTATION_SUPPORTED_000        0x00000004
 843#define ADL_DISPLAY_MODE_ORIENTATION_SUPPORTED_090        0x00000008
 844#define ADL_DISPLAY_MODE_ORIENTATION_SUPPORTED_180        0x00000010
 845#define ADL_DISPLAY_MODE_ORIENTATION_SUPPORTED_270        0x00000020
 846#define ADL_DISPLAY_MODE_REFRESHRATE_ROUNDED            0x00000040
 847#define ADL_DISPLAY_MODE_REFRESHRATE_ONLY                0x00000080
 848
 849#define ADL_DISPLAY_MODE_PROGRESSIVE_FLAG    0
 850#define ADL_DISPLAY_MODE_INTERLACED_FLAG    2
 851/// @}
 852
 853///////////////////////////////////////////////////////////////////////////
 854// ADL_OSMODEINFO Definitions
 855///////////////////////////////////////////////////////////////////////////
 856/// \defgroup define_osmode OS Mode Values
 857/// @{
 858#define ADL_OSMODEINFOXPOS_DEFAULT                -640
 859#define ADL_OSMODEINFOYPOS_DEFAULT                0
 860#define ADL_OSMODEINFOXRES_DEFAULT                640
 861#define ADL_OSMODEINFOYRES_DEFAULT                480
 862#define ADL_OSMODEINFOXRES_DEFAULT800            800
 863#define ADL_OSMODEINFOYRES_DEFAULT600            600
 864#define ADL_OSMODEINFOREFRESHRATE_DEFAULT        60
 865#define ADL_OSMODEINFOCOLOURDEPTH_DEFAULT        8
 866#define ADL_OSMODEINFOCOLOURDEPTH_DEFAULT16        16
 867#define ADL_OSMODEINFOCOLOURDEPTH_DEFAULT24        24
 868#define ADL_OSMODEINFOCOLOURDEPTH_DEFAULT32        32
 869#define ADL_OSMODEINFOORIENTATION_DEFAULT        0
 870#define ADL_OSMODEINFOORIENTATION_DEFAULT_WIN7    DISPLAYCONFIG_ROTATION_FORCE_UINT32
 871#define ADL_OSMODEFLAG_DEFAULT                    0
 872/// @}
 873
 874///////////////////////////////////////////////////////////////////////////
 875// ADLThreadingModel Enumeration
 876///////////////////////////////////////////////////////////////////////////
 877/// \defgroup thread_model
 878/// 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.
 879/// \brief Declares ADL threading behavior.
 880/// @{
 881typedef enum ADLThreadingModel
 882{
 883    ADL_THREADING_UNLOCKED    = 0, /*!< Default behavior. ADL will not enforce serialization of ADL API executions by multiple threads.  Multiple threads will be allowed to enter to ADL at the same time. Note that ADL library is not guaranteed to be thread-safe. Client that calls ADL_Main_Control_Create have to provide its own mechanism for ADL calls serialization. */
 884    ADL_THREADING_LOCKED     /*!< ADL will enforce serialization of ADL API when called by multiple threads.  Only single thread will be allowed to enter ADL API at the time. This option makes ADL calls thread-safe. */
 885}ADLThreadingModel;
 886
 887/// @}
 888///////////////////////////////////////////////////////////////////////////
 889// ADLPurposeCode Enumeration
 890///////////////////////////////////////////////////////////////////////////
 891enum ADLPurposeCode
 892{
 893    ADL_PURPOSECODE_NORMAL    = 0,
 894    ADL_PURPOSECODE_HIDE_MODE_SWITCH,
 895    ADL_PURPOSECODE_MODE_SWITCH,
 896    ADL_PURPOSECODE_ATTATCH_DEVICE,
 897    ADL_PURPOSECODE_DETACH_DEVICE,
 898    ADL_PURPOSECODE_SETPRIMARY_DEVICE,
 899    ADL_PURPOSECODE_GDI_ROTATION,
 900    ADL_PURPOSECODE_ATI_ROTATION
 901};
 902///////////////////////////////////////////////////////////////////////////
 903// ADLAngle Enumeration
 904///////////////////////////////////////////////////////////////////////////
 905enum ADLAngle
 906{
 907    ADL_ANGLE_LANDSCAPE = 0,
 908    ADL_ANGLE_ROTATERIGHT = 90,
 909    ADL_ANGLE_ROTATE180 = 180,
 910    ADL_ANGLE_ROTATELEFT = 270,
 911};
 912
 913///////////////////////////////////////////////////////////////////////////
 914// ADLOrientationDataType Enumeration
 915///////////////////////////////////////////////////////////////////////////
 916enum ADLOrientationDataType
 917{
 918    ADL_ORIENTATIONTYPE_OSDATATYPE,
 919    ADL_ORIENTATIONTYPE_NONOSDATATYPE
 920};
 921
 922///////////////////////////////////////////////////////////////////////////
 923// ADLPanningMode Enumeration
 924///////////////////////////////////////////////////////////////////////////
 925enum ADLPanningMode
 926{
 927    ADL_PANNINGMODE_NO_PANNING = 0,
 928    ADL_PANNINGMODE_AT_LEAST_ONE_NO_PANNING = 1,
 929    ADL_PANNINGMODE_ALLOW_PANNING = 2,
 930};
 931
 932///////////////////////////////////////////////////////////////////////////
 933// ADLLARGEDESKTOPTYPE Enumeration
 934///////////////////////////////////////////////////////////////////////////
 935enum ADLLARGEDESKTOPTYPE
 936{
 937    ADL_LARGEDESKTOPTYPE_NORMALDESKTOP = 0,
 938    ADL_LARGEDESKTOPTYPE_PSEUDOLARGEDESKTOP = 1,
 939    ADL_LARGEDESKTOPTYPE_VERYLARGEDESKTOP = 2
 940};
 941
 942///////////////////////////////////////////////////////////////////////////
 943// ADLPlatform Enumeration
 944///////////////////////////////////////////////////////////////////////////
 945enum ADLPlatForm
 946{
 947    GRAPHICS_PLATFORM_DESKTOP  = 0,
 948    GRAPHICS_PLATFORM_MOBILE   = 1
 949};
 950
 951///////////////////////////////////////////////////////////////////////////
 952// ADLGraphicCoreGeneration Enumeration
 953///////////////////////////////////////////////////////////////////////////
 954enum ADLGraphicCoreGeneration
 955{
 956    ADL_GRAPHIC_CORE_GENERATION_UNDEFINED                   = 0,
 957    ADL_GRAPHIC_CORE_GENERATION_PRE_GCN                     = 1,
 958    ADL_GRAPHIC_CORE_GENERATION_GCN                         = 2,
 959    ADL_GRAPHIC_CORE_GENERATION_RDNA                        = 3
 960};
 961
 962// Other Definitions for internal use
 963
 964// Values for ADL_Display_WriteAndReadI2CRev_Get()
 965
 966#define ADL_I2C_MAJOR_API_REV           0x00000001
 967#define ADL_I2C_MINOR_DEFAULT_API_REV   0x00000000
 968#define ADL_I2C_MINOR_OEM_API_REV       0x00000001
 969
 970// Values for ADL_Display_WriteAndReadI2C()
 971#define ADL_DL_I2C_LINE_OEM                0x00000001
 972#define ADL_DL_I2C_LINE_OD_CONTROL         0x00000002
 973#define ADL_DL_I2C_LINE_OEM2               0x00000003
 974#define ADL_DL_I2C_LINE_OEM3               0x00000004
 975#define ADL_DL_I2C_LINE_OEM4               0x00000005
 976#define ADL_DL_I2C_LINE_OEM5               0x00000006
 977#define ADL_DL_I2C_LINE_OEM6               0x00000007
 978#define ADL_DL_I2C_LINE_GPIO               0x00000008
 979
 980// Max size of I2C data buffer
 981#define ADL_DL_I2C_MAXDATASIZE             0x00000018
 982#define ADL_DL_I2C_MAXWRITEDATASIZE        0x0000000C
 983#define ADL_DL_I2C_MAXADDRESSLENGTH        0x00000006
 984#define ADL_DL_I2C_MAXOFFSETLENGTH         0x00000004
 985
 986// I2C clock speed in KHz
 987#define ADL_DL_I2C_SPEED_50K               50
 988#define ADL_DL_I2C_SPEED_100K              100
 989#define ALD_DL_I2C_SPEED_400K              400
 990#define ADL_DL_I2C_SPEED_1M                1000
 991#define ADL_DL_I2C_SPEED_2M                2300
 992
 993/// Values for ADLDisplayProperty.iPropertyType
 994#define ADL_DL_DISPLAYPROPERTY_TYPE_UNKNOWN              0
 995#define ADL_DL_DISPLAYPROPERTY_TYPE_EXPANSIONMODE        1
 996#define ADL_DL_DISPLAYPROPERTY_TYPE_USEUNDERSCANSCALING     2
 997/// Enables ITC processing for HDMI panels that are capable of the feature
 998#define ADL_DL_DISPLAYPROPERTY_TYPE_ITCFLAGENABLE        9
 999#define ADL_DL_DISPLAYPROPERTY_TYPE_DOWNSCALE            11
1000#define ADL_DL_DISPLAYPROPERTY_TYPE_INTEGER_SCALING      12
1001
1002
1003/// Values for ADLDisplayContent.iContentType
1004/// Certain HDMI panels that support ITC have support for a feature such that, the display on the panel
1005/// can be adjusted to optimize the view of the content being displayed, depending on the type of content.
1006#define ADL_DL_DISPLAYCONTENT_TYPE_GRAPHICS        1
1007#define ADL_DL_DISPLAYCONTENT_TYPE_PHOTO        2
1008#define ADL_DL_DISPLAYCONTENT_TYPE_CINEMA        4
1009#define ADL_DL_DISPLAYCONTENT_TYPE_GAME            8
1010
1011
1012
1013//values for ADLDisplayProperty.iExpansionMode
1014#define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_CENTER        0
1015#define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_FULLSCREEN    1
1016#define ADL_DL_DISPLAYPROPERTY_EXPANSIONMODE_ASPECTRATIO   2
1017
1018
1019///\defgroup define_dither_states Dithering options
1020/// @{
1021/// Dithering disabled.
1022#define ADL_DL_DISPLAY_DITHER_DISABLED              0
1023/// Use default driver settings for dithering. Note that the default setting could be dithering disabled.
1024#define ADL_DL_DISPLAY_DITHER_DRIVER_DEFAULT        1
1025/// Temporal dithering to 6 bpc. Note that if the input is 12 bits, the two least significant bits will be truncated.
1026#define ADL_DL_DISPLAY_DITHER_FM6                   2
1027/// Temporal dithering to 8 bpc.
1028#define ADL_DL_DISPLAY_DITHER_FM8                   3
1029/// Temporal dithering to 10 bpc.
1030#define ADL_DL_DISPLAY_DITHER_FM10                  4
1031/// Spatial dithering to 6 bpc. Note that if the input is 12 bits, the two least significant bits will be truncated.
1032#define ADL_DL_DISPLAY_DITHER_DITH6                 5
1033/// Spatial dithering to 8 bpc.
1034#define ADL_DL_DISPLAY_DITHER_DITH8                 6
1035/// Spatial dithering to 10 bpc.
1036#define ADL_DL_DISPLAY_DITHER_DITH10                7
1037/// 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.
1038#define ADL_DL_DISPLAY_DITHER_DITH6_NO_FRAME_RAND   8
1039/// 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.
1040#define ADL_DL_DISPLAY_DITHER_DITH8_NO_FRAME_RAND   9
1041/// 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.
1042#define ADL_DL_DISPLAY_DITHER_DITH10_NO_FRAME_RAND  10
1043/// Truncation to 6 bpc.
1044#define ADL_DL_DISPLAY_DITHER_TRUN6                 11
1045/// Truncation to 8 bpc.
1046#define ADL_DL_DISPLAY_DITHER_TRUN8                 12
1047/// Truncation to 10 bpc.
1048#define ADL_DL_DISPLAY_DITHER_TRUN10                13
1049/// Truncation to 10 bpc followed by spatial dithering to 8 bpc.
1050#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH8          14
1051/// Truncation to 10 bpc followed by spatial dithering to 6 bpc.
1052#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH6          15
1053/// Truncation to 10 bpc followed by temporal dithering to 8 bpc.
1054#define ADL_DL_DISPLAY_DITHER_TRUN10_FM8            16
1055/// Truncation to 10 bpc followed by temporal dithering to 6 bpc.
1056#define ADL_DL_DISPLAY_DITHER_TRUN10_FM6            17
1057/// Truncation to 10 bpc followed by spatial dithering to 8 bpc and temporal dithering to 6 bpc.
1058#define ADL_DL_DISPLAY_DITHER_TRUN10_DITH8_FM6      18
1059/// Spatial dithering to 10 bpc followed by temporal dithering to 8 bpc.
1060#define ADL_DL_DISPLAY_DITHER_DITH10_FM8            19
1061/// Spatial dithering to 10 bpc followed by temporal dithering to 6 bpc.
1062#define ADL_DL_DISPLAY_DITHER_DITH10_FM6            20
1063/// Truncation to 8 bpc followed by spatial dithering to 6 bpc.
1064#define ADL_DL_DISPLAY_DITHER_TRUN8_DITH6           21
1065/// Truncation to 8 bpc followed by temporal dithering to 6 bpc.
1066#define ADL_DL_DISPLAY_DITHER_TRUN8_FM6             22
1067/// Spatial dithering to 8 bpc followed by temporal dithering to 6 bpc.
1068#define ADL_DL_DISPLAY_DITHER_DITH8_FM6             23
1069#define ADL_DL_DISPLAY_DITHER_LAST                  ADL_DL_DISPLAY_DITHER_DITH8_FM6
1070/// @}
1071
1072
1073/// Display Get Cached EDID flag
1074#define ADL_MAX_EDIDDATA_SIZE              256 // number of UCHAR
1075#define ADL_MAX_OVERRIDEEDID_SIZE          512 // number of UCHAR
1076#define ADL_MAX_EDID_EXTENSION_BLOCKS      3
1077
1078#define ADL_DL_CONTROLLER_OVERLAY_ALPHA         0
1079#define ADL_DL_CONTROLLER_OVERLAY_ALPHAPERPIX   1
1080
1081#define ADL_DL_DISPLAY_DATA_PACKET__INFO_PACKET_RESET      0x00000000
1082#define ADL_DL_DISPLAY_DATA_PACKET__INFO_PACKET_SET        0x00000001
1083#define ADL_DL_DISPLAY_DATA_PACKET__INFO_PACKET_SCAN       0x00000002
1084
1085///\defgroup define_display_packet Display Data Packet Types
1086/// @{
1087#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__AVI              0x00000001
1088#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__GAMMUT           0x00000002
1089#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__VENDORINFO       0x00000004
1090#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__HDR              0x00000008
1091#define ADL_DL_DISPLAY_DATA_PACKET__TYPE__SPD              0x00000010
1092/// @}
1093
1094// matrix types
1095#define ADL_GAMUT_MATRIX_SD         1   // SD matrix i.e. BT601
1096#define ADL_GAMUT_MATRIX_HD         2   // HD matrix i.e. BT709
1097
1098///\defgroup define_clockinfo_flags Clock flags
1099/// Used by ADLAdapterODClockInfo.iFlag
1100/// @{
1101#define ADL_DL_CLOCKINFO_FLAG_FULLSCREEN3DONLY         0x00000001
1102#define ADL_DL_CLOCKINFO_FLAG_ALWAYSFULLSCREEN3D       0x00000002
1103#define ADL_DL_CLOCKINFO_FLAG_VPURECOVERYREDUCED       0x00000004
1104#define ADL_DL_CLOCKINFO_FLAG_THERMALPROTECTION        0x00000008
1105/// @}
1106
1107// Supported GPUs
1108// ADL_Display_PowerXpressActiveGPU_Get()
1109#define ADL_DL_POWERXPRESS_GPU_INTEGRATED        1
1110#define ADL_DL_POWERXPRESS_GPU_DISCRETE            2
1111
1112// Possible values for lpOperationResult
1113// ADL_Display_PowerXpressActiveGPU_Get()
1114#define ADL_DL_POWERXPRESS_SWITCH_RESULT_STARTED         1 // Switch procedure has been started - Windows platform only
1115#define ADL_DL_POWERXPRESS_SWITCH_RESULT_DECLINED        2 // Switch procedure cannot be started - All platforms
1116#define ADL_DL_POWERXPRESS_SWITCH_RESULT_ALREADY         3 // System already has required status  - All platforms
1117#define ADL_DL_POWERXPRESS_SWITCH_RESULT_DEFERRED        5  // Switch was deferred and requires an X restart - Linux platform only
1118
1119// PowerXpress support version
1120// ADL_Display_PowerXpressVersion_Get()
1121#define ADL_DL_POWERXPRESS_VERSION_MAJOR            2    // Current PowerXpress support version 2.0
1122#define ADL_DL_POWERXPRESS_VERSION_MINOR            0
1123
1124#define ADL_DL_POWERXPRESS_VERSION    (((ADL_DL_POWERXPRESS_VERSION_MAJOR) << 16) | ADL_DL_POWERXPRESS_VERSION_MINOR)
1125
1126//values for ADLThermalControllerInfo.iThermalControllerDomain
1127#define ADL_DL_THERMAL_DOMAIN_OTHER      0
1128#define ADL_DL_THERMAL_DOMAIN_GPU        1
1129
1130//values for ADLThermalControllerInfo.iFlags
1131#define ADL_DL_THERMAL_FLAG_INTERRUPT    1
1132#define ADL_DL_THERMAL_FLAG_FANCONTROL   2
1133
1134///\defgroup define_fanctrl Fan speed cotrol
1135/// Values for ADLFanSpeedInfo.iFlags
1136/// @{
1137#define ADL_DL_FANCTRL_SUPPORTS_PERCENT_READ     1
1138#define ADL_DL_FANCTRL_SUPPORTS_PERCENT_WRITE    2
1139#define ADL_DL_FANCTRL_SUPPORTS_RPM_READ         4
1140#define ADL_DL_FANCTRL_SUPPORTS_RPM_WRITE        8
1141/// @}
1142
1143//values for ADLFanSpeedValue.iSpeedType
1144#define ADL_DL_FANCTRL_SPEED_TYPE_PERCENT    1
1145#define ADL_DL_FANCTRL_SPEED_TYPE_RPM        2
1146
1147//values for ADLFanSpeedValue.iFlags
1148#define ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED   1
1149
1150// MVPU interfaces
1151#define ADL_DL_MAX_MVPU_ADAPTERS   4
1152#define MVPU_ADAPTER_0          0x00000001
1153#define MVPU_ADAPTER_1          0x00000002
1154#define MVPU_ADAPTER_2          0x00000004
1155#define MVPU_ADAPTER_3          0x00000008
1156#define ADL_DL_MAX_REGISTRY_PATH   256
1157
1158//values for ADLMVPUStatus.iStatus
1159#define ADL_DL_MVPU_STATUS_OFF   0
1160#define ADL_DL_MVPU_STATUS_ON    1
1161
1162// values for ASIC family
1163///\defgroup define_Asic_type Detailed asic types
1164/// Defines for Adapter ASIC family type
1165/// @{
1166#define ADL_ASIC_UNDEFINED      0
1167#define ADL_ASIC_DISCRETE       (1 << 0)
1168#define ADL_ASIC_INTEGRATED     (1 << 1)
1169#define ADL_ASIC_WORKSTATION    (1 << 2)
1170#define ADL_ASIC_FIREMV         (1 << 3)
1171#define ADL_ASIC_XGP            (1 << 4)
1172#define ADL_ASIC_FUSION         (1 << 5)
1173#define ADL_ASIC_FIRESTREAM     (1 << 6)
1174#define ADL_ASIC_EMBEDDED       (1 << 7)
1175// Backward compatibility
1176#define ADL_ASIC_FIREGL  ADL_ASIC_WORKSTATION
1177/// @}
1178
1179///\defgroup define_detailed_timing_flags Detailed Timimg Flags
1180/// Defines for ADLDetailedTiming.sTimingFlags field
1181/// @{
1182#define ADL_DL_TIMINGFLAG_DOUBLE_SCAN              0x0001
1183//sTimingFlags is set when the mode is INTERLACED, if not PROGRESSIVE
1184#define ADL_DL_TIMINGFLAG_INTERLACED               0x0002
1185//sTimingFlags is set when the Horizontal Sync is POSITIVE, if not NEGATIVE
1186#define ADL_DL_TIMINGFLAG_H_SYNC_POLARITY          0x0004
1187//sTimingFlags is set when the Vertical Sync is POSITIVE, if not NEGATIVE
1188#define ADL_DL_TIMINGFLAG_V_SYNC_POLARITY          0x0008
1189/// @}
1190
1191///\defgroup define_modetiming_standard Timing Standards
1192/// Defines for ADLDisplayModeInfo.iTimingStandard field
1193/// @{
1194#define ADL_DL_MODETIMING_STANDARD_CVT             0x00000001 // CVT Standard
1195#define ADL_DL_MODETIMING_STANDARD_GTF             0x00000002 // GFT Standard
1196#define ADL_DL_MODETIMING_STANDARD_DMT             0x00000004 // DMT Standard
1197#define ADL_DL_MODETIMING_STANDARD_CUSTOM          0x00000008 // User-defined standard
1198#define ADL_DL_MODETIMING_STANDARD_DRIVER_DEFAULT  0x00000010 // Remove Mode from overriden list
1199#define ADL_DL_MODETIMING_STANDARD_CVT_RB           0x00000020 // CVT-RB Standard
1200/// @}
1201
1202// \defgroup define_xserverinfo driver x-server info
1203/// These flags are used by ADL_XServerInfo_Get()
1204// @
1205
1206/// Xinerama is active in the x-server, Xinerama extension may report it to be active but it
1207/// may not be active in x-server
1208#define ADL_XSERVERINFO_XINERAMAACTIVE            (1<<0)
1209
1210/// RandR 1.2 is supported by driver, RandR extension may report version 1.2
1211/// but driver may not support it
1212#define ADL_XSERVERINFO_RANDR12SUPPORTED          (1<<1)
1213// @
1214
1215
1216///\defgroup define_eyefinity_constants Eyefinity Definitions
1217/// @{
1218
1219#define ADL_CONTROLLERVECTOR_0        1    // ADL_CONTROLLERINDEX_0 = 0, (1 << ADL_CONTROLLERINDEX_0)
1220#define ADL_CONTROLLERVECTOR_1        2    // ADL_CONTROLLERINDEX_1 = 1, (1 << ADL_CONTROLLERINDEX_1)
1221
1222#define ADL_DISPLAY_SLSGRID_ORIENTATION_000        0x00000001
1223#define ADL_DISPLAY_SLSGRID_ORIENTATION_090        0x00000002
1224#define ADL_DISPLAY_SLSGRID_ORIENTATION_180        0x00000004
1225#define ADL_DISPLAY_SLSGRID_ORIENTATION_270        0x00000008
1226#define ADL_DISPLAY_SLSGRID_CAP_OPTION_RELATIVETO_LANDSCAPE     0x00000001
1227#define ADL_DISPLAY_SLSGRID_CAP_OPTION_RELATIVETO_CURRENTANGLE     0x00000002
1228#define ADL_DISPLAY_SLSGRID_PORTAIT_MODE                         0x00000004
1229#define ADL_DISPLAY_SLSGRID_KEEPTARGETROTATION                  0x00000080
1230
1231#define ADL_DISPLAY_SLSGRID_SAMEMODESLS_SUPPORT        0x00000010
1232#define ADL_DISPLAY_SLSGRID_MIXMODESLS_SUPPORT        0x00000020
1233#define ADL_DISPLAY_SLSGRID_DISPLAYROTATION_SUPPORT    0x00000040
1234#define ADL_DISPLAY_SLSGRID_DESKTOPROTATION_SUPPORT    0x00000080
1235
1236
1237#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_FIT        0x0100
1238#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_FILL       0x0200
1239#define ADL_DISPLAY_SLSMAP_SLSLAYOUTMODE_EXPAND     0x0400
1240
1241#define ADL_DISPLAY_SLSMAP_IS_SLS        0x1000
1242#define ADL_DISPLAY_SLSMAP_IS_SLSBUILDER 0x2000
1243#define ADL_DISPLAY_SLSMAP_IS_CLONEVT     0x4000
1244
1245#define ADL_DISPLAY_SLSMAPCONFIG_GET_OPTION_RELATIVETO_LANDSCAPE         0x00000001
1246#define ADL_DISPLAY_SLSMAPCONFIG_GET_OPTION_RELATIVETO_CURRENTANGLE     0x00000002
1247
1248#define ADL_DISPLAY_SLSMAPCONFIG_CREATE_OPTION_RELATIVETO_LANDSCAPE         0x00000001
1249#define ADL_DISPLAY_SLSMAPCONFIG_CREATE_OPTION_RELATIVETO_CURRENTANGLE     0x00000002
1250
1251#define ADL_DISPLAY_SLSMAPCONFIG_REARRANGE_OPTION_RELATIVETO_LANDSCAPE     0x00000001
1252#define ADL_DISPLAY_SLSMAPCONFIG_REARRANGE_OPTION_RELATIVETO_CURRENTANGLE     0x00000002
1253
1254#define ADL_SLS_SAMEMODESLS_SUPPORT         0x0001
1255#define ADL_SLS_MIXMODESLS_SUPPORT          0x0002
1256#define ADL_SLS_DISPLAYROTATIONSLS_SUPPORT  0x0004
1257#define ADL_SLS_DESKTOPROTATIONSLS_SUPPORT  0x0008
1258
1259#define ADL_SLS_TARGETS_INVALID     0x0001
1260#define ADL_SLS_MODES_INVALID       0x0002
1261#define ADL_SLS_ROTATIONS_INVALID   0x0004
1262#define ADL_SLS_POSITIONS_INVALID   0x0008
1263#define ADL_SLS_LAYOUTMODE_INVALID  0x0010
1264
1265#define ADL_DISPLAY_SLSDISPLAYOFFSET_VALID        0x0002
1266
1267#define ADL_DISPLAY_SLSGRID_RELATIVETO_LANDSCAPE         0x00000010
1268#define ADL_DISPLAY_SLSGRID_RELATIVETO_CURRENTANGLE     0x00000020
1269
1270
1271/// The bit mask identifies displays is currently in bezel mode.
1272#define ADL_DISPLAY_SLSMAP_BEZELMODE            0x00000010
1273/// The bit mask identifies displays from this map is arranged.
1274#define ADL_DISPLAY_SLSMAP_DISPLAYARRANGED        0x00000002
1275/// The bit mask identifies this map is currently in used for the current adapter.
1276#define ADL_DISPLAY_SLSMAP_CURRENTCONFIG        0x00000004
1277
1278///For onlay active SLS  map info
1279#define ADL_DISPLAY_SLSMAPINDEXLIST_OPTION_ACTIVE        0x00000001
1280
1281///For Bezel
1282#define ADL_DISPLAY_BEZELOFFSET_STEPBYSTEPSET            0x00000004
1283#define ADL_DISPLAY_BEZELOFFSET_COMMIT                    0x00000008
1284
1285typedef enum SLS_ImageCropType {
1286    Fit = 1,
1287    Fill = 2,
1288    Expand = 3
1289}SLS_ImageCropType;
1290
1291
1292typedef enum DceSettingsType {
1293    DceSetting_HdmiLq,
1294    DceSetting_DpSettings,
1295    DceSetting_Protection
1296
1297} DceSettingsType;
1298
1299typedef enum DpLinkRate {
1300    DPLinkRate_Unknown,
1301    DPLinkRate_RBR,
1302	DPLinkRate_2_16Gbps,
1303	DPLinkRate_2_43Gbps,
1304    DPLinkRate_HBR,
1305	DPLinkRate_4_32Gbps,
1306    DPLinkRate_HBR2,
1307    DPLinkRate_HBR3,
1308	DPLinkRate_UHBR10,
1309	DPLinkRate_UHBR13D5,
1310	DPLinkRate_UHBR20
1311
1312} DpLinkRate;
1313
1314/// @}
1315
1316///\defgroup define_powerxpress_constants PowerXpress Definitions
1317/// @{
1318
1319/// The bit mask identifies PX caps for ADLPXConfigCaps.iPXConfigCapMask and ADLPXConfigCaps.iPXConfigCapValue
1320#define    ADL_PX_CONFIGCAPS_SPLASHSCREEN_SUPPORT        0x0001
1321#define    ADL_PX_CONFIGCAPS_CF_SUPPORT                0x0002
1322#define    ADL_PX_CONFIGCAPS_MUXLESS                    0x0004
1323#define    ADL_PX_CONFIGCAPS_PROFILE_COMPLIANT            0x0008
1324#define    ADL_PX_CONFIGCAPS_NON_AMD_DRIVEN_DISPLAYS    0x0010
1325#define ADL_PX_CONFIGCAPS_FIXED_SUPPORT             0x0020
1326#define ADL_PX_CONFIGCAPS_DYNAMIC_SUPPORT           0x0040
1327#define ADL_PX_CONFIGCAPS_HIDE_AUTO_SWITCH            0x0080
1328
1329/// The bit mask identifies PX schemes for ADLPXSchemeRange
1330#define ADL_PX_SCHEMEMASK_FIXED                        0x0001
1331#define ADL_PX_SCHEMEMASK_DYNAMIC                    0x0002
1332
1333/// PX Schemes
1334typedef enum ADLPXScheme
1335{
1336    ADL_PX_SCHEME_INVALID   = 0,
1337    ADL_PX_SCHEME_FIXED     = ADL_PX_SCHEMEMASK_FIXED,
1338    ADL_PX_SCHEME_DYNAMIC   = ADL_PX_SCHEMEMASK_DYNAMIC
1339}ADLPXScheme;
1340
1341/// Just keep the old definitions for compatibility, need to be removed later
1342typedef enum PXScheme
1343{
1344    PX_SCHEME_INVALID   = 0,
1345    PX_SCHEME_FIXED     = 1,
1346    PX_SCHEME_DYNAMIC   = 2
1347} PXScheme;
1348
1349
1350/// @}
1351
1352///\defgroup define_appprofiles For Application Profiles
1353/// @{
1354
1355#define ADL_APP_PROFILE_FILENAME_LENGTH        256
1356#define ADL_APP_PROFILE_TIMESTAMP_LENGTH    32
1357#define ADL_APP_PROFILE_VERSION_LENGTH        32
1358#define ADL_APP_PROFILE_PROPERTY_LENGTH        64
1359
1360enum ApplicationListType
1361{
1362    ADL_PX40_MRU,
1363    ADL_PX40_MISSED,
1364    ADL_PX40_DISCRETE,
1365    ADL_PX40_INTEGRATED,
1366    ADL_MMD_PROFILED,
1367    ADL_PX40_TOTAL
1368};
1369
1370typedef enum ADLProfilePropertyType
1371{
1372    ADL_PROFILEPROPERTY_TYPE_BINARY        = 0,
1373    ADL_PROFILEPROPERTY_TYPE_BOOLEAN,
1374    ADL_PROFILEPROPERTY_TYPE_DWORD,
1375    ADL_PROFILEPROPERTY_TYPE_QWORD,
1376    ADL_PROFILEPROPERTY_TYPE_ENUMERATED,
1377    ADL_PROFILEPROPERTY_TYPE_STRING
1378}ADLProfilePropertyType;
1379
1380
1381//Virtual display type returning virtual display type and for request for creating a dummy target ID (xInput or remote play)
1382typedef enum ADL_VIRTUALDISPLAY_TYPE
1383{
1384	ADL_VIRTUALDISPLAY_NONE = 0,
1385	ADL_VIRTUALDISPLAY_XINPUT = 1,			//Requested for xInput
1386	ADL_VIRTUALDISPLAY_REMOTEPLAY = 2,		//Requested for emulated display during remote play
1387	ADL_VIRTUALDISPLAY_GENERIC = 10			//Generic virtual display, af a type different than any of the above special ones
1388}ADL_VIRTUALDISPLAY_TYPE;
1389
1390/// @}
1391
1392///\defgroup define_dp12 For Display Port 1.2
1393/// @{
1394
1395/// Maximum Relative Address Link
1396#define ADL_MAX_RAD_LINK_COUNT    15
1397
1398/// @}
1399
1400///\defgroup defines_gamutspace Driver Supported Gamut Space
1401/// @{
1402
1403/// The flags desribes that gamut is related to source or to destination and to overlay or to graphics
1404#define ADL_GAMUT_REFERENCE_SOURCE       (1 << 0)
1405#define ADL_GAMUT_GAMUT_VIDEO_CONTENT    (1 << 1)
1406
1407/// The flags are used to describe the source of gamut and how read information from struct ADLGamutData
1408#define ADL_CUSTOM_WHITE_POINT           (1 << 0)
1409#define ADL_CUSTOM_GAMUT                 (1 << 1)
1410#define ADL_GAMUT_REMAP_ONLY             (1 << 2)
1411
1412/// The define means the predefined gamut values  .
1413///Driver uses to find entry in the table and apply appropriate gamut space.
1414#define ADL_GAMUT_SPACE_CCIR_709     (1 << 0)
1415#define ADL_GAMUT_SPACE_CCIR_601     (1 << 1)
1416#define ADL_GAMUT_SPACE_ADOBE_RGB    (1 << 2)
1417#define ADL_GAMUT_SPACE_CIE_RGB      (1 << 3)
1418#define ADL_GAMUT_SPACE_CUSTOM       (1 << 4)
1419#define ADL_GAMUT_SPACE_CCIR_2020    (1 << 5)
1420#define ADL_GAMUT_SPACE_APPCTRL      (1 << 6)
1421
1422/// Predefine white point values are structed similar to gamut .
1423#define ADL_WHITE_POINT_5000K       (1 << 0)
1424#define ADL_WHITE_POINT_6500K       (1 << 1)
1425#define ADL_WHITE_POINT_7500K       (1 << 2)
1426#define ADL_WHITE_POINT_9300K       (1 << 3)
1427#define ADL_WHITE_POINT_CUSTOM      (1 << 4)
1428
1429///gamut and white point coordinates are from 0.0 -1.0 and divider is used to find the real value .
1430/// X float = X int /divider
1431#define ADL_GAMUT_WHITEPOINT_DIVIDER           10000
1432
1433///gamma a0 coefficient uses the following divider:
1434#define ADL_REGAMMA_COEFFICIENT_A0_DIVIDER       10000000
1435///gamma a1 ,a2,a3 coefficients use the following divider:
1436#define ADL_REGAMMA_COEFFICIENT_A1A2A3_DIVIDER   1000
1437
1438///describes whether the coefficients are from EDID or custom user values.
1439#define ADL_EDID_REGAMMA_COEFFICIENTS          (1 << 0)
1440///Used for struct ADLRegamma. Feature if set use gamma ramp, if missing use regamma coefficents
1441#define ADL_USE_GAMMA_RAMP                     (1 << 4)
1442///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
1443#define ADL_APPLY_DEGAMMA                      (1 << 5)
1444///specifies that standard SRGB gamma should be applied
1445#define ADL_EDID_REGAMMA_PREDEFINED_SRGB       (1 << 1)
1446///specifies that PQ gamma curve should be applied
1447#define ADL_EDID_REGAMMA_PREDEFINED_PQ         (1 << 2)
1448///specifies that PQ gamma curve should be applied, lower max nits
1449#define ADL_EDID_REGAMMA_PREDEFINED_PQ_2084_INTERIM (1 << 3)
1450///specifies that 3.6 gamma should be applied
1451#define ADL_EDID_REGAMMA_PREDEFINED_36         (1 << 6)
1452///specifies that BT709 gama should be applied
1453#define ADL_EDID_REGAMMA_PREDEFINED_BT709      (1 << 7)
1454///specifies that regamma should be disabled, and application controls regamma content (of the whole screen)
1455#define ADL_EDID_REGAMMA_PREDEFINED_APPCTRL    (1 << 8)
1456
1457/// @}
1458
1459/// \defgroup define_ddcinfo_pixelformats DDCInfo Pixel Formats
1460/// @{
1461/// defines for iPanelPixelFormat  in struct ADLDDCInfo2
1462#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB656                       0x00000001L
1463#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB666                       0x00000002L
1464#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB888                       0x00000004L
1465#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB101010                    0x00000008L
1466#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB161616                    0x00000010L
1467#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB_RESERVED1                0x00000020L
1468#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB_RESERVED2                0x00000040L
1469#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_RGB_RESERVED3                0x00000080L
1470#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_XRGB_BIAS101010              0x00000100L
1471#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR444_8BPCC               0x00000200L
1472#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR444_10BPCC              0x00000400L
1473#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR444_12BPCC              0x00000800L
1474#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_8BPCC               0x00001000L
1475#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_10BPCC              0x00002000L
1476#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR422_12BPCC              0x00004000L
1477#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_8BPCC               0x00008000L
1478#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_10BPCC              0x00010000L
1479#define ADL_DISPLAY_DDCINFO_PIXEL_FORMAT_YCBCR420_12BPCC              0x00020000L
1480/// @}
1481
1482/// \defgroup define_source_content_TF ADLSourceContentAttributes transfer functions (gamma)
1483/// @{
1484/// defines for iTransferFunction in ADLSourceContentAttributes
1485#define ADL_TF_sRGB                0x0001      ///< sRGB
1486#define ADL_TF_BT709            0x0002      ///< BT.709
1487#define ADL_TF_PQ2084            0x0004      ///< PQ2084
1488#define ADL_TF_PQ2084_INTERIM    0x0008        ///< PQ2084-Interim
1489#define ADL_TF_LINEAR_0_1        0x0010      ///< Linear 0 - 1
1490#define ADL_TF_LINEAR_0_125        0x0020      ///< Linear 0 - 125
1491#define ADL_TF_DOLBYVISION        0x0040      ///< DolbyVision
1492#define ADL_TF_GAMMA_22         0x0080      ///< Plain 2.2 gamma curve
1493/// @}
1494
1495/// \defgroup define_source_content_CS ADLSourceContentAttributes color spaces
1496/// @{
1497/// defines for iColorSpace in ADLSourceContentAttributes
1498#define ADL_CS_sRGB                0x0001      ///< sRGB
1499#define ADL_CS_BT601             0x0002      ///< BT.601
1500#define ADL_CS_BT709            0x0004      ///< BT.709
1501#define ADL_CS_BT2020            0x0008      ///< BT.2020
1502#define ADL_CS_ADOBE            0x0010      ///< Adobe RGB
1503#define ADL_CS_P3                0x0020      ///< DCI-P3
1504#define ADL_CS_scRGB_MS_REF        0x0040      ///< scRGB (MS Reference)
1505#define ADL_CS_DISPLAY_NATIVE    0x0080      ///< Display Native
1506#define ADL_CS_APP_CONTROL         0x0100      ///< Application Controlled
1507#define ADL_CS_DOLBYVISION      0x0200      ///< DolbyVision
1508/// @}
1509
1510/// \defgroup define_HDR_support ADLDDCInfo2 HDR support options
1511/// @{
1512/// defines for iSupportedHDR in ADLDDCInfo2
1513#define ADL_HDR_CEA861_3        0x0001      ///< HDR10/CEA861.3 HDR supported
1514#define ADL_HDR_DOLBYVISION     0x0002      ///< \deprecated DolbyVision HDR supported
1515#define ADL_HDR_FREESYNC_HDR    0x0004      ///< FreeSync HDR supported
1516/// @}
1517
1518/// \defgroup define_FreesyncFlags ADLDDCInfo2 Freesync HDR flags
1519/// @{
1520/// defines for iFreesyncFlags in ADLDDCInfo2
1521#define ADL_HDR_FREESYNC_BACKLIGHT_SUPPORT           0x0001      ///< Global backlight control supported
1522#define ADL_HDR_FREESYNC_LOCAL_DIMMING               0x0002      ///< Local dimming supported
1523/// @}
1524
1525/// \defgroup define_source_content_flags ADLSourceContentAttributes flags
1526/// @{
1527/// defines for iFlags in ADLSourceContentAttributes
1528#define ADL_SCA_LOCAL_DIMMING_DISABLE    0x0001      ///< Disable local dimming
1529/// @}
1530
1531/// \defgroup define_dbd_state Deep Bit Depth
1532/// @{
1533
1534/// defines for ADL_Workstation_DeepBitDepth_Get and  ADL_Workstation_DeepBitDepth_Set functions
1535// This value indicates that the deep bit depth state is forced off
1536#define ADL_DEEPBITDEPTH_FORCEOFF     0
1537/// This value indicates that the deep bit depth state  is set to auto, the driver will automatically enable the
1538/// appropriate deep bit depth state depending on what connected display supports.
1539#define ADL_DEEPBITDEPTH_10BPP_AUTO     1
1540/// This value indicates that the deep bit depth state  is forced on to 10 bits per pixel, this is regardless if the display
1541/// supports 10 bpp.
1542#define ADL_DEEPBITDEPTH_10BPP_FORCEON     2
1543
1544/// defines for ADLAdapterConfigMemory of ADL_Adapter_ConfigMemory_Get
1545/// If this bit is set, it indicates that the Deep Bit Depth pixel is set on the display
1546#define ADL_ADAPTER_CONFIGMEMORY_DBD            (1 << 0)
1547/// If this bit is set, it indicates that the display is rotated (90, 180 or 270)
1548#define ADL_ADAPTER_CONFIGMEMORY_ROTATE            (1 << 1)
1549/// If this bit is set, it indicates that passive stereo is set on the display
1550#define ADL_ADAPTER_CONFIGMEMORY_STEREO_PASSIVE    (1 << 2)
1551/// If this bit is set, it indicates that the active stereo is set on the display
1552#define ADL_ADAPTER_CONFIGMEMORY_STEREO_ACTIVE    (1 << 3)
1553/// If this bit is set, it indicates that the tear free vsync is set on the display
1554#define ADL_ADAPTER_CONFIGMEMORY_ENHANCEDVSYNC    (1 << 4)
1555#define ADL_ADAPTER_CONFIGMEMORY_TEARFREEVSYNC    (1 << 4)
1556/// @}
1557
1558/// \defgroup define_adl_validmemoryrequiredfields Memory Type
1559/// @{
1560
1561///  This group defines memory types in ADLMemoryRequired struct \n
1562/// Indicates that this is the visible memory
1563#define ADL_MEMORYREQTYPE_VISIBLE                (1 << 0)
1564/// Indicates that this is the invisible memory.
1565#define ADL_MEMORYREQTYPE_INVISIBLE                (1 << 1)
1566/// Indicates that this is amount of visible memory per GPU that should be reserved for all other allocations.
1567#define ADL_MEMORYREQTYPE_GPURESERVEDVISIBLE    (1 << 2)
1568/// @}
1569
1570/// \defgroup define_adapter_tear_free_status
1571/// Used in ADL_Adapter_TEAR_FREE_Set and ADL_Adapter_TFD_Get functions to indicate the tear free
1572/// desktop status.
1573/// @{
1574/// Tear free desktop is enabled.
1575#define ADL_ADAPTER_TEAR_FREE_ON                1
1576/// Tear free desktop can't be enabled due to a lack of graphic adapter memory.
1577#define ADL_ADAPTER_TEAR_FREE_NOTENOUGHMEM        -1
1578/// Tear free desktop can't be enabled due to quad buffer stereo being enabled.
1579#define ADL_ADAPTER_TEAR_FREE_OFF_ERR_QUADBUFFERSTEREO    -2
1580/// Tear free desktop can't be enabled due to MGPU-SLS being enabled.
1581#define ADL_ADAPTER_TEAR_FREE_OFF_ERR_MGPUSLD    -3
1582/// Tear free desktop is disabled.
1583#define ADL_ADAPTER_TEAR_FREE_OFF                0
1584/// @}
1585
1586/// \defgroup define_adapter_crossdisplay_platforminfo
1587/// Used in ADL_Adapter_CrossDisplayPlatformInfo_Get function to indicate the Crossdisplay platform info.
1588/// @{
1589/// CROSSDISPLAY platform.
1590#define ADL_CROSSDISPLAY_PLATFORM                    (1 << 0)
1591/// CROSSDISPLAY platform for Lasso station.
1592#define ADL_CROSSDISPLAY_PLATFORM_LASSO                (1 << 1)
1593/// CROSSDISPLAY platform for docking station.
1594#define ADL_CROSSDISPLAY_PLATFORM_DOCKSTATION        (1 << 2)
1595/// @}
1596
1597/// \defgroup define_adapter_crossdisplay_option
1598/// Used in ADL_Adapter_CrossdisplayInfoX2_Set function to indicate cross display options.
1599/// @{
1600/// Checking if 3D application is runnning. If yes, not to do switch, return ADL_OK_WAIT; otherwise do switch.
1601#define ADL_CROSSDISPLAY_OPTION_NONE            0
1602/// Force switching without checking for running 3D applications
1603#define ADL_CROSSDISPLAY_OPTION_FORCESWITCH        (1 << 0)
1604/// @}
1605
1606/// \defgroup define_adapter_states Adapter Capabilities
1607/// These defines the capabilities supported by an adapter. It is used by \ref ADL_Adapter_ConfigureState_Get
1608/// @{
1609/// Indicates that the adapter is headless (i.e. no displays can be connected to it)
1610#define ADL_ADAPTERCONFIGSTATE_HEADLESS ( 1 << 2 )
1611/// Indicates that the adapter is configured to define the main rendering capabilities. For example, adapters
1612/// in Crossfire(TM) configuration, this bit would only be set on the adapter driving the display(s).
1613#define ADL_ADAPTERCONFIGSTATE_REQUISITE_RENDER ( 1 << 0 )
1614/// Indicates that the adapter is configured to be used to unload some of the rendering work for a particular
1615/// requisite rendering adapter. For eample, for adapters in a Crossfire configuration, this bit would be set
1616/// on all adapters that are currently not driving the display(s)
1617#define ADL_ADAPTERCONFIGSTATE_ANCILLARY_RENDER ( 1 << 1 )
1618/// Indicates that scatter gather feature enabled on the adapter
1619#define ADL_ADAPTERCONFIGSTATE_SCATTERGATHER ( 1 << 4 )
1620/// @}
1621
1622/// \defgroup define_controllermode_ulModifiers
1623/// These defines the detailed actions supported by set viewport. It is used by \ref ADL_Display_ViewPort_Set
1624/// @{
1625/// Indicate that the viewport set will change the view position
1626#define ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_POSITION       0x00000001
1627/// Indicate that the viewport set will change the view PanLock
1628#define ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_PANLOCK        0x00000002
1629/// Indicate that the viewport set will change the view size
1630#define ADL_CONTROLLERMODE_CM_MODIFIER_VIEW_SIZE           0x00000008
1631/// @}
1632
1633/// \defgroup defines for Mirabilis
1634/// These defines are used for the Mirabilis feature
1635/// @{
1636///
1637/// Indicates the maximum number of audio sample rates
1638#define ADL_MAX_AUDIO_SAMPLE_RATE_COUNT                    16
1639/// @}
1640
1641///////////////////////////////////////////////////////////////////////////
1642// ADLMultiChannelSplitStateFlag Enumeration
1643///////////////////////////////////////////////////////////////////////////
1644enum ADLMultiChannelSplitStateFlag
1645{
1646    ADLMultiChannelSplit_Unitialized = 0,
1647    ADLMultiChannelSplit_Disabled    = 1,
1648    ADLMultiChannelSplit_Enabled     = 2,
1649    ADLMultiChannelSplit_SaveProfile = 3
1650};
1651
1652///////////////////////////////////////////////////////////////////////////
1653// ADLSampleRate Enumeration
1654///////////////////////////////////////////////////////////////////////////
1655enum ADLSampleRate
1656{
1657    ADLSampleRate_32KHz =0,
1658    ADLSampleRate_44P1KHz,
1659    ADLSampleRate_48KHz,
1660    ADLSampleRate_88P2KHz,
1661    ADLSampleRate_96KHz,
1662    ADLSampleRate_176P4KHz,
1663    ADLSampleRate_192KHz,
1664    ADLSampleRate_384KHz, //DP1.2
1665    ADLSampleRate_768KHz, //DP1.2
1666    ADLSampleRate_Undefined
1667};
1668
1669/// \defgroup define_overdrive6_capabilities
1670/// These defines the capabilities supported by Overdrive 6. It is used by \ref ADL_Overdrive6_Capabilities_Get
1671/// @{
1672/// Indicate that core (engine) clock can be changed.
1673#define ADL_OD6_CAPABILITY_SCLK_CUSTOMIZATION               0x00000001
1674/// Indicate that memory clock can be changed.
1675#define ADL_OD6_CAPABILITY_MCLK_CUSTOMIZATION               0x00000002
1676/// Indicate that graphics activity reporting is supported.
1677#define ADL_OD6_CAPABILITY_GPU_ACTIVITY_MONITOR             0x00000004
1678/// Indicate that power limit can be customized.
1679#define ADL_OD6_CAPABILITY_POWER_CONTROL                    0x00000008
1680/// Indicate that SVI2 Voltage Control is supported.
1681#define ADL_OD6_CAPABILITY_VOLTAGE_CONTROL                  0x00000010
1682/// Indicate that OD6+ percentage adjustment is supported.
1683#define ADL_OD6_CAPABILITY_PERCENT_ADJUSTMENT               0x00000020
1684/// Indicate that Thermal Limit Unlock is supported.
1685#define ADL_OD6_CAPABILITY_THERMAL_LIMIT_UNLOCK             0x00000040
1686///Indicate that Fan speed needs to be displayed in RPM
1687#define ADL_OD6_CAPABILITY_FANSPEED_IN_RPM                    0x00000080
1688/// @}
1689
1690/// \defgroup define_overdrive6_supported_states
1691/// These defines the power states supported by Overdrive 6. It is used by \ref ADL_Overdrive6_Capabilities_Get
1692/// @{
1693/// Indicate that overdrive is supported in the performance state.  This is currently the only state supported.
1694#define ADL_OD6_SUPPORTEDSTATE_PERFORMANCE                  0x00000001
1695/// Do not use.  Reserved for future use.
1696#define ADL_OD6_SUPPORTEDSTATE_POWER_SAVING                 0x00000002
1697/// @}
1698
1699/// \defgroup define_overdrive6_getstateinfo
1700/// These defines the power states to get information about. It is used by \ref ADL_Overdrive6_StateInfo_Get
1701/// @{
1702/// Get default clocks for the performance state.
1703#define ADL_OD6_GETSTATEINFO_DEFAULT_PERFORMANCE            0x00000001
1704/// Do not use.  Reserved for future use.
1705#define ADL_OD6_GETSTATEINFO_DEFAULT_POWER_SAVING           0x00000002
1706/// Get clocks for current state.  Currently this is the same as \ref ADL_OD6_GETSTATEINFO_CUSTOM_PERFORMANCE
1707/// since only performance state is supported.
1708#define ADL_OD6_GETSTATEINFO_CURRENT                        0x00000003
1709/// Get the modified clocks (if any) for the performance state.  If clocks were not modified
1710/// through Overdrive 6, then this will return the same clocks as \ref ADL_OD6_GETSTATEINFO_DEFAULT_PERFORMANCE.
1711#define ADL_OD6_GETSTATEINFO_CUSTOM_PERFORMANCE             0x00000004
1712/// Do not use.  Reserved for future use.
1713#define ADL_OD6_GETSTATEINFO_CUSTOM_POWER_SAVING            0x00000005
1714/// @}
1715
1716/// \defgroup define_overdrive6_getstate and define_overdrive6_getmaxclockadjust
1717/// These defines the power states to get information about. It is used by \ref ADL_Overdrive6_StateEx_Get and \ref ADL_Overdrive6_MaxClockAdjust_Get
1718/// @{
1719/// Get default clocks for the performance state.  Only performance state is currently supported.
1720#define ADL_OD6_STATE_PERFORMANCE            0x00000001
1721/// @}
1722
1723/// \defgroup define_overdrive6_setstate
1724/// These define which power state to set customized clocks on. It is used by \ref ADL_Overdrive6_State_Set
1725/// @{
1726/// Set customized clocks for the performance state.
1727#define ADL_OD6_SETSTATE_PERFORMANCE                        0x00000001
1728/// Do not use.  Reserved for future use.
1729#define ADL_OD6_SETSTATE_POWER_SAVING                       0x00000002
1730/// @}
1731
1732/// \defgroup define_overdrive6_thermalcontroller_caps
1733/// These defines the capabilities of the GPU thermal controller. It is used by \ref ADL_Overdrive6_ThermalController_Caps
1734/// @{
1735/// GPU thermal controller is supported.
1736#define ADL_OD6_TCCAPS_THERMAL_CONTROLLER                   0x00000001
1737/// GPU fan speed control is supported.
1738#define ADL_OD6_TCCAPS_FANSPEED_CONTROL                     0x00000002
1739/// Fan speed percentage can be read.
1740#define ADL_OD6_TCCAPS_FANSPEED_PERCENT_READ                0x00000100
1741/// Fan speed can be set by specifying a percentage value.
1742#define ADL_OD6_TCCAPS_FANSPEED_PERCENT_WRITE               0x00000200
1743/// Fan speed RPM (revolutions-per-minute) can be read.
1744#define ADL_OD6_TCCAPS_FANSPEED_RPM_READ                    0x00000400
1745/// Fan speed can be set by specifying an RPM value.
1746#define ADL_OD6_TCCAPS_FANSPEED_RPM_WRITE                   0x00000800
1747/// @}
1748
1749/// \defgroup define_overdrive6_fanspeed_type
1750/// These defines the fan speed type being reported. It is used by \ref ADL_Overdrive6_FanSpeed_Get
1751/// @{
1752/// Fan speed reported in percentage.
1753#define ADL_OD6_FANSPEED_TYPE_PERCENT                       0x00000001
1754/// Fan speed reported in RPM.
1755#define ADL_OD6_FANSPEED_TYPE_RPM                           0x00000002
1756/// Fan speed has been customized by the user, and fan is not running in automatic mode.
1757#define ADL_OD6_FANSPEED_USER_DEFINED                       0x00000100
1758/// @}
1759
1760/// \defgroup define_overdrive_EventCounter_type
1761/// 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.
1762/// @{
1763#define ADL_ODN_EVENTCOUNTER_THERMAL        0
1764#define ADL_ODN_EVENTCOUNTER_VPURECOVERY    1
1765/// @}
1766
1767///////////////////////////////////////////////////////////////////////////
1768// ADLODNControlType Enumeration
1769///////////////////////////////////////////////////////////////////////////
1770enum ADLODNControlType
1771{
1772    ODNControlType_Current = 0,
1773    ODNControlType_Default,
1774    ODNControlType_Auto,
1775    ODNControlType_Manual
1776};
1777
1778enum ADLODNDPMMaskType
1779{
1780     ADL_ODN_DPM_CLOCK               = 1 << 0,
1781     ADL_ODN_DPM_VDDC                = 1 << 1,
1782     ADL_ODN_DPM_MASK                = 1 << 2,
1783};
1784
1785//ODN features Bits for ADLODNCapabilitiesX2
1786enum ADLODNFeatureControl
1787{
1788     ADL_ODN_SCLK_DPM                = 1 << 0,
1789     ADL_ODN_MCLK_DPM                = 1 << 1,
1790     ADL_ODN_SCLK_VDD                = 1 << 2,
1791     ADL_ODN_MCLK_VDD                = 1 << 3,
1792     ADL_ODN_FAN_SPEED_MIN           = 1 << 4,
1793     ADL_ODN_FAN_SPEED_TARGET        = 1 << 5,
1794     ADL_ODN_ACOUSTIC_LIMIT_SCLK     = 1 << 6,
1795     ADL_ODN_TEMPERATURE_FAN_MAX     = 1 << 7,
1796     ADL_ODN_TEMPERATURE_SYSTEM      = 1 << 8,
1797     ADL_ODN_POWER_LIMIT             = 1 << 9,
1798     ADL_ODN_SCLK_AUTO_LIMIT             = 1 << 10,
1799     ADL_ODN_MCLK_AUTO_LIMIT             = 1 << 11,
1800     ADL_ODN_SCLK_DPM_MASK_ENABLE        = 1 << 12,
1801     ADL_ODN_MCLK_DPM_MASK_ENABLE        = 1 << 13,
1802     ADL_ODN_MCLK_UNDERCLOCK_ENABLE      = 1 << 14,
1803     ADL_ODN_SCLK_DPM_THROTTLE_NOTIFY    = 1 << 15,
1804     ADL_ODN_POWER_UTILIZATION           = 1 << 16,
1805     ADL_ODN_PERF_TUNING_SLIDER          = 1 << 17,
1806     ADL_ODN_REMOVE_WATTMAN_PAGE         = 1 << 31 // Internal Only
1807};
1808
1809//If any new feature is added, PPLIB only needs to add ext feature ID and Item ID(Seeting ID). These IDs should match the drive defined in CWDDEPM.h
1810enum ADLODNExtFeatureControl
1811{
1812	ADL_ODN_EXT_FEATURE_MEMORY_TIMING_TUNE = 1 << 0,
1813	ADL_ODN_EXT_FEATURE_FAN_ZERO_RPM_CONTROL = 1 << 1,
1814	ADL_ODN_EXT_FEATURE_AUTO_UV_ENGINE = 1 << 2,   //Auto under voltage
1815	ADL_ODN_EXT_FEATURE_AUTO_OC_ENGINE = 1 << 3,   //Auto OC Enine
1816	ADL_ODN_EXT_FEATURE_AUTO_OC_MEMORY = 1 << 4,   //Auto OC memory
1817	ADL_ODN_EXT_FEATURE_FAN_CURVE = 1 << 5    //Fan curve
1818
1819};
1820
1821//If any new feature is added, PPLIB only needs to add ext feature ID and Item ID(Seeting ID).These IDs should match the drive defined in CWDDEPM.h
1822enum ADLODNExtSettingId
1823{
1824	ADL_ODN_PARAMETER_AC_TIMING = 0,
1825	ADL_ODN_PARAMETER_FAN_ZERO_RPM_CONTROL,
1826	ADL_ODN_PARAMETER_AUTO_UV_ENGINE,
1827	ADL_ODN_PARAMETER_AUTO_OC_ENGINE,
1828	ADL_ODN_PARAMETER_AUTO_OC_MEMORY,
1829	ADL_ODN_PARAMETER_FAN_CURVE_TEMPERATURE_1,
1830	ADL_ODN_PARAMETER_FAN_CURVE_SPEED_1,
1831	ADL_ODN_PARAMETER_FAN_CURVE_TEMPERATURE_2,
1832	ADL_ODN_PARAMETER_FAN_CURVE_SPEED_2,
1833	ADL_ODN_PARAMETER_FAN_CURVE_TEMPERATURE_3,
1834	ADL_ODN_PARAMETER_FAN_CURVE_SPEED_3,
1835	ADL_ODN_PARAMETER_FAN_CURVE_TEMPERATURE_4,
1836	ADL_ODN_PARAMETER_FAN_CURVE_SPEED_4,
1837	ADL_ODN_PARAMETER_FAN_CURVE_TEMPERATURE_5,
1838	ADL_ODN_PARAMETER_FAN_CURVE_SPEED_5,
1839    ADL_ODN_POWERGAUGE,
1840	ODN_COUNT
1841
1842} ;
1843
1844//OD8 Capability features bits
1845enum ADLOD8FeatureControl
1846{
1847    ADL_OD8_GFXCLK_LIMITS = 1 << 0,
1848    ADL_OD8_GFXCLK_CURVE = 1 << 1,
1849    ADL_OD8_UCLK_MAX = 1 << 2,
1850    ADL_OD8_POWER_LIMIT = 1 << 3,
1851    ADL_OD8_ACOUSTIC_LIMIT_SCLK = 1 << 4,   //FanMaximumRpm
1852    ADL_OD8_FAN_SPEED_MIN = 1 << 5,   //FanMinimumPwm
1853    ADL_OD8_TEMPERATURE_FAN = 1 << 6,   //FanTargetTemperature
1854    ADL_OD8_TEMPERATURE_SYSTEM = 1 << 7,    //MaxOpTemp
1855    ADL_OD8_MEMORY_TIMING_TUNE = 1 << 8,
1856    ADL_OD8_FAN_ZERO_RPM_CONTROL = 1 << 9,
1857    ADL_OD8_AUTO_UV_ENGINE = 1 << 10,  //Auto under voltage
1858    ADL_OD8_AUTO_OC_ENGINE = 1 << 11,  //Auto overclock engine
1859    ADL_OD8_AUTO_OC_MEMORY = 1 << 12,  //Auto overclock memory
1860    ADL_OD8_FAN_CURVE = 1 << 13,   //Fan curve
1861    ADL_OD8_WS_AUTO_FAN_ACOUSTIC_LIMIT = 1 << 14, //Workstation Manual Fan controller
1862    ADL_OD8_GFXCLK_QUADRATIC_CURVE = 1 << 15,
1863    ADL_OD8_OPTIMIZED_GPU_POWER_MODE = 1 << 16,
1864    ADL_OD8_ODVOLTAGE_LIMIT = 1 << 17,
1865    ADL_OD8_ADV_OC_LIMITS = 1 << 18,  //Advanced OC limits.
1866    ADL_OD8_PER_ZONE_GFX_VOLTAGE_OFFSET = 1 << 19,  //Per Zone gfx voltage offset feature
1867    ADL_OD8_AUTO_CURVE_OPTIMIZER = 1 << 20,  //Auto per zone tuning.
1868    ADL_OD8_GFX_VOLTAGE_LIMIT = 1 << 21,  //Voltage limit slider
1869    ADL_OD8_TDC_LIMIT = 1 << 22,  //TDC slider
1870    ADL_OD8_FULL_CONTROL_MODE = 1 << 23,  //Full control
1871    ADL_OD8_POWER_SAVING_FEATURE_CONTROL = 1 << 24,  //Power saving feature control
1872    ADL_OD8_ACTIMING_PARAMETERS_TUNE = 1 << 25,  // AC Timing Parameters Tuning
1873    ADL_OD8_OVERDRIVE_INTERFACE = 1 << 26,  // Version info feature ID for RSX, do not expose in ADL.
1874    ADL_OD8_AUTO_UV_ENGINE_V2 = 1 << 27,  // Auto UV 2.0 with actual stress testing.
1875    ADL_OD8_POWER_GAUGE = 1 << 28 //Power Gauge
1876};
1877
1878typedef enum ADLOD8SettingId
1879{
1880    OD8_GFXCLK_FMAX = 0,
1881    OD8_GFXCLK_FMIN,
1882    OD8_GFXCLK_FREQ1,
1883    OD8_GFXCLK_VOLTAGE1,
1884    OD8_GFXCLK_FREQ2,
1885    OD8_GFXCLK_VOLTAGE2,
1886    OD8_GFXCLK_FREQ3,
1887    OD8_GFXCLK_VOLTAGE3,
1888    OD8_UCLK_FMAX,
1889    OD8_POWER_PERCENTAGE,
1890    OD8_FAN_MIN_SPEED, //10
1891    OD8_FAN_ACOUSTIC_LIMIT,
1892    OD8_FAN_TARGET_TEMP,
1893    OD8_OPERATING_TEMP_MAX,
1894    OD8_AC_TIMING,
1895    OD8_FAN_ZERORPM_CONTROL,
1896    OD8_AUTO_UV_ENGINE_CONTROL,
1897    OD8_AUTO_OC_ENGINE_CONTROL,
1898    OD8_AUTO_OC_MEMORY_CONTROL,
1899    OD8_FAN_CURVE_TEMPERATURE_1,
1900    OD8_FAN_CURVE_SPEED_1, //20
1901    OD8_FAN_CURVE_TEMPERATURE_2,
1902    OD8_FAN_CURVE_SPEED_2,
1903    OD8_FAN_CURVE_TEMPERATURE_3,
1904    OD8_FAN_CURVE_SPEED_3,
1905    OD8_FAN_CURVE_TEMPERATURE_4,
1906    OD8_FAN_CURVE_SPEED_4,
1907    OD8_FAN_CURVE_TEMPERATURE_5,
1908    OD8_FAN_CURVE_SPEED_5,
1909    OD8_WS_FAN_AUTO_FAN_ACOUSTIC_LIMIT,
1910    OD8_GFXCLK_CURVE_COEFFICIENT_A, // 30 As part of the agreement with UI team, the min/max voltage limits for the
1911    OD8_GFXCLK_CURVE_COEFFICIENT_B, // quadratic curve graph will be stored in the min and max limits of
1912    OD8_GFXCLK_CURVE_COEFFICIENT_C, // coefficient a, b and c. A, b and c themselves do not have limits.
1913    OD8_GFXCLK_CURVE_VFT_FMIN,
1914    OD8_UCLK_FMIN,
1915    OD8_FAN_ZERO_RPM_STOP_TEMPERATURE,
1916    OD8_OPTIMZED_POWER_MODE,
1917    OD8_OD_VOLTAGE,// RSX - voltage offset feature
1918    OD8_ADV_OC_LIMITS_SETTING,
1919    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_1,
1920    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_2, //40
1921    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_3,
1922    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_4,
1923    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_5,
1924    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_6,
1925    OD8_AUTO_CURVE_OPTIMIZER_SETTING,
1926    OD8_GFX_VOLTAGE_LIMIT_SETTING,
1927    OD8_TDC_PERCENTAGE,
1928    OD8_FULL_CONTROL_MODE_SETTING,
1929    OD8_FULL_CONTROL_MODE_GFXCLK,
1930    OD8_FULL_CONTROL_MODE_UCLK,               // 50,
1931    OD8_IDLE_POWER_SAVING_FEATURE_CONTROL,
1932    OD8_RUNTIME_POWER_SAVING_FEATURE_CONTROL,
1933    OD8_FULL_CONTROL_MODE_FEATURE_CONTROL,
1934    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_1,
1935    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_2,
1936    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_3,
1937    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_4,
1938    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_5,
1939    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_FREQ_ANCHOR_6,
1940    OD8_PER_ZONE_GFX_VOLTAGE_OFFSET_VOLTAGE_LIMIT, //60
1941    OD8_ACTIMING_PARAMETER_TRRDS,
1942    OD8_ACTIMING_PARAMETER_TCL,
1943    OD8_ACTIMING_PARAMETER_TCWL,
1944    OD8_ACTIMING_PARAMETER_TRCDRD,
1945    OD8_ACTIMING_PARAMETER_TRCDWR,
1946    OD8_ACTIMING_PARAMETER_TRAS,
1947    OD8_ACTIMING_PARAMETER_TRPAB,
1948    OD8_ACTIMING_PARAMETER_TRFC,
1949    OD8_ACTIMING_PARAMETER_TRFCPB,
1950    OD8_ACTIMING_PARAMETER_TRREFD, //70
1951    OD8_ACTIMING_PARAMETER_TREF,
1952    OD8_ACTIMING_PARAMETER_TWR,
1953    OD8_ACTIMING_PARAMETER_TWTRS,
1954    OD8_OVERDRIVE_INTERFACE_ID, //74
1955    OD8_AUTO_UV_ENGINE_V2_ID,   //75
1956    OD8_POWER_GAUGE,
1957    OD8_COUNT
1958} ADLOD8SettingId;
1959
1960
1961//Define Performance Metrics Log max sensors number
1962#define ADL_PMLOG_MAX_SENSORS  256
1963
1964/// \deprecated Replaced with ADL_PMLOG_SENSORS
1965typedef enum ADLSensorType
1966{
1967    SENSOR_MAXTYPES             = 0,
1968    PMLOG_CLK_GFXCLK            = 1,    // Current graphic clock value in MHz
1969    PMLOG_CLK_MEMCLK            = 2,    // Current memory clock value in MHz
1970    PMLOG_CLK_SOCCLK            = 3,
1971    PMLOG_CLK_UVDCLK1           = 4,
1972    PMLOG_CLK_UVDCLK2           = 5,
1973    PMLOG_CLK_VCECLK            = 6,
1974    PMLOG_CLK_VCNCLK            = 7,
1975    PMLOG_TEMPERATURE_EDGE      = 8,    // Current edge of the die temperature value in C
1976    PMLOG_TEMPERATURE_MEM       = 9,
1977    PMLOG_TEMPERATURE_VRVDDC    = 10,
1978    PMLOG_TEMPERATURE_VRMVDD    = 11,
1979    PMLOG_TEMPERATURE_LIQUID    = 12,
1980    PMLOG_TEMPERATURE_PLX       = 13,
1981    PMLOG_FAN_RPM               = 14,   // Current fan RPM value
1982    PMLOG_FAN_PERCENTAGE        = 15,   // Current ratio of fan RPM and max RPM
1983    PMLOG_SOC_VOLTAGE           = 16,
1984    PMLOG_SOC_POWER             = 17,
1985    PMLOG_SOC_CURRENT           = 18,
1986    PMLOG_INFO_ACTIVITY_GFX     = 19,   // Current graphic activity level in percentage
1987    PMLOG_INFO_ACTIVITY_MEM     = 20,   // Current memory activity level in percentage
1988    PMLOG_GFX_VOLTAGE           = 21,   // Current graphic voltage in mV
1989    PMLOG_MEM_VOLTAGE           = 22,
1990    PMLOG_ASIC_POWER            = 23,   // Current ASIC power draw in Watt
1991    PMLOG_TEMPERATURE_VRSOC     = 24,
1992    PMLOG_TEMPERATURE_VRMVDD0   = 25,
1993    PMLOG_TEMPERATURE_VRMVDD1   = 26,
1994    PMLOG_TEMPERATURE_HOTSPOT   = 27,   // Current center of the die temperature value in C
1995    PMLOG_TEMPERATURE_GFX       = 28,
1996    PMLOG_TEMPERATURE_SOC       = 29,
1997    PMLOG_GFX_POWER             = 30,
1998    PMLOG_GFX_CURRENT           = 31,
1999    PMLOG_TEMPERATURE_CPU       = 32,
2000    PMLOG_CPU_POWER             = 33,
2001    PMLOG_CLK_CPUCLK            = 34,
2002    PMLOG_THROTTLER_STATUS      = 35,   // A bit map of GPU throttle information. If a bit is set, the bit represented type of thorttling occurred in the last metrics sampling period
2003    PMLOG_CLK_VCN1CLK1          = 36,
2004    PMLOG_CLK_VCN1CLK2          = 37,
2005    PMLOG_SMART_POWERSHIFT_CPU  = 38,
2006    PMLOG_SMART_POWERSHIFT_DGPU = 39,
2007    PMLOG_BUS_SPEED             = 40,   // Current PCIE bus speed running
2008    PMLOG_BUS_LANES             = 41,   // Current PCIE bus lanes using
2009    PMLOG_TEMPERATURE_LIQUID0   = 42,
2010    PMLOG_TEMPERATURE_LIQUID1   = 43,
2011    PMLOG_CLK_FCLK              = 44,
2012    PMLOG_THROTTLER_STATUS_CPU  = 45,
2013    PMLOG_SSPAIRED_ASICPOWER    = 46, // apuPower
2014    PMLOG_SSTOTAL_POWERLIMIT    = 47, // Total Power limit    
2015    PMLOG_SSAPU_POWERLIMIT      = 48, // APU Power limit
2016    PMLOG_SSDGPU_POWERLIMIT     = 49, // DGPU Power limit
2017    PMLOG_TEMPERATURE_HOTSPOT_GCD      = 50,
2018    PMLOG_TEMPERATURE_HOTSPOT_MCD      = 51,
2019    PMLOG_THROTTLE_PERCENTAGE_TEMP_GFX = 52,
2020    PMLOG_THROTTLE_PERCENTAGE_TEMP_MEM = 53,
2021    PMLOG_THROTTLE_PERCENTAGE_TEMP_VR = 54,
2022    PMLOG_THROTTLE_PERCENTAGE_POWER = 55,
2023    PMLOG_THROTTLE_PERCENTAGE_TDC = 56,
2024    PMLOG_THROTTLE_PERCENTAGE_VMAX = 57,
2025    PMLOG_BUS_CURR_MAX_SPEED = 58, 
2026    PMLOG_RESERVED_1 = 59, //Currently Unused
2027    PMLOG_RESERVED_2 = 60, //Currently Unused
2028    PMLOG_RESERVED_3 = 61, //Currently Unused
2029    PMLOG_RESERVED_4 = 62, //Currently Unused
2030    PMLOG_RESERVED_5 = 63, //Currently Unused
2031    PMLOG_RESERVED_6 = 64, //Currently Unused
2032    PMLOG_RESERVED_7 = 65, //Currently Unused
2033    PMLOG_RESERVED_8 = 66, //Currently Unused
2034    PMLOG_RESERVED_9 = 67, //Currently Unused
2035    PMLOG_RESERVED_10 = 68, //Currently Unused
2036    PMLOG_RESERVED_11 = 69, //Currently Unused
2037    PMLOG_RESERVED_12 = 70, //Currently Unused
2038    PMLOG_RESERVED_13 = 71, //Currently Unused
2039    PMLOG_RESERVED_14 = 72,
2040    PMLOG_BOARD_POWER = 73,
2041    PMLOG_MAX_SENSORS_REAL
2042} ADLSensorType;
2043
2044
2045//Throttle Status
2046typedef enum ADL_THROTTLE_NOTIFICATION
2047{
2048	ADL_PMLOG_THROTTLE_POWER = 1 << 0,
2049	ADL_PMLOG_THROTTLE_THERMAL = 1 << 1,
2050	ADL_PMLOG_THROTTLE_CURRENT = 1 << 2,
2051} ADL_THROTTLE_NOTIFICATION;
2052
2053typedef enum ADL_PMLOG_SENSORS
2054{
2055    ADL_SENSOR_MAXTYPES             = 0,
2056    ADL_PMLOG_CLK_GFXCLK            = 1,
2057    ADL_PMLOG_CLK_MEMCLK            = 2,
2058    ADL_PMLOG_CLK_SOCCLK            = 3,
2059    ADL_PMLOG_CLK_UVDCLK1           = 4,
2060    ADL_PMLOG_CLK_UVDCLK2           = 5,
2061    ADL_PMLOG_CLK_VCECLK            = 6,
2062    ADL_PMLOG_CLK_VCNCLK            = 7,
2063    ADL_PMLOG_TEMPERATURE_EDGE      = 8,
2064    ADL_PMLOG_TEMPERATURE_MEM       = 9,
2065    ADL_PMLOG_TEMPERATURE_VRVDDC    = 10,
2066    ADL_PMLOG_TEMPERATURE_VRMVDD    = 11,
2067    ADL_PMLOG_TEMPERATURE_LIQUID    = 12,
2068    ADL_PMLOG_TEMPERATURE_PLX       = 13,
2069    ADL_PMLOG_FAN_RPM               = 14,
2070    ADL_PMLOG_FAN_PERCENTAGE        = 15,
2071    ADL_PMLOG_SOC_VOLTAGE           = 16,
2072    ADL_PMLOG_SOC_POWER             = 17,
2073    ADL_PMLOG_SOC_CURRENT           = 18,
2074    ADL_PMLOG_INFO_ACTIVITY_GFX     = 19,
2075    ADL_PMLOG_INFO_ACTIVITY_MEM     = 20,
2076    ADL_PMLOG_GFX_VOLTAGE           = 21,
2077    ADL_PMLOG_MEM_VOLTAGE           = 22,
2078    ADL_PMLOG_ASIC_POWER            = 23,
2079    ADL_PMLOG_TEMPERATURE_VRSOC     = 24,
2080    ADL_PMLOG_TEMPERATURE_VRMVDD0   = 25,
2081    ADL_PMLOG_TEMPERATURE_VRMVDD1   = 26,
2082    ADL_PMLOG_TEMPERATURE_HOTSPOT   = 27,
2083    ADL_PMLOG_TEMPERATURE_GFX       = 28,
2084    ADL_PMLOG_TEMPERATURE_SOC       = 29,
2085    ADL_PMLOG_GFX_POWER             = 30,
2086    ADL_PMLOG_GFX_CURRENT           = 31,
2087    ADL_PMLOG_TEMPERATURE_CPU       = 32,
2088    ADL_PMLOG_CPU_POWER             = 33,
2089    ADL_PMLOG_CLK_CPUCLK            = 34,
2090    ADL_PMLOG_THROTTLER_STATUS      = 35,   // GFX
2091    ADL_PMLOG_CLK_VCN1CLK1          = 36,
2092    ADL_PMLOG_CLK_VCN1CLK2          = 37,
2093    ADL_PMLOG_SMART_POWERSHIFT_CPU  = 38,
2094    ADL_PMLOG_SMART_POWERSHIFT_DGPU = 39,
2095    ADL_PMLOG_BUS_SPEED             = 40,
2096    ADL_PMLOG_BUS_LANES             = 41,
2097    ADL_PMLOG_TEMPERATURE_LIQUID0   = 42,
2098    ADL_PMLOG_TEMPERATURE_LIQUID1   = 43,
2099    ADL_PMLOG_CLK_FCLK              = 44,
2100    ADL_PMLOG_THROTTLER_STATUS_CPU  = 45,
2101    ADL_PMLOG_SSPAIRED_ASICPOWER    = 46, // apuPower
2102    ADL_PMLOG_SSTOTAL_POWERLIMIT    = 47, // Total Power limit
2103    ADL_PMLOG_SSAPU_POWERLIMIT      = 48, // APU Power limit
2104    ADL_PMLOG_SSDGPU_POWERLIMIT     = 49, // DGPU Power limit
2105    ADL_PMLOG_TEMPERATURE_HOTSPOT_GCD      = 50,
2106    ADL_PMLOG_TEMPERATURE_HOTSPOT_MCD      = 51,
2107    ADL_PMLOG_THROTTLE_PERCENTAGE_TEMP_GFX = 52,
2108    ADL_PMLOG_THROTTLE_PERCENTAGE_TEMP_MEM = 53,
2109    ADL_PMLOG_THROTTLE_PERCENTAGE_TEMP_VR = 54,
2110    ADL_PMLOG_THROTTLE_PERCENTAGE_POWER = 55,
2111    ADL_PMLOG_THROTTLE_PERCENTAGE_TDC = 56,
2112    ADL_PMLOG_THROTTLE_PERCENTAGE_VMAX = 57,
2113    ADL_PMLOG_BUS_CURR_MAX_SPEED = 58, 
2114    ADL_PMLOG_RESERVED_1 = 59, //Currently Unused
2115    ADL_PMLOG_RESERVED_2 = 60, //Currently Unused
2116    ADL_PMLOG_RESERVED_3 = 61, //Currently Unused
2117    ADL_PMLOG_RESERVED_4 = 62, //Currently Unused
2118    ADL_PMLOG_RESERVED_5 = 63, //Currently Unused
2119    ADL_PMLOG_RESERVED_6 = 64, //Currently Unused
2120    ADL_PMLOG_RESERVED_7 = 65, //Currently Unused
2121    ADL_PMLOG_RESERVED_8 = 66, //Currently Unused
2122    ADL_PMLOG_RESERVED_9 = 67, //Currently Unused
2123    ADL_PMLOG_RESERVED_10 = 68, //Currently Unused
2124    ADL_PMLOG_RESERVED_11 = 69, //Currently Unused
2125    ADL_PMLOG_RESERVED_12 = 70, //Currently Unused
2126    ADL_PMLOG_CLK_NPUCLK = 71,      //NPU frequency
2127    ADL_PMLOG_NPU_BUSY_AVG = 72,    //NPU busy
2128    ADL_PMLOG_BOARD_POWER = 73,
2129    ADL_PMLOG_TEMPERATURE_INTAKE = 74,
2130    ADL_PMLOG_MAX_SENSORS_REAL
2131} ADL_PMLOG_SENSORS;
2132
2133/// \defgroup define_ecc_mode_states
2134/// These defines the ECC(Error Correction Code) state. It is used by \ref ADL_Workstation_ECC_Get,ADL_Workstation_ECC_Set
2135/// @{
2136/// Error Correction is OFF.
2137#define ECC_MODE_OFF 0
2138/// Error Correction is ECCV2.
2139#define ECC_MODE_ON 2
2140/// Error Correction is HBM.
2141#define ECC_MODE_HBM 3
2142/// @}
2143
2144/// \defgroup define_board_layout_flags
2145/// 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
2146/// @{
2147/// Indicates the number of slots is valid.
2148#define ADL_BLAYOUT_VALID_NUMBER_OF_SLOTS 0x1
2149/// Indicates the slot sizes are valid. Size of the slot consists of the length and width.
2150#define ADL_BLAYOUT_VALID_SLOT_SIZES 0x2
2151/// Indicates the connector offsets are valid.
2152#define ADL_BLAYOUT_VALID_CONNECTOR_OFFSETS 0x4
2153/// Indicates the connector lengths is valid.
2154#define ADL_BLAYOUT_VALID_CONNECTOR_LENGTHS 0x8
2155/// @}
2156
2157/// \defgroup define_max_constants
2158/// These defines are the maximum value constants.
2159/// @{
2160/// Indicates the Maximum supported slots on board.
2161#define ADL_ADAPTER_MAX_SLOTS 4
2162/// Indicates the Maximum supported connectors on slot.
2163#define ADL_ADAPTER_MAX_CONNECTORS 10
2164/// Indicates the Maximum supported properties of connection
2165#define ADL_MAX_CONNECTION_TYPES 32
2166/// Indicates the Maximum relative address link count.
2167#define ADL_MAX_RELATIVE_ADDRESS_LINK_COUNT 15
2168/// Indicates the Maximum size of EDID data block size
2169#define ADL_MAX_DISPLAY_EDID_DATA_SIZE 1024
2170/// Indicates the Maximum count of Error Records.
2171#define ADL_MAX_ERROR_RECORDS_COUNT  256
2172/// Indicates the maximum number of power states supported
2173#define ADL_MAX_POWER_POLICY    6
2174/// @}
2175
2176/// \defgroup define_connection_types
2177/// 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
2178/// @{
2179/// Indicates the VGA connection type is valid.
2180#define ADL_CONNECTION_TYPE_VGA 0
2181/// Indicates the DVI_I connection type is valid.
2182#define ADL_CONNECTION_TYPE_DVI 1
2183/// Indicates the DVI_SL connection type is valid.
2184#define ADL_CONNECTION_TYPE_DVI_SL 2
2185/// Indicates the HDMI connection type is valid.
2186#define ADL_CONNECTION_TYPE_HDMI 3
2187/// Indicates the DISPLAY PORT connection type is valid.
2188#define ADL_CONNECTION_TYPE_DISPLAY_PORT 4
2189/// Indicates the Active dongle DP->DVI(single link) connection type is valid.
2190#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_DVI_SL 5
2191/// Indicates the Active dongle DP->DVI(double link) connection type is valid.
2192#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_DVI_DL 6
2193/// Indicates the Active dongle DP->HDMI connection type is valid.
2194#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_HDMI 7
2195/// Indicates the Active dongle DP->VGA connection type is valid.
2196#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE_DP_VGA 8
2197/// Indicates the Passive dongle DP->HDMI connection type is valid.
2198#define ADL_CONNECTION_TYPE_PASSIVE_DONGLE_DP_HDMI 9
2199/// Indicates the Active dongle DP->VGA connection type is valid.
2200#define ADL_CONNECTION_TYPE_PASSIVE_DONGLE_DP_DVI 10
2201/// Indicates the MST type is valid.
2202#define ADL_CONNECTION_TYPE_MST 11
2203/// Indicates the active dongle, all types.
2204#define ADL_CONNECTION_TYPE_ACTIVE_DONGLE          12
2205/// Indicates the Virtual Connection Type.
2206#define ADL_CONNECTION_TYPE_VIRTUAL    13
2207/// Macros for generating bitmask from index.
2208#define ADL_CONNECTION_BITMAST_FROM_INDEX(index) (1 << index)
2209/// @}
2210
2211/// \defgroup define_connection_properties
2212/// 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
2213/// @{
2214/// Indicates the property Bitrate is valid.
2215#define ADL_CONNECTION_PROPERTY_BITRATE 0x1
2216/// Indicates the property number of lanes is valid.
2217#define ADL_CONNECTION_PROPERTY_NUMBER_OF_LANES 0x2
2218/// Indicates the property 3D caps is valid.
2219#define ADL_CONNECTION_PROPERTY_3DCAPS  0x4
2220/// Indicates the property output bandwidth is valid.
2221#define ADL_CONNECTION_PROPERTY_OUTPUT_BANDWIDTH 0x8
2222/// Indicates the property colordepth is valid.
2223#define ADL_CONNECTION_PROPERTY_COLORDEPTH  0x10
2224/// @}
2225
2226/// \defgroup define_lanecount_constants
2227/// These defines are the Lane count constants which will be used in DP & etc.
2228/// @{
2229/// Indicates if lane count is unknown
2230#define ADL_LANECOUNT_UNKNOWN 0
2231/// Indicates if lane count is 1
2232#define ADL_LANECOUNT_ONE 1
2233/// Indicates if lane count is 2
2234#define ADL_LANECOUNT_TWO 2
2235/// Indicates if lane count is 4
2236#define ADL_LANECOUNT_FOUR 4
2237/// Indicates if lane count is 8
2238#define ADL_LANECOUNT_EIGHT 8
2239/// Indicates default value of lane count
2240#define ADL_LANECOUNT_DEF ADL_LANECOUNT_FOUR
2241/// @}
2242
2243/// \defgroup define_linkrate_constants
2244/// These defines are the link rate constants which will be used in DP & etc.
2245/// @{
2246/// Indicates if link rate is unknown
2247#define ADL_LINK_BITRATE_UNKNOWN 0
2248/// Indicates if link rate is 1.62Ghz
2249#define ADL_LINK_BITRATE_1_62_GHZ 0x06
2250/// Indicates if link rate is 2.7Ghz
2251#define ADL_LINK_BITRATE_2_7_GHZ 0x0A
2252/// Indicates if link rate is 5.4Ghz
2253#define ADL_LINK_BITRATE_5_4_GHZ 0x14
2254
2255/// Indicates if link rate is 8.1Ghz
2256#define ADL_LINK_BITRATE_8_1_GHZ 0x1E
2257/// Indicates default value of link rate
2258#define ADL_LINK_BITRATE_DEF ADL_LINK_BITRATE_2_7_GHZ
2259/// @}
2260
2261/// \defgroup define_colordepth_constants
2262/// These defines are the color depth constants which will be used in DP & etc.
2263/// @{
2264#define ADL_CONNPROP_S3D_ALTERNATE_TO_FRAME_PACK            0x00000001
2265/// @}
2266
2267
2268/// \defgroup define_colordepth_constants
2269/// These defines are the color depth constants which will be used in DP & etc.
2270/// @{
2271/// Indicates if color depth is unknown
2272#define ADL_COLORDEPTH_UNKNOWN 0
2273/// Indicates if color depth is 666
2274#define ADL_COLORDEPTH_666 1
2275/// Indicates if color depth is 888
2276#define ADL_COLORDEPTH_888 2
2277/// Indicates if color depth is 101010
2278#define ADL_COLORDEPTH_101010 3
2279/// Indicates if color depth is 121212
2280#define ADL_COLORDEPTH_121212 4
2281/// Indicates if color depth is 141414
2282#define ADL_COLORDEPTH_141414 5
2283/// Indicates if color depth is 161616
2284#define ADL_COLORDEPTH_161616 6
2285/// Indicates default value of color depth
2286#define ADL_COLOR_DEPTH_DEF ADL_COLORDEPTH_888
2287/// @}
2288
2289
2290/// \defgroup define_emulation_status
2291/// These defines are the status of emulation
2292/// @{
2293/// Indicates if real device is connected.
2294#define ADL_EMUL_STATUS_REAL_DEVICE_CONNECTED 0x1
2295/// Indicates if emulated device is presented.
2296#define ADL_EMUL_STATUS_EMULATED_DEVICE_PRESENT 0x2
2297/// Indicates if emulated device is used.
2298#define ADL_EMUL_STATUS_EMULATED_DEVICE_USED  0x4
2299/// 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).
2300#define ADL_EMUL_STATUS_LAST_ACTIVE_DEVICE_USED 0x8
2301/// @}
2302
2303/// \defgroup define_emulation_mode
2304/// These defines are the modes of emulation
2305/// @{
2306/// Indicates if no emulation is used
2307#define ADL_EMUL_MODE_OFF 0
2308/// Indicates if emulation is used when display connected
2309#define ADL_EMUL_MODE_ON_CONNECTED 1
2310/// Indicates if emulation is used when display dis connected
2311#define ADL_EMUL_MODE_ON_DISCONNECTED 2
2312/// Indicates if emulation is used always
2313#define ADL_EMUL_MODE_ALWAYS 3
2314/// @}
2315
2316/// \defgroup define_emulation_query
2317/// These defines are the modes of emulation
2318/// @{
2319/// Indicates Data from real device
2320#define ADL_QUERY_REAL_DATA 0
2321/// Indicates Emulated data
2322#define ADL_QUERY_EMULATED_DATA 1
2323/// Indicates Data currently in use
2324#define ADL_QUERY_CURRENT_DATA 2
2325/// @}
2326
2327/// \defgroup define_persistence_state
2328/// These defines are the states of persistence
2329/// @{
2330/// Indicates persistence is disabled
2331#define ADL_EDID_PERSISTANCE_DISABLED 0
2332/// Indicates persistence is enabled
2333#define ADL_EDID_PERSISTANCE_ENABLED 1
2334/// @}
2335
2336/// \defgroup define_connector_types Connector Type
2337/// defines for ADLConnectorInfo.iType
2338/// @{
2339/// Indicates unknown Connector type
2340#define ADL_CONNECTOR_TYPE_UNKNOWN                 0
2341/// Indicates VGA Connector type
2342#define ADL_CONNECTOR_TYPE_VGA                     1
2343/// Indicates DVI-D Connector type
2344#define ADL_CONNECTOR_TYPE_DVI_D                   2
2345/// Indicates DVI-I Connector type
2346#define ADL_CONNECTOR_TYPE_DVI_I                   3
2347/// Indicates Active Dongle-NA Connector type
2348#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NA          4
2349/// Indicates Active Dongle-JP Connector type
2350#define ADL_CONNECTOR_TYPE_ATICVDONGLE_JP          5
2351/// Indicates Active Dongle-NONI2C Connector type
2352#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C      6
2353/// Indicates Active Dongle-NONI2C-D Connector type
2354#define ADL_CONNECTOR_TYPE_ATICVDONGLE_NONI2C_D    7
2355/// Indicates HDMI-Type A Connector type
2356#define ADL_CONNECTOR_TYPE_HDMI_TYPE_A             8
2357/// Indicates HDMI-Type B Connector type
2358#define ADL_CONNECTOR_TYPE_HDMI_TYPE_B             9
2359/// Indicates Display port Connector type
2360#define ADL_CONNECTOR_TYPE_DISPLAYPORT             10
2361/// Indicates EDP Connector type
2362#define ADL_CONNECTOR_TYPE_EDP                     11
2363/// Indicates MiniDP Connector type
2364#define ADL_CONNECTOR_TYPE_MINI_DISPLAYPORT        12
2365/// Indicates Virtual Connector type
2366#define ADL_CONNECTOR_TYPE_VIRTUAL                   13
2367/// Indicates USB type C Connector type
2368#define ADL_CONNECTOR_TYPE_USB_TYPE_C              14
2369/// @}
2370
2371/// \defgroup define_freesync_usecase
2372/// These defines are to specify use cases in which FreeSync should be enabled
2373/// They are a bit mask. To specify FreeSync for more than one use case, the input value
2374/// should be set to include multiple bits set
2375/// @{
2376/// Indicates FreeSync is enabled for Static Screen case
2377#define ADL_FREESYNC_USECASE_STATIC                 0x1
2378/// Indicates FreeSync is enabled for Video use case
2379#define ADL_FREESYNC_USECASE_VIDEO                  0x2
2380/// Indicates FreeSync is enabled for Gaming use case
2381#define ADL_FREESYNC_USECASE_GAMING                 0x4
2382/// @}
2383
2384/// \defgroup define_freesync_caps
2385/// These defines are used to retrieve FreeSync display capabilities.
2386/// GPU support flag also indicates whether the display is
2387/// connected to a GPU that actually supports FreeSync
2388/// @{
2389#define ADL_FREESYNC_CAP_SUPPORTED                      (1 << 0)
2390#define ADL_FREESYNC_CAP_GPUSUPPORTED                   (1 << 1)
2391#define ADL_FREESYNC_CAP_DISPLAYSUPPORTED               (1 << 2)
2392#define ADL_FREESYNC_CAP_CURRENTMODESUPPORTED           (1 << 3)
2393#define ADL_FREESYNC_CAP_NOCFXORCFXSUPPORTED            (1 << 4)
2394#define ADL_FREESYNC_CAP_NOGENLOCKORGENLOCKSUPPORTED    (1 << 5)
2395#define ADL_FREESYNC_CAP_BORDERLESSWINDOWSUPPORTED      (1 << 6)
2396/// @}
2397
2398/// \defgroup define_freesync_labelIndex
2399/// These defines are used to retrieve which FreeSync label to use
2400/// @{
2401#define ADL_FREESYNC_LABEL_UNSUPPORTED            0
2402#define ADL_FREESYNC_LABEL_FREESYNC               1
2403#define ADL_FREESYNC_LABEL_ADAPTIVE_SYNC          2
2404#define ADL_FREESYNC_LABEL_VRR                    3
2405#define ADL_FREESYNC_LABEL_FREESYNC_PREMIUM       4
2406#define ADL_FREESYNC_LABEL_FREESYNC_PREMIUM_PRO   5
2407/// @}
2408
2409/// Freesync Power optimization masks
2410/// @{
2411#define ADL_FREESYNC_POWEROPTIMIZATION_SUPPORTED_MASK		(1 << 0)
2412#define ADL_FREESYNC_POWEROPTIMIZATION_ENABLED_MASK			(1 << 1)
2413#define ADL_FREESYNC_POWEROPTIMIZATION_DEFAULT_VALUE_MASK	(1 << 2)
2414/// @}
2415
2416/// \defgroup define_MST_CommandLine_execute
2417/// @{
2418/// Indicates the MST command line for branch message if the bit is set. Otherwise, it is display message
2419#define ADL_MST_COMMANDLINE_PATH_MSG                 0x1
2420/// Indicates the MST command line to send message in broadcast way it the bit is set
2421#define ADL_MST_COMMANDLINE_BROADCAST                  0x2
2422
2423/// @}
2424
2425
2426/// \defgroup define_Adapter_CloneTypes_Get
2427/// @{
2428/// Indicates there is crossGPU clone with non-AMD dispalys
2429#define ADL_CROSSGPUDISPLAYCLONE_AMD_WITH_NONAMD                 0x1
2430/// Indicates there is crossGPU clone
2431#define ADL_CROSSGPUDISPLAYCLONE                  0x2
2432
2433
2434/// @}
2435
2436/// @}
2437
2438/// \defgroup define_D3DKMT_HANDLE
2439/// @{
2440/// Handle can be used to create Device Handle when using CreateDevice()
2441typedef unsigned int ADL_D3DKMT_HANDLE;
2442/// @}
2443
2444
2445// End Bracket for Constants and Definitions. Add new groups ABOVE this line!
2446
2447/// @}
2448
2449
2450typedef enum ADL_RAS_ERROR_INJECTION_MODE
2451{
2452	ADL_RAS_ERROR_INJECTION_MODE_SINGLE = 1,
2453	ADL_RAS_ERROR_INJECTION_MODE_MULTIPLE = 2
2454}ADL_RAS_ERROR_INJECTION_MODE;
2455
2456
2457typedef enum ADL_RAS_BLOCK_ID
2458{
2459	ADL_RAS_BLOCK_ID_UMC = 0,
2460	ADL_RAS_BLOCK_ID_SDMA,
2461	ADL_RAS_BLOCK_ID_GFX_HUB,
2462	ADL_RAS_BLOCK_ID_MMHUB,
2463	ADL_RAS_BLOCK_ID_ATHUB,
2464	ADL_RAS_BLOCK_ID_PCIE_BIF,
2465	ADL_RAS_BLOCK_ID_HDP,
2466	ADL_RAS_BLOCK_ID_XGMI_WAFL,
2467	ADL_RAS_BLOCK_ID_DF,
2468	ADL_RAS_BLOCK_ID_SMN,
2469	ADL_RAS_BLOCK_ID_SEM,
2470	ADL_RAS_BLOCK_ID_MP0,
2471	ADL_RAS_BLOCK_ID_MP1,
2472	ADL_RAS_BLOCK_ID_FUSE
2473}ADL_RAS_BLOCK_ID;
2474
2475typedef enum ADL_MEM_SUB_BLOCK_ID
2476{
2477	ADL_RAS__UMC_HBM = 0,
2478	ADL_RAS__UMC_SRAM = 1
2479}ADL_MEM_SUB_BLOCK_ID;
2480
2481typedef enum  _ADL_RAS_ERROR_TYPE
2482{
2483	ADL_RAS_ERROR__NONE = 0,
2484	ADL_RAS_ERROR__PARITY = 1,
2485	ADL_RAS_ERROR__SINGLE_CORRECTABLE = 2,
2486	ADL_RAS_ERROR__PARITY_SINGLE_CORRECTABLE = 3,
2487	ADL_RAS_ERROR__MULTI_UNCORRECTABLE = 4,
2488	ADL_RAS_ERROR__PARITY_MULTI_UNCORRECTABLE = 5,
2489	ADL_RAS_ERROR__SINGLE_CORRECTABLE_MULTI_UNCORRECTABLE = 6,
2490	ADL_RAS_ERROR__PARITY_SINGLE_CORRECTABLE_MULTI_UNCORRECTABLE = 7,
2491	ADL_RAS_ERROR__POISON = 8,
2492	ADL_RAS_ERROR__PARITY_POISON = 9,
2493	ADL_RAS_ERROR__SINGLE_CORRECTABLE_POISON = 10,
2494	ADL_RAS_ERROR__PARITY_SINGLE_CORRECTABLE_POISON = 11,
2495	ADL_RAS_ERROR__MULTI_UNCORRECTABLE_POISON = 12,
2496	ADL_RAS_ERROR__PARITY_MULTI_UNCORRECTABLE_POISON = 13,
2497	ADL_RAS_ERROR__SINGLE_CORRECTABLE_MULTI_UNCORRECTABLE_POISON = 14,
2498	ADL_RAS_ERROR__PARITY_SINGLE_CORRECTABLE_MULTI_UNCORRECTABLE_POISON = 15
2499}ADL_RAS_ERROR_TYPE;
2500
2501typedef enum ADL_RAS_INJECTION_METHOD
2502{
2503	ADL_RAS_ERROR__UMC_METH_COHERENT = 0,
2504	ADL_RAS_ERROR__UMC_METH_SINGLE_SHOT = 1,
2505	ADL_RAS_ERROR__UMC_METH_PERSISTENT = 2,
2506	ADL_RAS_ERROR__UMC_METH_PERSISTENT_DISABLE = 3
2507}ADL_RAS_INJECTION_METHOD;
2508
2509// Driver event types
2510typedef enum ADL_DRIVER_EVENT_TYPE
2511{
2512	ADL_EVENT_ID_AUTO_FEATURE_COMPLETED = 30,
2513	ADL_EVENT_ID_FEATURE_AVAILABILITY = 31,
2514
2515} ADL_DRIVER_EVENT_TYPE;
2516
2517
2518//UIFeature Ids
2519typedef enum ADL_UIFEATURES_GROUP
2520{
2521	ADL_UIFEATURES_GROUP_DVR = 0,
2522	ADL_UIFEATURES_GROUP_TURBOSYNC = 1,
2523	ADL_UIFEATURES_GROUP_FRAMEMETRICSMONITOR = 2,
2524	ADL_UIFEATURES_GROUP_FRTC = 3,
2525	ADL_UIFEATURES_GROUP_XVISION = 4,
2526	ADL_UIFEATURES_GROUP_BLOCKCHAIN = 5,
2527	ADL_UIFEATURES_GROUP_GAMEINTELLIGENCE = 6,
2528	ADL_UIFEATURES_GROUP_CHILL = 7,
2529	ADL_UIFEATURES_GROUP_DELAG = 8,
2530	ADL_UIFEATURES_GROUP_BOOST = 9,
2531	ADL_UIFEATURES_GROUP_USU = 10,
2532	ADL_UIFEATURES_GROUP_XGMI = 11,
2533	ADL_UIFEATURES_GROUP_PROVSR = 12,
2534    ADL_UIFEATURES_GROUP_SMA = 13,
2535    ADL_UIFEATURES_GROUP_CAMERA = 14,
2536    ADL_UIFEATURES_GROUP_FRTCPRO = 15,
2537    ADL_UIFEATURES_GROUP_DELAGNEXT = 16,
2538    ADL_UIFEATURES_GROUP_RTBOOST = 17,
2539    ADL_UIFEATURES_GROUP_UAI = 18
2540
2541} ADL_UIFEATURES_GROUP;
2542
2543
2544
2545/// Maximum brightness supported by Radeon LED interface
2546#define ADL_RADEON_LED_MAX_BRIGHTNESS		2
2547
2548/// Maximum speed supported by Radeon LED interface
2549#define ADL_RADEON_LED_MAX_SPEED	        4
2550
2551/// Maximum RGB supported by Radeon LED interface
2552#define ADL_RADEON_LED_MAX_RGB	            255
2553
2554/// Maximum MORSE code supported string
2555#define ADL_RADEON_LED_MAX_MORSE_CODE       260
2556
2557/// Maximum LED ROW ON GRID
2558#define ADL_RADEON_LED_MAX_LED_ROW_ON_GRID      7
2559
2560/// Maximum LED COLUMN ON GRID
2561#define ADL_RADEON_LED_MAX_LED_COLUMN_ON_GRID   24
2562
2563/////////////////////////////////////////////////////////////////////////////////////////////
2564///\brief
2565///
2566///
2567///
2568///
2569/// \nosubgrouping
2570////////////////////////////////////////////////////////////////////////////////////////////
2571typedef enum ADL_RADEON_USB_LED_BAR_CONTROLS
2572{
2573   RadeonLEDBarControl_OFF = 0,
2574   RadeonLEDBarControl_Static,
2575   RadeonLEDBarControl_Rainbow,
2576   RadeonLEDBarControl_Swirl,
2577   RadeonLEDBarControl_Chase,
2578   RadeonLEDBarControl_Bounce,
2579   RadeonLEDBarControl_MorseCode,
2580   RadeonLEDBarControl_ColorCycle,
2581   RadeonLEDBarControl_Breathing,
2582   RadeonLEDBarControl_CustomPattern,
2583   RadeonLEDBarControl_MAX
2584}ADL_RADEON_USB_LED_BAR_CONTROLS;
2585
2586/////////////////////////////////////////////////////////////////////////////////////////////
2587///\brief
2588///
2589///
2590///
2591///
2592/// \nosubgrouping
2593////////////////////////////////////////////////////////////////////////////////////////////
2594typedef unsigned int RadeonLEDBARSupportedControl;
2595
2596
2597/////////////////////////////////////////////////////////////////////////////////////////////
2598///\brief
2599///
2600///
2601///
2602///
2603/// \nosubgrouping
2604////////////////////////////////////////////////////////////////////////////////////////////
2605typedef enum ADL_RADEON_USB_LED_CONTROL_CONFIGS
2606{
2607   RadeonLEDPattern_Speed = 0,
2608   RadeonLEDPattern_Brightness,
2609   RadeonLEDPattern_Direction,
2610   RadeonLEDPattern_Color,
2611   RadeonLEDPattern_MAX
2612}ADL_RADEON_USB_LED_CONTROL_CONFIGS;
2613
2614/////////////////////////////////////////////////////////////////////////////////////////////
2615///\brief
2616///
2617///
2618///
2619///
2620/// \nosubgrouping
2621////////////////////////////////////////////////////////////////////////////////////////////
2622typedef unsigned int RadeonLEDBARSupportedConfig;
2623
2624//User blob feature settings
2625typedef enum ADL_USER_SETTINGS
2626{
2627    ADL_USER_SETTINGS_ENHANCEDSYNC = 1 << 0,          //notify Enhanced Sync settings change
2628    ADL_USER_SETTINGS_CHILL_PROFILE = 1 << 1,          //notify Chill settings change
2629    ADL_USER_SETTINGS_DELAG_PROFILE = 1 << 2,          //notify Delag settings change
2630    ADL_USER_SETTINGS_BOOST_PROFILE = 1 << 3,			//notify Boost settings change
2631    ADL_USER_SETTINGS_USU_PROFILE = 1 << 4,  		//notify USU settings change
2632    ADL_USER_SETTINGS_CVDC_PROFILE = 1 << 5,			//notify Color Vision Deficiency Corretion settings change
2633    ADL_USER_SETTINGS_SCE_PROFILE = 1 << 6,
2634    ADL_USER_SETTINGS_PROVSR = 1 << 7,
2635    ADL_USER_SETTINGS_RTBOOST_PROFILE=1 << 8,
2636    ADL_USER_SETTINGS_USU2_PROFILE = 1 << 9,  		//notify USU2 settings change
2637   } ADL_USER_SETTINGS;
2638
2639//FRAME_TIMESTAMPS_SHARED_MEMORY type
2640typedef enum FRAME_TIMESTAMPS_SHARED_MEMORY_TYPE
2641{
2642    FRAME_TIMESTAMPS_SHARED_MEMORY_TYPE_UNKNOWN = 0,
2643    FRAME_TIMESTAMPS_SHARED_MEMORY_TYPE_LEGACY,
2644    FRAME_TIMESTAMPS_SHARED_MEMORY_TYPE_INDEXED
2645}FRAME_TIMESTAMPS_SHARED_MEMORY_TYPE;
2646#define ADL_REG_DEVICE_FUNCTION_1            0x00000001
2647#endif /* ADL_DEFINES_H_ */
2648
2649