Skip to content

Commit d9f04a9

Browse files
committed
ADLX SDK v1.5
1 parent 36d37da commit d9f04a9

3,195 files changed

Lines changed: 32453 additions & 168896 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SDK/ADLXHelper/Windows/C/ADLXHelper.c

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
2+
// Copyright Advanced Micro Devices, Inc. All rights reserved.
33
//
44
//-------------------------------------------------------------------------------------------------
55
#include "ADLXHelper.h"
@@ -36,6 +36,12 @@ typedef struct ADLXHelper
3636
//ADLX function - initialize
3737
ADLXInitialize_Fn m_initFn;
3838

39+
//ADLX function - initialize with incompatible driver
40+
ADLXInitialize2_Fn m_init2FnEx;
41+
42+
//ADLX function - initialize
43+
ADLXInitialize2_Fn m_init2Fn;
44+
3945
//ADLX function - terminate
4046
ADLXTerminate_Fn m_terminateFn;
4147
}ADLXHelper;
@@ -132,12 +138,18 @@ ADLX_RESULT LoadADLXDll()
132138
g_ADLX.m_fullVersionFn = (ADLXQueryFullVersion_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_QUERY_FULL_VERSION_FUNCTION_NAME);
133139
g_ADLX.m_versionFn = (ADLXQueryVersion_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_QUERY_VERSION_FUNCTION_NAME);
134140
g_ADLX.m_initWithADLFn = (ADLXInitializeWithCallerAdl_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME);
135-
g_ADLX.m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
136-
g_ADLX.m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
141+
g_ADLX.m_init2FnEx = (ADLXInitialize2_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT2_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
142+
g_ADLX.m_init2Fn = (ADLXInitialize2_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT2_FUNCTION_NAME);
143+
if (g_ADLX.m_init2FnEx == NULL)
144+
{
145+
//try to get the ADLXInitialize function pointers if ADLXInitialize2 is not found
146+
g_ADLX.m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
147+
g_ADLX.m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
148+
}
137149
g_ADLX.m_terminateFn = (ADLXTerminate_Fn)adlx_get_proc_address(g_ADLX.m_hDLLHandle, ADLX_TERMINATE_FUNCTION_NAME);
138150
}
139151
}
140-
if (g_ADLX.m_fullVersionFn && g_ADLX.m_versionFn && g_ADLX.m_initWithADLFn && g_ADLX.m_initFnEx && g_ADLX.m_initFn && g_ADLX.m_terminateFn)
152+
if (g_ADLX.m_fullVersionFn && g_ADLX.m_versionFn && g_ADLX.m_initWithADLFn && ((g_ADLX.m_init2FnEx && g_ADLX.m_init2Fn) || (g_ADLX.m_initFnEx && g_ADLX.m_initFn)) && g_ADLX.m_terminateFn)
141153
{
142154
return ADLX_OK;
143155
}
@@ -161,15 +173,21 @@ ADLX_RESULT InitializePrivate (adlx_handle adlContext, ADLX_ADL_Main_Memory_Fre
161173
{
162174
if (useIncompatibleDriver)
163175
{
164-
res = g_ADLX.m_initFnEx(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
176+
if (g_ADLX.m_init2FnEx)
177+
res = g_ADLX.m_init2FnEx(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices, &g_ADLX.m_pAdlMapping);
178+
else
179+
res = g_ADLX.m_initFnEx(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
165180
}
166181
else
167182
{
168-
res = g_ADLX.m_initFn(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
183+
if (g_ADLX.m_init2Fn)
184+
res = g_ADLX.m_init2Fn(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices, &g_ADLX.m_pAdlMapping);
185+
else
186+
res = g_ADLX.m_initFn(ADLX_FULL_VERSION, &g_ADLX.m_pSystemServices);
169187
}
170188
}
171189
return res;
172190
}
173191

174192
return ADLX_FAIL;
175-
}
193+
}

SDK/ADLXHelper/Windows/C/ADLXHelper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
2+
// Copyright Advanced Micro Devices, Inc. All rights reserved.
33
//
44
//-------------------------------------------------------------------------------------------------
55

SDK/ADLXHelper/Windows/Cpp/ADLXHelper.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
2+
// Copyright Advanced Micro Devices, Inc. All rights reserved.
33
//
44
//-------------------------------------------------------------------------------------------------
55

@@ -107,13 +107,19 @@ ADLX_RESULT ADLXHelper::LoadADLXDll()
107107
m_fullVersionFn = (ADLXQueryFullVersion_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_QUERY_FULL_VERSION_FUNCTION_NAME);
108108
m_versionFn = (ADLXQueryVersion_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_QUERY_VERSION_FUNCTION_NAME);
109109
m_initWithADLFn = (ADLXInitializeWithCallerAdl_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME);
110-
m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
111-
m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
110+
m_init2FnEx = (ADLXInitialize2_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT2_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
111+
m_init2Fn = (ADLXInitialize2_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT2_FUNCTION_NAME);
112+
if (m_init2FnEx == nullptr)
113+
{
114+
//try to get the ADLXInitialize function pointers if ADLXInitialize2 is not found
115+
m_initFnEx = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME);
116+
m_initFn = (ADLXInitialize_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_INIT_FUNCTION_NAME);
117+
}
112118
m_terminateFn = (ADLXTerminate_Fn)adlx_get_proc_address (m_hDLLHandle, ADLX_TERMINATE_FUNCTION_NAME);
113119
}
114120
}
115121

116-
if (m_fullVersionFn && m_versionFn && m_initWithADLFn && m_initFnEx && m_initFn && m_terminateFn)
122+
if (m_fullVersionFn && m_versionFn && m_initWithADLFn && ((m_init2FnEx && m_init2Fn) || (m_initFnEx && m_initFn)) && m_terminateFn)
117123
{
118124
return ADLX_OK;
119125
}
@@ -138,15 +144,21 @@ ADLX_RESULT ADLXHelper::InitializePrivate(adlx_handle adlContext, ADLX_ADL_Main
138144
{
139145
if (useIncompatibleDriver)
140146
{
141-
res = m_initFnEx (ADLX_FULL_VERSION, &m_pSystemServices);
147+
if (m_init2FnEx)
148+
res = m_init2FnEx (ADLX_FULL_VERSION, &m_pSystemServices, &m_pAdlMapping);
149+
else
150+
res = m_initFnEx (ADLX_FULL_VERSION, &m_pSystemServices);
142151
}
143152
else
144153
{
145-
res = m_initFn (ADLX_FULL_VERSION, &m_pSystemServices);
154+
if (m_init2Fn)
155+
res = m_init2Fn (ADLX_FULL_VERSION, &m_pSystemServices, &m_pAdlMapping);
156+
else
157+
res = m_initFn (ADLX_FULL_VERSION, &m_pSystemServices);
146158
}
147159
}
148160
return res;
149161
}
150162

151163
return ADLX_FAIL;
152-
}
164+
}

SDK/ADLXHelper/Windows/Cpp/ADLXHelper.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
2+
// Copyright Advanced Micro Devices, Inc. All rights reserved.
33
//
44
//-------------------------------------------------------------------------------------------------
55

@@ -340,6 +340,12 @@ class ADLXHelper
340340
//ADLX function - initialize
341341
ADLXInitialize_Fn m_initFn = nullptr;
342342

343+
//ADLX function - initialize with incompatible driver
344+
ADLXInitialize2_Fn m_init2FnEx = nullptr;
345+
346+
//ADLX function - initialize
347+
ADLXInitialize2_Fn m_init2Fn = nullptr;
348+
343349
//ADLX function - terminate
344350
ADLXTerminate_Fn m_terminateFn = nullptr;
345351

@@ -352,4 +358,4 @@ class ADLXHelper
352358

353359
extern ::ADLXHelper g_ADLX;
354360

355-
#endif //ADLX_ADLXHelper_h
361+
#endif //ADLX_ADLXHelper_h

SDK/Include/ADLX.h

Lines changed: 72 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
2+
// Copyright Advanced Micro Devices, Inc. All rights reserved.
33
//
44
//-------------------------------------------------------------------------------------------------
55

@@ -132,17 +132,39 @@ typedef void (ADLX_STD_CALL* ADLX_ADL_Main_Memory_Free)(void** buffer);
132132
*/
133133
#define ADLX_INIT_FUNCTION_NAME "ADLXInitialize"
134134

135-
/**
136-
* @def ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME
137-
* @ingroup ADLXMacro
138-
* @ENG_START_DOX The function name of ADLXInitializeWithIncompatibleDriver @ENG_END_DOX
139-
* @definition
140-
* @codeStart
141-
* \#define ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME "ADLXInitializeWithIncompatibleDriver"
142-
* @codeEnd
143-
*/
135+
/**
136+
* @def ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME
137+
* @ingroup ADLXMacro
138+
* @ENG_START_DOX The function name of ADLXInitializeWithIncompatibleDriver @ENG_END_DOX
139+
* @definition
140+
* @codeStart
141+
* \#define ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME "ADLXInitializeWithIncompatibleDriver"
142+
* @codeEnd
143+
*/
144144
#define ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME "ADLXInitializeWithIncompatibleDriver"
145145

146+
/**
147+
* @def ADLX_INIT2_FUNCTION_NAME
148+
* @ingroup ADLXMacro
149+
* @ENG_START_DOX The function name of ADLXInitialize2 @ENG_END_DOX
150+
* @definition
151+
* @codeStart
152+
* \#define ADLX_INIT2_FUNCTION_NAME "ADLXInitialize2"
153+
* @codeEnd
154+
*/
155+
#define ADLX_INIT2_FUNCTION_NAME "ADLXInitialize2"
156+
157+
/**
158+
* @def ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME
159+
* @ingroup ADLXMacro
160+
* @ENG_START_DOX The function name of ADLXInitializeWithIncompatibleDriver @ENG_END_DOX
161+
* @definition
162+
* @codeStart
163+
* \#define ADLX_INIT2_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME "ADLXInitializeWithIncompatibleDriver2"
164+
* @codeEnd
165+
*/
166+
#define ADLX_INIT2_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME "ADLXInitializeWithIncompatibleDriver2"
167+
146168
/**
147169
* @def ADLX_INIT_WITH_CALLER_ADL_FUNCTION_NAME
148170
* @ingroup ADLXMacro
@@ -278,6 +300,44 @@ extern "C"
278300
*/
279301
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize_Fn)(adlx_uint64 version, adlx::IADLXSystem** ppSystem);
280302

303+
/**
304+
* @page page_ADLXInitialize2_Fn ADLXInitialize2_Fn
305+
* @ENG_START_DOX
306+
* @brief A pointer to the function to initialize ADLX with default parameters or a pointer to the function to initialize ADLX with a legacy driver.
307+
* @ENG_END_DOX
308+
*
309+
* @syntax
310+
* @codeStart
311+
* typedef @ref ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize2_Fn)(adlx_uint64 version, @ref DOX_IADLXSystem** ppSystem, @ref DOX_IADLMapping** ppAdlMapping)
312+
* @codeEnd
313+
* @params
314+
* @paramrow{1.,[in],version,adlx_uint64,@ENG_START_DOX The version of ADLX. @ENG_END_DOX}
315+
* @paramrow{1.,[out],ppSystem,@ref DOX_IADLXSystem**,@ENG_START_DOX The address of a pointer to the ADLX system interface. If ADLX initialization failed\, the method sets the dereferenced address __*ppSystem__ to __nullptr__. @ENG_END_DOX}
316+
* @paramrow{3.,[out],ppAdlMapping,@ref DOX_IADLMapping**,@ENG_START_DOX The address of a pointer to the ADLX mapping interface. If ADLX initialization failed\, the method sets the dereferenced address __*ppAdlMapping__ to __nullptr__. @ENG_END_DOX}
317+
*
318+
* @retvalues
319+
* @ENG_START_DOX
320+
* If ADLX was successfully initialized, __ADLX_OK__ is returned.<br>
321+
* If ADLX was not successfully initialized, an error code is returned.<br>
322+
* Refer to @ref ADLX_RESULT for success codes and error codes.<br>
323+
* @detaileddesc
324+
* The pointer of the function is returned by the @ref adlx_get_proc_address using the @ref ADLX_INIT_FUNCTION_NAME or @ref ADLX_INIT_WITH_INCOMPATIBLE_DRIVER_FUNCTION_NAME as the function name.
325+
* @ENG_END_DOX
326+
* @requirements
327+
* @DetailsTable{#include "ADLX.h", @ADLX_1_5_Ver}
328+
*/
329+
330+
/**
331+
* @typedef ADLXInitialize2_Fn
332+
* @ingroup ADLXDefs
333+
* @ENG_START_DOX The typedef of ADLXInitialize function. @ENG_END_DOX
334+
* @definition
335+
* @codeStart
336+
* typedef @ref ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize2_Fn)(adlx_uint64 version, @ref DOX_IADLXSystem** ppSystem, @ref DOX_IADLMapping** ppAdlMapping)
337+
* @codeEnd
338+
*/
339+
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize2_Fn)(adlx_uint64 version, adlx::IADLXSystem** ppSystem, adlx::IADLMapping** ppAdlMapping);
340+
281341
/**
282342
* @page page_ADLXInitializeWithCallerAdl_Fn ADLXInitializeWithCallerAdl_Fn
283343
* @ENG_START_DOX
@@ -358,10 +418,11 @@ extern "C"
358418
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXQueryFullVersion_Fn)(adlx_uint64* fullVersion);
359419
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXQueryVersion_Fn)(const char** version);
360420
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize_Fn)(adlx_uint64 version, IADLXSystem** ppSystem);
421+
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitialize2_Fn)(adlx_uint64 version, IADLXSystem** ppSystem, IADLMapping** ppAdlMapping);
361422
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXInitializeWithCallerAdl_Fn)(adlx_uint64 version, IADLXSystem** ppSystem, IADLMapping** ppAdlMapping, adlx_handle adlContext, ADLX_ADL_Main_Memory_Free adlMainMemoryFree);
362423
typedef ADLX_RESULT (ADLX_CDECL_CALL *ADLXTerminate_Fn)();
363424
#endif
364425

365426
#pragma endregion C-style functions
366427

367-
#endif //ADLX_H
428+
#endif //ADLX_H

0 commit comments

Comments
 (0)