Skip to content

Commit

Permalink
ADLX SDK v1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
ericjunwei committed Dec 7, 2023
1 parent 42372fc commit cb54a5d
Show file tree
Hide file tree
Showing 2,583 changed files with 39,258 additions and 11,538 deletions.
2 changes: 1 addition & 1 deletion SDK/ADLXHelper/Windows/C/ADLXHelper.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,4 @@ ADLX_RESULT InitializePrivate (adlx_handle adlContext, ADLX_ADL_Main_Memory_Fre
}

return ADLX_FAIL;
}
}
155 changes: 77 additions & 78 deletions SDK/ADLXHelper/Windows/Cpp/ADLXHelper.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//
//
// Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All rights reserved.
//
//-------------------------------------------------------------------------------------------------
Expand All @@ -9,62 +9,61 @@ ADLXHelper g_ADLX;

//-------------------------------------------------------------------------------------------------
//Constructor
ADLXHelper::ADLXHelper()
{
}
ADLXHelper::ADLXHelper ()
{}

//-------------------------------------------------------------------------------------------------
//Destructor
ADLXHelper::~ADLXHelper()
ADLXHelper::~ADLXHelper ()
{
Terminate();
Terminate ();
}

//-------------------------------------------------------------------------------------------------
//Initialization
ADLX_RESULT ADLXHelper::Initialize ()
{
return InitializePrivate(nullptr, nullptr);
return InitializePrivate (nullptr, nullptr);
}

ADLX_RESULT ADLXHelper::InitializeWithIncompatibleDriver()
ADLX_RESULT ADLXHelper::InitializeWithIncompatibleDriver ()
{
return InitializePrivate(nullptr, nullptr, true);
return InitializePrivate (nullptr, nullptr, true);
}

ADLX_RESULT ADLXHelper::InitializeWithCallerAdl (adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree)
{
if (adlContext == nullptr || adlMainMemoryFree == nullptr)
{
return ADLX_INVALID_ARGS;
}
return InitializePrivate(adlContext, adlMainMemoryFree);
if (adlContext == nullptr || adlMainMemoryFree == nullptr)
{
return ADLX_INVALID_ARGS;
}
return InitializePrivate (adlContext, adlMainMemoryFree);
}

//-------------------------------------------------------------------------------------------------
//Termination
ADLX_RESULT ADLXHelper::Terminate ()
{
ADLX_RESULT res = ADLX_OK;
if (m_hDLLHandle != nullptr)
{
m_ADLXFullVersion = 0;
m_ADLXVersion = nullptr;
m_pSystemServices = nullptr;
m_pAdlMapping = nullptr;
if (nullptr != m_terminateFn)
{
res = m_terminateFn();
}
m_fullVersionFn = nullptr;
m_versionFn = nullptr;
m_initWithADLFn = nullptr;
m_initFnEx = nullptr;
m_initFn = nullptr;
m_terminateFn = nullptr;
adlx_free_library(m_hDLLHandle);
m_hDLLHandle = nullptr;
}
ADLX_RESULT res = ADLX_OK;
if (m_hDLLHandle != nullptr)
{
m_ADLXFullVersion = 0;
m_ADLXVersion = nullptr;
m_pSystemServices = nullptr;
m_pAdlMapping = nullptr;
if (nullptr != m_terminateFn)
{
res = m_terminateFn ();
}
m_fullVersionFn = nullptr;
m_versionFn = nullptr;
m_initWithADLFn = nullptr;
m_initFnEx = nullptr;
m_initFn = nullptr;
m_terminateFn = nullptr;
adlx_free_library (m_hDLLHandle);
m_hDLLHandle = nullptr;
}
return res;
}

Expand Down Expand Up @@ -100,54 +99,54 @@ adlx::IADLMapping* ADLXHelper::GetAdlMapping ()
//Loads ADLX and finds the function pointers to the ADLX functions
ADLX_RESULT ADLXHelper::LoadADLXDll()
{
if (m_hDLLHandle == nullptr)
{
m_hDLLHandle = adlx_load_library(ADLX_DLL_NAME);
if (m_hDLLHandle)
{
m_fullVersionFn = (ADLXQueryFullVersion_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_QUERY_FULL_VERSION_FUNCTION_NAME);
m_versionFn = (ADLXQueryVersion_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_QUERY_VERSION_FUNCTION_NAME);
m_initWithADLFn = (ADLXInitializeWithCallerAdl_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME);
m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
m_terminateFn = (ADLXTerminate_Fn)adlx_get_proc_address(m_hDLLHandle, ADLX_TERMINATE_FUNCTION_NAME);
}
}

if (m_fullVersionFn && m_versionFn && m_initWithADLFn && m_initFnEx && m_initFn && m_terminateFn)
{
return ADLX_OK;
}
return ADLX_FAIL;
if (m_hDLLHandle == nullptr)
{
m_hDLLHandle = adlx_load_library (ADLX_DLL_NAME);
if (m_hDLLHandle)
{
m_fullVersionFn = (ADLXQueryFullVersion_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_QUERY_FULL_VERSION_FUNCTION_NAME);
m_versionFn = (ADLXQueryVersion_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_QUERY_VERSION_FUNCTION_NAME);
m_initWithADLFn = (ADLXInitializeWithCallerAdl_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME);
m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
m_terminateFn = (ADLXTerminate_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_TERMINATE_FUNCTION_NAME);
}
}

if (m_fullVersionFn && m_versionFn && m_initWithADLFn && m_initFnEx && m_initFn && m_terminateFn)
{
return ADLX_OK;
}

return ADLX_FAIL;
}

//-------------------------------------------------------------------------------------------------
//Initializes ADLX based on the parameters
ADLX_RESULT ADLXHelper::InitializePrivate(adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree, adlx_bool useIncompatibleDriver)
{
ADLX_RESULT res = LoadADLXDll();
if (ADLX_OK == res)
{
m_fullVersionFn(&m_ADLXFullVersion);
m_versionFn(&m_ADLXVersion);
if (adlContext != nullptr && adlMainMemoryFree != nullptr)
{
res = m_initWithADLFn(ADLX_FULL_VERSION, &m_pSystemServices, &m_pAdlMapping, adlContext, adlMainMemoryFree);
}
else
{
if (useIncompatibleDriver)
{
res = m_initFnEx(ADLX_FULL_VERSION, &m_pSystemServices);
}
else
{
res = m_initFn(ADLX_FULL_VERSION, &m_pSystemServices);
}
}
return res;
}

return ADLX_FAIL;
ADLX_RESULT res = LoadADLXDll ();
if (ADLX_OK == res)
{
m_fullVersionFn (&m_ADLXFullVersion);
m_versionFn (&m_ADLXVersion);
if (adlContext != nullptr && adlMainMemoryFree != nullptr)
{
res = m_initWithADLFn (ADLX_FULL_VERSION, &m_pSystemServices, &m_pAdlMapping, adlContext, adlMainMemoryFree);
}
else
{
if (useIncompatibleDriver)
{
res = m_initFnEx (ADLX_FULL_VERSION, &m_pSystemServices);
}
else
{
res = m_initFn (ADLX_FULL_VERSION, &m_pSystemServices);
}
}
return res;
}

return ADLX_FAIL;
}
4 changes: 2 additions & 2 deletions SDK/ADLXHelper/Windows/Cpp/ADLXHelper.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//
//
// Copyright (c) 2021 - 2023 Advanced Micro Devices, Inc. All rights reserved.
//
//-------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -249,7 +249,7 @@ class ADLXHelper
* @requirements
* @DetailsTable{#include "ADLXHelper/Windows/Cpp/ADLXHelper.h", @ADLX_First_Ver}
*/
const char* QueryVersion();
const char* QueryVersion ();

/**
* @page page_cppHelpGetSystemServices GetSystemServices
Expand Down
75 changes: 75 additions & 0 deletions SDK/Include/ADLXDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,51 @@ typedef enum
} ADLX_ASIC_FAMILY_TYPE;
#pragma endregion ADLX_ASIC_FAMILY_TYPE

#pragma region ADLX_PCI_BUS_TYPE
/**
* @enum ADLX_PCI_BUS_TYPE
* @ingroup enumerations
* @ENG_START_DOX
* @brief Indicates the PCI bus type.
* @ENG_END_DOX
*/
typedef enum
{
UNDEFINED = 0, /**< @ENG_START_DOX The PCI bus type is not defined. @ENG_END_DOX */
PCI, /**< @ENG_START_DOX The PCI bus type is PCI bus. @ENG_END_DOX */
AGP, /**< @ENG_START_DOX The PCI bus type is AGP bus. @ENG_END_DOX */
PCIE, /**< @ENG_START_DOX The PCI bus type is PCI Express bus. @ENG_END_DOX */
PCIE_2_0, /**< @ENG_START_DOX The PCI bus type is PCI Express 2nd generation bus. @ENG_END_DOX */
PCIE_3_0, /**< @ENG_START_DOX The PCI bus type is PCI Express 3rd generation bus. @ENG_END_DOX */
PCIE_4_0 /**< @ENG_START_DOX The PCI bus type is PCI Express 4th generation bus. @ENG_END_DOX */
} ADLX_PCI_BUS_TYPE;
#pragma endregion ADLX_PCI_BUS_TYPE

#pragma region ADLX_DP_LINK_RATE
/**
* @enum ADLX_DP_LINK_RATE
* @ingroup enumerations
* @ENG_START_DOX
* @brief Indicates the DP link rate.
* @ENG_END_DOX
*/
typedef enum
{
DP_LINK_RATE_UNKNOWN = 0, /**< @ENG_START_DOX The DP link rate is unknown. @ENG_END_DOX */
DP_LINK_RATE_RBR, /**< @ENG_START_DOX The DP link rate is 1.62 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_2_16GBPS, /**< @ENG_START_DOX The DP link rate is 2.16 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_2_43GBPS, /**< @ENG_START_DOX The DP link rate is 2.43 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_HBR, /**< @ENG_START_DOX The DP link rate is 2.70 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_4_32GBPS, /**< @ENG_START_DOX The DP link rate is 4.32 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_HBR2, /**< @ENG_START_DOX The DP link rate is 5.40 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_HBR3, /**< @ENG_START_DOX The DP link rate is 8.10 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_UHBR10, /**< @ENG_START_DOX The DP link rate is 10 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_UHBR13D5, /**< @ENG_START_DOX The DP link rate is 13.5 Gbps/Lane. @ENG_END_DOX */
DP_LINK_RATE_UHBR20 /**< @ENG_START_DOX The DP link rate is 20 Gbps/Lane. @ENG_END_DOX */
} ADLX_DP_LINK_RATE;

#pragma endregion ADLX_DP_LINK_RATE

#pragma region ADLX_GPU_TYPE
/**
* @enum ADLX_GPU_TYPE
Expand Down Expand Up @@ -886,6 +931,20 @@ typedef enum
} ADLX_3DLUT_COLORSPACE;
#pragma endregion ADLX_3DLUT_COLORSPACE

#pragma region ADLX_SSM_BIAS_MODE
/** @enum ADLX_SSM_BIAS_MODE
* @ingroup enumerations
* @ENG_START_DOX
* @brief AMD SmartShift Max bias mode.
* @ENG_END_DOX
*/
typedef enum
{
SSM_BIAS_AUTO = 0, /**< @ENG_START_DOX The bias control type is auto. @ENG_END_DOX */
SSM_BIAS_MANUAL /**< @ENG_START_DOX The bias control type is manual. @ENG_END_DOX */
}ADLX_SSM_BIAS_MODE;
#pragma endregion ADLX_SSM_BIAS_MODE

#pragma region ADLX_ANTILAG_STATE
/**
* @enum ADLX_ANTILAG_STATE
Expand All @@ -901,6 +960,22 @@ typedef enum
} ADLX_ANTILAG_STATE;
#pragma endregion ADLX_ANTILAG_STATE

#pragma region ADLX_MGPU_MODE
/**
* @enum ADLX_MGPU_MODE
* @ingroup enumerations
* @ENG_START_DOX
* @brief Indicates the AMD MGPU mode.
* @ENG_END_DOX
*/
typedef enum
{
MGPU_NONE = 0, /**< @ENG_START_DOX The GPU is not part of an AMD MGPU configuration. @ENG_END_DOX */
MGPU_PRIMARY, /**< @ENG_START_DOX The GPU is the primary GPU in an AMD MGPU configuration. @ENG_END_DOX */
MGPU_SECONDARY, /**< @ENG_START_DOX The GPU is the secondary GPU in an AMD MGPU configuration. @ENG_END_DOX */
} ADLX_MGPU_MODE;
#pragma endregion ADLX_MGPU_MODE

#pragma endregion ADLX data types

//-------------------------------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions SDK/Include/ADLXVersion.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
#pragma once

#define ADLX_VER_MAJOR 1
#define ADLX_VER_MINOR 1
#define ADLX_VER_MINOR 2
#define ADLX_VER_RELEASE 0
#define ADLX_VER_BUILD_NUM 56
#define ADLX_VER_BUILD_NUM 72

#define STRING(a) #a
#define STRING_EXPAND(a) STRING(a)
Expand Down
15 changes: 9 additions & 6 deletions SDK/Include/I3DSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,10 @@ namespace adlx
* @addinfo
* @ENG_START_DOX
* AMD Radeon Chill conserves GPU power and reduces heat by adjusting the FPS based on the intensity of in-game movement.<br>
* __Note:__ AMD Radeon Chill, @ref DOX_IADLX3DBoost "AMD Radeon Boost", and @ref DOX_IADLX3DAntiLag "AMD Radeon Anti-Lag" features cannot be enabled simultaneously. If AMD Radeon Boost or AMD Radeon Anti-Lag is enabled, AMD Radeon Chill is automatically disabled.<br>
* On some AMD GPUs, AMD Radeon Chill and @ref DOX_IADLX3DRadeonSuperResolution "Radeon Super Resolution" cannot be enabled simultaneously. If Radeon Super Resolution is enabled, AMD Radeon Chill is automatically disabled.
* AMD Radeon Chill cannot be enabled simultaneously with @ref DOX_IADLX3DBoost "AMD Radeon Boost", @ref DOX_IADLX3DAntiLag "AMD Radeon Anti-Lag", and @ref DOX_IADLX3DAntiLag1 "AMD Radeon Anti-Lag Next".<br>
* On some AMD GPUs, AMD Radeon Chill cannot be enabled simultaneously with @ref DOX_IADLX3DRadeonSuperResolution "Radeon Super Resolution".<br>
* When a mutually exclusive feature is enabled, AMD Radeon Chill is automatically disabled.<br>
* __Note:__ If AMD Radeon Chill is later re-enabled, its previous configuration settings will be restored.
* @ENG_END_DOX
*
*@copydoc IADLX3DChill_REQ_TABLE
Expand Down Expand Up @@ -402,10 +404,11 @@ namespace adlx
*
* @addinfo
* @ENG_START_DOX
* AMD Radeon Chill conserves GPU power and reduces heat by adjusting the FPS based on the intensity of in-game movement. <br>
* __Note:__ AMD Radeon Chill, @ref DOX_IADLX3DBoost "AMD Radeon Boost", and @ref DOX_IADLX3DAntiLag "AMD Radeon Anti-Lag" features cannot be enabled simultaneously. If AMD Radeon Chill is enabled, AMD Radeon Anti-Lag and AMD Radeon Boost are automatically disabled. However, the configurations of the disabled feature is preserved.<br>
* On some AMD GPUs, AMD Radeon Chill and @ref DOX_IADLX3DRadeonSuperResolution "Radeon Super Resolution" cannot be enabled simultaneously. If AMD Radeon Chill is enabled, Radeon Super Resolution is automatically disabled.
* AMD Radeon Chill conserves GPU power and reduces heat by adjusting the FPS based on the intensity of in-game movement.<br>
* AMD Radeon Chill cannot be enabled simultaneously with @ref DOX_IADLX3DBoost "AMD Radeon Boost", @ref DOX_IADLX3DAntiLag "AMD Radeon Anti-Lag", and @ref DOX_IADLX3DAntiLag1 "AMD Radeon Anti-Lag Next".<br>
* On some AMD GPUs, AMD Radeon Chill cannot be enabled simultaneously with @ref DOX_IADLX3DRadeonSuperResolution "Radeon Super Resolution".<br>
* When AMD Radeon Chill is enabled, the mutually exclusive features are automatically disabled.<br>
* __Note:__ If the disabled feature is later re-enabled, its previous configuration settings will be restored.
* @ENG_END_DOX
*
*@copydoc IADLX3DChill_REQ_TABLE
Expand Down
Loading

0 comments on commit cb54a5d

Please sign in to comment.