mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-20 00:24:58 +08:00
Built-in kernels refactor
Related-To: NEO-3220 Change-Id: I4a44a71fe30abd38409de7e9741a3b389b967612 Signed-off-by: Pawel Wilma <pawel.wilma@intel.com>
This commit is contained in:
@@ -728,6 +728,7 @@ include_directories(${IGDRCL_SOURCE_DIR}/runtime/gmm_helper/client_context${BRAN
|
|||||||
include_directories(${IGDRCL_SOURCE_DIR}/runtime/gmm_helper/gmm_memory${BRANCH_DIR_SUFFIX})
|
include_directories(${IGDRCL_SOURCE_DIR}/runtime/gmm_helper/gmm_memory${BRANCH_DIR_SUFFIX})
|
||||||
include_directories(${IGDRCL_SOURCE_DIR}/runtime/mem_obj/definitions${BRANCH_DIR_SUFFIX})
|
include_directories(${IGDRCL_SOURCE_DIR}/runtime/mem_obj/definitions${BRANCH_DIR_SUFFIX})
|
||||||
include_directories(${IGDRCL_SOURCE_DIR}/runtime/memory_manager/definitions${BRANCH_DIR_SUFFIX})
|
include_directories(${IGDRCL_SOURCE_DIR}/runtime/memory_manager/definitions${BRANCH_DIR_SUFFIX})
|
||||||
|
include_directories(${IGDRCL_SOURCE_DIR}/runtime/built_ins/builtinops${BRANCH_DIR_SUFFIX})
|
||||||
|
|
||||||
set(HW_SRC_INCLUDE_PATH ${IGDRCL_SOURCE_DIR}/runtime/gen_common)
|
set(HW_SRC_INCLUDE_PATH ${IGDRCL_SOURCE_DIR}/runtime/gen_common)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2017-2018 Intel Corporation
|
# Copyright (C) 2017-2019 Intel Corporation
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
#
|
#
|
||||||
@@ -11,9 +11,12 @@ set(RUNTIME_SRCS_BUILT_INS
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/built_ins_storage.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/built_ins_storage.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.h
|
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/built_in_ops_base.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/builtinops${BRANCH_DIR_SUFFIX}/built_in_ops.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.inl
|
${CMAKE_CURRENT_SOURCE_DIR}/built_ins.inl
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/sip.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/sip.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/sip.h
|
${CMAKE_CURRENT_SOURCE_DIR}/sip.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/unknown_built_in_name.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/vme_dispatch_builder.h
|
${CMAKE_CURRENT_SOURCE_DIR}/vme_dispatch_builder.h
|
||||||
)
|
)
|
||||||
target_sources(${NEO_STATIC_LIB_NAME} PRIVATE ${RUNTIME_SRCS_BUILT_INS})
|
target_sources(${NEO_STATIC_LIB_NAME} PRIVATE ${RUNTIME_SRCS_BUILT_INS})
|
||||||
|
|||||||
36
runtime/built_ins/built_in_ops_base.h
Normal file
36
runtime/built_ins/built_in_ops_base.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "runtime/helpers/extendable_enum.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
namespace EBuiltInOps {
|
||||||
|
|
||||||
|
struct Type : ExtendableEnum {
|
||||||
|
public:
|
||||||
|
constexpr Type(uint32_t val) : ExtendableEnum(val) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr Type AuxTranslation{0};
|
||||||
|
constexpr Type CopyBufferToBuffer{1};
|
||||||
|
constexpr Type CopyBufferRect{2};
|
||||||
|
constexpr Type FillBuffer{3};
|
||||||
|
constexpr Type CopyBufferToImage3d{4};
|
||||||
|
constexpr Type CopyImage3dToBuffer{5};
|
||||||
|
constexpr Type CopyImageToImage1d{6};
|
||||||
|
constexpr Type CopyImageToImage2d{7};
|
||||||
|
constexpr Type CopyImageToImage3d{8};
|
||||||
|
constexpr Type FillImage1d{9};
|
||||||
|
constexpr Type FillImage2d{10};
|
||||||
|
constexpr Type FillImage3d{11};
|
||||||
|
constexpr Type VmeBlockMotionEstimateIntel{12};
|
||||||
|
constexpr Type VmeBlockAdvancedMotionEstimateCheckIntel{13};
|
||||||
|
constexpr Type VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel{14};
|
||||||
|
constexpr Type Scheduler{15};
|
||||||
|
constexpr uint32_t MaxBaseValue{15};
|
||||||
|
} // namespace EBuiltInOps
|
||||||
|
} // namespace NEO
|
||||||
@@ -752,7 +752,7 @@ class BuiltInOp<HWFamily, EBuiltInOps::FillImage3d> : public BuiltinDispatchInfo
|
|||||||
Kernel *kernel;
|
Kernel *kernel;
|
||||||
};
|
};
|
||||||
|
|
||||||
BuiltinDispatchInfoBuilder &BuiltIns::getBuiltinDispatchInfoBuilder(EBuiltInOps operation, Context &context, Device &device) {
|
BuiltinDispatchInfoBuilder &BuiltIns::getBuiltinDispatchInfoBuilder(EBuiltInOps::Type operation, Context &context, Device &device) {
|
||||||
uint32_t operationId = static_cast<uint32_t>(operation);
|
uint32_t operationId = static_cast<uint32_t>(operation);
|
||||||
auto &operationBuilder = BuiltinOpsBuilders[operationId];
|
auto &operationBuilder = BuiltinOpsBuilders[operationId];
|
||||||
switch (operation) {
|
switch (operation) {
|
||||||
@@ -795,7 +795,7 @@ BuiltinDispatchInfoBuilder &BuiltIns::getBuiltinDispatchInfoBuilder(EBuiltInOps
|
|||||||
return *operationBuilder.first;
|
return *operationBuilder.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<BuiltinDispatchInfoBuilder> BuiltIns::setBuiltinDispatchInfoBuilder(EBuiltInOps operation, Context &context, Device &device, std::unique_ptr<BuiltinDispatchInfoBuilder> builder) {
|
std::unique_ptr<BuiltinDispatchInfoBuilder> BuiltIns::setBuiltinDispatchInfoBuilder(EBuiltInOps::Type operation, Context &context, Device &device, std::unique_ptr<BuiltinDispatchInfoBuilder> builder) {
|
||||||
uint32_t operationId = static_cast<uint32_t>(operation);
|
uint32_t operationId = static_cast<uint32_t>(operation);
|
||||||
auto &operationBuilder = BuiltinOpsBuilders[operationId];
|
auto &operationBuilder = BuiltinOpsBuilders[operationId];
|
||||||
operationBuilder.first.swap(builder);
|
operationBuilder.first.swap(builder);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "runtime/helpers/properties_helper.h"
|
#include "runtime/helpers/properties_helper.h"
|
||||||
|
|
||||||
#include "CL/cl.h"
|
#include "CL/cl.h"
|
||||||
|
#include "built_in_ops.h"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
@@ -36,32 +37,13 @@ class SchedulerKernel;
|
|||||||
|
|
||||||
extern const char *mediaKernelsBuildOptions;
|
extern const char *mediaKernelsBuildOptions;
|
||||||
|
|
||||||
enum class EBuiltInOps : uint32_t {
|
|
||||||
AuxTranslation = 0,
|
|
||||||
CopyBufferToBuffer,
|
|
||||||
CopyBufferRect,
|
|
||||||
FillBuffer,
|
|
||||||
CopyBufferToImage3d,
|
|
||||||
CopyImage3dToBuffer,
|
|
||||||
CopyImageToImage1d,
|
|
||||||
CopyImageToImage2d,
|
|
||||||
CopyImageToImage3d,
|
|
||||||
FillImage1d,
|
|
||||||
FillImage2d,
|
|
||||||
FillImage3d,
|
|
||||||
VmeBlockMotionEstimateIntel,
|
|
||||||
VmeBlockAdvancedMotionEstimateCheckIntel,
|
|
||||||
VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel,
|
|
||||||
Scheduler,
|
|
||||||
COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
BuiltinResourceT createBuiltinResource(const char *ptr, size_t size);
|
BuiltinResourceT createBuiltinResource(const char *ptr, size_t size);
|
||||||
BuiltinResourceT createBuiltinResource(const BuiltinResourceT &r);
|
BuiltinResourceT createBuiltinResource(const BuiltinResourceT &r);
|
||||||
std::string createBuiltinResourceName(EBuiltInOps builtin, const std::string &extension,
|
std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::string &extension,
|
||||||
const std::string &platformName = "", uint32_t deviceRevId = 0);
|
const std::string &platformName = "", uint32_t deviceRevId = 0);
|
||||||
std::string joinPath(const std::string &lhs, const std::string &rhs);
|
std::string joinPath(const std::string &lhs, const std::string &rhs);
|
||||||
const char *getBuiltinAsString(EBuiltInOps builtin);
|
const char *getBuiltinAsString(EBuiltInOps::Type builtin);
|
||||||
|
const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin);
|
||||||
|
|
||||||
class Storage {
|
class Storage {
|
||||||
public:
|
public:
|
||||||
@@ -147,12 +129,12 @@ struct BuiltinCode {
|
|||||||
class BuiltinsLib {
|
class BuiltinsLib {
|
||||||
public:
|
public:
|
||||||
BuiltinsLib();
|
BuiltinsLib();
|
||||||
BuiltinCode getBuiltinCode(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device);
|
BuiltinCode getBuiltinCode(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device);
|
||||||
|
|
||||||
static std::unique_ptr<Program> createProgramFromCode(const BuiltinCode &bc, Context &context, Device &device);
|
static std::unique_ptr<Program> createProgramFromCode(const BuiltinCode &bc, Context &context, Device &device);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
BuiltinResourceT getBuiltinResource(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device);
|
BuiltinResourceT getBuiltinResource(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device);
|
||||||
|
|
||||||
using StoragesContainerT = std::vector<std::unique_ptr<Storage>>;
|
using StoragesContainerT = std::vector<std::unique_ptr<Storage>>;
|
||||||
StoragesContainerT allStorages; // sorted by priority allStorages[0] will be checked before allStorages[1], etc.
|
StoragesContainerT allStorages; // sorted by priority allStorages[0] will be checked before allStorages[1], etc.
|
||||||
@@ -177,8 +159,8 @@ class BuiltIns {
|
|||||||
using HWFamily = int;
|
using HWFamily = int;
|
||||||
std::pair<std::unique_ptr<BuiltinDispatchInfoBuilder>, std::once_flag> BuiltinOpsBuilders[static_cast<uint32_t>(EBuiltInOps::COUNT)];
|
std::pair<std::unique_ptr<BuiltinDispatchInfoBuilder>, std::once_flag> BuiltinOpsBuilders[static_cast<uint32_t>(EBuiltInOps::COUNT)];
|
||||||
|
|
||||||
BuiltinDispatchInfoBuilder &getBuiltinDispatchInfoBuilder(EBuiltInOps op, Context &context, Device &device);
|
BuiltinDispatchInfoBuilder &getBuiltinDispatchInfoBuilder(EBuiltInOps::Type op, Context &context, Device &device);
|
||||||
std::unique_ptr<BuiltinDispatchInfoBuilder> setBuiltinDispatchInfoBuilder(EBuiltInOps op, Context &context, Device &device,
|
std::unique_ptr<BuiltinDispatchInfoBuilder> setBuiltinDispatchInfoBuilder(EBuiltInOps::Type op, Context &context, Device &device,
|
||||||
std::unique_ptr<BuiltinDispatchInfoBuilder> newBuilder);
|
std::unique_ptr<BuiltinDispatchInfoBuilder> newBuilder);
|
||||||
BuiltIns();
|
BuiltIns();
|
||||||
virtual ~BuiltIns();
|
virtual ~BuiltIns();
|
||||||
@@ -232,7 +214,7 @@ class BuiltInOwnershipWrapper : public NonCopyableOrMovableClass {
|
|||||||
BuiltinDispatchInfoBuilder *builder = nullptr;
|
BuiltinDispatchInfoBuilder *builder = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename HWFamily, EBuiltInOps OpCode>
|
template <typename HWFamily, uint32_t OpCode>
|
||||||
class BuiltInOp;
|
class BuiltInOp;
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
template <typename... KernelsDescArgsT>
|
template <typename... KernelsDescArgsT>
|
||||||
void BuiltinDispatchInfoBuilder::populate(Context &context, Device &device, EBuiltInOps op, const char *options, KernelsDescArgsT &&... desc) {
|
void BuiltinDispatchInfoBuilder::populate(Context &context, Device &device, EBuiltInOps::Type op, const char *options, KernelsDescArgsT &&... desc) {
|
||||||
auto src = kernelsLib.getBuiltinsLib().getBuiltinCode(op, BuiltinCode::ECodeType::Any, device);
|
auto src = kernelsLib.getBuiltinsLib().getBuiltinCode(op, BuiltinCode::ECodeType::Any, device);
|
||||||
prog.reset(BuiltinsLib::createProgramFromCode(src, context, device).release());
|
prog.reset(BuiltinsLib::createProgramFromCode(src, context, device).release());
|
||||||
prog->build(0, nullptr, options, nullptr, nullptr, kernelsLib.isCacheingEnabled());
|
prog->build(0, nullptr, options, nullptr, nullptr, kernelsLib.isCacheingEnabled());
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
const char *getBuiltinAsString(EBuiltInOps builtin) {
|
const char *getBuiltinAsString(EBuiltInOps::Type builtin) {
|
||||||
switch (builtin) {
|
switch (builtin) {
|
||||||
default:
|
default:
|
||||||
return "unknown";
|
return getUnknownBuiltinAsString(builtin);
|
||||||
case EBuiltInOps::AuxTranslation:
|
case EBuiltInOps::AuxTranslation:
|
||||||
return "aux_translation.igdrcl_built_in";
|
return "aux_translation.igdrcl_built_in";
|
||||||
case EBuiltInOps::CopyBufferToBuffer:
|
case EBuiltInOps::CopyBufferToBuffer:
|
||||||
@@ -62,7 +62,7 @@ BuiltinResourceT createBuiltinResource(const BuiltinResourceT &r) {
|
|||||||
return BuiltinResourceT(r);
|
return BuiltinResourceT(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string createBuiltinResourceName(EBuiltInOps builtin, const std::string &extension,
|
std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::string &extension,
|
||||||
const std::string &platformName, uint32_t deviceRevId) {
|
const std::string &platformName, uint32_t deviceRevId) {
|
||||||
std::string ret;
|
std::string ret;
|
||||||
if (platformName.size() > 0) {
|
if (platformName.size() > 0) {
|
||||||
@@ -141,7 +141,7 @@ BuiltinsLib::BuiltinsLib() {
|
|||||||
allStorages.push_back(std::unique_ptr<Storage>(new FileStorage(getDriverInstallationPath())));
|
allStorages.push_back(std::unique_ptr<Storage>(new FileStorage(getDriverInstallationPath())));
|
||||||
}
|
}
|
||||||
|
|
||||||
BuiltinCode BuiltinsLib::getBuiltinCode(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
BuiltinCode BuiltinsLib::getBuiltinCode(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
||||||
std::lock_guard<std::mutex> lockRaii{mutex};
|
std::lock_guard<std::mutex> lockRaii{mutex};
|
||||||
|
|
||||||
BuiltinResourceT bc;
|
BuiltinResourceT bc;
|
||||||
@@ -192,7 +192,7 @@ std::unique_ptr<Program> BuiltinsLib::createProgramFromCode(const BuiltinCode &b
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
BuiltinResourceT BuiltinsLib::getBuiltinResource(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
BuiltinResourceT BuiltinsLib::getBuiltinResource(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
||||||
BuiltinResourceT bc;
|
BuiltinResourceT bc;
|
||||||
std::string resourceNameGeneric = createBuiltinResourceName(builtin, BuiltinCode::getExtension(requestedCodeType));
|
std::string resourceNameGeneric = createBuiltinResourceName(builtin, BuiltinCode::getExtension(requestedCodeType));
|
||||||
std::string resourceNameForPlatformType = createBuiltinResourceName(builtin, BuiltinCode::getExtension(requestedCodeType), device.getFamilyNameWithType());
|
std::string resourceNameForPlatformType = createBuiltinResourceName(builtin, BuiltinCode::getExtension(requestedCodeType), device.getFamilyNameWithType());
|
||||||
|
|||||||
14
runtime/built_ins/builtinops/built_in_ops.h
Normal file
14
runtime/built_ins/builtinops/built_in_ops.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "runtime/built_ins/built_in_ops_base.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
namespace EBuiltInOps {
|
||||||
|
constexpr Type COUNT{MaxBaseValue + 1};
|
||||||
|
}
|
||||||
|
} // namespace NEO
|
||||||
@@ -56,7 +56,7 @@ class BuiltinDispatchInfoBuilder {
|
|||||||
virtual ~BuiltinDispatchInfoBuilder() = default;
|
virtual ~BuiltinDispatchInfoBuilder() = default;
|
||||||
|
|
||||||
template <typename... KernelsDescArgsT>
|
template <typename... KernelsDescArgsT>
|
||||||
void populate(Context &context, Device &device, EBuiltInOps operation, const char *options, KernelsDescArgsT &&... desc);
|
void populate(Context &context, Device &device, EBuiltInOps::Type operation, const char *options, KernelsDescArgsT &&... desc);
|
||||||
|
|
||||||
virtual bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
|
virtual bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ add_custom_target(builtins)
|
|||||||
set_target_properties(builtins PROPERTIES FOLDER "built_ins")
|
set_target_properties(builtins PROPERTIES FOLDER "built_ins")
|
||||||
set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}")
|
set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}")
|
||||||
add_dependencies(${BUILTINS_BINARIES_LIB_NAME} builtins)
|
add_dependencies(${BUILTINS_BINARIES_LIB_NAME} builtins)
|
||||||
|
add_subdirectories()
|
||||||
|
set(GENERATED_BUILTINS ${GENERATED_BUILTINS} PARENT_SCOPE)
|
||||||
|
|
||||||
if("${NEO_ARCH}" STREQUAL "x32")
|
if("${NEO_ARCH}" STREQUAL "x32")
|
||||||
set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required")
|
set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required")
|
||||||
@@ -28,8 +30,7 @@ function(compile_builtin gen_type platform_type builtin)
|
|||||||
get_family_name_with_type(${gen_type} ${platform_type})
|
get_family_name_with_type(${gen_type} ${platform_type})
|
||||||
set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}")
|
set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}")
|
||||||
# get filename
|
# get filename
|
||||||
get_filename_component(FILENAME ${builtin} NAME)
|
set(FILENAME ${builtin})
|
||||||
|
|
||||||
# get name of the file w/o extension
|
# get name of the file w/o extension
|
||||||
get_filename_component(BASENAME ${builtin} NAME_WE)
|
get_filename_component(BASENAME ${builtin} NAME_WE)
|
||||||
|
|
||||||
|
|||||||
15
runtime/built_ins/unknown_built_in_name.cpp
Normal file
15
runtime/built_ins/unknown_built_in_name.cpp
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "runtime/built_ins/built_ins.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
|
||||||
|
const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin) {
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
} // namespace NEO
|
||||||
@@ -19,7 +19,7 @@ namespace NEO {
|
|||||||
template <typename HWFamily>
|
template <typename HWFamily>
|
||||||
class VmeBuiltinDispatchInfoBuilder : public BuiltinDispatchInfoBuilder {
|
class VmeBuiltinDispatchInfoBuilder : public BuiltinDispatchInfoBuilder {
|
||||||
public:
|
public:
|
||||||
VmeBuiltinDispatchInfoBuilder(BuiltIns &kernelsLib, Context &context, Device &device, EBuiltInOps builtinOp,
|
VmeBuiltinDispatchInfoBuilder(BuiltIns &kernelsLib, Context &context, Device &device, EBuiltInOps::Type builtinOp,
|
||||||
const char *kernelName)
|
const char *kernelName)
|
||||||
: BuiltinDispatchInfoBuilder(kernelsLib) {
|
: BuiltinDispatchInfoBuilder(kernelsLib) {
|
||||||
populate(context, device, builtinOp,
|
populate(context, device, builtinOp,
|
||||||
@@ -250,7 +250,7 @@ class BuiltInOp<HWFamily, EBuiltInOps::VmeBlockMotionEstimateIntel> : public Vme
|
|||||||
template <typename HWFamily>
|
template <typename HWFamily>
|
||||||
class AdvancedVmeBuiltinDispatchInfoBuilder : public VmeBuiltinDispatchInfoBuilder<HWFamily> {
|
class AdvancedVmeBuiltinDispatchInfoBuilder : public VmeBuiltinDispatchInfoBuilder<HWFamily> {
|
||||||
public:
|
public:
|
||||||
AdvancedVmeBuiltinDispatchInfoBuilder(BuiltIns &kernelsLib, Context &context, Device &device, EBuiltInOps builtinOp,
|
AdvancedVmeBuiltinDispatchInfoBuilder(BuiltIns &kernelsLib, Context &context, Device &device, EBuiltInOps::Type builtinOp,
|
||||||
const char *kernelName)
|
const char *kernelName)
|
||||||
: VmeBuiltinDispatchInfoBuilder<HWFamily>(kernelsLib, context, device, builtinOp,
|
: VmeBuiltinDispatchInfoBuilder<HWFamily>(kernelsLib, context, device, builtinOp,
|
||||||
kernelName) {
|
kernelName) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2017-2018 Intel Corporation
|
# Copyright (C) 2017-2019 Intel Corporation
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
#
|
#
|
||||||
@@ -11,3 +11,5 @@ set(IGDRCL_SRCS_tests_built_in
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/sip_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/sip_tests.cpp
|
||||||
)
|
)
|
||||||
target_sources(igdrcl_tests PRIVATE ${IGDRCL_SRCS_tests_built_in})
|
target_sources(igdrcl_tests PRIVATE ${IGDRCL_SRCS_tests_built_in})
|
||||||
|
|
||||||
|
add_subdirectories()
|
||||||
|
|||||||
@@ -691,7 +691,7 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReturnTrueIfExplicitKernelArgNotT
|
|||||||
TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderGetVMEBuilderReturnNonNull) {
|
TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderGetVMEBuilderReturnNonNull) {
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
|
|
||||||
EBuiltInOps vmeOps[] = {EBuiltInOps::VmeBlockMotionEstimateIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
EBuiltInOps::Type vmeOps[] = {EBuiltInOps::VmeBlockMotionEstimateIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
||||||
for (auto op : vmeOps) {
|
for (auto op : vmeOps) {
|
||||||
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(op, *pContext, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(op, *pContext, *pDevice);
|
||||||
EXPECT_NE(nullptr, &builder);
|
EXPECT_NE(nullptr, &builder);
|
||||||
@@ -702,7 +702,7 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderGetVMEBuilderReturnNonNull) {
|
|||||||
|
|
||||||
TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderVMEBuilderNullKernel) {
|
TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderVMEBuilderNullKernel) {
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
EBuiltInOps vmeOps[] = {EBuiltInOps::VmeBlockMotionEstimateIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
EBuiltInOps::Type vmeOps[] = {EBuiltInOps::VmeBlockMotionEstimateIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
||||||
for (auto op : vmeOps) {
|
for (auto op : vmeOps) {
|
||||||
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(op, *pContext, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(op, *pContext, *pDevice);
|
||||||
|
|
||||||
@@ -789,7 +789,7 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderAdvancedVMEBuilder) {
|
|||||||
auto image = std::unique_ptr<Image>(Image2dHelper<>::create(pContext));
|
auto image = std::unique_ptr<Image>(Image2dHelper<>::create(pContext));
|
||||||
cl_mem srcImageArg = static_cast<cl_mem>(image.get());
|
cl_mem srcImageArg = static_cast<cl_mem>(image.get());
|
||||||
|
|
||||||
EBuiltInOps vmeOps[] = {EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
EBuiltInOps::Type vmeOps[] = {EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel};
|
||||||
for (auto op : vmeOps) {
|
for (auto op : vmeOps) {
|
||||||
MultiDispatchInfo outMdi;
|
MultiDispatchInfo outMdi;
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
@@ -851,6 +851,11 @@ TEST_F(BuiltInTests, getBuiltinAsString) {
|
|||||||
EXPECT_EQ(0, strcmp("unknown", getBuiltinAsString(EBuiltInOps::COUNT)));
|
EXPECT_EQ(0, strcmp("unknown", getBuiltinAsString(EBuiltInOps::COUNT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(BuiltInTests, WhenUnknownOperationIsSpecifiedThenUnknownNameIsReturned) {
|
||||||
|
EXPECT_EQ(0, strcmp("unknown", getUnknownBuiltinAsString(EBuiltInOps::CopyImage3dToBuffer)));
|
||||||
|
EXPECT_EQ(0, strcmp("unknown", getUnknownBuiltinAsString(EBuiltInOps::COUNT)));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(BuiltInTests, getExtension) {
|
TEST_F(BuiltInTests, getExtension) {
|
||||||
EXPECT_EQ(0, strcmp("", BuiltinCode::getExtension(BuiltinCode::ECodeType::Any)));
|
EXPECT_EQ(0, strcmp("", BuiltinCode::getExtension(BuiltinCode::ECodeType::Any)));
|
||||||
EXPECT_EQ(0, strcmp(".bin", BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary)));
|
EXPECT_EQ(0, strcmp(".bin", BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary)));
|
||||||
@@ -872,7 +877,7 @@ TEST_F(BuiltInTests, createBuiltinResource) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(BuiltInTests, createBuiltinResourceName) {
|
TEST_F(BuiltInTests, createBuiltinResourceName) {
|
||||||
EBuiltInOps builtin = EBuiltInOps::CopyBufferToBuffer;
|
EBuiltInOps::Type builtin = EBuiltInOps::CopyBufferToBuffer;
|
||||||
const std::string extension = ".cl";
|
const std::string extension = ".cl";
|
||||||
const std::string platformName = "skl";
|
const std::string platformName = "skl";
|
||||||
const uint32_t deviceRevId = 9;
|
const uint32_t deviceRevId = 9;
|
||||||
@@ -1017,7 +1022,7 @@ TEST_F(BuiltInTests, getBuiltinCodeForTypeInvalid) {
|
|||||||
TEST_F(BuiltInTests, getBuiltinResourcesForTypeSource) {
|
TEST_F(BuiltInTests, getBuiltinResourcesForTypeSource) {
|
||||||
class MockBuiltinsLib : BuiltinsLib {
|
class MockBuiltinsLib : BuiltinsLib {
|
||||||
public:
|
public:
|
||||||
BuiltinResourceT getBuiltinResource(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
BuiltinResourceT getBuiltinResource(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
||||||
return BuiltinsLib::getBuiltinResource(builtin, requestedCodeType, device);
|
return BuiltinsLib::getBuiltinResource(builtin, requestedCodeType, device);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1044,7 +1049,7 @@ TEST_F(BuiltInTests, getBuiltinResourcesForTypeSource) {
|
|||||||
TEST_F(BuiltInTests, getBuiltinResourcesForTypeBinary) {
|
TEST_F(BuiltInTests, getBuiltinResourcesForTypeBinary) {
|
||||||
class MockBuiltinsLib : BuiltinsLib {
|
class MockBuiltinsLib : BuiltinsLib {
|
||||||
public:
|
public:
|
||||||
BuiltinResourceT getBuiltinResource(EBuiltInOps builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
BuiltinResourceT getBuiltinResource(EBuiltInOps::Type builtin, BuiltinCode::ECodeType requestedCodeType, Device &device) {
|
||||||
return BuiltinsLib::getBuiltinResource(builtin, requestedCodeType, device);
|
return BuiltinsLib::getBuiltinResource(builtin, requestedCodeType, device);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ HWTEST_F(EnqueueReadImageTest, GivenImage1DarrayWhenReadImageIsCalledThenHostPtr
|
|||||||
|
|
||||||
HWTEST_F(EnqueueReadImageTest, GivenImage1DarrayWhenReadImageIsCalledThenRowPitchIsSetToSlicePitch) {
|
HWTEST_F(EnqueueReadImageTest, GivenImage1DarrayWhenReadImageIsCalledThenRowPitchIsSetToSlicePitch) {
|
||||||
auto &builtIns = *pCmdQ->getDevice().getExecutionEnvironment()->getBuiltIns();
|
auto &builtIns = *pCmdQ->getDevice().getExecutionEnvironment()->getBuiltIns();
|
||||||
EBuiltInOps copyBuiltIn = EBuiltInOps::CopyImage3dToBuffer;
|
EBuiltInOps::Type copyBuiltIn = EBuiltInOps::CopyImage3dToBuffer;
|
||||||
auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder(
|
auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder(
|
||||||
copyBuiltIn,
|
copyBuiltIn,
|
||||||
pCmdQ->getContext(),
|
pCmdQ->getContext(),
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenReadWriteImageIsCalledThenH
|
|||||||
|
|
||||||
HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenWriteImageIsCalledThenRowPitchIsSetToSlicePitch) {
|
HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenWriteImageIsCalledThenRowPitchIsSetToSlicePitch) {
|
||||||
auto &builtIns = *pCmdQ->getDevice().getExecutionEnvironment()->getBuiltIns();
|
auto &builtIns = *pCmdQ->getDevice().getExecutionEnvironment()->getBuiltIns();
|
||||||
EBuiltInOps copyBuiltIn = EBuiltInOps::CopyBufferToImage3d;
|
EBuiltInOps::Type copyBuiltIn = EBuiltInOps::CopyBufferToImage3d;
|
||||||
auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder(
|
auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder(
|
||||||
copyBuiltIn,
|
copyBuiltIn,
|
||||||
pCmdQ->getContext(),
|
pCmdQ->getContext(),
|
||||||
|
|||||||
Reference in New Issue
Block a user