mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
Move vme builtins to separated target
Change-Id: I1a6bf556f8b19a8cd4da62cb814305e1fdfdd7cd Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
176fd39621
commit
21aa550dba
@@ -837,6 +837,7 @@ macro(generate_runtime_lib LIB_NAME MOCKABLE GENERATE_EXEC)
|
|||||||
add_subdirectory(runtime "${NEO_BUILD_DIR}/${LIB_NAME}" EXCLUDE_FROM_ALL)
|
add_subdirectory(runtime "${NEO_BUILD_DIR}/${LIB_NAME}" EXCLUDE_FROM_ALL)
|
||||||
endif()
|
endif()
|
||||||
target_compile_definitions(${BUILTINS_SOURCES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
target_compile_definitions(${BUILTINS_SOURCES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
||||||
|
target_compile_definitions(${BUILTINS_VME_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
||||||
target_compile_definitions(${BUILTINS_BINARIES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
target_compile_definitions(${BUILTINS_BINARIES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
||||||
target_compile_definitions(${SCHEDULER_BINARY_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
target_compile_definitions(${SCHEDULER_BINARY_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
||||||
|
|
||||||
@@ -857,6 +858,7 @@ set(NEO_DLL_NAME_BASE "igdrcl")
|
|||||||
set(BIKSIM_LIB_NAME "biksim")
|
set(BIKSIM_LIB_NAME "biksim")
|
||||||
set(BUILTINS_SOURCES_LIB_NAME "builtins_sources")
|
set(BUILTINS_SOURCES_LIB_NAME "builtins_sources")
|
||||||
set(BUILTINS_BINARIES_LIB_NAME "builtins_binaries")
|
set(BUILTINS_BINARIES_LIB_NAME "builtins_binaries")
|
||||||
|
set(BUILTINS_VME_LIB_NAME "builtins_vme")
|
||||||
set(SCHEDULER_BINARY_LIB_NAME "scheduler_binary")
|
set(SCHEDULER_BINARY_LIB_NAME "scheduler_binary")
|
||||||
|
|
||||||
if(DONT_CARE_OF_VIRTUALS)
|
if(DONT_CARE_OF_VIRTUALS)
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ if(${GENERATE_EXECUTABLE})
|
|||||||
list(APPEND NEO_DYNAMIC_LIB__TARGET_OBJECTS
|
list(APPEND NEO_DYNAMIC_LIB__TARGET_OBJECTS
|
||||||
$<TARGET_OBJECTS:${SHARINGS_ENABLE_LIB_NAME}>
|
$<TARGET_OBJECTS:${SHARINGS_ENABLE_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
|
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
|
||||||
|
$<TARGET_OBJECTS:${BUILTINS_VME_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${BUILTINS_BINARIES_LIB_NAME}>
|
$<TARGET_OBJECTS:${BUILTINS_BINARIES_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
|
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "runtime/api/additional_extensions.h"
|
#include "runtime/api/additional_extensions.h"
|
||||||
#include "runtime/aub/aub_center.h"
|
#include "runtime/aub/aub_center.h"
|
||||||
#include "runtime/built_ins/built_ins.h"
|
#include "runtime/built_ins/built_ins.h"
|
||||||
|
#include "runtime/built_ins/vme_builtin.h"
|
||||||
#include "runtime/command_queue/command_queue.h"
|
#include "runtime/command_queue/command_queue.h"
|
||||||
#include "runtime/command_stream/command_stream_receiver.h"
|
#include "runtime/command_stream/command_stream_receiver.h"
|
||||||
#include "runtime/context/context.h"
|
#include "runtime/context/context.h"
|
||||||
@@ -1367,9 +1368,11 @@ cl_program CL_API_CALL clCreateProgramWithBuiltInKernels(cl_context context,
|
|||||||
if (retVal == CL_SUCCESS) {
|
if (retVal == CL_SUCCESS) {
|
||||||
|
|
||||||
for (cl_uint i = 0; i < numDevices; i++) {
|
for (cl_uint i = 0; i < numDevices; i++) {
|
||||||
|
auto pContext = castToObject<Context>(context);
|
||||||
auto pDevice = castToObject<ClDevice>(*deviceList);
|
auto pDevice = castToObject<ClDevice>(*deviceList);
|
||||||
|
|
||||||
program = pDevice->getExecutionEnvironment()->getBuiltIns()->createBuiltInProgram(
|
program = Vme::createBuiltInProgram(
|
||||||
|
*pContext,
|
||||||
pDevice->getDevice(),
|
pDevice->getDevice(),
|
||||||
kernelNames,
|
kernelNames,
|
||||||
retVal);
|
retVal);
|
||||||
|
|||||||
@@ -12,10 +12,13 @@ set(RUNTIME_SRCS_BUILT_INS
|
|||||||
${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}/built_in_ops_base.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/built_in_ops_vme.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}${BRANCH_DIR_SUFFIX}/unknown_built_in_name.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/vme_builtin.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/vme_builtin.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/vme_dispatch_builder.h
|
${CMAKE_CURRENT_SOURCE_DIR}/vme_dispatch_builder.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
@@ -29,10 +30,8 @@ constexpr Type CopyImageToImage3d{13};
|
|||||||
constexpr Type FillImage1d{14};
|
constexpr Type FillImage1d{14};
|
||||||
constexpr Type FillImage2d{15};
|
constexpr Type FillImage2d{15};
|
||||||
constexpr Type FillImage3d{16};
|
constexpr Type FillImage3d{16};
|
||||||
constexpr Type VmeBlockMotionEstimateIntel{17};
|
|
||||||
constexpr Type VmeBlockAdvancedMotionEstimateCheckIntel{18};
|
|
||||||
constexpr Type VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel{19};
|
|
||||||
|
|
||||||
constexpr uint32_t MaxBaseValue{19};
|
constexpr Type MaxBaseValue{16};
|
||||||
|
constexpr Type COUNT{64};
|
||||||
} // namespace EBuiltInOps
|
} // namespace EBuiltInOps
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
20
runtime/built_ins/built_in_ops_vme.h
Normal file
20
runtime/built_ins/built_in_ops_vme.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019-2020 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "built_in_ops.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
namespace EBuiltInOps {
|
||||||
|
|
||||||
|
using Type = uint32_t;
|
||||||
|
|
||||||
|
constexpr Type VmeBlockMotionEstimateIntel{MaxCoreValue + 1};
|
||||||
|
constexpr Type VmeBlockAdvancedMotionEstimateCheckIntel{MaxCoreValue + 2};
|
||||||
|
constexpr Type VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel{MaxCoreValue + 3};
|
||||||
|
} // namespace EBuiltInOps
|
||||||
|
} // namespace NEO
|
||||||
@@ -13,7 +13,6 @@
|
|||||||
#include "runtime/built_ins/aux_translation_builtin.h"
|
#include "runtime/built_ins/aux_translation_builtin.h"
|
||||||
#include "runtime/built_ins/built_ins.inl"
|
#include "runtime/built_ins/built_ins.inl"
|
||||||
#include "runtime/built_ins/sip.h"
|
#include "runtime/built_ins/sip.h"
|
||||||
#include "runtime/built_ins/vme_dispatch_builder.h"
|
|
||||||
#include "runtime/device/cl_device.h"
|
#include "runtime/device/cl_device.h"
|
||||||
#include "runtime/helpers/built_ins_helper.h"
|
#include "runtime/helpers/built_ins_helper.h"
|
||||||
#include "runtime/helpers/convert_color.h"
|
#include "runtime/helpers/convert_color.h"
|
||||||
@@ -72,78 +71,6 @@ const SipKernel &BuiltIns::getSipKernel(SipKernelType type, Device &device) {
|
|||||||
return *sipBuiltIn.first;
|
return *sipBuiltIn.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
// VME:
|
|
||||||
static const char *blockMotionEstimateIntelSrc = {
|
|
||||||
#include "kernels/vme_block_motion_estimate_intel_frontend.igdrcl_built_in"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *blockAdvancedMotionEstimateCheckIntelSrc = {
|
|
||||||
#include "kernels/vme_block_advanced_motion_estimate_check_intel_frontend.igdrcl_built_in"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *blockAdvancedMotionEstimateBidirectionalCheckIntelSrc = {
|
|
||||||
#include "kernels/vme_block_advanced_motion_estimate_bidirectional_check_intel_frontend.igdrcl_built_in"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const std::tuple<const char *, const char *> mediaBuiltIns[] = {
|
|
||||||
std::make_tuple("block_motion_estimate_intel", blockMotionEstimateIntelSrc),
|
|
||||||
std::make_tuple("block_advanced_motion_estimate_check_intel", blockAdvancedMotionEstimateCheckIntelSrc),
|
|
||||||
std::make_tuple("block_advanced_motion_estimate_bidirectional_check_intel", blockAdvancedMotionEstimateBidirectionalCheckIntelSrc),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Unlike other built-ins media kernels are not stored in BuiltIns object.
|
|
||||||
// Pointer to program with built in kernels is returned to the user through API
|
|
||||||
// call and user is responsible for releasing it by calling clReleaseProgram.
|
|
||||||
Program *BuiltIns::createBuiltInProgram(
|
|
||||||
Device &device,
|
|
||||||
const char *kernelNames,
|
|
||||||
int &errcodeRet) {
|
|
||||||
std::string programSourceStr = "";
|
|
||||||
std::istringstream ss(kernelNames);
|
|
||||||
std::string currentKernelName;
|
|
||||||
|
|
||||||
while (std::getline(ss, currentKernelName, ';')) {
|
|
||||||
bool found = false;
|
|
||||||
for (auto &builtInTuple : mediaBuiltIns) {
|
|
||||||
if (currentKernelName == std::get<0>(builtInTuple)) {
|
|
||||||
programSourceStr += std::get<1>(builtInTuple);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found) {
|
|
||||||
errcodeRet = CL_INVALID_VALUE;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (programSourceStr.empty() == true) {
|
|
||||||
errcodeRet = CL_INVALID_VALUE;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
Program *pBuiltInProgram = nullptr;
|
|
||||||
|
|
||||||
pBuiltInProgram = Program::create(programSourceStr.c_str(), nullptr, device, true, nullptr);
|
|
||||||
|
|
||||||
if (pBuiltInProgram) {
|
|
||||||
std::unordered_map<std::string, BuiltinDispatchInfoBuilder *> builtinsBuilders;
|
|
||||||
builtinsBuilders["block_motion_estimate_intel"] =
|
|
||||||
&device.getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, device);
|
|
||||||
builtinsBuilders["block_advanced_motion_estimate_check_intel"] =
|
|
||||||
&device.getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, device);
|
|
||||||
builtinsBuilders["block_advanced_motion_estimate_bidirectional_check_intel"] =
|
|
||||||
&device.getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, device);
|
|
||||||
errcodeRet = pBuiltInProgram->build(
|
|
||||||
&device,
|
|
||||||
mediaKernelsBuildOptions,
|
|
||||||
enableCacheing,
|
|
||||||
builtinsBuilders);
|
|
||||||
} else {
|
|
||||||
errcodeRet = CL_INVALID_VALUE;
|
|
||||||
}
|
|
||||||
return pBuiltInProgram;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
class BuiltInOp<EBuiltInOps::CopyBufferToBuffer> : public BuiltinDispatchInfoBuilder {
|
class BuiltInOp<EBuiltInOps::CopyBufferToBuffer> : public BuiltinDispatchInfoBuilder {
|
||||||
public:
|
public:
|
||||||
@@ -866,15 +793,6 @@ BuiltinDispatchInfoBuilder &BuiltIns::getBuiltinDispatchInfoBuilder(EBuiltInOps:
|
|||||||
case EBuiltInOps::FillImage3d:
|
case EBuiltInOps::FillImage3d:
|
||||||
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::FillImage3d>>(*this, device); });
|
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::FillImage3d>>(*this, device); });
|
||||||
break;
|
break;
|
||||||
case EBuiltInOps::VmeBlockMotionEstimateIntel:
|
|
||||||
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockMotionEstimateIntel>>(*this, device); });
|
|
||||||
break;
|
|
||||||
case EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel:
|
|
||||||
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel>>(*this, device); });
|
|
||||||
break;
|
|
||||||
case EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel:
|
|
||||||
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel>>(*this, device); });
|
|
||||||
break;
|
|
||||||
case EBuiltInOps::AuxTranslation:
|
case EBuiltInOps::AuxTranslation:
|
||||||
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::AuxTranslation>>(*this, device); });
|
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::AuxTranslation>>(*this, device); });
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri
|
|||||||
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::Type builtin);
|
const char *getBuiltinAsString(EBuiltInOps::Type builtin);
|
||||||
const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin);
|
const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin);
|
||||||
|
const char *getAdditionalBuiltinAsString(EBuiltInOps::Type builtin);
|
||||||
|
|
||||||
class Storage {
|
class Storage {
|
||||||
public:
|
public:
|
||||||
@@ -174,11 +175,6 @@ class BuiltIns {
|
|||||||
BuiltIns();
|
BuiltIns();
|
||||||
virtual ~BuiltIns();
|
virtual ~BuiltIns();
|
||||||
|
|
||||||
Program *createBuiltInProgram(
|
|
||||||
Device &device,
|
|
||||||
const char *kernelNames,
|
|
||||||
int &errcodeRet);
|
|
||||||
|
|
||||||
MOCKABLE_VIRTUAL const SipKernel &getSipKernel(SipKernelType type, Device &device);
|
MOCKABLE_VIRTUAL const SipKernel &getSipKernel(SipKernelType type, Device &device);
|
||||||
|
|
||||||
BuiltinsLib &getBuiltinsLib() {
|
BuiltinsLib &getBuiltinsLib() {
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
const char *getBuiltinAsString(EBuiltInOps::Type builtin) {
|
const char *getBuiltinAsString(EBuiltInOps::Type builtin) {
|
||||||
|
const char *builtinString = getAdditionalBuiltinAsString(builtin);
|
||||||
|
if (builtinString) {
|
||||||
|
return builtinString;
|
||||||
|
}
|
||||||
switch (builtin) {
|
switch (builtin) {
|
||||||
default:
|
default:
|
||||||
return getUnknownBuiltinAsString(builtin);
|
return getUnknownBuiltinAsString(builtin);
|
||||||
@@ -54,12 +58,6 @@ const char *getBuiltinAsString(EBuiltInOps::Type builtin) {
|
|||||||
return "fill_image2d.igdrcl_built_in";
|
return "fill_image2d.igdrcl_built_in";
|
||||||
case EBuiltInOps::FillImage3d:
|
case EBuiltInOps::FillImage3d:
|
||||||
return "fill_image3d.igdrcl_built_in";
|
return "fill_image3d.igdrcl_built_in";
|
||||||
case EBuiltInOps::VmeBlockMotionEstimateIntel:
|
|
||||||
return "vme_block_motion_estimate_intel.igdrcl_built_in";
|
|
||||||
case EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel:
|
|
||||||
return "vme_block_advanced_motion_estimate_check_intel.igdrcl_built_in";
|
|
||||||
case EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel:
|
|
||||||
return "vme_block_advanced_motion_estimate_bidirectional_check_intel";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2019 Intel Corporation
|
* Copyright (C) 2019-2020 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
#include "runtime/built_ins/built_in_ops_base.h"
|
#include "runtime/built_ins/built_in_ops_base.h"
|
||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
namespace EBuiltInOps {
|
namespace EBuiltInOps {
|
||||||
constexpr Type COUNT{MaxBaseValue + 1};
|
constexpr Type MaxCoreValue{MaxBaseValue};
|
||||||
}
|
}
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
@@ -8,7 +8,6 @@ add_library(${BUILTINS_SOURCES_LIB_NAME} OBJECT EXCLUDE_FROM_ALL
|
|||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
built_ins_registry.h
|
built_ins_registry.h
|
||||||
register_copy_kernels_source.cpp
|
register_copy_kernels_source.cpp
|
||||||
register_ext_vme_source.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(${BUILTINS_SOURCES_LIB_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
set_target_properties(${BUILTINS_SOURCES_LIB_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
@@ -24,3 +23,14 @@ target_include_directories(${BUILTINS_SOURCES_LIB_NAME} PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectories()
|
add_subdirectories()
|
||||||
|
|
||||||
|
add_library(${BUILTINS_VME_LIB_NAME} OBJECT EXCLUDE_FROM_ALL
|
||||||
|
CMakeLists.txt
|
||||||
|
register_ext_vme_source.cpp
|
||||||
|
)
|
||||||
|
set_target_properties(${BUILTINS_VME_LIB_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
set_target_properties(${BUILTINS_VME_LIB_NAME} PROPERTIES FOLDER "built_ins")
|
||||||
|
|
||||||
|
target_include_directories(${BUILTINS_VME_LIB_NAME} PRIVATE
|
||||||
|
${KHRONOS_HEADERS_DIR}
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2017-2019 Intel Corporation
|
* Copyright (C) 2017-2020 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "runtime/built_ins/built_in_ops_vme.h"
|
||||||
#include "runtime/built_ins/registry/built_ins_registry.h"
|
#include "runtime/built_ins/registry/built_ins_registry.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|||||||
120
runtime/built_ins/vme_builtin.cpp
Normal file
120
runtime/built_ins/vme_builtin.cpp
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "runtime/built_ins/vme_builtin.h"
|
||||||
|
|
||||||
|
#include "core/device/device.h"
|
||||||
|
#include "runtime/built_ins/built_in_ops_vme.h"
|
||||||
|
#include "runtime/built_ins/built_ins.h"
|
||||||
|
#include "runtime/built_ins/builtins_dispatch_builder.h"
|
||||||
|
#include "runtime/built_ins/populate_built_ins.inl"
|
||||||
|
#include "runtime/built_ins/vme_dispatch_builder.h"
|
||||||
|
#include "runtime/program/program.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
|
||||||
|
static const char *blockMotionEstimateIntelSrc = {
|
||||||
|
#include "kernels/vme_block_motion_estimate_intel_frontend.igdrcl_built_in"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *blockAdvancedMotionEstimateCheckIntelSrc = {
|
||||||
|
#include "kernels/vme_block_advanced_motion_estimate_check_intel_frontend.igdrcl_built_in"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *blockAdvancedMotionEstimateBidirectionalCheckIntelSrc = {
|
||||||
|
#include "kernels/vme_block_advanced_motion_estimate_bidirectional_check_intel_frontend.igdrcl_built_in"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const std::tuple<const char *, const char *> mediaBuiltIns[] = {
|
||||||
|
std::make_tuple("block_motion_estimate_intel", blockMotionEstimateIntelSrc),
|
||||||
|
std::make_tuple("block_advanced_motion_estimate_check_intel", blockAdvancedMotionEstimateCheckIntelSrc),
|
||||||
|
std::make_tuple("block_advanced_motion_estimate_bidirectional_check_intel", blockAdvancedMotionEstimateBidirectionalCheckIntelSrc),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Unlike other built-ins media kernels are not stored in BuiltIns object.
|
||||||
|
// Pointer to program with built in kernels is returned to the user through API
|
||||||
|
// call and user is responsible for releasing it by calling clReleaseProgram.
|
||||||
|
Program *Vme::createBuiltInProgram(
|
||||||
|
Context &context,
|
||||||
|
Device &device,
|
||||||
|
const char *kernelNames,
|
||||||
|
int &errcodeRet) {
|
||||||
|
std::string programSourceStr = "";
|
||||||
|
std::istringstream ss(kernelNames);
|
||||||
|
std::string currentKernelName;
|
||||||
|
|
||||||
|
while (std::getline(ss, currentKernelName, ';')) {
|
||||||
|
bool found = false;
|
||||||
|
for (auto &builtInTuple : mediaBuiltIns) {
|
||||||
|
if (currentKernelName == std::get<0>(builtInTuple)) {
|
||||||
|
programSourceStr += std::get<1>(builtInTuple);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
errcodeRet = CL_INVALID_VALUE;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (programSourceStr.empty() == true) {
|
||||||
|
errcodeRet = CL_INVALID_VALUE;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Program *pBuiltInProgram = nullptr;
|
||||||
|
pBuiltInProgram = Program::create(programSourceStr.c_str(), &context, device, true, nullptr);
|
||||||
|
|
||||||
|
if (pBuiltInProgram) {
|
||||||
|
std::unordered_map<std::string, BuiltinDispatchInfoBuilder *> builtinsBuilders;
|
||||||
|
builtinsBuilders["block_motion_estimate_intel"] =
|
||||||
|
&Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, device);
|
||||||
|
builtinsBuilders["block_advanced_motion_estimate_check_intel"] =
|
||||||
|
&Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, device);
|
||||||
|
builtinsBuilders["block_advanced_motion_estimate_bidirectional_check_intel"] =
|
||||||
|
&Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, device);
|
||||||
|
|
||||||
|
errcodeRet = pBuiltInProgram->build(&device, mediaKernelsBuildOptions, true, builtinsBuilders);
|
||||||
|
} else {
|
||||||
|
errcodeRet = CL_INVALID_VALUE;
|
||||||
|
}
|
||||||
|
return pBuiltInProgram;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *getAdditionalBuiltinAsString(EBuiltInOps::Type builtin) {
|
||||||
|
switch (builtin) {
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
case EBuiltInOps::VmeBlockMotionEstimateIntel:
|
||||||
|
return "vme_block_motion_estimate_intel.igdrcl_built_in";
|
||||||
|
case EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel:
|
||||||
|
return "vme_block_advanced_motion_estimate_check_intel.igdrcl_built_in";
|
||||||
|
case EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel:
|
||||||
|
return "vme_block_advanced_motion_estimate_bidirectional_check_intel";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BuiltinDispatchInfoBuilder &Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::Type operation, Device &device) {
|
||||||
|
auto &builtins = *device.getExecutionEnvironment()->getBuiltIns();
|
||||||
|
uint32_t operationId = static_cast<uint32_t>(operation);
|
||||||
|
auto &operationBuilder = builtins.BuiltinOpsBuilders[operationId];
|
||||||
|
switch (operation) {
|
||||||
|
default:
|
||||||
|
return builtins.getBuiltinDispatchInfoBuilder(operation, device);
|
||||||
|
case EBuiltInOps::VmeBlockMotionEstimateIntel:
|
||||||
|
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockMotionEstimateIntel>>(builtins, device); });
|
||||||
|
break;
|
||||||
|
case EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel:
|
||||||
|
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel>>(builtins, device); });
|
||||||
|
break;
|
||||||
|
case EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel:
|
||||||
|
std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique<BuiltInOp<EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel>>(builtins, device); });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return *operationBuilder.first;
|
||||||
|
}
|
||||||
|
} // namespace NEO
|
||||||
28
runtime/built_ins/vme_builtin.h
Normal file
28
runtime/built_ins/vme_builtin.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "runtime/built_ins/built_in_ops_vme.h"
|
||||||
|
|
||||||
|
namespace NEO {
|
||||||
|
class Program;
|
||||||
|
class Device;
|
||||||
|
class Context;
|
||||||
|
class BuiltIns;
|
||||||
|
class BuiltinDispatchInfoBuilder;
|
||||||
|
namespace Vme {
|
||||||
|
|
||||||
|
Program *createBuiltInProgram(
|
||||||
|
Context &context,
|
||||||
|
Device &device,
|
||||||
|
const char *kernelNames,
|
||||||
|
int &errcodeRet);
|
||||||
|
|
||||||
|
BuiltinDispatchInfoBuilder &getBuiltinDispatchInfoBuilder(EBuiltInOps::Type operation, Device &device);
|
||||||
|
|
||||||
|
} // namespace Vme
|
||||||
|
} // namespace NEO
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "runtime/accelerators/intel_accelerator.h"
|
#include "runtime/accelerators/intel_accelerator.h"
|
||||||
#include "runtime/accelerators/intel_motion_estimation.h"
|
#include "runtime/accelerators/intel_motion_estimation.h"
|
||||||
|
#include "runtime/built_ins/built_in_ops_vme.h"
|
||||||
#include "runtime/built_ins/built_ins.h"
|
#include "runtime/built_ins/built_ins.h"
|
||||||
#include "runtime/built_ins/builtins_dispatch_builder.h"
|
#include "runtime/built_ins/builtins_dispatch_builder.h"
|
||||||
#include "runtime/helpers/dispatch_info_builder.h"
|
#include "runtime/helpers/dispatch_info_builder.h"
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ set(NEO_IGDRCL_TESTS__TARGET_OBJECTS
|
|||||||
$<TARGET_OBJECTS:mock_gmm>
|
$<TARGET_OBJECTS:mock_gmm>
|
||||||
$<TARGET_OBJECTS:${SHARINGS_ENABLE_LIB_NAME}>
|
$<TARGET_OBJECTS:${SHARINGS_ENABLE_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
|
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
|
||||||
|
$<TARGET_OBJECTS:${BUILTINS_VME_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${BUILTINS_BINARIES_LIB_NAME}>
|
$<TARGET_OBJECTS:${BUILTINS_BINARIES_LIB_NAME}>
|
||||||
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
|
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,7 +7,9 @@
|
|||||||
|
|
||||||
#include "core/compiler_interface/compiler_interface.h"
|
#include "core/compiler_interface/compiler_interface.h"
|
||||||
#include "core/device/device.h"
|
#include "core/device/device.h"
|
||||||
|
#include "runtime/built_ins/built_in_ops_vme.h"
|
||||||
#include "runtime/built_ins/built_ins.h"
|
#include "runtime/built_ins/built_ins.h"
|
||||||
|
#include "runtime/built_ins/vme_builtin.h"
|
||||||
#include "runtime/context/context.h"
|
#include "runtime/context/context.h"
|
||||||
#include "runtime/device/cl_device.h"
|
#include "runtime/device/cl_device.h"
|
||||||
#include "runtime/helpers/base_object.h"
|
#include "runtime/helpers/base_object.h"
|
||||||
@@ -154,7 +156,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockMotionEstimateKer
|
|||||||
cl_int retVal = CL_SUCCESS;
|
cl_int retVal = CL_SUCCESS;
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
||||||
pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pDev);
|
Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pDev);
|
||||||
restoreBuiltInBinaryName(pDev);
|
restoreBuiltInBinaryName(pDev);
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
||||||
@@ -179,8 +181,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockMotionEstimateKer
|
|||||||
EXPECT_NE(nullptr, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
EXPECT_NE(nullptr, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
||||||
EXPECT_EQ(6U, kernNeo->getKernelArgsNumber());
|
EXPECT_EQ(6U, kernNeo->getKernelArgsNumber());
|
||||||
|
|
||||||
auto ctxNeo = castToObject<Context>(pContext);
|
auto &vmeBuilder = Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pDev);
|
||||||
auto &vmeBuilder = pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(NEO::EBuiltInOps::VmeBlockMotionEstimateIntel, ctxNeo->getDevice(0)->getDevice());
|
|
||||||
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
||||||
|
|
||||||
clReleaseKernel(kernel);
|
clReleaseKernel(kernel);
|
||||||
@@ -191,7 +192,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockAdvancedMotionEst
|
|||||||
cl_int retVal = CL_SUCCESS;
|
cl_int retVal = CL_SUCCESS;
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
||||||
pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *pDev);
|
Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *pDev);
|
||||||
restoreBuiltInBinaryName(pDev);
|
restoreBuiltInBinaryName(pDev);
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
||||||
@@ -216,8 +217,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockAdvancedMotionEst
|
|||||||
EXPECT_NE(nullptr, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
EXPECT_NE(nullptr, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
||||||
EXPECT_EQ(15U, kernNeo->getKernelArgsNumber());
|
EXPECT_EQ(15U, kernNeo->getKernelArgsNumber());
|
||||||
|
|
||||||
auto ctxNeo = castToObject<Context>(pContext);
|
auto &vmeBuilder = Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *pDev);
|
||||||
auto &vmeBuilder = pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(NEO::EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, ctxNeo->getDevice(0)->getDevice());
|
|
||||||
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
||||||
|
|
||||||
clReleaseKernel(kernel);
|
clReleaseKernel(kernel);
|
||||||
@@ -228,7 +228,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockAdvancedMotionEst
|
|||||||
cl_int retVal = CL_SUCCESS;
|
cl_int retVal = CL_SUCCESS;
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_backend");
|
||||||
pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *pDev);
|
Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *pDev);
|
||||||
restoreBuiltInBinaryName(pDev);
|
restoreBuiltInBinaryName(pDev);
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
overwriteBuiltInBinaryName(pDev, "media_kernels_frontend");
|
||||||
@@ -254,7 +254,7 @@ TEST_F(clCreateProgramWithBuiltInVmeKernelsTests, GivenVmeBlockAdvancedMotionEst
|
|||||||
EXPECT_EQ(20U, kernNeo->getKernelArgsNumber());
|
EXPECT_EQ(20U, kernNeo->getKernelArgsNumber());
|
||||||
|
|
||||||
auto ctxNeo = castToObject<Context>(pContext);
|
auto ctxNeo = castToObject<Context>(pContext);
|
||||||
auto &vmeBuilder = pDev->getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(NEO::EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, ctxNeo->getDevice(0)->getDevice());
|
auto &vmeBuilder = Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, ctxNeo->getDevice(0)->getDevice());
|
||||||
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder);
|
||||||
|
|
||||||
clReleaseKernel(kernel);
|
clReleaseKernel(kernel);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#include "runtime/built_ins/aux_translation_builtin.h"
|
#include "runtime/built_ins/aux_translation_builtin.h"
|
||||||
#include "runtime/built_ins/built_ins.h"
|
#include "runtime/built_ins/built_ins.h"
|
||||||
#include "runtime/built_ins/builtins_dispatch_builder.h"
|
#include "runtime/built_ins/builtins_dispatch_builder.h"
|
||||||
|
#include "runtime/built_ins/vme_builtin.h"
|
||||||
#include "runtime/built_ins/vme_dispatch_builder.h"
|
#include "runtime/built_ins/vme_dispatch_builder.h"
|
||||||
#include "runtime/helpers/dispatch_info_builder.h"
|
#include "runtime/helpers/dispatch_info_builder.h"
|
||||||
#include "runtime/kernel/kernel.h"
|
#include "runtime/kernel/kernel.h"
|
||||||
@@ -971,18 +972,21 @@ TEST_F(VmeBuiltInTests, BuiltinDispatchInfoBuilderGetVMEBuilderReturnNonNull) {
|
|||||||
|
|
||||||
EBuiltInOps::Type 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, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = Vme::getBuiltinDispatchInfoBuilder(op, *pDevice);
|
||||||
EXPECT_NE(nullptr, &builder);
|
EXPECT_NE(nullptr, &builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
restoreBuiltInBinaryName(pDevice);
|
restoreBuiltInBinaryName(pDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(VmeBuiltInTests, givenInvalidBuiltInOpWhenGetVmeBuilderInfoThenExceptionIsThrown) {
|
||||||
|
EXPECT_THROW(Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::COUNT, *pDevice), std::exception);
|
||||||
|
}
|
||||||
TEST_F(VmeBuiltInTests, BuiltinDispatchInfoBuilderVMEBuilderNullKernel) {
|
TEST_F(VmeBuiltInTests, BuiltinDispatchInfoBuilderVMEBuilderNullKernel) {
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
EBuiltInOps::Type 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, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = Vme::getBuiltinDispatchInfoBuilder(op, *pDevice);
|
||||||
|
|
||||||
MultiDispatchInfo outMdi;
|
MultiDispatchInfo outMdi;
|
||||||
Vec3<size_t> gws{352, 288, 0};
|
Vec3<size_t> gws{352, 288, 0};
|
||||||
@@ -1004,7 +1008,7 @@ TEST_F(VmeBuiltInTests, BuiltinDispatchInfoBuilderVMEBuilder) {
|
|||||||
mockKernel.kernelInfo.reqdWorkGroupSize[2] = 0;
|
mockKernel.kernelInfo.reqdWorkGroupSize[2] = 0;
|
||||||
|
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = Vme::getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pDevice);
|
||||||
restoreBuiltInBinaryName(pDevice);
|
restoreBuiltInBinaryName(pDevice);
|
||||||
|
|
||||||
MultiDispatchInfo outMdi;
|
MultiDispatchInfo outMdi;
|
||||||
@@ -1071,7 +1075,7 @@ TEST_F(VmeBuiltInTests, BuiltinDispatchInfoBuilderAdvancedVMEBuilder) {
|
|||||||
for (auto op : vmeOps) {
|
for (auto op : vmeOps) {
|
||||||
MultiDispatchInfo outMdi;
|
MultiDispatchInfo outMdi;
|
||||||
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
overwriteBuiltInBinaryName(pDevice, "media_kernels_backend");
|
||||||
BuiltinDispatchInfoBuilder &builder = pBuiltIns->getBuiltinDispatchInfoBuilder(op, *pDevice);
|
BuiltinDispatchInfoBuilder &builder = Vme::getBuiltinDispatchInfoBuilder(op, *pDevice);
|
||||||
restoreBuiltInBinaryName(pDevice);
|
restoreBuiltInBinaryName(pDevice);
|
||||||
|
|
||||||
bool ret = builder.setExplicitArg(srcImageArgNum, sizeof(cl_mem), &srcImageArg, err);
|
bool ret = builder.setExplicitArg(srcImageArgNum, sizeof(cl_mem), &srcImageArg, err);
|
||||||
@@ -1984,7 +1988,8 @@ TEST_F(BuiltInTests, createBuiltInProgramForInvalidBuiltinKernelName) {
|
|||||||
const char *kernelNames = "invalid_kernel";
|
const char *kernelNames = "invalid_kernel";
|
||||||
cl_int retVal = CL_SUCCESS;
|
cl_int retVal = CL_SUCCESS;
|
||||||
|
|
||||||
cl_program program = pDevice->getExecutionEnvironment()->getBuiltIns()->createBuiltInProgram(
|
cl_program program = Vme::createBuiltInProgram(
|
||||||
|
*pContext,
|
||||||
*pDevice,
|
*pDevice,
|
||||||
kernelNames,
|
kernelNames,
|
||||||
retVal);
|
retVal);
|
||||||
|
|||||||
Reference in New Issue
Block a user