[10/n] Internal 4GB allocator.

- Sip kernel now uses Program

Change-Id: Ibba11a5686502084a8b7fa99732f8bc2ee78dcc5
This commit is contained in:
Mrozek, Michal
2018-03-06 15:29:06 +01:00
committed by sys_ocldev
parent 354eb346fe
commit 8b726368d5
7 changed files with 87 additions and 50 deletions

View File

@ -349,7 +349,7 @@ TEST(PreemptionTest, instructionHeapIsInvalidIfItSmallerThanSipKernel) {
mockBuiltins.overrideGlobalBuiltins();
{
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr,
sipPattern, sizeof(sipPattern)));
getSipProgramWithCustomBinary()));
mockBuiltins.overrideSipKernel(std::move(sipOverride));
}
@ -371,8 +371,7 @@ TEST(PreemptionTest, instructionHeapIsInvalidIfItDoesNotContainSipKernelAtTheBeg
MockBuiltins mockBuiltins;
mockBuiltins.overrideGlobalBuiltins();
{
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr,
sipPattern, sizeof(sipPattern)));
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr, getSipProgramWithCustomBinary()));
mockBuiltins.overrideSipKernel(std::move(sipOverride));
}
@ -386,16 +385,14 @@ TEST(PreemptionTest, instructionHeapIsValidIfItContainSipKernelAtTheBegining) {
auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::create<MockDevice>(nullptr));
mockDevice->setPreemptionMode(PreemptionMode::MidThread);
char sipPattern[] = {2, 3, 5, 11, 13, 17, 19, 23, 29, 31, 37, 39, 41};
instructionHeap.getSpace(sizeof(instructionHeapBuffer));
memcpy_s(instructionHeapBuffer, sizeof(instructionHeapBuffer), sipPattern, sizeof(sipPattern));
{
MockBuiltins mockBuiltins;
mockBuiltins.overrideGlobalBuiltins();
{
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr,
sipPattern, sizeof(sipPattern)));
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr, getSipProgramWithCustomBinary()));
memcpy_s(instructionHeapBuffer, sizeof(instructionHeapBuffer), sipOverride->getBinary(), sipOverride->getBinarySize());
mockBuiltins.overrideSipKernel(std::move(sipOverride));
}
@ -409,22 +406,20 @@ TEST(PreemptionTest, whenPreemptionModeIsMidThreadThenInstructionHeapSipKernelRe
LinearStream instructionHeap(instructionHeapBuffer, sizeof(instructionHeapBuffer));
auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::create<MockDevice>(nullptr));
mockDevice->setPreemptionMode(PreemptionMode::MidThread);
char sipPattern[] = {2, 3, 5, 11, 13, 17, 19, 23, 29, 31, 37, 39, 41};
{
size_t sipSize = 0u;
MockBuiltins mockBuiltins;
mockBuiltins.overrideGlobalBuiltins();
{
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr,
sipPattern, sizeof(sipPattern)));
auto sipOverride = std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel(OCLRT::SipKernelType::Csr, getSipProgramWithCustomBinary()));
sipSize = sipOverride->getBinarySize();
mockBuiltins.overrideSipKernel(std::move(sipOverride));
}
EXPECT_EQ(sizeof(sipPattern), PreemptionHelper::getInstructionHeapSipKernelReservedSize(*mockDevice));
EXPECT_EQ(sipSize, PreemptionHelper::getInstructionHeapSipKernelReservedSize(*mockDevice));
PreemptionHelper::initializeInstructionHeapSipKernelReservedBlock(instructionHeap, *mockDevice);
EXPECT_TRUE(PreemptionHelper::isValidInstructionHeapForMidThreadPreemption(instructionHeap, *mockDevice));
EXPECT_EQ(7, instructionHeapBuffer[sizeof(sipPattern)]); // check for overflow
EXPECT_EQ(7, instructionHeapBuffer[sipSize]); // check for overflow
}
}
@ -442,8 +437,7 @@ HWTEST_P(PreemptionHwTest, getRequiredCmdStreamSizeReturns0WhenPreemptionModeIsN
auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::create<MockDevice>(nullptr));
{
MockBuiltins tmpBuiltins;
char sipData[16] = {0};
tmpBuiltins.overrideSipKernel(std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel{SipKernelType::Csr, sipData, sizeof(sipData)}));
tmpBuiltins.overrideSipKernel(std::unique_ptr<OCLRT::SipKernel>(new OCLRT::SipKernel{SipKernelType::Csr, getSipProgramWithCustomBinary()}));
tmpBuiltins.overrideGlobalBuiltins();
PreemptionHelper::programCmdStream<FamilyType>(cmdStream, mode, mode,
nullptr, LinearStream(nullptr, 0), *mockDevice);