Program refactor

* decouple program_info
* move global allocations relocation to linker
* remove obsolete tests
* initial cleanup to kernel_info kernelInfo
* unified patchtoken validation

Change-Id: I0567cd6d607b4f3cf44e6caf33681f6210760f76
This commit is contained in:
Jaroslaw Chodor
2020-01-11 18:25:26 +01:00
committed by sys_ocldev
parent 570b09850d
commit f057712fa7
68 changed files with 3442 additions and 1705 deletions

View File

@@ -2075,7 +2075,7 @@ HWTEST_F(KernelResidencyTest, test_MakeArgsResidentCheckImageFromImage) {
KernelArgInfo kernelArgInfo;
kernelArgInfo.isImage = true;
pKernelInfo->kernelArgInfo.push_back(kernelArgInfo);
pKernelInfo->kernelArgInfo.push_back(std::move(kernelArgInfo));
auto program = std::make_unique<MockProgram>(*pDevice->getExecutionEnvironment());
program->setContext(&context);
@@ -2494,19 +2494,25 @@ TEST(KernelInfoTest, getArgNumByName) {
EXPECT_EQ(-1, info.getArgNumByName(""));
KernelArgInfo kai;
kai.name = "arg1";
info.kernelArgInfo.push_back(kai);
kai.metadataExtended = std::make_unique<ArgTypeMetadataExtended>();
kai.metadataExtended->argName = "arg1";
info.kernelArgInfo.push_back(std::move(kai));
EXPECT_EQ(-1, info.getArgNumByName(""));
EXPECT_EQ(-1, info.getArgNumByName("arg2"));
EXPECT_EQ(0, info.getArgNumByName("arg1"));
kai.name = "arg2";
info.kernelArgInfo.push_back(kai);
kai = {};
kai.metadataExtended = std::make_unique<ArgTypeMetadataExtended>();
kai.metadataExtended->argName = "arg2";
info.kernelArgInfo.push_back(std::move(kai));
EXPECT_EQ(0, info.getArgNumByName("arg1"));
EXPECT_EQ(1, info.getArgNumByName("arg2"));
info.kernelArgInfo[0].metadataExtended.reset();
EXPECT_EQ(-1, info.getArgNumByName("arg1"));
}
TEST(KernelTest, getInstructionHeapSizeForExecutionModelReturnsZeroForNormalKernel) {
@@ -2644,15 +2650,16 @@ TEST(KernelTest, givenFtrRenderCompressedBuffersWhenInitializingArgsWithNonState
context->contextType = ContextType::CONTEXT_TYPE_UNRESTRICTIVE;
MockKernelWithInternals kernel(*device, context.get());
kernel.kernelInfo.kernelArgInfo.resize(1);
kernel.kernelInfo.kernelArgInfo.at(0).typeStr = "char *";
kernel.kernelInfo.kernelArgInfo.at(0).isBuffer = true;
kernel.kernelInfo.kernelArgInfo[0].metadataExtended = std::make_unique<NEO::ArgTypeMetadataExtended>();
kernel.kernelInfo.kernelArgInfo[0].metadataExtended->type = "char *";
kernel.kernelInfo.kernelArgInfo[0].isBuffer = true;
capabilityTable.ftrRenderCompressedBuffers = false;
kernel.kernelInfo.kernelArgInfo.at(0).pureStatefulBufferAccess = true;
kernel.kernelInfo.kernelArgInfo[0].pureStatefulBufferAccess = true;
kernel.mockKernel->initialize();
EXPECT_FALSE(kernel.mockKernel->isAuxTranslationRequired());
kernel.kernelInfo.kernelArgInfo.at(0).pureStatefulBufferAccess = false;
kernel.kernelInfo.kernelArgInfo[0].pureStatefulBufferAccess = false;
kernel.mockKernel->initialize();
EXPECT_FALSE(kernel.mockKernel->isAuxTranslationRequired());
@@ -2680,10 +2687,11 @@ TEST(KernelTest, givenDebugVariableSetWhenKernelHasStatefulBufferAccessThenMarkK
auto context = clUniquePtr(new MockContext(device.get()));
MockKernelWithInternals kernel(*device, context.get());
kernel.kernelInfo.kernelArgInfo.resize(1);
kernel.kernelInfo.kernelArgInfo.at(0).typeStr = "char *";
kernel.kernelInfo.kernelArgInfo.at(0).isBuffer = true;
kernel.kernelInfo.kernelArgInfo[0].metadataExtended = std::make_unique<NEO::ArgTypeMetadataExtended>();
kernel.kernelInfo.kernelArgInfo[0].metadataExtended->type = "char *";
kernel.kernelInfo.kernelArgInfo[0].isBuffer = true;
kernel.kernelInfo.kernelArgInfo.at(0).pureStatefulBufferAccess = false;
kernel.kernelInfo.kernelArgInfo[0].pureStatefulBufferAccess = false;
localHwInfo.capabilityTable.ftrRenderCompressedBuffers = false;
kernel.mockKernel->initialize();
@@ -2702,7 +2710,8 @@ TEST(KernelTest, givenKernelWithPairArgumentWhenItIsInitializedThenPatchImmediat
auto context = clUniquePtr(new MockContext(device.get()));
MockKernelWithInternals kernel(*device, context.get());
kernel.kernelInfo.kernelArgInfo.resize(1);
kernel.kernelInfo.kernelArgInfo.at(0).typeStr = "pair<char*, int>";
kernel.kernelInfo.kernelArgInfo[0].metadataExtended = std::make_unique<NEO::ArgTypeMetadataExtended>();
kernel.kernelInfo.kernelArgInfo[0].metadataExtended->type = "pair<char*, int>";
kernel.mockKernel->initialize();
EXPECT_EQ(&Kernel::setArgImmediate, kernel.mockKernel->kernelArgHandlers[0]);
@@ -2800,7 +2809,7 @@ TEST(KernelTest, givenAllArgumentsAreStatefulBuffersWhenInitializingThenAllBuffe
kernelArgInfo[1].pureStatefulBufferAccess = true;
MockKernelWithInternals kernel{*device};
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
kernel.kernelInfo.kernelArgInfo.swap(kernelArgInfo);
kernel.mockKernel->initialize();
EXPECT_TRUE(kernel.mockKernel->allBufferArgsStateful);
@@ -2816,7 +2825,7 @@ TEST(KernelTest, givenAllArgumentsAreBuffersButNotAllAreStatefulWhenInitializing
kernelArgInfo[1].pureStatefulBufferAccess = false;
MockKernelWithInternals kernel{*device};
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
kernel.kernelInfo.kernelArgInfo.swap(kernelArgInfo);
kernel.mockKernel->initialize();
EXPECT_FALSE(kernel.mockKernel->allBufferArgsStateful);
@@ -2832,7 +2841,7 @@ TEST(KernelTest, givenNotAllArgumentsAreBuffersButAllBuffersAreStatefulWhenIniti
kernelArgInfo[1].pureStatefulBufferAccess = false;
MockKernelWithInternals kernel{*device};
kernel.kernelInfo.kernelArgInfo = kernelArgInfo;
kernel.kernelInfo.kernelArgInfo.swap(kernelArgInfo);
kernel.mockKernel->initialize();
EXPECT_TRUE(kernel.mockKernel->allBufferArgsStateful);
@@ -3006,3 +3015,20 @@ TEST_F(KernelMultiRootDeviceTest, privateSurfaceHasCorrectRootDeviceIndex) {
ASSERT_NE(nullptr, privateSurface);
EXPECT_EQ(expectedRootDeviceIndex, privateSurface->getRootDeviceIndex());
}
TEST(KernelCreateTest, whenInitFailedThenReturnNull) {
struct MockProgram {
int getDevice(int) { return 0; }
void getSource(std::string &) {}
} mockProgram;
struct MockKernel {
MockKernel(MockProgram *, const KernelInfo &, int) {}
int initialize() { return -1; };
};
KernelInfo info;
info.gpuPointerSize = 8;
auto ret = Kernel::create<MockKernel>(&mockProgram, info, nullptr);
EXPECT_EQ(nullptr, ret);
}