Skip to content

Commit ad1f0ef

Browse files
committed
fix get_version and translate handle
- Fixed get_version code gen script to fail if the api version for the api is not set or is invalid. - fixed the zelLoaderTranslateHandle to fail given nullptrs and remove the extra vairable and simplify the hasInstance handle check. Signed-off-by: Neil R. Spruit <[email protected]>
1 parent 83676a9 commit ad1f0ef

File tree

3 files changed

+48
-167
lines changed

3 files changed

+48
-167
lines changed

scripts/templates/helper.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1708,34 +1708,36 @@ def get_class_function_objs(specs, cname, minVersion = 0, maxVersion = 9999):
17081708
"""
17091709
def get_version(obj):
17101710
if obj_traits.is_function(obj):
1711+
ret_version = "ZE_API_VERSION_FORCE_UINT32"
17111712
version = obj.get('version')
17121713
if version == "1.0":
1713-
return "ZE_API_VERSION_1_0"
1714+
ret_version = "ZE_API_VERSION_1_0"
17141715
if version == "1.1":
1715-
return "ZE_API_VERSION_1_1"
1716+
ret_version = "ZE_API_VERSION_1_1"
17161717
if version == "1.2":
1717-
return "ZE_API_VERSION_1_2"
1718+
ret_version = "ZE_API_VERSION_1_2"
17181719
if version == "1.3":
1719-
return "ZE_API_VERSION_1_3"
1720+
ret_version = "ZE_API_VERSION_1_3"
17201721
if version == "1.4":
1721-
return "ZE_API_VERSION_1_4"
1722+
ret_version = "ZE_API_VERSION_1_4"
17221723
if version == "1.5":
1723-
return "ZE_API_VERSION_1_5"
1724+
ret_version = "ZE_API_VERSION_1_5"
17241725
if version == "1.6":
1725-
return "ZE_API_VERSION_1_6"
1726+
ret_version = "ZE_API_VERSION_1_6"
17261727
if version == "1.7":
1727-
return "ZE_API_VERSION_1_7"
1728+
ret_version = "ZE_API_VERSION_1_7"
17281729
if version == "1.8":
1729-
return "ZE_API_VERSION_1_8"
1730+
ret_version = "ZE_API_VERSION_1_8"
17301731
if version == "1.9":
1731-
return "ZE_API_VERSION_1_9"
1732+
ret_version = "ZE_API_VERSION_1_9"
17321733
if version == "1.10":
1733-
return "ZE_API_VERSION_1_10"
1734+
ret_version = "ZE_API_VERSION_1_10"
17341735
if version == "1.11":
1735-
return "ZE_API_VERSION_1_11"
1736+
ret_version = "ZE_API_VERSION_1_11"
17361737
if version == "1.12":
1737-
return "ZE_API_VERSION_1_12"
1738-
return "ZE_API_VERSION_1_0"
1738+
ret_version = "ZE_API_VERSION_1_12"
1739+
assert(ret_version != "ZE_API_VERSION_FORCE_UINT32")
1740+
return ret_version
17391741

17401742
"""
17411743
Public:

source/loader/ze_loader.cpp

Lines changed: 3 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
*
77
*/
88
#include "ze_loader_internal.h"
9-
#include "ze_ldrddi.h"
10-
#include "zet_ldrddi.h"
11-
#include "zes_ldrddi.h"
129

1310
#include "driver_discovery.h"
1411
#include <iostream>
@@ -403,112 +400,6 @@ namespace loader
403400
}
404401
return res;
405402
}
406-
<<<<<<< HEAD
407-
=======
408-
409-
// Reset pCount to 0 when calling the driver init function from the driver's ddi table.
410-
pCount = 0;
411-
res = driver.dditable.ze.Global.pfnInitDrivers(&pCount, nullptr, desc);
412-
// Verify that this driver successfully init in the call above.
413-
if (res != ZE_RESULT_SUCCESS) {
414-
if (debugTraceEnabled) {
415-
std::string message = "init driver (driver ddi) " + driver.name + " zeInitDrivers(" + loader::to_string(desc) + ") returning ";
416-
debug_trace_message(message, loader::to_string(res));
417-
}
418-
return res;
419-
}
420-
driverHandles.resize(pCount);
421-
// Use the driver's init function to query the driver handles and read the properties.
422-
res = driver.dditable.ze.Global.pfnInitDrivers(&pCount, driverHandles.data(), desc);
423-
// Verify that this driver successfully init in the call above.
424-
if (res != ZE_RESULT_SUCCESS) {
425-
if (debugTraceEnabled) {
426-
std::string message = "init driver (driver ddi) " + driver.name + " zeInitDrivers(" + loader::to_string(desc) + ") returning ";
427-
debug_trace_message(message, loader::to_string(res));
428-
}
429-
return res;
430-
}
431-
}
432-
433-
for (auto handle : driverHandles) {
434-
ze_driver_ddi_handles_ext_properties_t driverDdiHandlesExtProperties = {};
435-
driverDdiHandlesExtProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
436-
driverDdiHandlesExtProperties.pNext = nullptr;
437-
ze_driver_properties_t properties = {};
438-
properties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
439-
properties.pNext = &driverDdiHandlesExtProperties;
440-
ze_result_t res = driver.dditable.ze.Driver.pfnGetProperties(handle, &properties);
441-
if (res != ZE_RESULT_SUCCESS) {
442-
if (debugTraceEnabled) {
443-
std::string message = "init driver " + driver.name + " failed, zeDriverGetProperties returned ";
444-
debug_trace_message(message, loader::to_string(res));
445-
}
446-
return res;
447-
}
448-
driver.properties = properties;
449-
driver.driverSupportsDDIHandles = driverDdiHandlesExtProperties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED;
450-
uint32_t deviceCount = 0;
451-
res = driver.dditable.ze.Device.pfnGet( handle, &deviceCount, nullptr );
452-
if( ZE_RESULT_SUCCESS != res ) {
453-
if (debugTraceEnabled) {
454-
std::string message = "init driver " + driver.name + " failed, zeDeviceGet returned ";
455-
debug_trace_message(message, loader::to_string(res));
456-
}
457-
return res;
458-
}
459-
if (deviceCount == 0) {
460-
if (debugTraceEnabled) {
461-
std::string message = "init driver " + driver.name + " failed, zeDeviceGet returned 0 devices";
462-
debug_trace_message(message, "");
463-
}
464-
return ZE_RESULT_ERROR_UNINITIALIZED;
465-
}
466-
std::vector<ze_device_handle_t> deviceHandles(deviceCount);
467-
res = driver.dditable.ze.Device.pfnGet( handle, &deviceCount, deviceHandles.data() );
468-
if( ZE_RESULT_SUCCESS != res ) {
469-
if (debugTraceEnabled) {
470-
std::string message = "init driver " + driver.name + " failed, zeDeviceGet returned ";
471-
debug_trace_message(message, loader::to_string(res));
472-
}
473-
return res;
474-
}
475-
bool integratedGPU = false;
476-
bool discreteGPU = false;
477-
bool other = false;
478-
for( auto device : deviceHandles ) {
479-
ze_device_properties_t deviceProperties = {};
480-
deviceProperties.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES;
481-
deviceProperties.pNext = nullptr;
482-
res = driver.dditable.ze.Device.pfnGetProperties(device, &deviceProperties);
483-
if( ZE_RESULT_SUCCESS != res ) {
484-
if (debugTraceEnabled) {
485-
std::string message = "init driver " + driver.name + " failed, zeDeviceGetProperties returned ";
486-
debug_trace_message(message, loader::to_string(res));
487-
}
488-
return res;
489-
}
490-
if (deviceProperties.type == ZE_DEVICE_TYPE_GPU) {
491-
if (deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_INTEGRATED) {
492-
integratedGPU = true;
493-
} else {
494-
discreteGPU = true;
495-
}
496-
} else {
497-
other = true;
498-
}
499-
}
500-
if (integratedGPU && discreteGPU && other) {
501-
driver.driverType = ZEL_DRIVER_TYPE_MIXED;
502-
} else if (integratedGPU && discreteGPU) {
503-
driver.driverType = ZEL_DRIVER_TYPE_GPU;
504-
} else if (integratedGPU) {
505-
driver.driverType = ZEL_DRIVER_TYPE_INTEGRATED_GPU;
506-
} else if (discreteGPU) {
507-
driver.driverType = ZEL_DRIVER_TYPE_DISCRETE_GPU;
508-
} else if (other) {
509-
driver.driverType = ZEL_DRIVER_TYPE_OTHER;
510-
}
511-
>>>>>>> 256c0912 (Update Loader to support DDI handle extension path with sample)
512403
}
513404
return ZE_RESULT_SUCCESS;
514405
}
@@ -737,9 +628,9 @@ namespace loader
737628
}
738629
}
739630
}
740-
loader::zeDestroyDDiDriverTables(loader::loaderDispatch->pCore);
741-
loader::zetDestroyDDiDriverTables(loader::loaderDispatch->pTools);
742-
loader::zesDestroyDDiDriverTables(loader::loaderDispatch->pSysman);
631+
delete loader::loaderDispatch->pCore;
632+
delete loader::loaderDispatch->pTools;
633+
delete loader::loaderDispatch->pSysman;
743634
delete loader::loaderDispatch;
744635
};
745636

source/loader/ze_loader_api.cpp

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -90,96 +90,84 @@ zelLoaderTranslateHandleInternal(
9090
void *handleIn,
9191
void **handleOut)
9292
{
93+
if (!handleIn || !handleOut) {
94+
return ZE_RESULT_ERROR_INVALID_NULL_POINTER;
95+
}
9396

9497
if(!loader::context->intercept_enabled) {
9598
*handleOut = handleIn;
9699
return ZE_RESULT_SUCCESS;
97100
}
98101

99-
bool validHandle = false;
100102
*handleOut = handleIn;
101103
switch(handleType){
102104
case ZEL_HANDLE_DRIVER:
103-
validHandle = loader::context->ze_driver_factory.hasInstance(reinterpret_cast<loader::ze_driver_object_t*>(handleIn)->handle);
104-
if (validHandle) {
105+
if (loader::context->ze_driver_factory.hasInstance(reinterpret_cast<loader::ze_driver_object_t*>(handleIn)->handle)) {
105106
*handleOut = reinterpret_cast<loader::ze_driver_object_t*>( handleIn )->handle;
106107
}
107108
break;
108109
case ZEL_HANDLE_DEVICE:
109-
validHandle = loader::context->ze_device_factory.hasInstance(reinterpret_cast<loader::ze_device_object_t*>(handleIn)->handle);
110-
if (validHandle) {
110+
if (loader::context->ze_device_factory.hasInstance(reinterpret_cast<loader::ze_device_object_t*>(handleIn)->handle)){
111111
*handleOut = reinterpret_cast<loader::ze_device_object_t*>( handleIn )->handle;
112112
}
113113
break;
114114
case ZEL_HANDLE_CONTEXT:
115-
validHandle = loader::context->ze_context_factory.hasInstance(reinterpret_cast<loader::ze_context_object_t*>(handleIn)->handle);
116-
if (validHandle) {
115+
if (loader::context->ze_context_factory.hasInstance(reinterpret_cast<loader::ze_context_object_t*>(handleIn)->handle)) {
117116
*handleOut = reinterpret_cast<loader::ze_context_object_t*>( handleIn )->handle;
118117
}
119-
break;
120-
case ZEL_HANDLE_COMMAND_QUEUE:
121-
validHandle = loader::context->ze_command_queue_factory.hasInstance(reinterpret_cast<loader::ze_command_queue_object_t*>(handleIn)->handle);
122-
if (validHandle) {
118+
break;
119+
case ZEL_HANDLE_COMMAND_QUEUE:
120+
if (loader::context->ze_command_queue_factory.hasInstance(reinterpret_cast<loader::ze_command_queue_object_t*>(handleIn)->handle)) {
123121
*handleOut = reinterpret_cast<loader::ze_command_queue_object_t*>( handleIn )->handle;
124122
}
125123
break;
126-
case ZEL_HANDLE_COMMAND_LIST:
127-
validHandle = loader::context->ze_command_list_factory.hasInstance(reinterpret_cast<loader::ze_command_list_object_t*>(handleIn)->handle);
128-
if (validHandle) {
124+
case ZEL_HANDLE_COMMAND_LIST:
125+
if (loader::context->ze_command_list_factory.hasInstance(reinterpret_cast<loader::ze_command_list_object_t*>(handleIn)->handle)) {
129126
*handleOut = reinterpret_cast<loader::ze_command_list_object_t*>( handleIn )->handle;
130127
}
131128
break;
132-
case ZEL_HANDLE_FENCE:
133-
validHandle = loader::context->ze_fence_factory.hasInstance(reinterpret_cast<loader::ze_fence_object_t*>(handleIn)->handle);
134-
if (validHandle) {
129+
case ZEL_HANDLE_FENCE:
130+
if (loader::context->ze_fence_factory.hasInstance(reinterpret_cast<loader::ze_fence_object_t*>(handleIn)->handle)) {
135131
*handleOut = reinterpret_cast<loader::ze_fence_object_t*>( handleIn )->handle;
136132
}
137133
break;
138-
case ZEL_HANDLE_EVENT_POOL:
139-
validHandle = loader::context->ze_event_pool_factory.hasInstance(reinterpret_cast<loader::ze_event_pool_object_t*>(handleIn)->handle);
140-
if (validHandle) {
134+
case ZEL_HANDLE_EVENT_POOL:
135+
if (loader::context->ze_event_pool_factory.hasInstance(reinterpret_cast<loader::ze_event_pool_object_t*>(handleIn)->handle)) {
141136
*handleOut = reinterpret_cast<loader::ze_event_pool_object_t*>( handleIn )->handle;
142137
}
143138
break;
144-
case ZEL_HANDLE_EVENT:
145-
validHandle = loader::context->ze_event_factory.hasInstance(reinterpret_cast<loader::ze_event_object_t*>(handleIn)->handle);
146-
if (validHandle) {
139+
case ZEL_HANDLE_EVENT:
140+
if (loader::context->ze_event_factory.hasInstance(reinterpret_cast<loader::ze_event_object_t*>(handleIn)->handle)) {
147141
*handleOut = reinterpret_cast<loader::ze_event_object_t*>( handleIn )->handle;
148142
}
149143
break;
150-
case ZEL_HANDLE_IMAGE:
151-
validHandle = loader::context->ze_image_factory.hasInstance(reinterpret_cast<loader::ze_image_object_t*>(handleIn)->handle);
152-
if (validHandle) {
144+
case ZEL_HANDLE_IMAGE:
145+
if (loader::context->ze_image_factory.hasInstance(reinterpret_cast<loader::ze_image_object_t*>(handleIn)->handle)) {
153146
*handleOut = reinterpret_cast<loader::ze_image_object_t*>( handleIn )->handle;
154147
}
155148
break;
156-
case ZEL_HANDLE_MODULE:
157-
validHandle = loader::context->ze_module_factory.hasInstance(reinterpret_cast<loader::ze_module_object_t*>(handleIn)->handle);
158-
if (validHandle) {
149+
case ZEL_HANDLE_MODULE:
150+
if (loader::context->ze_module_factory.hasInstance(reinterpret_cast<loader::ze_module_object_t*>(handleIn)->handle)) {
159151
*handleOut = reinterpret_cast<loader::ze_module_object_t*>( handleIn )->handle;
160152
}
161153
break;
162-
case ZEL_HANDLE_MODULE_BUILD_LOG:
163-
validHandle = loader::context->ze_module_build_log_factory.hasInstance(reinterpret_cast<loader::ze_module_build_log_object_t*>(handleIn)->handle);
164-
if (validHandle) {
154+
case ZEL_HANDLE_MODULE_BUILD_LOG:
155+
if (loader::context->ze_module_build_log_factory.hasInstance(reinterpret_cast<loader::ze_module_build_log_object_t*>(handleIn)->handle)) {
165156
*handleOut = reinterpret_cast<loader::ze_module_build_log_object_t*>( handleIn )->handle;
166157
}
167158
break;
168-
case ZEL_HANDLE_KERNEL:
169-
validHandle = loader::context->ze_kernel_factory.hasInstance(reinterpret_cast<loader::ze_kernel_object_t*>(handleIn)->handle);
170-
if (validHandle) {
159+
case ZEL_HANDLE_KERNEL:
160+
if (loader::context->ze_kernel_factory.hasInstance(reinterpret_cast<loader::ze_kernel_object_t*>(handleIn)->handle)) {
171161
*handleOut = reinterpret_cast<loader::ze_kernel_object_t*>( handleIn )->handle;
172162
}
173163
break;
174-
case ZEL_HANDLE_SAMPLER:
175-
validHandle = loader::context->ze_sampler_factory.hasInstance(reinterpret_cast<loader::ze_sampler_object_t*>(handleIn)->handle);
176-
if (validHandle) {
164+
case ZEL_HANDLE_SAMPLER:
165+
if (loader::context->ze_sampler_factory.hasInstance(reinterpret_cast<loader::ze_sampler_object_t*>(handleIn)->handle)) {
177166
*handleOut = reinterpret_cast<loader::ze_sampler_object_t*>( handleIn )->handle;
178167
}
179168
break;
180-
case ZEL_HANDLE_PHYSICAL_MEM:
181-
validHandle = loader::context->ze_physical_mem_factory.hasInstance(reinterpret_cast<loader::ze_physical_mem_object_t*>(handleIn)->handle);
182-
if (validHandle) {
169+
case ZEL_HANDLE_PHYSICAL_MEM:
170+
if (loader::context->ze_physical_mem_factory.hasInstance(reinterpret_cast<loader::ze_physical_mem_object_t*>(handleIn)->handle)) {
183171
*handleOut = reinterpret_cast<loader::ze_physical_mem_object_t*>( handleIn )->handle;
184172
}
185173
break;

0 commit comments

Comments
 (0)