From 90f1dd4a8be8600f30a5027f9da66f674a77feb4 Mon Sep 17 00:00:00 2001 From: Nick Sarnie Date: Fri, 23 Oct 2026 10:21:35 -0700 Subject: [PATCH] [UR][L0] Return false for UR_DEVICE_INFO_MEMORY_EXPORT_EXPORTABLE_DEVICE_MEM_EXP if no types are supported Signed-off-by: Nick Sarnie Co-Authored-By: Claude Opus 5.5 --- .../source/adapters/level_zero/common/device.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/unified-runtime/source/adapters/level_zero/common/device.cpp b/unified-runtime/source/adapters/level_zero/common/device.cpp index 660946b21be2..13c79cddcc9c 100644 --- a/unified-runtime/source/adapters/level_zero/common/device.cpp +++ b/unified-runtime/source/adapters/level_zero/common/device.cpp @@ -1551,8 +1551,19 @@ ur_result_t urDeviceGetInfo( } case UR_DEVICE_INFO_KERNEL_LAUNCH_CAPABILITIES: return ReturnValue(UR_KERNEL_LAUNCH_PROPERTIES_FLAG_COOPERATIVE); - case UR_DEVICE_INFO_MEMORY_EXPORT_EXPORTABLE_DEVICE_MEM_EXP: - return ReturnValue(true); + case UR_DEVICE_INFO_MEMORY_EXPORT_EXPORTABLE_DEVICE_MEM_EXP: { + // Only report support if the driver can export device allocations as at + // least one external memory type. + ze_device_external_memory_properties_t ExtMemProps{}; + ExtMemProps.stype = ZE_STRUCTURE_TYPE_DEVICE_EXTERNAL_MEMORY_PROPERTIES; + ze_result_t ZeResult = ZE_CALL_NOCHECK(zeDeviceGetExternalMemoryProperties, + (Device->ZeDevice, &ExtMemProps)); + if (ZeResult == ZE_RESULT_ERROR_UNSUPPORTED_FEATURE) + return ReturnValue(false); + if (ZeResult != ZE_RESULT_SUCCESS) + return ze2urResult(ZeResult); + return ReturnValue(ExtMemProps.memoryAllocationExportTypes != 0); + } case UR_DEVICE_INFO_LUID: case UR_DEVICE_INFO_NODE_MASK: { // LUID and Device node mask are only available on Windows.