From 48c084ca322fa0f583486deb3131208ce587facc Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Fri, 4 Sep 2020 11:22:19 +0200 Subject: [PATCH] Create platformsImpl when needed Change-Id: Ie89356761fc39910c765066d40cd363c93002692 Signed-off-by: Mateusz Jablonski --- .../source/os_interface/linux/platform_teardown_linux.cpp | 3 +++ .../source/os_interface/windows/platform_teardown_win.cpp | 6 ++++-- opencl/source/platform/platform.cpp | 2 +- opencl/test/unit_test/main.cpp | 3 ++- shared/test/unit_test/main.cpp | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/opencl/source/os_interface/linux/platform_teardown_linux.cpp b/opencl/source/os_interface/linux/platform_teardown_linux.cpp index b424a3d1f9..4046ee943a 100644 --- a/opencl/source/os_interface/linux/platform_teardown_linux.cpp +++ b/opencl/source/os_interface/linux/platform_teardown_linux.cpp @@ -8,6 +8,9 @@ #include "opencl/source/platform/platform.h" namespace NEO { +void __attribute__((constructor)) platformsConstructor() { + platformsImpl = new std::vector>; +} void __attribute__((destructor)) platformsDestructor() { delete platformsImpl; platformsImpl = nullptr; diff --git a/opencl/source/os_interface/windows/platform_teardown_win.cpp b/opencl/source/os_interface/windows/platform_teardown_win.cpp index 31194b2ad8..9d7665543d 100644 --- a/opencl/source/os_interface/windows/platform_teardown_win.cpp +++ b/opencl/source/os_interface/windows/platform_teardown_win.cpp @@ -7,12 +7,14 @@ #include "opencl/source/platform/platform.h" -namespace NEO { +using namespace NEO; BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { if (fdwReason == DLL_PROCESS_DETACH) { delete platformsImpl; } + if (fdwReason == DLL_PROCESS_ATTACH) { + platformsImpl = new std::vector>; + } return TRUE; } -} // namespace NEO diff --git a/opencl/source/platform/platform.cpp b/opencl/source/platform/platform.cpp index 9341780e80..3960fdaf33 100644 --- a/opencl/source/platform/platform.cpp +++ b/opencl/source/platform/platform.cpp @@ -37,7 +37,7 @@ #include namespace NEO { -std::vector> *platformsImpl = new std::vector>; +std::vector> *platformsImpl = nullptr; Platform::Platform(ExecutionEnvironment &executionEnvironmentIn) : executionEnvironment(executionEnvironmentIn) { clDevices.reserve(4); diff --git a/opencl/test/unit_test/main.cpp b/opencl/test/unit_test/main.cpp index e0d180a74d..43db236bd1 100644 --- a/opencl/test/unit_test/main.cpp +++ b/opencl/test/unit_test/main.cpp @@ -72,6 +72,7 @@ extern std::string lastTest; bool generateRandomInput = false; void applyWorkarounds() { + platformsImpl = new std::vector>; platformsImpl->reserve(1); { std::ofstream f; @@ -152,6 +153,7 @@ void initializeTestHelpers() { void cleanTestHelpers() { GlobalMockSipProgram::shutDownSipProgram(); + delete platformsImpl; } std::string getHardwarePrefix() { @@ -440,6 +442,5 @@ int main(int argc, char **argv) { retVal = RUN_ALL_TESTS(); cleanTestHelpers(); - delete platformsImpl; return retVal; } diff --git a/shared/test/unit_test/main.cpp b/shared/test/unit_test/main.cpp index e2f78d77b0..eaa523c2d1 100644 --- a/shared/test/unit_test/main.cpp +++ b/shared/test/unit_test/main.cpp @@ -74,6 +74,7 @@ extern std::string lastTest; bool generateRandomInput = false; void applyWorkarounds() { + platformsImpl = new std::vector>; platformsImpl->reserve(1); { std::ofstream f;