From 05990b628b4b492ffac3f22181ba8cf581938507 Mon Sep 17 00:00:00 2001 From: Andrzej Swierczynski Date: Tue, 21 Jul 2020 18:07:08 +0200 Subject: [PATCH] Pass revision ID to ocloc Related-To: NEO-4004 Change-Id: I3586782f4996e518fe69a9b6e2a2ed22ad19258b Signed-off-by: Andrzej Swierczynski --- .../mock/mock_offline_compiler.h | 3 +-- .../offline_compiler_tests.cpp | 19 +++++++++++++++++++ .../source/offline_compiler.cpp | 4 ++++ .../source/offline_compiler.h | 1 + 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/opencl/test/unit_test/offline_compiler/mock/mock_offline_compiler.h b/opencl/test/unit_test/offline_compiler/mock/mock_offline_compiler.h index bc7d9cbe9a..b464221e20 100644 --- a/opencl/test/unit_test/offline_compiler/mock/mock_offline_compiler.h +++ b/opencl/test/unit_test/offline_compiler/mock/mock_offline_compiler.h @@ -23,6 +23,7 @@ class MockOfflineCompiler : public OfflineCompiler { using OfflineCompiler::generateOptsSuffix; using OfflineCompiler::getHardwareInfo; using OfflineCompiler::getStringWithinDelimiters; + using OfflineCompiler::hwInfo; using OfflineCompiler::igcDeviceCtx; using OfflineCompiler::inputFileLlvm; using OfflineCompiler::inputFileSpirV; @@ -49,8 +50,6 @@ class MockOfflineCompiler : public OfflineCompiler { return OfflineCompiler::initialize(numArgs, argv, true); } - - void storeGenBinary(const void *pSrc, const size_t srcSize) { OfflineCompiler::storeBinary(genBinary, genBinarySize, pSrc, srcSize); } diff --git a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp index b9bd805401..64c2a3448d 100644 --- a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp +++ b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp @@ -1188,4 +1188,23 @@ TEST(OfflineCompilerTest, givenDeviceSpecificKernelFileWhenCompilerIsInitialized EXPECT_EQ(SUCCESS, retVal); EXPECT_STREQ("-cl-opt-disable", mockOfflineCompiler->options.c_str()); } + +TEST(OfflineCompilerTest, givenRevisionIdWhenCompilerIsInitializedThenPassItToHwInfo) { + auto mockOfflineCompiler = std::unique_ptr(new MockOfflineCompiler()); + ASSERT_NE(nullptr, mockOfflineCompiler); + + std::vector argv = { + "ocloc", + "-q", + "-file", + "test_files/copybuffer.cl", + "-device", + gEnvironment->devicePrefix.c_str(), + "-revision_id", + "3"}; + + int retVal = mockOfflineCompiler->initialize(argv.size(), argv); + EXPECT_EQ(SUCCESS, retVal); + EXPECT_EQ(mockOfflineCompiler->hwInfo.platform.usRevId, 3); +} } // namespace NEO diff --git a/shared/offline_compiler/source/offline_compiler.cpp b/shared/offline_compiler/source/offline_compiler.cpp index 19a982337c..7e8d4411c5 100644 --- a/shared/offline_compiler/source/offline_compiler.cpp +++ b/shared/offline_compiler/source/offline_compiler.cpp @@ -238,6 +238,7 @@ int OfflineCompiler::getHardwareInfo(const char *pDeviceName) { if (hardwarePrefix[productId] && (0 == strcmp(pDeviceName, hardwarePrefix[productId]))) { if (hardwareInfoTable[productId]) { hwInfo = *hardwareInfoTable[productId]; + hwInfo.platform.usRevId = revisionId; hardwareInfoSetup[hwInfo.platform.eProductFamily](&hwInfo, true, 0x0); familyNameWithType.clear(); familyNameWithType.append(familyName[hwInfo.platform.eRenderCoreFamily]); @@ -524,6 +525,9 @@ int OfflineCompiler::parseCommandLine(size_t numArgs, const std::vectorprintf("Invalid option (arg %d): %s\n", argIndex, argv[argIndex].c_str()); retVal = INVALID_COMMAND_LINE; diff --git a/shared/offline_compiler/source/offline_compiler.h b/shared/offline_compiler/source/offline_compiler.h index 8cbc58e016..dfdfab2a9a 100644 --- a/shared/offline_compiler/source/offline_compiler.h +++ b/shared/offline_compiler/source/offline_compiler.h @@ -137,6 +137,7 @@ class OfflineCompiler { std::unique_ptr igcLib = nullptr; CIF::RAII::UPtr_t igcMain = nullptr; CIF::RAII::UPtr_t igcDeviceCtx = nullptr; + int revisionId = REVISION_A0; std::unique_ptr fclLib = nullptr; CIF::RAII::UPtr_t fclMain = nullptr;