From 0d61860af65505fa6ef491426e395716d40f6d6b Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Wed, 19 Jun 2024 11:04:27 +0000 Subject: [PATCH] fix: Reset builtins pointer after its resources are freed Add resetBuiltins helper function to MockRootDeviceEnvironment. Update tests to use the new function whenever builtins unique pointer is reset to ensure that sip kernels are properly freed. Related-To: HSD-18038645398, HSD-18038819112 Signed-off-by: Filip Hazubski --- .../test/unit_tests/fixtures/cmdlist_fixture.cpp | 4 ++-- .../test/unit_tests/fixtures/device_fixture.cpp | 8 ++++---- .../fixtures/host_pointer_manager_fixture.cpp | 5 +++-- .../unit_tests/fixtures/memory_ipc_fixture.cpp | 10 +++++----- .../sources/debugger/l0_debugger_fixture.h | 2 +- .../debugger/linux/test_l0_debugger_linux.cpp | 4 ++-- .../sources/device/device_wddm/test_device.cpp | 7 ++++--- .../unit_tests/sources/device/test_l0_device.cpp | 2 +- .../test/unit_tests/sources/event/test_event.cpp | 4 ++-- .../test/unit_tests/sources/fence/test_fence.cpp | 3 ++- .../unit_tests/sources/memory/test_memory.cpp | 16 ++++++++-------- .../sources/memory/test_memory_drm.cpp | 5 +++-- .../sources/memory/test_memory_drm_or_wddm.cpp | 4 ++-- .../sources/memory/test_memory_wddm.cpp | 3 ++- .../sources/debug/debug_session_common.h | 2 +- .../sources/debug/debug_session_tests.cpp | 10 +++++----- .../debug/linux/prelim/test_debug_api_linux.cpp | 2 +- .../unit_tests/sources/debug/test_debug_api.cpp | 2 +- .../test/unit_test/built_ins/built_in_tests.cpp | 2 +- .../command_queue/command_queue_hw_2_tests.cpp | 2 +- .../enqueue_copy_buffer_to_image_tests.cpp | 2 +- .../command_queue/enqueue_copy_image_tests.cpp | 2 +- .../enqueue_copy_image_to_buffer_tests.cpp | 2 +- .../command_queue/enqueue_read_image_tests.cpp | 4 ++-- .../command_queue/enqueue_svm_mem_copy_tests.cpp | 12 ++++++------ .../command_queue/enqueue_svm_mem_fill_tests.cpp | 4 ++-- .../command_queue/enqueue_write_image_tests.cpp | 4 ++-- .../test/unit_test/platform/platform_tests.cpp | 4 ++-- .../execution_environment.cpp | 1 + .../common/mocks/mock_execution_environment.cpp | 10 +++++++++- .../common/mocks/mock_execution_environment.h | 6 +++++- .../linux/drm_memory_manager_fixture.cpp | 2 +- shared/test/unit_test/built_ins/sip_tests.cpp | 16 ++++++++-------- .../test/unit_test/debugger/test_l0_debugger.cpp | 2 +- .../test/unit_test/device/neo_device_tests.cpp | 2 +- .../unit_test/preemption/preemption_tests.cpp | 2 +- .../test_preemption_xehp_and_later.cpp | 4 ++-- 37 files changed, 97 insertions(+), 79 deletions(-) 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 2b60a29949..5443069131 100644 --- a/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/cmdlist_fixture.cpp @@ -377,7 +377,7 @@ void AppendFillFixture::setUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique>(); @@ -539,7 +539,7 @@ void CommandQueueThreadArbitrationPolicyFixture::setUp() { ze_result_t returnValue = ZE_RESULT_SUCCESS; auto executionEnvironment = new NEO::MockExecutionEnvironment(); auto mockBuiltIns = new MockBuiltins(); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); executionEnvironment->rootDeviceEnvironments[0]->initGmm(); neoDevice = NEO::MockDevice::create(executionEnvironment, 0u); diff --git a/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp index 88c577d4bd..fb1c00486b 100644 --- a/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/device_fixture.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -40,7 +40,7 @@ void DeviceFixture::setupWithExecutionEnvironment(NEO::ExecutionEnvironment &exe execEnv = &executionEnvironment; neoDevice = NEO::MockDevice::createWithExecutionEnvironment(hardwareInfo == nullptr ? defaultHwInfo.get() : hardwareInfo, &executionEnvironment, rootDeviceIndex); mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique>(); @@ -74,7 +74,7 @@ template NEO::CompilerProductHelper &DeviceFixture::getHelper() const; void PageFaultDeviceFixture::setUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique>(); @@ -283,7 +283,7 @@ void GetMemHandlePtrTestFixture::setUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.cpp index acf695fad2..40d2328059 100644 --- a/level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -8,6 +8,7 @@ #include "level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.h" #include "shared/test/common/mocks/mock_device.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/mocks/mock_memory_operations_handler.h" #include "level_zero/core/source/context/context.h" @@ -25,7 +26,7 @@ void HostPointerManagerFixure::setUp() { NEO::DeviceVector devices; neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->memoryOperationsInterface = std::make_unique(); mockMemoryInterface = static_cast( diff --git a/level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.cpp b/level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.cpp index baf542ce91..8567e43fa7 100644 --- a/level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.cpp +++ b/level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.cpp @@ -96,7 +96,7 @@ void MemoryExportImportTest::SetUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -178,7 +178,7 @@ void MemoryExportImportWSLTest::SetUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -268,7 +268,7 @@ void MemoryExportImportWinHandleTest::SetUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -403,7 +403,7 @@ void MemoryOpenIpcHandleTest::SetUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -511,7 +511,7 @@ void MemoryExportImportImplicitScalingTest::SetUp() { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/core/test/unit_tests/sources/debugger/l0_debugger_fixture.h b/level_zero/core/test/unit_tests/sources/debugger/l0_debugger_fixture.h index 20e3274918..9247f91516 100644 --- a/level_zero/core/test/unit_tests/sources/debugger/l0_debugger_fixture.h +++ b/level_zero/core/test/unit_tests/sources/debugger/l0_debugger_fixture.h @@ -31,7 +31,7 @@ struct L0DebuggerFixture { auto executionEnvironment = new NEO::ExecutionEnvironment(); auto mockBuiltIns = new NEO::MockBuiltins(); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); memoryOperationsHandler = new NEO::MockMemoryOperations(); executionEnvironment->rootDeviceEnvironments[0]->memoryOperationsInterface.reset(memoryOperationsHandler); executionEnvironment->setDebuggingMode(NEO::DebuggingMode::online); diff --git a/level_zero/core/test/unit_tests/sources/debugger/linux/test_l0_debugger_linux.cpp b/level_zero/core/test/unit_tests/sources/debugger/linux/test_l0_debugger_linux.cpp index 173fac5ffa..b3fc38c10d 100644 --- a/level_zero/core/test/unit_tests/sources/debugger/linux/test_l0_debugger_linux.cpp +++ b/level_zero/core/test/unit_tests/sources/debugger/linux/test_l0_debugger_linux.cpp @@ -37,7 +37,7 @@ struct L0DebuggerLinuxFixture { auto mockBuiltIns = new NEO::MockBuiltins(); executionEnvironment->prepareRootDeviceEnvironments(1); executionEnvironment->setDebuggingMode(NEO::DebuggingMode::online); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(hwInfo ? hwInfo : defaultHwInfo.get()); executionEnvironment->initializeMemoryManager(); auto osInterface = new OSInterface(); @@ -555,7 +555,7 @@ HWTEST_F(L0DebuggerLinuxMultitileTest, givenSubDeviceFilteredByAffinityMaskWhenC executionEnvironment->parseAffinityMask(); executionEnvironment->setDebuggingMode(NEO::DebuggingMode::online); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(&hwInfo); executionEnvironment->initializeMemoryManager(); auto osInterface = new OSInterface(); diff --git a/level_zero/core/test/unit_tests/sources/device/device_wddm/test_device.cpp b/level_zero/core/test/unit_tests/sources/device/device_wddm/test_device.cpp index 149b74b18a..3beef14f65 100644 --- a/level_zero/core/test/unit_tests/sources/device/device_wddm/test_device.cpp +++ b/level_zero/core/test/unit_tests/sources/device/device_wddm/test_device.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -12,6 +12,7 @@ #include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/common/mock_gdi/mock_gdi.h" #include "shared/test/common/mocks/mock_device.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/mocks/mock_wddm.h" #include "shared/test/common/mocks/windows/mock_gdi_interface.h" @@ -49,7 +50,7 @@ TEST_F(LuidDeviceTest, givenLuidDevicePropertiesStructureThenLuidAndNodeMaskSetF auto mockBuiltIns = new MockBuiltins(); auto executionEnvironment = MockDevice::prepareExecutionEnvironment(NEO::defaultHwInfo.get(), 0u); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get()); executionEnvironment->osEnvironment.reset(osEnvironment); @@ -83,4 +84,4 @@ TEST_F(LuidDeviceTest, givenLuidDevicePropertiesStructureThenLuidAndNodeMaskSetF } } // namespace ult -} // namespace L0 \ No newline at end of file +} // namespace L0 diff --git a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp index fd53eeeaf3..7e3dd971c9 100644 --- a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp +++ b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp @@ -254,7 +254,7 @@ TEST(L0DeviceTest, givenDebuggerEnabledButIGCNotReturnsSSAHThenSSAHIsNotCopied) mockBuiltIns->stateSaveAreaHeader.clear(); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); auto hwInfo = *NEO::defaultHwInfo.get(); hwInfo.featureTable.flags.ftrLocalMemory = true; executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(&hwInfo); diff --git a/level_zero/core/test/unit_tests/sources/event/test_event.cpp b/level_zero/core/test/unit_tests/sources/event/test_event.cpp index 629f840b8c..c8f227abf6 100644 --- a/level_zero/core/test/unit_tests/sources/event/test_event.cpp +++ b/level_zero/core/test/unit_tests/sources/event/test_event.cpp @@ -113,7 +113,7 @@ struct EventPoolFailTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -1874,7 +1874,7 @@ HWTEST_F(EventAubCsrTest, givenCallToEventHostSynchronizeWithAubModeCsrReturnsSu neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique>(); diff --git a/level_zero/core/test/unit_tests/sources/fence/test_fence.cpp b/level_zero/core/test/unit_tests/sources/fence/test_fence.cpp index e553073e64..825c4ca327 100644 --- a/level_zero/core/test/unit_tests/sources/fence/test_fence.cpp +++ b/level_zero/core/test/unit_tests/sources/fence/test_fence.cpp @@ -12,6 +12,7 @@ #include "shared/test/common/mocks/mock_csr.h" #include "shared/test/common/mocks/mock_device.h" #include "shared/test/common/mocks/mock_driver_model.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/test_macros/hw_test.h" #include "level_zero/core/source/fence/fence.h" @@ -294,7 +295,7 @@ HWTEST_F(FenceAubCsrTest, givenCallToFenceHostSynchronizeWithAubModeCsrReturnsSu neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique>(); diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory.cpp index 8ffa74c2e3..de182fc45c 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory.cpp @@ -1640,7 +1640,7 @@ struct ZexHostPointerTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -1859,7 +1859,7 @@ struct FreeExtTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -2356,7 +2356,7 @@ struct OutOfMemoryTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -2436,7 +2436,7 @@ struct MemoryRelaxedSizeTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -3056,7 +3056,7 @@ struct MemoryExportImportFailTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -4793,7 +4793,7 @@ struct MemoryFailedOpenIpcHandleTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -4831,7 +4831,7 @@ struct MemoryFailedOpenIpcHandleImplicitScalingTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); @@ -5609,7 +5609,7 @@ struct SharedAllocFailTests : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm.cpp index f0f6833a54..5d0e2da76d 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -8,6 +8,7 @@ #include "shared/source/built_ins/sip.h" #include "shared/test/common/mocks/mock_device.h" #include "shared/test/common/mocks/mock_driver_model.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.h" #include "level_zero/core/test/unit_tests/mocks/mock_built_ins.h" @@ -149,7 +150,7 @@ struct MemoryGetIpcHandleTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp index 5dff2d75b1..efa2226554 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory_drm_or_wddm.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -539,7 +539,7 @@ struct MemoryGetIpcHandleTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp b/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp index 748481fd5e..0be0bc82cd 100644 --- a/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp +++ b/level_zero/core/test/unit_tests/sources/memory/test_memory_wddm.cpp @@ -8,6 +8,7 @@ #include "shared/source/built_ins/sip.h" #include "shared/source/gmm_helper/gmm.h" #include "shared/test/common/mocks/mock_device.h" +#include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/mocks/mock_usm_memory_pool.h" #include "level_zero/core/test/unit_tests/fixtures/memory_ipc_fixture.h" @@ -294,7 +295,7 @@ struct MemoryGetIpcHandleTest : public ::testing::Test { neoDevice = NEO::MockDevice::createWithNewExecutionEnvironment(NEO::defaultHwInfo.get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); NEO::DeviceVector devices; devices.push_back(std::unique_ptr(neoDevice)); driverHandle = std::make_unique(); diff --git a/level_zero/tools/test/unit_tests/sources/debug/debug_session_common.h b/level_zero/tools/test/unit_tests/sources/debug/debug_session_common.h index ac65da1347..e976ec186c 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/debug_session_common.h +++ b/level_zero/tools/test/unit_tests/sources/debug/debug_session_common.h @@ -26,7 +26,7 @@ struct DebugApiFixture : public DeviceFixture { neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new NEO::OSInterface); mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); } void tearDown() { diff --git a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp index 26b3ee44ae..f07050aed5 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp @@ -2375,7 +2375,7 @@ HWTEST2_F(DebugSessionRegistersAccessTest, IsXeHpOrXeHpcOrXeHpgCore) { auto mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); { auto pStateSaveAreaHeader = reinterpret_cast(session->stateSaveAreaHeader.data()); @@ -2404,7 +2404,7 @@ HWTEST2_F(DebugSessionRegistersAccessTest, IsXeHpOrXeHpcOrXeHpgCore) { auto mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); { auto pStateSaveAreaHeader = reinterpret_cast(session->stateSaveAreaHeader.data()); @@ -2432,7 +2432,7 @@ TEST_F(DebugSessionRegistersAccessTest, givenGetThreadRegisterSetPropertiesCalle auto mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); uint32_t count = 0; uint32_t threadCount = 0; @@ -3367,7 +3367,7 @@ TEST_F(MultiTileDebugSessionTest, GivenSubDeviceAndTileAttachWhenRootDeviceDebug auto neoDevice = device->getNEODevice(); device->getNEODevice()->getExecutionEnvironment()->releaseRootDeviceEnvironmentResources(neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0].get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0].get(), mockBuiltIns); auto osInterface = new OsInterfaceWithDebugAttach; osInterface->debugAttachAvailable = false; @@ -3391,7 +3391,7 @@ TEST_F(MultiTileDebugSessionTest, givenTileAttachEnabledWhenGettingDebugProperti auto neoDevice = device->getNEODevice(); device->getNEODevice()->getExecutionEnvironment()->releaseRootDeviceEnvironmentResources(neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0].get()); auto mockBuiltIns = new MockBuiltins(); - neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0].get(), mockBuiltIns); neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.reset(new OsInterfaceWithDebugAttach); diff --git a/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/test_debug_api_linux.cpp b/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/test_debug_api_linux.cpp index 13ca9c0040..2f73ada96b 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/test_debug_api_linux.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/linux/prelim/test_debug_api_linux.cpp @@ -7135,7 +7135,7 @@ struct DebugApiRegistersAccessFixture : public DebugApiLinuxPrelimFixture { mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); session = std::make_unique(zet_debug_config_t{}, device, 0); session->clientHandle = MockDebugSessionLinuxi915::mockClientHandle; session->clientHandleToConnection[MockDebugSessionLinuxi915::mockClientHandle]->contextsCreated[ctxHandle].vm = vmHandle; diff --git a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp index 06a1c88324..620ae41043 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp @@ -307,7 +307,7 @@ TEST_F(DebugApiTest, givenNonZeroCountAndNullRegsetPointerWhenGetRegisterSetProp TEST_F(DebugApiTest, givenSIPHeaderHasZeroSizeMMEThenNotExposedAsRegset) { mockBuiltins = new MockBuiltins(); mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 128, 0); - neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(neoDevice->executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltins); uint32_t count = 0; EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr)); EXPECT_EQ(12u, count); diff --git a/opencl/test/unit_test/built_ins/built_in_tests.cpp b/opencl/test/unit_test/built_ins/built_in_tests.cpp index 01f8343390..4297f933ae 100644 --- a/opencl/test/unit_test/built_ins/built_in_tests.cpp +++ b/opencl/test/unit_test/built_ins/built_in_tests.cpp @@ -2321,7 +2321,7 @@ TEST_F(BuiltInTests, WhenGettingSipKernelThenReturnProgramCreatedFromIsaAcquired auto mockCompilerInterface = new MockCompilerInterface(); pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex]->compilerInterface.reset(mockCompilerInterface); auto builtins = new BuiltIns; - pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex]->builtins.reset(builtins); + MockRootDeviceEnvironment::resetBuiltins(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex].get(), builtins); mockCompilerInterface->sipKernelBinaryOverride = mockCompilerInterface->getDummyGenBinary(); const SipKernel &sipKernel = builtins->getSipKernel(SipKernelType::csr, *pDevice); diff --git a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp index a6a0e7a770..ea5aac2eb3 100644 --- a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp @@ -76,7 +76,7 @@ struct BuiltinParamsCommandQueueHwTests : public CommandQueueHwTest { void setUpImpl(EBuiltInOps::Type operation) { auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto swapBuilder = pClExecutionEnvironment->setBuiltinDispatchInfoBuilder( rootDeviceIndex, diff --git a/opencl/test/unit_test/command_queue/enqueue_copy_buffer_to_image_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_copy_buffer_to_image_tests.cpp index 4f41c8db35..bd2a188d98 100644 --- a/opencl/test/unit_test/command_queue/enqueue_copy_buffer_to_image_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_copy_buffer_to_image_tests.cpp @@ -213,7 +213,7 @@ typedef EnqueueCopyBufferToImageMipMapTest MipMapCopyBufferToImageTest; HWTEST_P(MipMapCopyBufferToImageTest, GivenImageWithMipLevelNonZeroWhenCopyBufferToImageIsCalledThenProperMipLevelIsSet) { auto imageType = (cl_mem_object_type)GetParam(); auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyBufferToImage3d, pCmdQ->getClDevice()); diff --git a/opencl/test/unit_test/command_queue/enqueue_copy_image_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_copy_image_tests.cpp index 8fb2b186e2..b0be790563 100644 --- a/opencl/test/unit_test/command_queue/enqueue_copy_image_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_copy_image_tests.cpp @@ -228,7 +228,7 @@ HWTEST_P(MipMapCopyImageTest, GivenImagesWithNonZeroMipLevelsWhenCopyImageIsCall cl_mem_object_type srcImageType, dstImageType; std::tie(srcImageType, dstImageType) = GetParam(); auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyImageToImage3d, pCmdQ->getClDevice()); diff --git a/opencl/test/unit_test/command_queue/enqueue_copy_image_to_buffer_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_copy_image_to_buffer_tests.cpp index cc76ef25a5..13ba5faec3 100644 --- a/opencl/test/unit_test/command_queue/enqueue_copy_image_to_buffer_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_copy_image_to_buffer_tests.cpp @@ -207,7 +207,7 @@ typedef EnqueueCopyImageToBufferMipMapTest MipMapCopyImageToBufferTest; HWTEST_P(MipMapCopyImageToBufferTest, GivenImageWithMipLevelNonZeroWhenCopyImageToBufferIsCalledThenProperMipLevelIsSet) { auto imageType = (cl_mem_object_type)GetParam(); auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyImage3dToBuffer, pCmdQ->getClDevice()); diff --git a/opencl/test/unit_test/command_queue/enqueue_read_image_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_read_image_tests.cpp index 91d6dcc20a..1cd1df18a7 100644 --- a/opencl/test/unit_test/command_queue/enqueue_read_image_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_read_image_tests.cpp @@ -731,7 +731,7 @@ HWTEST_F(EnqueueReadImageTest, GivenImage1DarrayWhenReadImageIsCalledThenHostPtr HWTEST_F(EnqueueReadImageTest, GivenImage1DarrayWhenReadImageIsCalledThenRowPitchIsSetToSlicePitch) { auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); EBuiltInOps::Type copyBuiltIn = EBuiltInOps::copyImage3dToBuffer; auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( copyBuiltIn, @@ -946,7 +946,7 @@ typedef EnqueueReadImageMipMapTest MipMapReadImageTest; HWTEST_P(MipMapReadImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalledThenProperMipLevelIsSet) { auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto imageType = (cl_mem_object_type)GetParam(); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyImage3dToBuffer, diff --git a/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp index 7204ca9782..c172dcc720 100644 --- a/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_svm_mem_copy_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -73,7 +73,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer return; } auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); // retrieve original builder auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyBufferToBuffer, @@ -145,7 +145,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer } auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); void *srcHostPtr = alignedMalloc(512, 64); size_t hostPtrOffset = 2; @@ -225,7 +225,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer } auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto dstHostPtr = alignedMalloc(512, 64); size_t hostPtrOffset = 2; @@ -477,7 +477,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSvmMemcpyWhenSvmZeroCopyThenBuiltinK return; } auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); // retrieve original builder auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyBufferToBuffer, @@ -551,7 +551,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSvmMemcpyWhenSvmGpuThenBuiltinKernel return; } auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); // retrieve original builder auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyBufferToBuffer, diff --git a/opencl/test/unit_test/command_queue/enqueue_svm_mem_fill_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_svm_mem_fill_tests.cpp index 0baf12edef..50bc19e342 100644 --- a/opencl/test/unit_test/command_queue/enqueue_svm_mem_fill_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_svm_mem_fill_tests.cpp @@ -66,7 +66,7 @@ HWTEST_F(BaseEnqueueSvmMemFillTest, givenEnqueueSVMMemFillWhenUsingFillBufferBui }; auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::fillBuffer, @@ -148,7 +148,7 @@ HWTEST_P(EnqueueSvmMemFillTest, givenEnqueueSVMMemFillWhenUsingFillBufferBuilder }; auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); // retrieve original builder auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( diff --git a/opencl/test/unit_test/command_queue/enqueue_write_image_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_write_image_tests.cpp index 46bb8eefce..40bfcb4723 100644 --- a/opencl/test/unit_test/command_queue/enqueue_write_image_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_write_image_tests.cpp @@ -250,7 +250,7 @@ HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenReadWriteImageIsCalledThenH HWTEST_F(EnqueueWriteImageTest, GivenImage1DarrayWhenWriteImageIsCalledThenRowPitchIsSetToSlicePitch) { auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); EBuiltInOps::Type copyBuiltIn = EBuiltInOps::copyBufferToImage3d; auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( @@ -402,7 +402,7 @@ typedef EnqueueWriteImageMipMapTest MipMapWriteImageTest; HWTEST_P(MipMapWriteImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalledThenProperMipLevelIsSet) { auto imageType = (cl_mem_object_type)GetParam(); auto builtIns = new MockBuiltins(); - pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(pCmdQ->getDevice().getExecutionEnvironment()->rootDeviceEnvironments[pCmdQ->getDevice().getRootDeviceIndex()].get(), builtIns); auto &origBuilder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder( EBuiltInOps::copyBufferToImage3d, diff --git a/opencl/test/unit_test/platform/platform_tests.cpp b/opencl/test/unit_test/platform/platform_tests.cpp index 17adea6b77..011c5e739c 100644 --- a/opencl/test/unit_test/platform/platform_tests.cpp +++ b/opencl/test/unit_test/platform/platform_tests.cpp @@ -140,7 +140,7 @@ TEST_F(PlatformTest, givenMidThreadPreemptionWhenInitializingPlatformThenCallGet auto builtIns = new MockBuiltins(); auto executionEnvironment = pPlatform->peekExecutionEnvironment(); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); EXPECT_EQ(SipKernelType::count, MockSipData::calledType); EXPECT_FALSE(MockSipData::called); @@ -156,7 +156,7 @@ TEST_F(PlatformTest, givenDisabledPreemptionAndNoSourceLevelDebuggerWhenInitiali auto builtIns = new MockBuiltins(); auto executionEnvironment = pPlatform->peekExecutionEnvironment(); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); EXPECT_EQ(SipKernelType::count, MockSipData::calledType); EXPECT_FALSE(MockSipData::called); diff --git a/shared/source/execution_environment/execution_environment.cpp b/shared/source/execution_environment/execution_environment.cpp index a28102390d..1edaee9ddc 100644 --- a/shared/source/execution_environment/execution_environment.cpp +++ b/shared/source/execution_environment/execution_environment.cpp @@ -39,6 +39,7 @@ void ExecutionEnvironment::releaseRootDeviceEnvironmentResources(RootDeviceEnvir SipKernel::freeSipKernels(rootDeviceEnvironment, memoryManager.get()); if (rootDeviceEnvironment->builtins.get()) { rootDeviceEnvironment->builtins->freeSipKernels(memoryManager.get()); + rootDeviceEnvironment->builtins.reset(); } rootDeviceEnvironment->releaseDummyAllocation(); } diff --git a/shared/test/common/mocks/mock_execution_environment.cpp b/shared/test/common/mocks/mock_execution_environment.cpp index 3fdbb1e8c5..4c30e8cb36 100644 --- a/shared/test/common/mocks/mock_execution_environment.cpp +++ b/shared/test/common/mocks/mock_execution_environment.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,6 +7,7 @@ #include "shared/test/common/mocks/mock_execution_environment.h" +#include "shared/source/built_ins/built_ins.h" #include "shared/test/common/fixtures/mock_aub_center_fixture.h" #include "shared/test/common/helpers/default_hw_info.h" @@ -50,6 +51,13 @@ MockRootDeviceEnvironment::~MockRootDeviceEnvironment() { } } +void MockRootDeviceEnvironment::resetBuiltins(RootDeviceEnvironment *rootDeviceEnvironment, BuiltIns *newValue) { + if (rootDeviceEnvironment->builtins) { + rootDeviceEnvironment->builtins->freeSipKernels(rootDeviceEnvironment->executionEnvironment.memoryManager.get()); + } + rootDeviceEnvironment->builtins.reset(newValue); +} + MockExecutionEnvironment::MockExecutionEnvironment() : MockExecutionEnvironment(defaultHwInfo.get()) {} MockExecutionEnvironment::MockExecutionEnvironment(const HardwareInfo *hwInfo) : MockExecutionEnvironment(hwInfo, true, 1u) { } diff --git a/shared/test/common/mocks/mock_execution_environment.h b/shared/test/common/mocks/mock_execution_environment.h index 141b034bb6..7d6e3c2fbd 100644 --- a/shared/test/common/mocks/mock_execution_environment.h +++ b/shared/test/common/mocks/mock_execution_environment.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -14,6 +14,8 @@ namespace NEO { +class BuiltIns; + struct MockRootDeviceEnvironment : public RootDeviceEnvironment { using BaseClass = RootDeviceEnvironment; using RootDeviceEnvironment::hwInfo; @@ -26,6 +28,8 @@ struct MockRootDeviceEnvironment : public RootDeviceEnvironment { bool initOsInterface(std::unique_ptr &&hwDeviceId, uint32_t rootDeviceIndex) override; bool initAilConfiguration() override; + static void resetBuiltins(RootDeviceEnvironment *rootDeviceEnvironment, BuiltIns *newValue); + std::vector initOsInterfaceResults; uint32_t initOsInterfaceCalled = 0u; std::optional initOsInterfaceExpectedCallCount; diff --git a/shared/test/common/os_interface/linux/drm_memory_manager_fixture.cpp b/shared/test/common/os_interface/linux/drm_memory_manager_fixture.cpp index 389479a0a5..004878f1ea 100644 --- a/shared/test/common/os_interface/linux/drm_memory_manager_fixture.cpp +++ b/shared/test/common/os_interface/linux/drm_memory_manager_fixture.cpp @@ -52,7 +52,7 @@ void DrmMemoryManagerFixture::setUp(DrmMockCustom *mock, bool localMemoryEnabled rootDeviceEnvironment->osInterface = std::make_unique(); rootDeviceEnvironment->osInterface->setDriverModel(std::unique_ptr(new DrmMockCustom(*rootDeviceEnvironment))); rootDeviceEnvironment->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*rootDeviceEnvironment->osInterface->getDriverModel()->as(), i, false); - rootDeviceEnvironment->builtins.reset(new MockBuiltins); + MockRootDeviceEnvironment::resetBuiltins(rootDeviceEnvironment, new MockBuiltins); rootDeviceEnvironment->initGmm(); } diff --git a/shared/test/unit_test/built_ins/sip_tests.cpp b/shared/test/unit_test/built_ins/sip_tests.cpp index 7cadc6f77e..0d8a92c2cf 100644 --- a/shared/test/unit_test/built_ins/sip_tests.cpp +++ b/shared/test/unit_test/built_ins/sip_tests.cpp @@ -474,7 +474,7 @@ TEST(DebugBindlessSip, givenContextWhenBindlessDebugSipIsRequestedThenCorrectSip auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); const uint32_t contextId = 0u; std::unique_ptr osContext(OsContext::create(executionEnvironment->rootDeviceEnvironments[0]->osInterface.get(), @@ -503,7 +503,7 @@ TEST(DebugBindlessSip, givenOfflineDebuggingModeWhenGettingSipForContextThenCorr auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); executionEnvironment->setDebuggingMode(DebuggingMode::offline); const uint32_t contextId = 0u; @@ -533,7 +533,7 @@ TEST(DebugBindlessSip, givenTwoContextsWhenBindlessDebugSipIsRequestedThenEachSi auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); const uint32_t context0Id = 0u; std::unique_ptr osContext0(OsContext::create(executionEnvironment->rootDeviceEnvironments[0]->osInterface.get(), @@ -571,7 +571,7 @@ TEST(DebugBindlessSip, givenFailingSipAllocationWhenBindlessDebugSipWithContextI auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); const uint32_t contextId = 0u; std::unique_ptr osContext(OsContext::create(executionEnvironment->rootDeviceEnvironments[0]->osInterface.get(), @@ -600,7 +600,7 @@ TEST(DebugBindlessSip, givenCorrectSipKernelWhenReleasingAllocationManuallyThenF auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); const uint32_t contextId = 0u; std::unique_ptr osContext(OsContext::create(executionEnvironment->rootDeviceEnvironments[0]->osInterface.get(), @@ -633,7 +633,7 @@ TEST(DebugBindlessSip, givenOfflineDebuggingModeWhenSipIsInitializedThenBinaryIs auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); executionEnvironment->setDebuggingMode(DebuggingMode::offline); auto osContext = std::make_unique(0, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::regular})); @@ -670,7 +670,7 @@ TEST(DebugBindlessSip, givenOfflineDebuggingModeAndInvalidSipWhenSipIsInitialize auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); executionEnvironment->setDebuggingMode(DebuggingMode::offline); auto osContext = std::make_unique(0, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::regular})); @@ -707,7 +707,7 @@ TEST(DebugBindlessSip, givenOfflineDebuggingModeWhenDebugSipForContextIsCreatedT auto executionEnvironment = mockDevice->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); executionEnvironment->setDebuggingMode(DebuggingMode::offline); auto osContext = std::make_unique(0, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::regular})); diff --git a/shared/test/unit_test/debugger/test_l0_debugger.cpp b/shared/test/unit_test/debugger/test_l0_debugger.cpp index d281a8b05e..94eef44148 100644 --- a/shared/test/unit_test/debugger/test_l0_debugger.cpp +++ b/shared/test/unit_test/debugger/test_l0_debugger.cpp @@ -56,7 +56,7 @@ TEST(Debugger, givenL0DebuggerOFFWhenGettingStateSaveAreaHeaderThenValidSipTypeI auto isHexadecimalArrayPreferred = gfxCoreHelper.isSipKernelAsHexadecimalArrayPreferred(); if (!isHexadecimalArrayPreferred) { auto mockBuiltIns = new NEO::MockBuiltins(); - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), mockBuiltIns); } executionEnvironment->rootDeviceEnvironments[0]->initGmm(); diff --git a/shared/test/unit_test/device/neo_device_tests.cpp b/shared/test/unit_test/device/neo_device_tests.cpp index d2593363f7..efea0a1cc0 100644 --- a/shared/test/unit_test/device/neo_device_tests.cpp +++ b/shared/test/unit_test/device/neo_device_tests.cpp @@ -448,7 +448,7 @@ TEST_F(DeviceGetCapsTest, givenDeviceWithMidThreadPreemptionWhenDeviceIsCreatedT auto executionEnvironment = new ExecutionEnvironment(); executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0u]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0u].get(), builtIns); auto device = std::unique_ptr(MockDevice::createWithExecutionEnvironment(defaultHwInfo.get(), executionEnvironment, 0u)); ASSERT_EQ(builtIns, device->getBuiltIns()); EXPECT_FALSE(MockSipData::called); diff --git a/shared/test/unit_test/preemption/preemption_tests.cpp b/shared/test/unit_test/preemption/preemption_tests.cpp index 813cf79076..7a827def86 100644 --- a/shared/test/unit_test/preemption/preemption_tests.cpp +++ b/shared/test/unit_test/preemption/preemption_tests.cpp @@ -302,7 +302,7 @@ HWTEST_P(PreemptionHwTest, GivenPreemptionModeIsNotChangingWhenGettingRequiredCm { auto builtIns = new MockBuiltins(); - mockDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(mockDevice->getExecutionEnvironment()->rootDeviceEnvironments[0].get(), builtIns); PreemptionHelper::programCmdStream(cmdStream, mode, mode, nullptr); } EXPECT_EQ(0U, cmdStream.getUsed()); diff --git a/shared/test/unit_test/preemption/test_preemption_xehp_and_later.cpp b/shared/test/unit_test/preemption/test_preemption_xehp_and_later.cpp index 5ad0111a25..06ccc0f3fa 100644 --- a/shared/test/unit_test/preemption/test_preemption_xehp_and_later.cpp +++ b/shared/test/unit_test/preemption/test_preemption_xehp_and_later.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2023 Intel Corporation + * Copyright (C) 2021-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -135,7 +135,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, XeHPAndLaterPreemptionTests, GivenOfflineModeDebugg auto executionEnvironment = device->getExecutionEnvironment(); auto builtIns = new NEO::MockBuiltins(); builtIns->callBaseGetSipKernel = true; - executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(builtIns); + MockRootDeviceEnvironment::resetBuiltins(executionEnvironment->rootDeviceEnvironments[0].get(), builtIns); executionEnvironment->rootDeviceEnvironments[0]->debugger.reset(new MockDebugger); device->executionEnvironment->setDebuggingMode(DebuggingMode::offline); device->setPreemptionMode(MidThread);