Use printfSurfaceAddress arg instead of patchToken

Use KernelDescriptor's printfSurfaceAddress arg instead of storing
SPatchAllocateStatelessPrintfSurface token in KernelInfo's patchInfo.

Related-To: NEO-4729
Signed-off-by: Krystian Chmielewski <krystian.chmielewski@intel.com>
This commit is contained in:
Krystian Chmielewski
2021-02-16 15:28:59 +01:00
committed by Compute-Runtime-Automation
parent 8e927b5484
commit 9bb229f771
21 changed files with 162 additions and 176 deletions

View File

@@ -23,12 +23,14 @@ using namespace NEO;
TEST(PrintfHandlerTest, givenNotPreparedPrintfHandlerWhenGetSurfaceIsCalledThenResultIsNullptr) {
MockClDevice *device = new MockClDevice{MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)};
MockContext context;
SPatchAllocateStatelessPrintfSurface *pPrintfSurface = new SPatchAllocateStatelessPrintfSurface();
pPrintfSurface->DataParamOffset = 0;
pPrintfSurface->DataParamSize = 8;
auto pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = pPrintfSurface;
pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
SPatchAllocateStatelessPrintfSurface printfSurface = {};
printfSurface.DataParamOffset = 0;
printfSurface.DataParamSize = 8;
populateKernelDescriptor(pKernelInfo->kernelDescriptor, printfSurface);
MockProgram *pProgram = new MockProgram(&context, false, toClDeviceVector(*device));
MockKernel *pKernel = new MockKernel(pProgram, MockKernel::toKernelInfoContainer(*pKernelInfo, device->getRootDeviceIndex()));
@@ -39,7 +41,6 @@ TEST(PrintfHandlerTest, givenNotPreparedPrintfHandlerWhenGetSurfaceIsCalledThenR
EXPECT_EQ(nullptr, printfHandler->getSurface());
delete printfHandler;
delete pPrintfSurface;
delete pKernel;
delete pProgram;
@@ -49,12 +50,14 @@ TEST(PrintfHandlerTest, givenNotPreparedPrintfHandlerWhenGetSurfaceIsCalledThenR
TEST(PrintfHandlerTest, givenPreparedPrintfHandlerWhenGetSurfaceIsCalledThenResultIsNullptr) {
MockClDevice *device = new MockClDevice{MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)};
MockContext context;
SPatchAllocateStatelessPrintfSurface *pPrintfSurface = new SPatchAllocateStatelessPrintfSurface();
pPrintfSurface->DataParamOffset = 0;
pPrintfSurface->DataParamSize = 8;
auto pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = pPrintfSurface;
pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
SPatchAllocateStatelessPrintfSurface printfSurface = {};
printfSurface.DataParamOffset = 0;
printfSurface.DataParamSize = 8;
populateKernelDescriptor(pKernelInfo->kernelDescriptor, printfSurface);
MockProgram *pProgram = new MockProgram(&context, false, toClDeviceVector(*device));
@@ -69,7 +72,6 @@ TEST(PrintfHandlerTest, givenPreparedPrintfHandlerWhenGetSurfaceIsCalledThenResu
EXPECT_NE(nullptr, printfHandler->getSurface());
delete printfHandler;
delete pPrintfSurface;
delete pKernel;
delete pProgram;
@@ -118,19 +120,23 @@ TEST(PrintfHandlerTest, givenMultiDispatchInfoWithMultipleKernelsWhenCreatingAnd
MockContext context;
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
auto program = std::make_unique<MockProgram>(&context, false, toClDeviceVector(*device));
auto mainKernelInfo = std::make_unique<KernelInfo>();
auto kernelInfo = std::make_unique<KernelInfo>();
auto printfSurface = std::make_unique<SPatchAllocateStatelessPrintfSurface>();
printfSurface->DataParamOffset = 0;
printfSurface->DataParamSize = 8;
auto pMainKernelInfo = std::make_unique<KernelInfo>();
pMainKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
mainKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = printfSurface.get();
auto pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
SPatchAllocateStatelessPrintfSurface printfSurface = {};
printfSurface.DataParamOffset = 0;
printfSurface.DataParamSize = 8;
populateKernelDescriptor(pMainKernelInfo->kernelDescriptor, printfSurface);
auto mainKernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pMainKernelInfo, device->getRootDeviceIndex()));
auto kernel1 = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, device->getRootDeviceIndex()));
auto kernel2 = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, device->getRootDeviceIndex()));
uint64_t crossThread[8];
auto mainKernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*mainKernelInfo, device->getRootDeviceIndex()));
auto kernel1 = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*kernelInfo, device->getRootDeviceIndex()));
auto kernel2 = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*kernelInfo, device->getRootDeviceIndex()));
mainKernel->setCrossThreadData(&crossThread, sizeof(uint64_t) * 8);
DispatchInfo mainDispatchInfo(device.get(), mainKernel.get(), 1, {1, 1, 1}, {1, 1, 1}, {1, 1, 1});
@@ -190,16 +196,17 @@ TEST(PrintfHandlerTest, GivenAllocationInLocalMemoryWhichRequiresBlitterWhenPrep
auto pClDevice = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hwInfo));
MockContext context{pClDevice.get()};
auto printfSurface = std::make_unique<SPatchAllocateStatelessPrintfSurface>();
printfSurface->DataParamOffset = 0;
printfSurface->DataParamSize = 8;
auto pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
auto kernelInfo = std::make_unique<KernelInfo>();
kernelInfo->patchInfo.pAllocateStatelessPrintfSurface = printfSurface.get();
SPatchAllocateStatelessPrintfSurface printfSurface = {};
printfSurface.DataParamOffset = 0;
printfSurface.DataParamSize = 8;
populateKernelDescriptor(pKernelInfo->kernelDescriptor, printfSurface);
auto program = std::make_unique<MockProgram>(&context, false, toClDeviceVector(*pClDevice));
uint64_t crossThread[10];
auto kernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*kernelInfo, pClDevice->getRootDeviceIndex()));
auto kernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, pClDevice->getRootDeviceIndex()));
kernel->setCrossThreadData(&crossThread, sizeof(uint64_t) * 8);
MockMultiDispatchInfo multiDispatchInfo(pClDevice.get(), kernel.get());
@@ -218,17 +225,18 @@ TEST(PrintfHandlerTest, GivenAllocationInLocalMemoryWhichRequiresBlitterWhenPrep
using PrintfHandlerMultiRootDeviceTests = MultiRootDeviceFixture;
TEST_F(PrintfHandlerMultiRootDeviceTests, GivenPrintfSurfaceThenItHasCorrectRootDeviceIndex) {
auto printfSurface = std::make_unique<SPatchAllocateStatelessPrintfSurface>();
printfSurface->DataParamOffset = 0;
printfSurface->DataParamSize = 8;
auto pKernelInfo = std::make_unique<KernelInfo>();
pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = KernelDescriptor::Stateless;
auto kernelInfo = std::make_unique<KernelInfo>();
kernelInfo->patchInfo.pAllocateStatelessPrintfSurface = printfSurface.get();
SPatchAllocateStatelessPrintfSurface printfSurface = {};
printfSurface.DataParamOffset = 0;
printfSurface.DataParamSize = 8;
populateKernelDescriptor(pKernelInfo->kernelDescriptor, printfSurface);
auto program = std::make_unique<MockProgram>(context.get(), false, toClDeviceVector(*device1));
uint64_t crossThread[10];
auto kernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*kernelInfo, device1->getRootDeviceIndex()));
auto kernel = std::make_unique<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, device1->getRootDeviceIndex()));
kernel->setCrossThreadData(&crossThread, sizeof(uint64_t) * 8);
MockMultiDispatchInfo multiDispatchInfo(device1, kernel.get());