Refactoring Level Zero ULTs in order to use standalone spirv builtins

Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
Kacper Nowak
2020-09-23 14:07:07 +02:00
committed by Compute-Runtime-Automation
parent c8d1e082dd
commit 4804eca86d
29 changed files with 529 additions and 44 deletions

View File

@@ -11,11 +11,6 @@
namespace L0 {
std::unique_ptr<BuiltinFunctionsLib> BuiltinFunctionsLib::create(Device *device,
NEO::BuiltIns *builtins) {
return std::unique_ptr<BuiltinFunctionsLib>(new BuiltinFunctionsLibImpl(device, builtins));
}
std::unique_lock<BuiltinFunctionsLib::MutexType> BuiltinFunctionsLib::obtainUniqueOwnership() {
return std::unique_lock<BuiltinFunctionsLib::MutexType>(this->ownershipMutex);
}

View File

@@ -36,7 +36,7 @@ struct BuiltinFunctionsLibImpl : BuiltinFunctionsLib {
void initFunctions() override;
void initImageFunctions() override;
void initPageFaultFunction() override;
std::unique_ptr<BuiltinFunctionsLibImpl::BuiltinData> loadBuiltIn(NEO::EBuiltInOps::Type builtin, const char *builtInName);
MOCKABLE_VIRTUAL std::unique_ptr<BuiltinFunctionsLibImpl::BuiltinData> loadBuiltIn(NEO::EBuiltInOps::Type builtin, const char *builtInName);
protected:
std::unique_ptr<BuiltinData> builtins[static_cast<uint32_t>(Builtin::COUNT)];
@@ -47,10 +47,15 @@ struct BuiltinFunctionsLibImpl : BuiltinFunctionsLib {
NEO::BuiltIns *builtInsLib;
};
struct BuiltinFunctionsLibImpl::BuiltinData {
~BuiltinData() {
MOCKABLE_VIRTUAL ~BuiltinData() {
func.reset();
module.reset();
}
BuiltinData() = default;
BuiltinData(std::unique_ptr<L0::Module> mod, std::unique_ptr<L0::Kernel> ker) {
module = std::move(mod);
func = std::move(ker);
}
std::unique_ptr<Module> module;
std::unique_ptr<Kernel> func;

View File

@@ -7,6 +7,7 @@
set(L0_SRCS_DLL
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${CMAKE_CURRENT_SOURCE_DIR}/disallow_deferred_deleter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/create_builtin_functions_lib.cpp
)
add_subdirectories()
if(WIN32)

View File

@@ -0,0 +1,19 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/built_ins/built_ins.h"
#include "level_zero/core/source/builtin/builtin_functions_lib_impl.h"
namespace L0 {
std::unique_ptr<BuiltinFunctionsLib> BuiltinFunctionsLib::create(Device *device,
NEO::BuiltIns *builtins) {
return std::unique_ptr<BuiltinFunctionsLib>(new BuiltinFunctionsLibImpl(device, builtins));
}
} // namespace L0