mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-27 15:53:13 +08:00
fix: setup printf surface when implicit args are programmed
even if main kernel is not using printf Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
48206fe848
commit
ca3079f263
@@ -114,6 +114,55 @@ TEST_F(PrintfHandlerTests, givenKernelWithImplicitArgsWhenPreparingPrintfHandler
|
||||
|
||||
EXPECT_EQ(printfSurface->getGpuAddress(), pImplicitArgs->v0.printfBufferPtr);
|
||||
}
|
||||
TEST_F(PrintfHandlerTests, givenUserKernelWithoutPrintfButWithImplicitArgsWhenPreparingPrintfHandlerThenProperAddressIsPatchedInImplicitArgsStruct) {
|
||||
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
MockContext context(device.get());
|
||||
|
||||
auto pKernelInfo = std::make_unique<MockKernelInfo>();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.simdSize = device->getGfxCoreHelper().getMinimalSIMDSize();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.flags.requiresImplicitArgs = true;
|
||||
|
||||
MockProgram program{&context, false, toClDeviceVector(*device)};
|
||||
|
||||
uint64_t crossThread[10];
|
||||
MockKernel kernel{&program, *pKernelInfo, *device};
|
||||
kernel.setCrossThreadData(&crossThread, sizeof(uint64_t) * 10);
|
||||
kernel.initialize();
|
||||
|
||||
MockMultiDispatchInfo multiDispatchInfo(device.get(), &kernel);
|
||||
auto printfHandler = std::unique_ptr<PrintfHandler>(PrintfHandler::create(multiDispatchInfo, device->getDevice()));
|
||||
ASSERT_NE(nullptr, printfHandler);
|
||||
printfHandler->prepareDispatch(multiDispatchInfo);
|
||||
|
||||
auto printfSurface = printfHandler->getSurface();
|
||||
ASSERT_NE(nullptr, printfSurface);
|
||||
|
||||
auto pImplicitArgs = kernel.getImplicitArgs();
|
||||
ASSERT_NE(nullptr, pImplicitArgs);
|
||||
|
||||
EXPECT_EQ(printfSurface->getGpuAddress(), pImplicitArgs->v0.printfBufferPtr);
|
||||
}
|
||||
|
||||
TEST_F(PrintfHandlerTests, givenBuiltinKernelWithoutPrintfButWithImplicitArgsWhenPreparingPrintfHandlerThenPrintfHandlerIsNotCreated) {
|
||||
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
MockContext context(device.get());
|
||||
|
||||
auto pKernelInfo = std::make_unique<MockKernelInfo>();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.simdSize = device->getGfxCoreHelper().getMinimalSIMDSize();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.flags.requiresImplicitArgs = true;
|
||||
|
||||
MockProgram program{&context, false, toClDeviceVector(*device)};
|
||||
|
||||
uint64_t crossThread[10];
|
||||
MockKernel kernel{&program, *pKernelInfo, *device};
|
||||
kernel.setCrossThreadData(&crossThread, sizeof(uint64_t) * 10);
|
||||
kernel.initialize();
|
||||
kernel.isBuiltIn = true;
|
||||
|
||||
MockMultiDispatchInfo multiDispatchInfo(device.get(), &kernel);
|
||||
auto printfHandler = std::unique_ptr<PrintfHandler>(PrintfHandler::create(multiDispatchInfo, device->getDevice()));
|
||||
EXPECT_EQ(nullptr, printfHandler);
|
||||
}
|
||||
|
||||
HWTEST_F(PrintfHandlerTests, givenEnabledStatelessCompressionWhenPrintEnqueueOutputIsCalledThenBCSEngineIsUsedToDecompressPrintfOutput) {
|
||||
HardwareInfo hwInfo = *defaultHwInfo;
|
||||
|
||||
Reference in New Issue
Block a user