Skip to content

Commit 896e01c

Browse files
Require exact revision when getting binary builtin for PVC
this change also implements logic for recompilation of builtin from spv in L0 in case when binary resource is not available Related-To: NEO-6170 Signed-off-by: Mateusz Jablonski <[email protected]>
1 parent c92a4ac commit 896e01c

File tree

19 files changed

+261
-27
lines changed

19 files changed

+261
-27
lines changed

level_zero/core/source/builtin/builtin_functions_lib_impl.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,16 +227,28 @@ Kernel *BuiltinFunctionsLibImpl::getImageFunction(ImageBuiltin func) {
227227
std::unique_ptr<BuiltinFunctionsLibImpl::BuiltinData> BuiltinFunctionsLibImpl::loadBuiltIn(NEO::EBuiltInOps::Type builtin, const char *builtInName) {
228228
using BuiltInCodeType = NEO::BuiltinCode::ECodeType;
229229

230-
auto builtInCodeType = NEO::DebugManager.flags.RebuildPrecompiledKernels.get() ? BuiltInCodeType::Intermediate : BuiltInCodeType::Binary;
231-
auto builtInCode = builtInsLib->getBuiltinsLib().getBuiltinCode(builtin, builtInCodeType, *device->getNEODevice());
230+
StackVec<BuiltInCodeType, 2> supportedTypes{};
231+
if (!NEO::DebugManager.flags.RebuildPrecompiledKernels.get()) {
232+
supportedTypes.push_back(BuiltInCodeType::Binary);
233+
}
234+
supportedTypes.push_back(BuiltInCodeType::Intermediate);
235+
236+
NEO::BuiltinCode builtinCode{};
237+
238+
for (auto &builtinCodeType : supportedTypes) {
239+
builtinCode = builtInsLib->getBuiltinsLib().getBuiltinCode(builtin, builtinCodeType, *device->getNEODevice());
240+
if (!builtinCode.resource.empty()) {
241+
break;
242+
}
243+
}
232244

233245
[[maybe_unused]] ze_result_t res;
234246
std::unique_ptr<Module> module;
235247
ze_module_handle_t moduleHandle;
236248
ze_module_desc_t moduleDesc = {};
237-
moduleDesc.format = builtInCode.type == BuiltInCodeType::Binary ? ZE_MODULE_FORMAT_NATIVE : ZE_MODULE_FORMAT_IL_SPIRV;
238-
moduleDesc.pInputModule = reinterpret_cast<uint8_t *>(&builtInCode.resource[0]);
239-
moduleDesc.inputSize = builtInCode.resource.size();
249+
moduleDesc.format = builtinCode.type == BuiltInCodeType::Binary ? ZE_MODULE_FORMAT_NATIVE : ZE_MODULE_FORMAT_IL_SPIRV;
250+
moduleDesc.pInputModule = reinterpret_cast<uint8_t *>(&builtinCode.resource[0]);
251+
moduleDesc.inputSize = builtinCode.resource.size();
240252
res = device->createModule(&moduleDesc, &moduleHandle, nullptr, ModuleType::Builtin);
241253
UNRECOVERABLE_IF(res != ZE_RESULT_SUCCESS);
242254

level_zero/core/test/unit_tests/mocks/mock_device_recompile_built_ins.h

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,41 @@
55
*
66
*/
77

8-
#include "level_zero/core/source/device/device_imp.h"
98
#include "level_zero/core/source/module/module_imp.h"
109
#include "level_zero/core/test/unit_tests/mocks/mock_device.h"
10+
#include "level_zero/core/test/unit_tests/mocks/mock_kernel.h"
1111

1212
namespace L0 {
1313
namespace ult {
1414

1515
struct MockDeviceForRebuildBuilins : public Mock<DeviceImp> {
1616

1717
struct MockModuleForRebuildBuiltins : public ModuleImp {
18-
MockModuleForRebuildBuiltins(Device *device) : ModuleImp(device, nullptr) {}
18+
MockModuleForRebuildBuiltins(Device *device, ModuleType type) : ModuleImp(device, nullptr, type) {}
1919

2020
ze_result_t createKernel(const ze_kernel_desc_t *desc,
2121
ze_kernel_handle_t *phFunction) override {
2222

23-
*phFunction = nullptr;
23+
*phFunction = new Mock<Kernel>();
2424
return ZE_RESULT_SUCCESS;
2525
}
2626
};
2727

28-
MockDeviceForRebuildBuilins(L0::Device *device) : Mock(device->getNEODevice(), static_cast<NEO::ExecutionEnvironment *>(device->getExecEnvironment())) {
29-
driverHandle = device->getDriverHandle();
30-
builtins = BuiltinFunctionsLib::create(this, neoDevice->getBuiltIns());
31-
}
32-
~MockDeviceForRebuildBuilins() {
28+
MockDeviceForRebuildBuilins(NEO::Device *device) : Mock(device, device->getExecutionEnvironment()) {
3329
}
3430

3531
ze_result_t createModule(const ze_module_desc_t *desc,
3632
ze_module_handle_t *module,
37-
ze_module_build_log_handle_t *buildLog) override {
33+
ze_module_build_log_handle_t *buildLog, ModuleType type) override {
3834

39-
createModuleCalled = true;
40-
*module = new MockModuleForRebuildBuiltins(this);
35+
if (desc) {
36+
formatForModule = desc->format;
37+
}
38+
*module = new MockModuleForRebuildBuiltins(this, type);
4139

4240
return ZE_RESULT_SUCCESS;
4341
}
44-
45-
bool createModuleCalled = false;
42+
ze_module_format_t formatForModule{};
4643
};
4744
} // namespace ult
4845
} // namespace L0

level_zero/core/test/unit_tests/sources/builtin/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,8 @@ target_sources(${TARGET_NAME} PRIVATE
1010
${CMAKE_CURRENT_SOURCE_DIR}/built_in_tests_l0.cpp
1111
${CMAKE_CURRENT_SOURCE_DIR}/builtin_functions_tests.cpp
1212
)
13+
if(TARGET ${BUILTINS_SPIRV_LIB_NAME})
14+
target_sources(${TARGET_NAME} PRIVATE
15+
${CMAKE_CURRENT_SOURCE_DIR}/built_in_spv_tests_l0.cpp
16+
)
17+
endif()
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "shared/source/built_ins/built_ins.h"
9+
#include "shared/test/common/fixtures/device_fixture.h"
10+
#include "shared/test/common/mocks/mock_builtinslib.h"
11+
#include "shared/test/common/test_macros/test.h"
12+
13+
#include "level_zero/core/source/builtin/builtin_functions_lib_impl.h"
14+
#include "level_zero/core/test/unit_tests/mocks/mock_device_recompile_built_ins.h"
15+
16+
using namespace NEO;
17+
18+
using BuiltInTestL0 = Test<NEO::DeviceFixture>;
19+
20+
TEST_F(BuiltInTestL0, GivenBuiltinTypeIntermediateWhenGettingBuiltinResourceForNotRegisteredRevisionThenResourceSizeIsNonZero) {
21+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
22+
auto mockBuiltinsLib = std::unique_ptr<MockBuiltinsLib>(new MockBuiltinsLib());
23+
24+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
25+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferRect, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
26+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillBuffer, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
27+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToImage3d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
28+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImage3dToBuffer, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
29+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage1d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
30+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage2d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
31+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage3d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
32+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage1d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
33+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage2d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
34+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage3d, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
35+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::COUNT, BuiltinCode::ECodeType::Intermediate, *pDevice).size());
36+
}
37+
38+
HWTEST_F(BuiltInTestL0, givenDeviceWithUnregisteredBinaryBuiltinWhenGettingBuiltinKernelThenTakeBinaryBuiltinFromDefaultRevision) {
39+
pDevice->incRefInternal();
40+
L0::ult::MockDeviceForRebuildBuilins deviceL0(pDevice);
41+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
42+
L0::BuiltinFunctionsLibImpl builtinFunctionsLib{&deviceL0, pDevice->getBuiltIns()};
43+
for (uint32_t builtId = 0; builtId < static_cast<uint32_t>(L0::Builtin::COUNT); builtId++) {
44+
deviceL0.formatForModule = {};
45+
ASSERT_NE(nullptr, builtinFunctionsLib.getFunction(static_cast<L0::Builtin>(builtId)));
46+
EXPECT_EQ(ZE_MODULE_FORMAT_NATIVE, deviceL0.formatForModule);
47+
}
48+
}

level_zero/core/test/unit_tests/xe_hpc_core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
if(TESTS_XE_HPC_CORE)
88
target_sources(${TARGET_NAME} PRIVATE
99
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
10+
${CMAKE_CURRENT_SOURCE_DIR}/built_in_xe_hpc_core_tests_l0.cpp
1011
${CMAKE_CURRENT_SOURCE_DIR}/enable_l0_mocks_xe_hpc_core.cpp
1112
${CMAKE_CURRENT_SOURCE_DIR}/test_cmdlist_xe_hpc_core.cpp
1213
${CMAKE_CURRENT_SOURCE_DIR}/test_cmdqueue_xe_hpc_core.cpp
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "shared/source/built_ins/built_ins.h"
9+
#include "shared/test/common/fixtures/device_fixture.h"
10+
#include "shared/test/common/mocks/mock_builtinslib.h"
11+
#include "shared/test/common/test_macros/test.h"
12+
13+
#include "level_zero/core/source/builtin/builtin_functions_lib_impl.h"
14+
#include "level_zero/core/test/unit_tests/mocks/mock_device_recompile_built_ins.h"
15+
16+
namespace L0 {
17+
namespace ult {
18+
19+
using XeHpcCoreBuiltInTestL0 = Test<NEO::DeviceFixture>;
20+
21+
HWTEST_EXCLUDE_PRODUCT(BuiltInSharedTest, GivenBuiltinTypeBinaryWhenGettingBuiltinResourceForNotRegisteredRevisionThenBuiltinFromDefaultRevisionIsTaken, IGFX_XE_HPC_CORE);
22+
HWTEST_EXCLUDE_PRODUCT(BuiltInTestL0, givenDeviceWithUnregisteredBinaryBuiltinWhenGettingBuiltinKernelThenTakeBinaryBuiltinFromDefaultRevision, IGFX_XE_HPC_CORE);
23+
24+
HWTEST2_F(XeHpcCoreBuiltInTestL0, givenDeviceWithUnregisteredBinaryBuiltinWhenGettingBuiltinKernelThenFallbackToIntermediate, IsXeHpcCore) {
25+
pDevice->incRefInternal();
26+
L0::ult::MockDeviceForRebuildBuilins deviceL0(pDevice);
27+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
28+
L0::BuiltinFunctionsLibImpl builtinFunctionsLib{&deviceL0, pDevice->getBuiltIns()};
29+
for (uint32_t builtId = 0; builtId < static_cast<uint32_t>(L0::Builtin::COUNT); builtId++) {
30+
deviceL0.formatForModule = {};
31+
ASSERT_NE(nullptr, builtinFunctionsLib.getFunction(static_cast<L0::Builtin>(builtId)));
32+
EXPECT_EQ(ZE_MODULE_FORMAT_IL_SPIRV, deviceL0.formatForModule);
33+
}
34+
}
35+
36+
HWTEST2_F(XeHpcCoreBuiltInTestL0, GivenBuiltinTypeBinaryWhenGettingBuiltinResourceForNotRegisteredRevisionThenResourceSizeIsZero, IsXeHpcCore) {
37+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
38+
auto mockBuiltinsLib = std::unique_ptr<MockBuiltinsLib>(new MockBuiltinsLib());
39+
40+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::ECodeType::Binary, *pDevice).size());
41+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferRect, BuiltinCode::ECodeType::Binary, *pDevice).size());
42+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillBuffer, BuiltinCode::ECodeType::Binary, *pDevice).size());
43+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToImage3d, BuiltinCode::ECodeType::Binary, *pDevice).size());
44+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImage3dToBuffer, BuiltinCode::ECodeType::Binary, *pDevice).size());
45+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage1d, BuiltinCode::ECodeType::Binary, *pDevice).size());
46+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage2d, BuiltinCode::ECodeType::Binary, *pDevice).size());
47+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage3d, BuiltinCode::ECodeType::Binary, *pDevice).size());
48+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage1d, BuiltinCode::ECodeType::Binary, *pDevice).size());
49+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage2d, BuiltinCode::ECodeType::Binary, *pDevice).size());
50+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage3d, BuiltinCode::ECodeType::Binary, *pDevice).size());
51+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::COUNT, BuiltinCode::ECodeType::Binary, *pDevice).size());
52+
}
53+
} // namespace ult
54+
} // namespace L0

opencl/test/unit_test/built_ins/built_in_tests.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "shared/test/common/mocks/mock_compiler_interface.h"
2020
#include "shared/test/common/mocks/mock_compilers.h"
2121
#include "shared/test/common/mocks/mock_memory_manager.h"
22+
#include "shared/test/common/mocks/ult_device_factory.h"
2223
#include "shared/test/common/test_macros/test.h"
2324
#include "shared/test/unit_test/utilities/base_object_utils.h"
2425

@@ -1444,6 +1445,24 @@ HWCMDTEST_F(IGFX_GEN8_CORE, BuiltInTests, GivenBuiltinTypeBinaryWhenGettingBuilt
14441445
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::COUNT, BuiltinCode::ECodeType::Binary, *pDevice).size());
14451446
}
14461447

1448+
TEST_F(BuiltInTests, GivenBuiltinTypeSourceWhenGettingBuiltinResourceForNotRegisteredRevisionThenResourceSizeIsNonZero) {
1449+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
1450+
auto mockBuiltinsLib = std::unique_ptr<MockBuiltinsLib>(new MockBuiltinsLib());
1451+
1452+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::ECodeType::Source, *pDevice).size());
1453+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferRect, BuiltinCode::ECodeType::Source, *pDevice).size());
1454+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillBuffer, BuiltinCode::ECodeType::Source, *pDevice).size());
1455+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToImage3d, BuiltinCode::ECodeType::Source, *pDevice).size());
1456+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImage3dToBuffer, BuiltinCode::ECodeType::Source, *pDevice).size());
1457+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage1d, BuiltinCode::ECodeType::Source, *pDevice).size());
1458+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage2d, BuiltinCode::ECodeType::Source, *pDevice).size());
1459+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyImageToImage3d, BuiltinCode::ECodeType::Source, *pDevice).size());
1460+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage1d, BuiltinCode::ECodeType::Source, *pDevice).size());
1461+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage2d, BuiltinCode::ECodeType::Source, *pDevice).size());
1462+
EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillImage3d, BuiltinCode::ECodeType::Source, *pDevice).size());
1463+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::COUNT, BuiltinCode::ECodeType::Source, *pDevice).size());
1464+
}
1465+
14471466
TEST_F(BuiltInTests, GivenTypeAnyWhenCreatingProgramFromCodeThenValidPointerIsReturned) {
14481467
auto builtinsLib = std::unique_ptr<BuiltinsLib>(new BuiltinsLib());
14491468
const BuiltinCode bc = builtinsLib->getBuiltinCode(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::ECodeType::Any, *pDevice);

opencl/test/unit_test/helpers/hw_helper_tests.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,3 +1414,8 @@ HWTEST2_F(HwHelperTest, givenAtsOrDg2WhenDisableL3ForDebugCalledThenTrueIsReturn
14141414
const auto &hwHelper = HwHelper::get(renderCoreFamily);
14151415
EXPECT_TRUE(hwHelper.disableL3CacheForDebug());
14161416
}
1417+
1418+
HWTEST_F(HwHelperTest, givenHwHelperWhenGettingIfRevisionSpecificBinaryBuiltinIsRequiredThenFalseIsReturned) {
1419+
auto &hwHelper = NEO::HwHelper::get(defaultHwInfo->platform.eRenderCoreFamily);
1420+
EXPECT_FALSE(hwHelper.isRevisionSpecificBinaryBuiltinRequired());
1421+
}

opencl/test/unit_test/xe_hpc_core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ if(TESTS_XE_HPC_CORE)
1313
set(IGDRCL_SRCS_tests_xe_hpc_core
1414
${IGDRCL_SRCS_tests_xe_hpc_core_excludes}
1515
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
16+
${CMAKE_CURRENT_SOURCE_DIR}/built_in_xe_hpc_core_tests_ocl.cpp
1617
${CMAKE_CURRENT_SOURCE_DIR}/cmd_parse_tests_xe_hpc_core.cpp
1718
${CMAKE_CURRENT_SOURCE_DIR}/test_cmds_programming_xe_hpc_core.cpp
1819
${CMAKE_CURRENT_SOURCE_DIR}/copy_engine_tests_xe_hpc_core.cpp
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "shared/test/common/fixtures/device_fixture.h"
9+
#include "shared/test/common/mocks/mock_builtinslib.h"
10+
#include "shared/test/common/test_macros/test.h"
11+
using namespace NEO;
12+
using XeHpcCoreBuiltInTests = Test<DeviceFixture>;
13+
14+
XE_HPC_CORETEST_F(XeHpcCoreBuiltInTests, GivenBuiltinTypeBinaryWhenGettingBuiltinResourceForNotRegisteredRevisionThenBinaryBuiltinIsNotAvailable) {
15+
pDevice->getRootDeviceEnvironment().getMutableHardwareInfo()->platform.usRevId += 0xdead;
16+
auto mockBuiltinsLib = std::unique_ptr<MockBuiltinsLib>(new MockBuiltinsLib());
17+
18+
const std::array<uint32_t, 11> builtinTypes{EBuiltInOps::CopyBufferToBuffer,
19+
EBuiltInOps::CopyBufferRect,
20+
EBuiltInOps::FillBuffer,
21+
EBuiltInOps::CopyBufferToImage3d,
22+
EBuiltInOps::CopyImage3dToBuffer,
23+
EBuiltInOps::CopyImageToImage1d,
24+
EBuiltInOps::CopyImageToImage2d,
25+
EBuiltInOps::CopyImageToImage3d,
26+
EBuiltInOps::FillImage1d,
27+
EBuiltInOps::FillImage2d,
28+
EBuiltInOps::FillImage3d};
29+
30+
for (auto &builtinType : builtinTypes) {
31+
EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(builtinType, BuiltinCode::ECodeType::Binary, *pDevice).size());
32+
}
33+
}

opencl/test/unit_test/xe_hpc_core/excludes_xe_hpc_core.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,6 @@ HWTEST_EXCLUDE_PRODUCT(PipeControlHelperTestsXeHPAndLater, WhenGettingSizeForAdd
5454
HWTEST_EXCLUDE_PRODUCT(HwHelperTest, whenQueryingMaxNumSamplersThenReturnSixteen, IGFX_XE_HPC_CORE);
5555
HWTEST_EXCLUDE_PRODUCT(MemoryManagerGetAlloctionDataTests, givenCommandBufferAllocationTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested, IGFX_XE_HPC_CORE);
5656
HWTEST_EXCLUDE_PRODUCT(MultiDeviceStorageInfoTest, givenSingleTileCsrWhenAllocatingCsrSpecificAllocationsThenStoreThemInSystemMemory, IGFX_XE_HPC_CORE);
57-
HWTEST_EXCLUDE_PRODUCT(HwHelperTest, givenKernelInfoWhenCheckingRequiresAuxResolvesThenCorrectValuesAreReturned, IGFX_XE_HPC_CORE);
57+
HWTEST_EXCLUDE_PRODUCT(HwHelperTest, givenKernelInfoWhenCheckingRequiresAuxResolvesThenCorrectValuesAreReturned, IGFX_XE_HPC_CORE);
58+
HWTEST_EXCLUDE_PRODUCT(HwHelperTest, givenHwHelperWhenGettingIfRevisionSpecificBinaryBuiltinIsRequiredThenFalseIsReturned, IGFX_XE_HPC_CORE);
59+
HWTEST_EXCLUDE_PRODUCT(BuiltInSharedTest, GivenBuiltinTypeBinaryWhenGettingBuiltinResourceForNotRegisteredRevisionThenBuiltinFromDefaultRevisionIsTaken, IGFX_XE_HPC_CORE);

shared/source/built_ins/built_ins_storage.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,16 @@ BuiltinResourceT BuiltinsLib::getBuiltinResource(EBuiltInOps::Type builtin, Buil
197197
getFamilyNameWithType(hwInfo),
198198
hwInfo.platform.usRevId);
199199

200-
for (auto &rn : {resourceNameForPlatformTypeAndStepping, resourceNameForPlatformType, resourceNameGeneric}) { // first look for dedicated version, only fallback to generic one
200+
StackVec<const std::string *, 3> resourcesToLookup;
201+
resourcesToLookup.push_back(&resourceNameForPlatformTypeAndStepping);
202+
if (BuiltinCode::ECodeType::Binary != requestedCodeType || !hwHelper.isRevisionSpecificBinaryBuiltinRequired()) {
203+
resourcesToLookup.push_back(&resourceNameForPlatformType);
204+
resourcesToLookup.push_back(&resourceNameGeneric);
205+
}
206+
for (auto &rn : resourcesToLookup) { // first look for dedicated version, only fallback to generic one
201207
for (auto &s : allStorages) {
202-
bc = s.get()->load(rn);
208+
UNRECOVERABLE_IF(!rn);
209+
bc = s.get()->load(*rn);
203210
if (bc.size() != 0) {
204211
return bc;
205212
}

0 commit comments

Comments
 (0)