diff --git a/level_zero/core/source/kernel/kernel_imp.cpp b/level_zero/core/source/kernel/kernel_imp.cpp index 8cbaadcae0..1e0ddc7698 100644 --- a/level_zero/core/source/kernel/kernel_imp.cpp +++ b/level_zero/core/source/kernel/kernel_imp.cpp @@ -753,5 +753,8 @@ const void *KernelImp::getCrossThread() { const void *KernelImp::getPerThread() { return getPerThreadData(); } +bool KernelImp::isInlineDataRequired() { + return getImmutableData()->getDescriptor().kernelAttributes.flags.passInlineData; +} } // namespace L0 diff --git a/level_zero/core/source/kernel/kernel_imp.h b/level_zero/core/source/kernel/kernel_imp.h index 847235c4d0..6d89c646fe 100644 --- a/level_zero/core/source/kernel/kernel_imp.h +++ b/level_zero/core/source/kernel/kernel_imp.h @@ -132,6 +132,7 @@ struct KernelImp : Kernel { const void *getDynamicStateHeap() override; const void *getCrossThread() override; const void *getPerThread() override; + bool isInlineDataRequired() override; protected: KernelImp() = default; diff --git a/level_zero/core/test/unit_tests/sources/kernel/CMakeLists.txt b/level_zero/core/test/unit_tests/sources/kernel/CMakeLists.txt new file mode 100644 index 0000000000..4fa2b3a9e5 --- /dev/null +++ b/level_zero/core/test/unit_tests/sources/kernel/CMakeLists.txt @@ -0,0 +1,10 @@ +# +# Copyright (C) 2020 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +target_sources(${TARGET_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel.cpp +) \ No newline at end of file diff --git a/level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp b/level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp new file mode 100644 index 0000000000..ade14f550c --- /dev/null +++ b/level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2020 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "test.h" + +#include "level_zero/core/test/unit_tests/mocks/mock_kernel.h" + +namespace L0 { +namespace ult { + +TEST(Kernel, givenPassInlineDataTrueWhenCallingIsInlineDataRequiredThenTrueIsReturned) { + Mock kernel; + + kernel.descriptor.kernelAttributes.flags.passInlineData = true; + EXPECT_TRUE(kernel.isInlineDataRequired()); +} + +TEST(Kernel, givenPassInlineDataFalseWhenCallingIsInlineDataRequiredThenFalseIsReturned) { + Mock kernel; + + kernel.descriptor.kernelAttributes.flags.passInlineData = false; + EXPECT_FALSE(kernel.isInlineDataRequired()); +} + +} // namespace ult +} // namespace L0 diff --git a/shared/source/kernel/dispatch_kernel_encoder_interface.h b/shared/source/kernel/dispatch_kernel_encoder_interface.h index 544b512236..aab406762f 100644 --- a/shared/source/kernel/dispatch_kernel_encoder_interface.h +++ b/shared/source/kernel/dispatch_kernel_encoder_interface.h @@ -39,6 +39,7 @@ struct DispatchKernelEncoderI { virtual const void *getDynamicStateHeap() = 0; virtual const void *getCrossThread() = 0; virtual const void *getPerThread() = 0; + virtual bool isInlineDataRequired() = 0; virtual ~DispatchKernelEncoderI() = default; protected: diff --git a/shared/test/unit_test/mocks/mock_dispatch_kernel_encoder_interface.h b/shared/test/unit_test/mocks/mock_dispatch_kernel_encoder_interface.h index 6324b2fb20..13fc6303f6 100644 --- a/shared/test/unit_test/mocks/mock_dispatch_kernel_encoder_interface.h +++ b/shared/test/unit_test/mocks/mock_dispatch_kernel_encoder_interface.h @@ -46,6 +46,7 @@ struct MockDispatchKernelEncoder : public DispatchKernelEncoderI { MOCK_METHOD0(getDynamicStateHeap, const void *()); MOCK_METHOD0(getCrossThread, const void *()); MOCK_METHOD0(getPerThread, const void *()); + MOCK_METHOD0(isInlineDataRequired, bool()); void expectAnyMockFunctionCall();