From ebc19b4a70171054c5bac550d560a0762320e060 Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Wed, 18 Sep 2024 12:38:06 +0000 Subject: [PATCH] feature: Add logic to disable bindless addressing via AIL Add mockable Device functions to get ReleaseHelper and AILConfiguration. Resolves: NEO-12699 Signed-off-by: Filip Hazubski --- .../source/helpers/api_specific_config_l0.cpp | 10 +++++++++- level_zero/core/source/module/module_imp.cpp | 2 +- .../unit_tests/fixtures/cmdlist_fixture.cpp | 2 +- .../unit_tests/fixtures/module_fixture.cpp | 2 +- .../helper/api_specific_config_l0_tests.cpp | 19 ++++++++++++++++++ .../helpers/api_specific_config_ocl.cpp | 2 +- opencl/source/program/program.cpp | 2 +- .../unit_test/fixtures/kernel_arg_fixture.cpp | 6 +++--- .../kernel/kernel_arg_buffer_fixture.cpp | 4 ++-- shared/source/ail/ail_configuration.h | 7 +++++++ shared/source/ail/ail_configuration_base.inl | 8 ++++++++ shared/source/built_ins/built_ins_storage.cpp | 5 ++--- shared/source/device/device.cpp | 4 ++++ shared/source/device/device.h | 20 ++++++++++--------- shared/source/device/root_device.cpp | 2 +- shared/source/helpers/api_specific_config.h | 3 ++- .../device_binary_format/patchtokens_tests.h | 4 ++-- .../common/mocks/mock_ail_configuration.h | 8 ++++++++ shared/test/common/mocks/mock_device.cpp | 14 +++++++++++++ shared/test/common/mocks/mock_device.h | 5 +++++ .../unit_test/api_specific_config_ult.cpp | 2 +- 21 files changed, 103 insertions(+), 28 deletions(-) diff --git a/level_zero/core/source/helpers/api_specific_config_l0.cpp b/level_zero/core/source/helpers/api_specific_config_l0.cpp index 396dfe626e..b67b8f4ade 100644 --- a/level_zero/core/source/helpers/api_specific_config_l0.cpp +++ b/level_zero/core/source/helpers/api_specific_config_l0.cpp @@ -5,7 +5,9 @@ * */ +#include "shared/source/ail/ail_configuration.h" #include "shared/source/debug_settings/debug_settings_manager.h" +#include "shared/source/device/device.h" #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/helpers/api_specific_config.h" #include "shared/source/release_helper/release_helper.h" @@ -30,9 +32,15 @@ bool ApiSpecificConfig::getGlobalBindlessHeapConfiguration(const ReleaseHelper * return releaseHelper ? releaseHelper->isGlobalBindlessAllocatorEnabled() : false; } -bool ApiSpecificConfig::getBindlessMode(const ReleaseHelper *releaseHelper) { +bool ApiSpecificConfig::getBindlessMode(const Device &device) { if (debugManager.flags.UseBindlessMode.get() != -1) { return debugManager.flags.UseBindlessMode.get(); + } + + auto ailHelper = device.getAilConfigurationHelper(); + auto releaseHelper = device.getReleaseHelper(); + if (ailHelper && ailHelper->disableBindlessAddressing()) { + return false; } else { return releaseHelper ? !releaseHelper->isBindlessAddressingDisabled() : false; } diff --git a/level_zero/core/source/module/module_imp.cpp b/level_zero/core/source/module/module_imp.cpp index 4b2cf5c5f3..616534e8bd 100644 --- a/level_zero/core/source/module/module_imp.cpp +++ b/level_zero/core/source/module/module_imp.cpp @@ -909,7 +909,7 @@ void ModuleImp::createBuildOptions(const char *pBuildFlags, std::string &apiOpti createBuildExtraOptions(apiOptions, internalBuildOptions); } - if (NEO::ApiSpecificConfig::getBindlessMode(device->getNEODevice()->getReleaseHelper())) { + if (NEO::ApiSpecificConfig::getBindlessMode(*device->getNEODevice())) { NEO::CompilerOptions::concatenateAppend(internalBuildOptions, NEO::CompilerOptions::bindlessMode.str()); } } diff --git a/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp index 875d068901..60e4e53f21 100644 --- a/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp @@ -224,7 +224,7 @@ void CommandListPrivateHeapsFixture::setUp() { } void CommandListPrivateHeapsFixture::checkAndPrepareBindlessKernel() { - if (NEO::ApiSpecificConfig::getBindlessMode(device->getNEODevice()->getReleaseHelper())) { + if (NEO::ApiSpecificConfig::getBindlessMode(*device->getNEODevice())) { const_cast(kernel->getKernelDescriptor()).kernelAttributes.bufferAddressingMode = KernelDescriptor::Bindless; isBindlessKernel = true; } diff --git a/level_zero/core/test/unit_tests/fixtures/module_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/module_fixture.cpp index bd09e251fe..eafc2073fa 100644 --- a/level_zero/core/test/unit_tests/fixtures/module_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/module_fixture.cpp @@ -164,7 +164,7 @@ void ModuleFixture::createKernel() { kernel = std::make_unique>(); kernel->module = module.get(); kernel->initialize(&desc); - if (NEO::ApiSpecificConfig::getBindlessMode(device->getNEODevice()->getReleaseHelper())) { + if (NEO::ApiSpecificConfig::getBindlessMode(*device->getNEODevice())) { const_cast(kernel->getKernelDescriptor()).kernelAttributes.bufferAddressingMode = KernelDescriptor::Bindless; } } diff --git a/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp b/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp index 2734d9e2b4..4b2a51fae4 100644 --- a/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp +++ b/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp @@ -8,6 +8,9 @@ #include "shared/source/command_container/implicit_scaling.h" #include "shared/source/helpers/api_specific_config.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" +#include "shared/test/common/mocks/mock_ail_configuration.h" +#include "shared/test/common/mocks/mock_device.h" +#include "shared/test/common/mocks/mock_release_helper.h" #include "level_zero/core/source/compiler_interface/l0_reg_path.h" @@ -93,4 +96,20 @@ TEST(ApiSpecificConfigL0Tests, WhenCheckingIfCompilerCacheIsEnabledByDefaultThen EXPECT_EQ(1l, ApiSpecificConfig::compilerCacheDefaultEnabled()); } +TEST(ApiSpecificConfigL0Tests, WhenCheckingIfBindlessAddressingIsEnabledThenReturnProperValue) { + MockAILConfiguration mockAilConfigurationHelper; + MockReleaseHelper mockReleaseHelper; + MockDevice mockDevice; + + mockReleaseHelper.isBindlessAddressingDisabledResult = false; + mockDevice.mockReleaseHelper = &mockReleaseHelper; + EXPECT_TRUE(ApiSpecificConfig::getBindlessMode(mockDevice)); + + mockDevice.mockAilConfigurationHelper = &mockAilConfigurationHelper; + EXPECT_TRUE(ApiSpecificConfig::getBindlessMode(mockDevice)); + + mockAilConfigurationHelper.setDisableBindlessAddressing(true); + EXPECT_FALSE(ApiSpecificConfig::getBindlessMode(mockDevice)); +} + } // namespace NEO diff --git a/opencl/source/helpers/api_specific_config_ocl.cpp b/opencl/source/helpers/api_specific_config_ocl.cpp index f80c3adacc..6e5d3eed0b 100644 --- a/opencl/source/helpers/api_specific_config_ocl.cpp +++ b/opencl/source/helpers/api_specific_config_ocl.cpp @@ -24,7 +24,7 @@ bool ApiSpecificConfig::getGlobalBindlessHeapConfiguration(const ReleaseHelper * return false; } -bool ApiSpecificConfig::getBindlessMode(const ReleaseHelper *releaseHelper) { +bool ApiSpecificConfig::getBindlessMode(const Device &device) { if (debugManager.flags.UseBindlessMode.get() != -1) { return debugManager.flags.UseBindlessMode.get(); } else { diff --git a/opencl/source/program/program.cpp b/opencl/source/program/program.cpp index a6b063f472..160042b64a 100644 --- a/opencl/source/program/program.cpp +++ b/opencl/source/program/program.cpp @@ -80,7 +80,7 @@ std::string Program::getInternalOptions() const { CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired); } - if (ApiSpecificConfig::getBindlessMode(nullptr)) { + if (debugManager.flags.UseBindlessMode.get() == 1) { CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessMode); } diff --git a/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp b/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp index f11144178f..bd92b24594 100644 --- a/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp +++ b/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -49,8 +49,8 @@ void KernelImageArgTest::SetUp() { pKernelInfo->addArgImage(4, 0x20); - pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = ApiSpecificConfig::getBindlessMode(nullptr) ? KernelDescriptor::AddressingMode::BindlessAndStateless : KernelDescriptor::AddressingMode::BindfulAndStateless; - pKernelInfo->kernelDescriptor.kernelAttributes.imageAddressingMode = ApiSpecificConfig::getBindlessMode(nullptr) ? KernelDescriptor::AddressingMode::Bindless : KernelDescriptor::AddressingMode::Bindful; + pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = debugManager.flags.UseBindlessMode.get() == 1 ? KernelDescriptor::AddressingMode::BindlessAndStateless : KernelDescriptor::AddressingMode::BindfulAndStateless; + pKernelInfo->kernelDescriptor.kernelAttributes.imageAddressingMode = debugManager.flags.UseBindlessMode.get() == 1 ? KernelDescriptor::AddressingMode::Bindless : KernelDescriptor::AddressingMode::Bindful; ClDeviceFixture::setUp(); context.reset(new MockContext(pClDevice)); diff --git a/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp b/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp index 116768f849..0ef9fb7c3d 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -41,7 +41,7 @@ void KernelArgBufferFixture::setUp() { pKernelInfo->addArgBuffer(0, 0x30, sizeof(void *), 0x0); - pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = ApiSpecificConfig::getBindlessMode(nullptr) ? KernelDescriptor::AddressingMode::BindlessAndStateless : KernelDescriptor::AddressingMode::BindfulAndStateless; + pKernelInfo->kernelDescriptor.kernelAttributes.bufferAddressingMode = debugManager.flags.UseBindlessMode.get() == 1 ? KernelDescriptor::AddressingMode::BindlessAndStateless : KernelDescriptor::AddressingMode::BindfulAndStateless; pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); diff --git a/shared/source/ail/ail_configuration.h b/shared/source/ail/ail_configuration.h index 055ddd2dc8..200e44f731 100644 --- a/shared/source/ail/ail_configuration.h +++ b/shared/source/ail/ail_configuration.h @@ -41,6 +41,7 @@ enum class AILEnumeration : uint32_t { enableLegacyPlatformName, disableDirectSubmission, handleDivergentBarriers, + disableBindlessAddressing, }; class AILConfiguration; @@ -77,6 +78,8 @@ class AILConfiguration { virtual bool handleDivergentBarriers() = 0; + virtual bool disableBindlessAddressing() = 0; + protected: virtual void applyExt(RuntimeCapabilityTable &runtimeCapabilityTable) = 0; std::string processName; @@ -84,6 +87,7 @@ class AILConfiguration { bool sourcesContain(const std::string &sources, std::string_view contentToFind) const; MOCKABLE_VIRTUAL bool isKernelHashCorrect(const std::string &kernelSources, uint64_t expectedHash) const; virtual void setHandleDivergentBarriers(bool val) = 0; + virtual void setDisableBindlessAddressing(bool val) = 0; }; extern const std::set applicationsContextSyncFlag; @@ -106,12 +110,15 @@ class AILConfigurationHw : public AILConfiguration { bool useLegacyValidationLogic() override; bool forceRcs() override; bool handleDivergentBarriers() override; + bool disableBindlessAddressing() override; bool shouldForceRcs = false; bool shouldHandleDivergentBarriers = false; + bool shouldDisableBindlessAddressing = false; protected: void setHandleDivergentBarriers(bool val) override; + void setDisableBindlessAddressing(bool val) override; }; template diff --git a/shared/source/ail/ail_configuration_base.inl b/shared/source/ail/ail_configuration_base.inl index 600f396b7b..c6988904d4 100644 --- a/shared/source/ail/ail_configuration_base.inl +++ b/shared/source/ail/ail_configuration_base.inl @@ -44,8 +44,16 @@ inline bool AILConfigurationHw::handleDivergentBarriers() { return shouldHandleDivergentBarriers; } template +inline bool AILConfigurationHw::disableBindlessAddressing() { + return shouldDisableBindlessAddressing; +} +template inline void AILConfigurationHw::setHandleDivergentBarriers(bool val) { shouldHandleDivergentBarriers = val; } +template +inline void AILConfigurationHw::setDisableBindlessAddressing(bool val) { + shouldDisableBindlessAddressing = val; +} } // namespace NEO diff --git a/shared/source/built_ins/built_ins_storage.cpp b/shared/source/built_ins/built_ins_storage.cpp index 5229a30a09..8f1b8bc4fa 100644 --- a/shared/source/built_ins/built_ins_storage.cpp +++ b/shared/source/built_ins/built_ins_storage.cpp @@ -83,7 +83,6 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri StackVec getBuiltinResourceNames(EBuiltInOps::Type builtin, BuiltinCode::ECodeType type, const Device &device) { auto &hwInfo = device.getHardwareInfo(); auto &productHelper = device.getRootDeviceEnvironment().getHelper(); - auto releaseHelper = device.getReleaseHelper(); auto createDeviceIdFilenameComponent = [](const NEO::HardwareIpVersion &hwIpVersion) { std::ostringstream deviceId; @@ -93,14 +92,14 @@ StackVec getBuiltinResourceNames(EBuiltInOps::Type builtin, Buil const auto deviceIp = createDeviceIdFilenameComponent(hwInfo.ipVersion); const auto builtinFilename = getBuiltinAsString(builtin); const auto extension = BuiltinCode::getExtension(type); - auto getAddressingModePrefix = [type, &productHelper, releaseHelper, builtin]() { + auto getAddressingModePrefix = [type, &productHelper, &device, builtin]() { if (type == BuiltinCode::ECodeType::binary) { const bool requiresStatelessAddressing = (false == productHelper.isStatefulAddressingModeSupported()); const bool builtInUsesStatelessAddressing = EBuiltInOps::isStateless(builtin); const bool heaplessEnabled = EBuiltInOps::isHeapless(builtin); if (builtInUsesStatelessAddressing || requiresStatelessAddressing) { return heaplessEnabled ? "stateless_heapless_" : "stateless_"; - } else if (ApiSpecificConfig::getBindlessMode(releaseHelper)) { + } else if (ApiSpecificConfig::getBindlessMode(device)) { return "bindless_"; } else { return "bindful_"; diff --git a/shared/source/device/device.cpp b/shared/source/device/device.cpp index 59651cad28..d96484e520 100644 --- a/shared/source/device/device.cpp +++ b/shared/source/device/device.cpp @@ -1139,6 +1139,10 @@ ReleaseHelper *Device::getReleaseHelper() const { return getRootDeviceEnvironment().getReleaseHelper(); } +AILConfiguration *Device::getAilConfigurationHelper() const { + return getRootDeviceEnvironment().getAILConfigurationHelper(); +} + void Device::stopDirectSubmissionAndWaitForCompletion() { for (auto &engine : allEngines) { auto csr = engine.commandStreamReceiver; diff --git a/shared/source/device/device.h b/shared/source/device/device.h index ed4f68b143..38870edd26 100644 --- a/shared/source/device/device.h +++ b/shared/source/device/device.h @@ -21,24 +21,25 @@ #include namespace NEO { +class AILConfiguration; class BindlessHeapsHelper; class BuiltIns; class CompilerInterface; -class ExecutionEnvironment; +class CompilerProductHelper; class Debugger; +class DebuggerL0; +class ExecutionEnvironment; +class GfxCoreHelper; class GmmClientContext; class GmmHelper; -class SyncBufferHandler; -enum class EngineGroupType : uint32_t; -class DebuggerL0; class OSTime; -class SubDevice; -struct PhysicalDevicePciBusInfo; -class GfxCoreHelper; class ProductHelper; -class CompilerProductHelper; class ReleaseHelper; +class SubDevice; +class SyncBufferHandler; class UsmMemAllocPoolsManager; +enum class EngineGroupType : uint32_t; +struct PhysicalDevicePciBusInfo; struct SelectorCopyEngine : NonCopyableOrMovableClass { std::atomic isMainUsed = false; @@ -191,7 +192,8 @@ class Device : public ReferenceTrackedObject { const GfxCoreHelper &getGfxCoreHelper() const; const ProductHelper &getProductHelper() const; const CompilerProductHelper &getCompilerProductHelper() const; - ReleaseHelper *getReleaseHelper() const; + MOCKABLE_VIRTUAL ReleaseHelper *getReleaseHelper() const; + MOCKABLE_VIRTUAL AILConfiguration *getAilConfigurationHelper() const; ISAPoolAllocator &getIsaPoolAllocator() { return isaPoolAllocator; } diff --git a/shared/source/device/root_device.cpp b/shared/source/device/root_device.cpp index 5502437268..e23abbc051 100644 --- a/shared/source/device/root_device.cpp +++ b/shared/source/device/root_device.cpp @@ -50,7 +50,7 @@ Device *RootDevice::getRootDevice() const { void RootDevice::createBindlessHeapsHelper() { - if (ApiSpecificConfig::getGlobalBindlessHeapConfiguration(this->getReleaseHelper()) && ApiSpecificConfig::getBindlessMode(this->getReleaseHelper())) { + if (ApiSpecificConfig::getGlobalBindlessHeapConfiguration(this->getReleaseHelper()) && ApiSpecificConfig::getBindlessMode(*this)) { this->executionEnvironment->rootDeviceEnvironments[getRootDeviceIndex()]->createBindlessHeapsHelper(this, getNumGenericSubDevices() > 1); } } diff --git a/shared/source/helpers/api_specific_config.h b/shared/source/helpers/api_specific_config.h index fcf6685bef..08197e9427 100644 --- a/shared/source/helpers/api_specific_config.h +++ b/shared/source/helpers/api_specific_config.h @@ -14,6 +14,7 @@ #include namespace NEO { +class Device; class ReleaseHelper; struct RootDeviceEnvironment; @@ -22,7 +23,7 @@ struct ApiSpecificConfig { L0 }; static bool isStatelessCompressionSupported(); static bool getGlobalBindlessHeapConfiguration(const ReleaseHelper *releaseHelper); - static bool getBindlessMode(const ReleaseHelper *); + static bool getBindlessMode(const Device &device); static bool isDeviceAllocationCacheEnabled(); static bool isHostAllocationCacheEnabled(); static bool isDeviceUsmPoolingEnabled(); diff --git a/shared/test/common/device_binary_format/patchtokens_tests.h b/shared/test/common/device_binary_format/patchtokens_tests.h index 5f52676bd6..04d7e1edf0 100644 --- a/shared/test/common/device_binary_format/patchtokens_tests.h +++ b/shared/test/common/device_binary_format/patchtokens_tests.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2023 Intel Corporation + * Copyright (C) 2019-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -236,7 +236,7 @@ struct ValidEmptyKernel { auto execEnvTokInl = initToken(iOpenCL::PATCH_TOKEN_EXECUTION_ENVIRONMENT); execEnvTokInl.LargestCompiledSIMDSize = 32U; execEnvTokInl.CompiledSIMD32 = 1U; - execEnvTokInl.UseBindlessMode = NEO::ApiSpecificConfig::getBindlessMode(nullptr); + execEnvTokInl.UseBindlessMode = NEO::debugManager.flags.UseBindlessMode.get() == 1; headerTokInl.PatchListSize = sizeof(execEnvTokInl); ret.decodeStatus = NEO::DecodeError::success; ret.name = "test_kernel"; diff --git a/shared/test/common/mocks/mock_ail_configuration.h b/shared/test/common/mocks/mock_ail_configuration.h index 58cef2a27f..40e5f9043b 100644 --- a/shared/test/common/mocks/mock_ail_configuration.h +++ b/shared/test/common/mocks/mock_ail_configuration.h @@ -45,6 +45,14 @@ class MockAILConfiguration : public AILConfiguration { } bool handleDivergentBarriersValue = false; + bool disableBindlessAddressing() override { + return disableBindlessAddressingValue; + } + void setDisableBindlessAddressing(bool val) override { + disableBindlessAddressingValue = val; + } + bool disableBindlessAddressingValue = false; + protected: void applyExt(RuntimeCapabilityTable &runtimeCapabilityTable) override {} }; diff --git a/shared/test/common/mocks/mock_device.cpp b/shared/test/common/mocks/mock_device.cpp index 26e1763afe..2bf919ab5f 100644 --- a/shared/test/common/mocks/mock_device.cpp +++ b/shared/test/common/mocks/mock_device.cpp @@ -167,6 +167,20 @@ ExecutionEnvironment *MockDevice::prepareExecutionEnvironment(const HardwareInfo return executionEnvironment; } +ReleaseHelper *MockDevice::getReleaseHelper() const { + if (mockReleaseHelper) { + return mockReleaseHelper; + } + return Device::getReleaseHelper(); +} + +AILConfiguration *MockDevice::getAilConfigurationHelper() const { + if (mockAilConfigurationHelper) { + return mockAilConfigurationHelper; + } + return Device::getAilConfigurationHelper(); +} + bool MockSubDevice::createEngine(EngineTypeUsage engineTypeUsage) { if (failOnCreateEngine) { return false; diff --git a/shared/test/common/mocks/mock_device.h b/shared/test/common/mocks/mock_device.h index 14cdc437cd..4cbafd963d 100644 --- a/shared/test/common/mocks/mock_device.h +++ b/shared/test/common/mocks/mock_device.h @@ -164,6 +164,9 @@ class MockDevice : public RootDevice { void finalizeRayTracing(); + ReleaseHelper *getReleaseHelper() const override; + AILConfiguration *getAilConfigurationHelper() const override; + void setRTDispatchGlobalsForceAllocation() { rtDispatchGlobalsForceAllocation = true; } @@ -181,6 +184,8 @@ class MockDevice : public RootDevice { size_t maxParameterSizeFromIGC = 0u; bool rtDispatchGlobalsForceAllocation = true; bool stopDirectSubmissionCalled = false; + ReleaseHelper *mockReleaseHelper = nullptr; + AILConfiguration *mockAilConfigurationHelper = nullptr; }; template <> diff --git a/shared/test/unit_test/api_specific_config_ult.cpp b/shared/test/unit_test/api_specific_config_ult.cpp index 67307e3f3a..4cb90056b6 100644 --- a/shared/test/unit_test/api_specific_config_ult.cpp +++ b/shared/test/unit_test/api_specific_config_ult.cpp @@ -35,7 +35,7 @@ bool ApiSpecificConfig::getGlobalBindlessHeapConfiguration(const ReleaseHelper * } return false; } -bool ApiSpecificConfig::getBindlessMode(const ReleaseHelper *) { +bool ApiSpecificConfig::getBindlessMode(const Device &device) { if (debugManager.flags.UseBindlessMode.get() != -1) { return debugManager.flags.UseBindlessMode.get(); } else {