Add allBufferArgsStateful field to Kernel
Change-Id: I885ede725830964374421eff621cf01cecc4b17e Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
This commit is contained in:
parent
c982e8b33f
commit
cd62be59e1
|
@ -7,6 +7,7 @@
|
|||
set(RUNTIME_SRCS_KERNEL
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_kernel_info.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/get_additional_kernel_info.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/grf_config.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_transformer.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_transformer.h
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright (C) 2019 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "runtime/kernel/kernel.h"
|
||||
|
||||
namespace OCLRT {
|
||||
void Kernel::getAdditionalInfo(cl_kernel_info paramName, const void *¶mValue, size_t ¶mValueSizeRet) const {
|
||||
}
|
||||
} // namespace OCLRT
|
|
@ -330,6 +330,7 @@ cl_int Kernel::initialize() {
|
|||
kernelArgHandlers[i] = &Kernel::setArgBuffer;
|
||||
kernelArguments[i].type = BUFFER_OBJ;
|
||||
usingBuffers = true;
|
||||
allBufferArgsStateful &= static_cast<uint32_t>(argInfo.pureStatefulBufferAccess);
|
||||
this->auxTranslationRequired |= !kernelInfo.kernelArgInfo[i].pureStatefulBufferAccess &&
|
||||
HwHelper::renderCompressedBuffersSupported(getDevice().getHardwareInfo());
|
||||
} else if (argInfo.isImage) {
|
||||
|
@ -459,6 +460,7 @@ cl_int Kernel::getInfo(cl_kernel_info paramName, size_t paramValueSize,
|
|||
break;
|
||||
|
||||
default:
|
||||
getAdditionalInfo(paramName, pSrc, srcSize);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -131,6 +131,7 @@ class Kernel : public BaseObject<_cl_kernel> {
|
|||
|
||||
cl_int getInfo(cl_kernel_info paramName, size_t paramValueSize,
|
||||
void *paramValue, size_t *paramValueSizeRet) const;
|
||||
void getAdditionalInfo(cl_kernel_info paramName, const void *¶mValue, size_t ¶mValueSizeRet) const;
|
||||
|
||||
cl_int getArgInfo(cl_uint argIndx, cl_kernel_arg_info paramName,
|
||||
size_t paramValueSize, void *paramValue, size_t *paramValueSizeRet) const;
|
||||
|
@ -335,6 +336,8 @@ class Kernel : public BaseObject<_cl_kernel> {
|
|||
|
||||
std::vector<size_t> slmSizes;
|
||||
|
||||
uint32_t allBufferArgsStateful = CL_TRUE;
|
||||
|
||||
uint32_t slmTotalSize;
|
||||
bool isBuiltIn;
|
||||
const bool isParentKernel;
|
||||
|
|
|
@ -2444,3 +2444,51 @@ TEST(KernelTest, givenKernelUsesPrivateMemoryWhenDeviceReleasedBeforeKernelThenK
|
|||
mockKernel.reset(nullptr);
|
||||
executionEnvironment->decRefInternal();
|
||||
}
|
||||
|
||||
TEST(KernelTest, givenAllArgumentsAreStatefulBuffersWhenInitializingThenAllBufferArgsStatefulIsTrue) {
|
||||
std::unique_ptr<MockDevice> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
|
||||
|
||||
std::vector<KernelArgInfo> kernelArgInfo(2);
|
||||
kernelArgInfo[0].isBuffer = true;
|
||||
kernelArgInfo[1].isBuffer = true;
|
||||
kernelArgInfo[0].pureStatefulBufferAccess = true;
|
||||
kernelArgInfo[1].pureStatefulBufferAccess = true;
|
||||
|
||||
MockKernelWithInternals kernel{*device};
|
||||
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
|
||||
|
||||
kernel.mockKernel->initialize();
|
||||
EXPECT_TRUE(kernel.mockKernel->allBufferArgsStateful);
|
||||
}
|
||||
|
||||
TEST(KernelTest, givenAllArgumentsAreBuffersButNotAllAreStatefulWhenInitializingThenAllBufferArgsStatefulIsFalse) {
|
||||
std::unique_ptr<MockDevice> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
|
||||
|
||||
std::vector<KernelArgInfo> kernelArgInfo(2);
|
||||
kernelArgInfo[0].isBuffer = true;
|
||||
kernelArgInfo[1].isBuffer = true;
|
||||
kernelArgInfo[0].pureStatefulBufferAccess = true;
|
||||
kernelArgInfo[1].pureStatefulBufferAccess = false;
|
||||
|
||||
MockKernelWithInternals kernel{*device};
|
||||
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
|
||||
|
||||
kernel.mockKernel->initialize();
|
||||
EXPECT_FALSE(kernel.mockKernel->allBufferArgsStateful);
|
||||
}
|
||||
|
||||
TEST(KernelTest, givenNotAllArgumentsAreBuffersButAllBuffersAreStatefulWhenInitializingThenAllBufferArgsStatefulIsTrue) {
|
||||
std::unique_ptr<MockDevice> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
|
||||
|
||||
std::vector<KernelArgInfo> kernelArgInfo(2);
|
||||
kernelArgInfo[0].isBuffer = true;
|
||||
kernelArgInfo[1].isBuffer = false;
|
||||
kernelArgInfo[0].pureStatefulBufferAccess = true;
|
||||
kernelArgInfo[1].pureStatefulBufferAccess = false;
|
||||
|
||||
MockKernelWithInternals kernel{*device};
|
||||
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
|
||||
|
||||
kernel.mockKernel->initialize();
|
||||
EXPECT_TRUE(kernel.mockKernel->allBufferArgsStateful);
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace OCLRT {
|
|||
class MockKernel : public Kernel {
|
||||
public:
|
||||
using Kernel::addAllocationToCacheFlushVector;
|
||||
using Kernel::allBufferArgsStateful;
|
||||
using Kernel::auxTranslationRequired;
|
||||
using Kernel::isSchedulerKernel;
|
||||
using Kernel::kernelArgRequiresCacheFlush;
|
||||
|
|
Loading…
Reference in New Issue