From 9f79e432bb229915e018dda37f8726986aa336f5 Mon Sep 17 00:00:00 2001 From: Jaime Arteaga Date: Thu, 7 Apr 2022 09:19:38 +0000 Subject: [PATCH] Clean up driver experimental headers Signed-off-by: Jaime Arteaga --- level_zero/api/CMakeLists.txt | 3 +- level_zero/api/experimental/CMakeLists.txt | 8 +++- level_zero/api/experimental/zex_api.h | 21 +++++++++ level_zero/api/experimental/zex_driver.cpp | 34 ++++++++++++++ level_zero/api/experimental/zex_driver.h | 44 +++++++++++++++++++ level_zero/api/experimental/zex_module.cpp | 18 ++++++++ level_zero/api/experimental/zex_module.h | 29 ++++++++++++ .../get_extension_function_lookup_map.cpp | 16 ++++++- 8 files changed, 169 insertions(+), 4 deletions(-) create mode 100644 level_zero/api/experimental/zex_api.h create mode 100644 level_zero/api/experimental/zex_driver.cpp create mode 100644 level_zero/api/experimental/zex_driver.h create mode 100644 level_zero/api/experimental/zex_module.cpp create mode 100644 level_zero/api/experimental/zex_module.h diff --git a/level_zero/api/CMakeLists.txt b/level_zero/api/CMakeLists.txt index 27834b6ea5..47a0650127 100644 --- a/level_zero/api/CMakeLists.txt +++ b/level_zero/api/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2020-2021 Intel Corporation +# Copyright (C) 2020-2022 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -22,4 +22,5 @@ append_sources_from_properties(L0_API L0_EXTENSIONS_SRCS_API L0_PUBLIC_EXTENSIONS_SRCS_API ) + set_property(GLOBAL PROPERTY L0_API ${L0_API}) diff --git a/level_zero/api/experimental/CMakeLists.txt b/level_zero/api/experimental/CMakeLists.txt index 626238403d..891341d87e 100644 --- a/level_zero/api/experimental/CMakeLists.txt +++ b/level_zero/api/experimental/CMakeLists.txt @@ -1,10 +1,16 @@ # -# Copyright (C) 2020 Intel Corporation +# Copyright (C) 2020-2022 Intel Corporation # # SPDX-License-Identifier: MIT # set(L0_EXPERIMENTAL_API + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/zex_api.h + ${CMAKE_CURRENT_SOURCE_DIR}/zex_driver.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/zex_driver.h + ${CMAKE_CURRENT_SOURCE_DIR}/zex_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/zex_module.h ) set_property(GLOBAL PROPERTY L0_EXPERIMENTAL_API ${L0_EXPERIMENTAL_API}) diff --git a/level_zero/api/experimental/zex_api.h b/level_zero/api/experimental/zex_api.h new file mode 100644 index 0000000000..bc7b97e683 --- /dev/null +++ b/level_zero/api/experimental/zex_api.h @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#ifndef _ZEX_API_H +#define _ZEX_API_H +#if defined(__cplusplus) +#pragma once +#endif + +// 'core' API headers +#include + +// driver experimental API headers +#include "zex_driver.h" +#include "zex_module.h" + +#endif // _ZEX_API_H \ No newline at end of file diff --git a/level_zero/api/experimental/zex_driver.cpp b/level_zero/api/experimental/zex_driver.cpp new file mode 100644 index 0000000000..1cc1aedffc --- /dev/null +++ b/level_zero/api/experimental/zex_driver.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2020-2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "level_zero/core/source/driver/driver.h" +#include "level_zero/core/source/driver/driver_handle.h" + +#include "zex_api.h" + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverImportExternalPointer( + ze_driver_handle_t hDriver, + void *ptr, + size_t size) { + return L0::DriverHandle::fromHandle(hDriver)->importExternalPointer(ptr, size); +} + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverReleaseImportedPointer( + ze_driver_handle_t hDriver, + void *ptr) { + return L0::DriverHandle::fromHandle(hDriver)->releaseImportedPointer(ptr); +} + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverGetHostPointerBaseAddress( + ze_driver_handle_t hDriver, + void *ptr, + void **baseAddress) { + return L0::DriverHandle::fromHandle(hDriver)->getHostPointerBaseAddress(ptr, baseAddress); +} diff --git a/level_zero/api/experimental/zex_driver.h b/level_zero/api/experimental/zex_driver.h new file mode 100644 index 0000000000..9d44c26c84 --- /dev/null +++ b/level_zero/api/experimental/zex_driver.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2020-2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#ifndef _ZEX_DRIVER_H +#define _ZEX_DRIVER_H +#if defined(__cplusplus) +#pragma once +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "zex_api.h" + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverImportExternalPointer( + ze_driver_handle_t hDriver, ///< [in] handle of the driver + void *ptr, ///< [in] pointer to be imported to the driver + size_t size ///< [in] size to be imported +); + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverReleaseImportedPointer( + ze_driver_handle_t hDriver, ///< [in] handle of the driver + void *ptr ///< [in] pointer to be released from the driver +); + +ZE_APIEXPORT ze_result_t ZE_APICALL +zexDriverGetHostPointerBaseAddress( + ze_driver_handle_t hDriver, ///< [in] handle of the driver + void *ptr, ///< [in] pointer to be checked if imported to the driver + void **baseAddress ///< [out] if not null, returns address of the base pointer of the imported pointer +); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // _ZEX_DRIVER_H diff --git a/level_zero/api/experimental/zex_module.cpp b/level_zero/api/experimental/zex_module.cpp new file mode 100644 index 0000000000..10b7ecf9d3 --- /dev/null +++ b/level_zero/api/experimental/zex_module.cpp @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2020-2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "level_zero/core/source/kernel/kernel.h" +#include "level_zero/core/source/module/module.h" + +#include "zex_api.h" + +ZE_DLLEXPORT ze_result_t ZE_APICALL +zexKernelGetBaseAddress( + ze_kernel_handle_t hKernel, + uint64_t *baseAddress) { + return L0::Kernel::fromHandle(hKernel)->getBaseAddress(baseAddress); +} diff --git a/level_zero/api/experimental/zex_module.h b/level_zero/api/experimental/zex_module.h new file mode 100644 index 0000000000..172f6dad11 --- /dev/null +++ b/level_zero/api/experimental/zex_module.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2020-2022 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#ifndef _ZEX_MODULE_H +#define _ZEX_MODULE_H +#if defined(__cplusplus) +#pragma once +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "zex_api.h" + +ZE_DLLEXPORT ze_result_t ZE_APICALL +zexKernelGetBaseAddress( + ze_kernel_handle_t hKernel, + uint64_t *baseAddress); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif // _ZEX_MODULE_H diff --git a/level_zero/core/source/get_extension_function_lookup_map.cpp b/level_zero/core/source/get_extension_function_lookup_map.cpp index f2cbf2e9a7..b0845d30ef 100644 --- a/level_zero/core/source/get_extension_function_lookup_map.cpp +++ b/level_zero/core/source/get_extension_function_lookup_map.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,9 +7,21 @@ #include "level_zero/core/source/get_extension_function_lookup_map.h" +#include "level_zero/api/experimental/zex_api.h" + namespace L0 { std::unordered_map getExtensionFunctionsLookupMap() { - return std::unordered_map(); + std::unordered_map lookupMap; + +#define addToMap(map, x) map[#x] = reinterpret_cast(&x) + addToMap(lookupMap, zexDriverImportExternalPointer); + addToMap(lookupMap, zexDriverReleaseImportedPointer); + addToMap(lookupMap, zexDriverGetHostPointerBaseAddress); + + addToMap(lookupMap, zexKernelGetBaseAddress); +#undef addToMap + + return lookupMap; } } // namespace L0 \ No newline at end of file