Skip to content

Commit 020a3da

Browse files
committed
fix: Add Arm(R) Immortalis(TM) detection.
Resolves: [COMPMID-8564] Signed-off-by: Omar Al Khatib <[email protected]> Change-Id: I5fdcd0e862c5d787874cb53f6c481facdb863769
1 parent 932f767 commit 020a3da

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

src/core/GPUTarget.cpp

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018-2024 Arm Limited.
2+
* Copyright (c) 2018-2025 Arm Limited.
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -52,20 +52,22 @@ GPUTarget get_gpu_target(const std::string &full_name, const std::string &base_n
5252
{"G72", GPUTarget::G72}, //
5353
{"G76", GPUTarget::G76}, //
5454
// Vallhall
55-
{"G57", GPUTarget::G57}, //
56-
{"G77", GPUTarget::G77}, //
57-
{"G68", GPUTarget::G68}, //
58-
{"G78", GPUTarget::G78}, //
59-
{"G78AE", GPUTarget::G78AE}, //
60-
{"G310", GPUTarget::G310}, //
61-
{"G510", GPUTarget::G510}, //
62-
{"G610", GPUTarget::G610}, //
63-
{"G710", GPUTarget::G710}, //
64-
{"G615", GPUTarget::G615}, //
65-
{"G715", GPUTarget::G715}, //
55+
{"G57", GPUTarget::G57}, //
56+
{"G77", GPUTarget::G77}, //
57+
{"G68", GPUTarget::G68}, //
58+
{"G78", GPUTarget::G78}, //
59+
{"G78AE", GPUTarget::G78AE}, //
60+
{"G310", GPUTarget::G310}, //
61+
{"G510", GPUTarget::G510}, //
62+
{"G610", GPUTarget::G610}, //
63+
{"G710", GPUTarget::G710}, //
64+
{"G615", GPUTarget::G615}, //
65+
{"G715", GPUTarget::G715}, //
66+
{"Immortalis-G715", GPUTarget::G715}, //
6667
// 5th Gen
67-
{"G620", GPUTarget::G620}, //
68-
{"G720", GPUTarget::G720}, //
68+
{"G620", GPUTarget::G620}, //
69+
{"G720", GPUTarget::G720}, //
70+
{"Immortalis-G720", GPUTarget::G720}, //
6971

7072
};
7173
// Try full name with variant.
@@ -120,19 +122,38 @@ const std::string &string_from_target(GPUTarget target)
120122

121123
GPUTarget get_target_from_name(const std::string &device_name)
122124
{
123-
std::regex mali_regex(R"(Mali-(([A-Za-z]+\d*)\w*))");
124-
std::smatch name_parts;
125-
const bool found_mali = std::regex_search(device_name, name_parts, mali_regex);
126-
if (!found_mali)
125+
std::regex mali_regex(R"(Mali-(([A-Za-z]+\d*)\w*))");
126+
std::regex immortalis_regex(R"(Immortalis-(([A-Za-z]+\d*)\w*))");
127+
128+
std::smatch name_parts_mali;
129+
std::smatch name_parts_immortalis;
130+
131+
const bool found_mali = std::regex_search(device_name, name_parts_mali, mali_regex);
132+
const bool found_immortalis = std::regex_search(device_name, name_parts_immortalis, immortalis_regex);
133+
134+
if (!found_mali && !found_immortalis)
127135
{
128136
ARM_COMPUTE_LOG_INFO_MSG_WITH_FORMAT_CORE("Can't find valid Arm® Mali™ GPU device name: %s. "
129137
"Target is set to default: %s",
130138
device_name.c_str(), string_from_target(GPUTarget::FIFTHGEN).c_str());
131139
return GPUTarget::FIFTHGEN;
132140
}
133-
const auto &full_name = name_parts.str(1);
134-
const auto &base_name = name_parts.str(2);
135-
const auto gpu_target = get_gpu_target(full_name, base_name);
141+
142+
std::string full_name;
143+
std::string base_name;
144+
145+
if (found_mali)
146+
{
147+
full_name = name_parts_mali.str(1);
148+
base_name = name_parts_mali.str(2);
149+
}
150+
else
151+
{
152+
full_name = name_parts_immortalis.str(1);
153+
base_name = name_parts_immortalis.str(2);
154+
}
155+
156+
const auto gpu_target = get_gpu_target(full_name, base_name);
136157
ARM_COMPUTE_LOG_INFO_MSG_WITH_FORMAT_CORE("Found Arm® Mali™ GPU device name %s. Target is set to %s.",
137158
full_name.c_str(), string_from_target(gpu_target).c_str());
138159
return gpu_target;

0 commit comments

Comments
 (0)