diff --git a/opencl/source/built_ins/CMakeLists.txt b/opencl/source/built_ins/CMakeLists.txt index ffbd295362..58e75a262c 100644 --- a/opencl/source/built_ins/CMakeLists.txt +++ b/opencl/source/built_ins/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2022 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -11,7 +11,6 @@ set(RUNTIME_SRCS_BUILT_INS ${CMAKE_CURRENT_SOURCE_DIR}/builtins_dispatch_builder.h ${CMAKE_CURRENT_SOURCE_DIR}/built_in_ops_vme.h ${CMAKE_CURRENT_SOURCE_DIR}/built_ins.inl - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}unknown_built_in.cpp ${CMAKE_CURRENT_SOURCE_DIR}/vme_builtin.cpp ${CMAKE_CURRENT_SOURCE_DIR}/vme_builtin.h ${CMAKE_CURRENT_SOURCE_DIR}/vme_dispatch_builder.h diff --git a/opencl/source/built_ins/built_in_ops_vme.h b/opencl/source/built_ins/built_in_ops_vme.h index e3bb2d6a15..b304fa95dd 100644 --- a/opencl/source/built_ins/built_in_ops_vme.h +++ b/opencl/source/built_ins/built_in_ops_vme.h @@ -1,12 +1,12 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once -#include "built_in_ops.h" +#include "shared/source/built_ins/builtinops/built_in_ops.h" namespace NEO { namespace EBuiltInOps { diff --git a/opencl/source/built_ins/builtins_dispatch_builder.cpp b/opencl/source/built_ins/builtins_dispatch_builder.cpp index bcf556a310..1ee5950ca9 100644 --- a/opencl/source/built_ins/builtins_dispatch_builder.cpp +++ b/opencl/source/built_ins/builtins_dispatch_builder.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -776,7 +776,7 @@ BuiltinDispatchInfoBuilder &BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuil std::call_once(operationBuilder.second, [&] { operationBuilder.first = std::make_unique>(builtins, device); }); break; default: - return getUnknownDispatchInfoBuilder(operation, device); + UNRECOVERABLE_IF("getBuiltinDispatchInfoBuilder failed"); } return *operationBuilder.first; } diff --git a/opencl/source/built_ins/builtins_dispatch_builder.h b/opencl/source/built_ins/builtins_dispatch_builder.h index 5d8e7426bc..de0700645a 100644 --- a/opencl/source/built_ins/builtins_dispatch_builder.h +++ b/opencl/source/built_ins/builtins_dispatch_builder.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,12 +7,12 @@ #pragma once #include "shared/source/built_ins/built_ins.h" +#include "shared/source/built_ins/builtinops/built_in_ops.h" #include "shared/source/helpers/vec.h" #include "opencl/source/kernel/multi_device_kernel.h" #include "CL/cl.h" -#include "built_in_ops.h" #include #include @@ -113,7 +113,6 @@ class BuiltinDispatchInfoBuilder { class BuiltInDispatchBuilderOp { public: static BuiltinDispatchInfoBuilder &getBuiltinDispatchInfoBuilder(EBuiltInOps::Type op, ClDevice &device); - static BuiltinDispatchInfoBuilder &getUnknownDispatchInfoBuilder(EBuiltInOps::Type op, ClDevice &device); }; class BuiltInOwnershipWrapper : public NonCopyableOrMovableClass { diff --git a/opencl/source/execution_environment/cl_execution_environment.h b/opencl/source/execution_environment/cl_execution_environment.h index a9a4491bb5..f2e991d120 100644 --- a/opencl/source/execution_environment/cl_execution_environment.h +++ b/opencl/source/execution_environment/cl_execution_environment.h @@ -1,15 +1,14 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once +#include "shared/source/built_ins/builtinops/built_in_ops.h" #include "shared/source/execution_environment/execution_environment.h" -#include "built_in_ops.h" - #include #include #include diff --git a/opencl/test/unit_test/built_ins/CMakeLists.txt b/opencl/test/unit_test/built_ins/CMakeLists.txt index b0fedc2698..5f0a6a99d3 100644 --- a/opencl/test/unit_test/built_ins/CMakeLists.txt +++ b/opencl/test/unit_test/built_ins/CMakeLists.txt @@ -10,7 +10,7 @@ set(IGDRCL_SRCS_tests_built_in ${CMAKE_CURRENT_SOURCE_DIR}/built_ins_file_names.cpp ${CMAKE_CURRENT_SOURCE_DIR}/built_in_tests.cpp ${CMAKE_CURRENT_SOURCE_DIR}/built_in_tests_ocl.cpp - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}get_built_ins_file_names.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/get_built_ins_file_names.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sip_tests.cpp ) target_sources(igdrcl_tests PRIVATE ${IGDRCL_SRCS_tests_built_in}) diff --git a/opencl/test/unit_test/built_ins/built_in_tests.cpp b/opencl/test/unit_test/built_ins/built_in_tests.cpp index 717d05709a..c6f0fdaa6e 100644 --- a/opencl/test/unit_test/built_ins/built_in_tests.cpp +++ b/opencl/test/unit_test/built_ins/built_in_tests.cpp @@ -149,10 +149,89 @@ HWTEST2_F(BuiltInTests, GivenBuiltinTypeBinaryWhenGettingAuxTranslationBuiltinTh mockBuiltinsLib->getBuiltinResource(EBuiltInOps::AuxTranslation, BuiltinCode::ECodeType::Binary, *pDevice).size() != 0); } +class MockAuxBuilInOp : public BuiltInOp { + public: + using BuiltinDispatchInfoBuilder::populate; + using BaseClass = BuiltInOp; + using BaseClass::baseKernel; + using BaseClass::convertToAuxKernel; + using BaseClass::convertToNonAuxKernel; + using BaseClass::resizeKernelInstances; + using BaseClass::usedKernels; + + using BaseClass::BuiltInOp; +}; + INSTANTIATE_TEST_CASE_P(, AuxBuiltInTests, testing::ValuesIn({KernelObjForAuxTranslation::Type::MEM_OBJ, KernelObjForAuxTranslation::Type::GFX_ALLOC})); +HWCMDTEST_P(IGFX_XE_HP_CORE, AuxBuiltInTests, givenXeHpCoreCommandsAndAuxTranslationKernelWhenSettingKernelArgsThenSetValidMocs) { + + const auto &compilerHwInfoConfig = *CompilerHwInfoConfig::get(defaultHwInfo->platform.eProductFamily); + if (compilerHwInfoConfig.isForceToStatelessRequired()) { + GTEST_SKIP(); + } + using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; + + MockAuxBuilInOp mockAuxBuiltInOp(*pBuiltIns, *pClDevice); + + BuiltinOpParams builtinOpParamsToAux; + builtinOpParamsToAux.auxTranslationDirection = AuxTranslationDirection::NonAuxToAux; + + BuiltinOpParams builtinOpParamsToNonAux; + builtinOpParamsToNonAux.auxTranslationDirection = AuxTranslationDirection::AuxToNonAux; + + std::unique_ptr buffer = nullptr; + std::unique_ptr gfxAllocation = nullptr; + + auto kernelObjsForAuxTranslation = std::make_unique(); + if (kernelObjType == MockKernelObjForAuxTranslation::Type::MEM_OBJ) { + cl_int retVal = CL_SUCCESS; + buffer.reset(Buffer::create(pContext, 0, MemoryConstants::pageSize, nullptr, retVal)); + kernelObjsForAuxTranslation->insert({KernelObjForAuxTranslation::Type::MEM_OBJ, buffer.get()}); + } else { + gfxAllocation.reset(new MockGraphicsAllocation(nullptr, MemoryConstants::pageSize)); + kernelObjsForAuxTranslation->insert({KernelObjForAuxTranslation::Type::GFX_ALLOC, gfxAllocation.get()}); + } + + MultiDispatchInfo multiDispatchInfo; + multiDispatchInfo.setKernelObjsForAuxTranslation(std::move(kernelObjsForAuxTranslation)); + + mockAuxBuiltInOp.buildDispatchInfosForAuxTranslation(multiDispatchInfo, builtinOpParamsToAux); + mockAuxBuiltInOp.buildDispatchInfosForAuxTranslation(multiDispatchInfo, builtinOpParamsToNonAux); + + { + // read args + auto argNum = 0; + auto expectedMocs = pDevice->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED); + auto sshBase = mockAuxBuiltInOp.convertToAuxKernel[0]->getSurfaceStateHeap(); + auto sshOffset = mockAuxBuiltInOp.convertToAuxKernel[0]->getKernelInfo().getArgDescriptorAt(argNum).as().bindful; + auto surfaceState = reinterpret_cast(ptrOffset(sshBase, sshOffset)); + EXPECT_EQ(expectedMocs, surfaceState->getMemoryObjectControlState()); + + sshBase = mockAuxBuiltInOp.convertToNonAuxKernel[0]->getSurfaceStateHeap(); + sshOffset = mockAuxBuiltInOp.convertToNonAuxKernel[0]->getKernelInfo().getArgDescriptorAt(argNum).as().bindful; + surfaceState = reinterpret_cast(ptrOffset(sshBase, sshOffset)); + EXPECT_EQ(expectedMocs, surfaceState->getMemoryObjectControlState()); + } + + { + // write args + auto argNum = 1; + auto expectedMocs = pDevice->getGmmHelper()->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CONST); + auto sshBase = mockAuxBuiltInOp.convertToAuxKernel[0]->getSurfaceStateHeap(); + auto sshOffset = mockAuxBuiltInOp.convertToAuxKernel[0]->getKernelInfo().getArgDescriptorAt(argNum).as().bindful; + auto surfaceState = reinterpret_cast(ptrOffset(sshBase, sshOffset)); + EXPECT_EQ(expectedMocs, surfaceState->getMemoryObjectControlState()); + + sshBase = mockAuxBuiltInOp.convertToNonAuxKernel[0]->getSurfaceStateHeap(); + sshOffset = mockAuxBuiltInOp.convertToNonAuxKernel[0]->getKernelInfo().getArgDescriptorAt(argNum).as().bindful; + surfaceState = reinterpret_cast(ptrOffset(sshBase, sshOffset)); + EXPECT_EQ(expectedMocs, surfaceState->getMemoryObjectControlState()); + } +} + TEST_F(BuiltInTests, WhenBuildingListOfBuiltinsThenBuiltinsHaveBeenGenerated) { for (auto supportsImages : ::testing::Bool()) { allBuiltIns.clear(); @@ -445,19 +524,6 @@ HWTEST2_P(AuxBuiltInTests, givenInvalidAuxTranslationDirectionWhenBuildingDispat EXPECT_THROW(builder.buildDispatchInfosForAuxTranslation(multiDispatchInfo, builtinOpsParams), std::exception); } -class MockAuxBuilInOp : public BuiltInOp { - public: - using BuiltinDispatchInfoBuilder::populate; - using BaseClass = BuiltInOp; - using BaseClass::baseKernel; - using BaseClass::convertToAuxKernel; - using BaseClass::convertToNonAuxKernel; - using BaseClass::resizeKernelInstances; - using BaseClass::usedKernels; - - using BaseClass::BuiltInOp; -}; - TEST_F(BuiltInTests, whenAuxBuiltInIsConstructedThenResizeKernelInstancedTo5) { MockAuxBuilInOp mockAuxBuiltInOp(*pBuiltIns, *pClDevice); EXPECT_EQ(5u, mockAuxBuiltInOp.convertToAuxKernel.size()); @@ -1230,11 +1296,6 @@ TEST_F(VmeBuiltInTests, WhenGettingBuiltinAsStringThenCorrectStringIsReturned) { 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, GivenEncodeTypeWhenGettingExtensionThenCorrectStringIsReturned) { EXPECT_EQ(0, strcmp("", BuiltinCode::getExtension(BuiltinCode::ECodeType::Any))); EXPECT_EQ(0, strcmp(".bin", BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary))); diff --git a/shared/source/built_ins/CMakeLists.txt b/shared/source/built_ins/CMakeLists.txt index b451b49f73..101aa1855a 100644 --- a/shared/source/built_ins/CMakeLists.txt +++ b/shared/source/built_ins/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2020-2021 Intel Corporation +# Copyright (C) 2020-2022 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -14,7 +14,6 @@ set(NEO_CORE_SRCS_BUILT_INS ${CMAKE_CURRENT_SOURCE_DIR}/sip.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sip.h ${CMAKE_CURRENT_SOURCE_DIR}/sip_kernel_type.h - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}unknown_built_in_name.cpp ) add_subdirectory(builtinops) diff --git a/shared/source/built_ins/built_ins.h b/shared/source/built_ins/built_ins.h index ad50b55986..261484537f 100644 --- a/shared/source/built_ins/built_ins.h +++ b/shared/source/built_ins/built_ins.h @@ -1,17 +1,17 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once +#include "shared/source/built_ins/builtinops/built_in_ops.h" #include "shared/source/built_ins/sip_kernel_type.h" #include "shared/source/helpers/debug_helpers.h" #include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/helpers/vec.h" -#include "built_in_ops.h" #include "compiler_options.h" #include @@ -46,7 +46,6 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri const std::string &platformName = "", uint32_t deviceRevId = 0); std::string joinPath(const std::string &lhs, const std::string &rhs); const char *getBuiltinAsString(EBuiltInOps::Type builtin); -const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin); const char *getAdditionalBuiltinAsString(EBuiltInOps::Type builtin); class Storage { diff --git a/shared/source/built_ins/built_ins_storage.cpp b/shared/source/built_ins/built_ins_storage.cpp index 960acfaede..ef30318a78 100644 --- a/shared/source/built_ins/built_ins_storage.cpp +++ b/shared/source/built_ins/built_ins_storage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -24,7 +24,7 @@ const char *getBuiltinAsString(EBuiltInOps::Type builtin) { } switch (builtin) { default: - return getUnknownBuiltinAsString(builtin); + return "unknown"; case EBuiltInOps::AuxTranslation: return "aux_translation.builtin_kernel"; case EBuiltInOps::CopyBufferToBuffer: diff --git a/shared/source/built_ins/builtinops/CMakeLists.txt b/shared/source/built_ins/builtinops/CMakeLists.txt index 51c17e7296..309e612d96 100644 --- a/shared/source/built_ins/builtinops/CMakeLists.txt +++ b/shared/source/built_ins/builtinops/CMakeLists.txt @@ -1,12 +1,12 @@ # -# Copyright (C) 2020-2021 Intel Corporation +# Copyright (C) 2020-2022 Intel Corporation # # SPDX-License-Identifier: MIT # set(NEO_CORE_SRCS_BUILT_INS_OPS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}built_in_ops.h + ${CMAKE_CURRENT_SOURCE_DIR}/built_in_ops.h ) add_subdirectories() diff --git a/shared/source/built_ins/unknown_built_in_name.cpp b/shared/source/built_ins/unknown_built_in_name.cpp deleted file mode 100644 index c68ecbd8fa..0000000000 --- a/shared/source/built_ins/unknown_built_in_name.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (C) 2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "shared/source/built_ins/built_ins.h" - -namespace NEO { - -const char *getUnknownBuiltinAsString(EBuiltInOps::Type builtin) { - return "unknown"; -} -} // namespace NEO diff --git a/shared/test/common/libult/CMakeLists.txt b/shared/test/common/libult/CMakeLists.txt index d0707e8819..e107bb1158 100644 --- a/shared/test/common/libult/CMakeLists.txt +++ b/shared/test/common/libult/CMakeLists.txt @@ -77,7 +77,7 @@ set(neo_libult_common_SRCS_LIB_ULT ${NEO_SHARED_TEST_DIRECTORY}/common/fixtures/tbx_command_stream_fixture.h ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/execution_environment_helper.cpp ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/execution_environment_helper.h - ${NEO_SHARED_TEST_DIRECTORY}/common/helpers${BRANCH_DIR_SUFFIX}kernel_binary_helper_hash_value.cpp + ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/kernel_binary_helper_hash_value.cpp ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/kernel_binary_helper.cpp ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/kernel_binary_helper.h ${NEO_SHARED_TEST_DIRECTORY}/common/helpers/kernel_filename_helper.h