Skip to content

Commit a204b11

Browse files
Do not require aux translation on built ins
Signed-off-by: Dominik Dabek <[email protected]>
1 parent e348001 commit a204b11

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

opencl/source/kernel/kernel.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,9 @@ cl_int Kernel::initialize() {
245245
patchBlocksSimdSize();
246246

247247
auto &clHwHelper = ClHwHelper::get(hwInfo.platform.eRenderCoreFamily);
248-
auxTranslationRequired = HwHelper::renderCompressedBuffersSupported(hwInfo) && clHwHelper.requiresAuxResolves(kernelInfo, hwInfo);
248+
249+
auxTranslationRequired = !program->getIsBuiltIn() && HwHelper::renderCompressedBuffersSupported(hwInfo) && clHwHelper.requiresAuxResolves(kernelInfo, hwInfo);
250+
249251
if (DebugManager.flags.ForceAuxTranslationEnabled.get() != -1) {
250252
auxTranslationRequired &= !!DebugManager.flags.ForceAuxTranslationEnabled.get();
251253
}

opencl/test/unit_test/helpers/hw_helper_tests.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,21 @@ HWTEST_F(HwHelperTest, whenQueryingMaxNumSamplersThenReturnSixteen) {
794794
EXPECT_EQ(16u, helper.getMaxNumSamplers());
795795
}
796796

797+
HWTEST_F(HwHelperTest, givenKernelInfoWhenCheckingRequiresAuxResolvesThenCorrectValuesAreReturned) {
798+
auto &clHwHelper = ClHwHelper::get(renderCoreFamily);
799+
HardwareInfo hwInfo = *defaultHwInfo;
800+
KernelInfo kernelInfo{};
801+
802+
ArgDescriptor argDescriptorValue(ArgDescriptor::ArgType::ArgTValue);
803+
kernelInfo.kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptorValue);
804+
EXPECT_FALSE(clHwHelper.requiresAuxResolves(kernelInfo, hwInfo));
805+
806+
ArgDescriptor argDescriptorPointer(ArgDescriptor::ArgType::ArgTPointer);
807+
argDescriptorPointer.as<ArgDescPointer>().accessedUsingStatelessAddressingMode = true;
808+
kernelInfo.kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptorPointer);
809+
EXPECT_TRUE(clHwHelper.requiresAuxResolves(kernelInfo, hwInfo));
810+
}
811+
797812
HWTEST_F(HwHelperTest, givenDebugVariableSetWhenAskingForAuxTranslationModeThenReturnCorrectValue) {
798813
DebugManagerStateRestore restore;
799814

opencl/test/unit_test/kernel/kernel_tests.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2583,6 +2583,25 @@ TEST(KernelTest, givenKernelWithKernelInfoWith64bitPointerSizeThenReport64bit) {
25832583
EXPECT_FALSE(kernel->is32Bit());
25842584
}
25852585

2586+
TEST(KernelTest, givenBuiltInProgramWhenCallingInitializeThenAuxTranslationRequiredIsFalse) {
2587+
DebugManagerStateRestore restore;
2588+
DebugManager.flags.RenderCompressedBuffersEnabled.set(1);
2589+
KernelInfo info{};
2590+
2591+
ArgDescriptor argDescriptorPointer(ArgDescriptor::ArgType::ArgTPointer);
2592+
argDescriptorPointer.as<ArgDescPointer>().accessedUsingStatelessAddressingMode = true;
2593+
info.kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptorPointer);
2594+
2595+
const auto rootDeviceIndex = 0u;
2596+
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr, rootDeviceIndex));
2597+
MockContext context(device.get());
2598+
MockProgram program(&context, true, toClDeviceVector(*device));
2599+
MockKernel kernel(&program, info, *device);
2600+
2601+
kernel.initialize();
2602+
EXPECT_FALSE(kernel.auxTranslationRequired);
2603+
}
2604+
25862605
TEST(KernelTest, givenFtrRenderCompressedBuffersWhenInitializingArgsWithNonStatefulAccessThenMarkKernelForAuxTranslation) {
25872606
DebugManagerStateRestore restore;
25882607
DebugManager.flags.ForceAuxTranslationEnabled.set(1);

0 commit comments

Comments
 (0)