Skip to content

Commit efad38a

Browse files
committed
Add proper cleanup of DDI Driver Tables
Signed-off-by: Neil R. Spruit <neil.r.spruit@intel.com>
1 parent b4293e1 commit efad38a

13 files changed

Lines changed: 128 additions & 501 deletions

scripts/templates/ldrddi.cpp.mako

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,19 @@ namespace loader
202202
}
203203
%endif
204204
%endfor
205+
206+
///////////////////////////////////////////////////////////////////////////////
207+
/// @brief function for removing the ddi driver tables for ${n}
208+
__${x}dlllocal void ${X}_APICALL
209+
${n}DestroyDDiDriverTables(${n}_dditable_driver_t* pDdiTable)
210+
{
211+
// Delete ddi tables
212+
%for tbl in th.get_pfntables(specs, meta, n, tags):
213+
delete pDdiTable->${tbl['name']};
214+
%endfor
215+
delete pDdiTable;
216+
}
217+
205218
} // namespace loader
206219

207220
#if defined(__cplusplus)

scripts/templates/ldrddi.h.mako

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ namespace loader
3232

3333
%endif
3434
%endfor
35+
__${x}dlllocal void ${X}_APICALL
36+
${n}DestroyDDiDriverTables(${n}_dditable_driver_t* pDdiTable);
3537
}
3638

3739
#if defined(__cplusplus)

scripts/templates/ldrddi_legacy.cpp.mako

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,6 @@ extern "C" {
314314
%for tbl in th.get_pfntables(specs, meta, n, tags):
315315
///////////////////////////////////////////////////////////////////////////////
316316
/// @brief function for filling the legacy api pointers for ${tbl['name']} table
317-
/// with current process' addresses
318-
///
319-
/// @returns
320-
/// - ::${X}_RESULT_SUCCESS
321-
/// - ::${X}_RESULT_ERROR_UNINITIALIZED
322-
/// - ::${X}_RESULT_ERROR_INVALID_NULL_POINTER
323-
/// - ::${X}_RESULT_ERROR_UNSUPPORTED_VERSION
324317
__${x}dlllocal void ${X}_APICALL
325318
${tbl['export']['name']}Legacy()
326319
{

source/loader/ze_ldrddi.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4851,6 +4851,44 @@ namespace loader
48514851
return result;
48524852
}
48534853

4854+
4855+
///////////////////////////////////////////////////////////////////////////////
4856+
/// @brief function for removing the ddi driver tables for ze
4857+
__zedlllocal void ZE_APICALL
4858+
zeDestroyDDiDriverTables(ze_dditable_driver_t* pDdiTable)
4859+
{
4860+
// Delete ddi tables
4861+
delete pDdiTable->Global;
4862+
delete pDdiTable->RTASBuilderExp;
4863+
delete pDdiTable->RTASParallelOperationExp;
4864+
delete pDdiTable->Driver;
4865+
delete pDdiTable->DriverExp;
4866+
delete pDdiTable->Device;
4867+
delete pDdiTable->DeviceExp;
4868+
delete pDdiTable->Context;
4869+
delete pDdiTable->CommandQueue;
4870+
delete pDdiTable->CommandList;
4871+
delete pDdiTable->CommandListExp;
4872+
delete pDdiTable->Event;
4873+
delete pDdiTable->EventExp;
4874+
delete pDdiTable->EventPool;
4875+
delete pDdiTable->Fence;
4876+
delete pDdiTable->Image;
4877+
delete pDdiTable->ImageExp;
4878+
delete pDdiTable->Kernel;
4879+
delete pDdiTable->KernelExp;
4880+
delete pDdiTable->Mem;
4881+
delete pDdiTable->MemExp;
4882+
delete pDdiTable->Module;
4883+
delete pDdiTable->ModuleBuildLog;
4884+
delete pDdiTable->PhysicalMem;
4885+
delete pDdiTable->Sampler;
4886+
delete pDdiTable->VirtualMem;
4887+
delete pDdiTable->FabricEdgeExp;
4888+
delete pDdiTable->FabricVertexExp;
4889+
delete pDdiTable;
4890+
}
4891+
48544892
} // namespace loader
48554893

48564894
#if defined(__cplusplus)

source/loader/ze_ldrddi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ namespace loader
6969
using ze_rtas_parallel_operation_exp_object_t = object_t < ze_rtas_parallel_operation_exp_handle_t >;
7070
using ze_rtas_parallel_operation_exp_factory_t = singleton_factory_t < ze_rtas_parallel_operation_exp_object_t, ze_rtas_parallel_operation_exp_handle_t >;
7171

72+
__zedlllocal void ZE_APICALL
73+
zeDestroyDDiDriverTables(ze_dditable_driver_t* pDdiTable);
7274
}
7375

7476
#if defined(__cplusplus)

0 commit comments

Comments
 (0)