diff --git a/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp b/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp index 7cf2c4bbcb..f34d7525e3 100644 --- a/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp +++ b/level_zero/core/test/unit_tests/sources/builtin/built_in_tests_l0.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -49,3 +49,40 @@ TEST(BuiltInTestsL0, givenUseBindlessBuiltinDisabledInL0ApiWhenBinExtensionPasse TEST(BuiltInTestsL0, givenUseBindlessBuiltinEnabledInL0ApiWhenBinExtensionPassedThenNameHasBindlessPrefix) { givenUseBindlessBuiltinEnabledWhenBinExtensionPassedThenNameHasBindlessPrefix(); } + +TEST(BuiltInTestsL0, GivenBindlessConfigWhenGettingBuiltinResourceThenResourceSizeIsNonZero) { + + DebugManagerStateRestore dbgRestorer; + DebugManager.flags.UseBindlessMode.set(1); + + auto hwInfo = *defaultHwInfo; + auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); + auto mockBuiltinsLib = std::unique_ptr(new MockBuiltinsLib()); + + ASSERT_LE(2u, mockBuiltinsLib->allStorages.size()); + + bool bindlessFound = false; + + auto &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily); + std::string resourceNameGeneric = createBuiltinResourceName(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary)); + std::string resourceNameForPlatformType = createBuiltinResourceName(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary), + getFamilyNameWithType(hwInfo), + hwHelper.getDefaultRevisionId(hwInfo)); + std::string resourceNameForPlatformTypeAndStepping = createBuiltinResourceName(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::getExtension(BuiltinCode::ECodeType::Binary), + getFamilyNameWithType(hwInfo), + hwInfo.platform.usRevId); + + for (const auto &storage : mockBuiltinsLib->allStorages) { + if (storage->load(resourceNameForPlatformTypeAndStepping).size() != 0) { + bindlessFound = true; + } + } + + EXPECT_TRUE(bindlessFound); + + EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferToBuffer, BuiltinCode::ECodeType::Binary, *device).size()); + EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::CopyBufferRect, BuiltinCode::ECodeType::Binary, *device).size()); + EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::FillBuffer, BuiltinCode::ECodeType::Binary, *device).size()); + EXPECT_NE(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::QueryKernelTimestamps, BuiltinCode::ECodeType::Binary, *device).size()); + EXPECT_EQ(0u, mockBuiltinsLib->getBuiltinResource(EBuiltInOps::COUNT, BuiltinCode::ECodeType::Binary, *device).size()); +} diff --git a/shared/source/built_ins/builtins_binary.cmake b/shared/source/built_ins/builtins_binary.cmake index b05d171729..9c3364c6e7 100644 --- a/shared/source/built_ins/builtins_binary.cmake +++ b/shared/source/built_ins/builtins_binary.cmake @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2022 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -14,7 +14,7 @@ add_subdirectory(registry) list(APPEND BIND_MODES "bindful" - # "bindless" + "bindless" ) set(GENERATED_BUILTINS diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt index 76d0f0a35b..769e2a1009 100644 --- a/shared/source/built_ins/kernels/CMakeLists.txt +++ b/shared/source/built_ins/kernels/CMakeLists.txt @@ -190,6 +190,11 @@ macro(macro_for_each_core_type) set_target_properties(${target_name} PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}/${family_name_with_type}") foreach(MODE ${BIND_MODES}) unset(BUILTINS_COMMANDS) + + if((${MODE} STREQUAL "bindless") AND (NOT BUILD_WITH_L0 OR("${CORE_TYPE}" STREQUAL "GEN8"))) + continue() + endif() + foreach(GENERATED_BUILTIN ${GENERATED_BUILTINS}) compile_builtin(${CORE_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) endforeach()