From c3846d44047ac67e7edaec3368e736a043fb69dd Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:27:57 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=B8=85=E7=90=86=20CPU=20=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jackhuang/hmcl/util/StringUtils.java | 49 ++++++++++++++++++ .../platform/hardware/CentralProcessor.java | 21 ++++++++ .../util/platform/linux/LinuxCPUDetector.java | 2 +- .../platform/windows/WindowsCPUDetector.java | 2 +- .../jackhuang/hmcl/util/StringUtilsTest.java | 50 +++++++++++++++++++ 5 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 HMCLCore/src/test/java/org/jackhuang/hmcl/util/StringUtilsTest.java diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java index 4fc87b4a90..8d2461e012 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/StringUtils.java @@ -52,6 +52,55 @@ public static boolean isNotBlank(String str) { return !isBlank(str); } + public static String normalizeWhitespaces(String str) { + if (str == null) + return ""; + + int start = 0; + int end = str.length(); + + while (start < str.length() && Character.isWhitespace(str.charAt(start))) { + start++; + } + while (end > start && Character.isWhitespace(str.charAt(end - 1))) { + end--; + } + + if (end == start) { + return ""; + } + + StringBuilder builder = null; + + int i = start; + while (i < end) { + char ch = str.charAt(i); + if (Character.isWhitespace(ch)) { + int whitespaceEnd = i + 1; + while (whitespaceEnd < end && Character.isWhitespace(str.charAt(whitespaceEnd))) { + whitespaceEnd++; + } + + if (whitespaceEnd - i > 1 || ch != ' ') { + if (builder == null) { + builder = new StringBuilder(end - start); + builder.append(str, start, i); + } + builder.append(' '); + i = whitespaceEnd ; + continue; + } + } + + if (builder != null) { + builder.append(ch); + } + i++; + } + + return builder != null ? builder.toString() : str.substring(start, end); + } + public static String capitalizeFirst(String str) { if (str == null || str.isEmpty()) return str; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 04df38776d..e33c1b558c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -17,12 +17,33 @@ */ package org.jackhuang.hmcl.util.platform.hardware; +import org.jackhuang.hmcl.util.StringUtils; import org.jetbrains.annotations.Nullable; /** * @author Glavo */ public final class CentralProcessor { + + public static String cleanName(String name) { + if (name == null) + return null; + + for (String removeString : new String[]{ + " CPU", " FPU", " APU", " Processor", + " Dual-Core", " Quad-Core", " Six-Core", " Eight-Core", " Ten-Core", + " 2-Core", " 4-Core", " 6-Core", " 8-Core", " 10-Core", " 12-Core", " 14-Core", " 16-Core" + }) { + name = name.replace(removeString, ""); + } + + int idx = name.indexOf('@'); + if (idx > 0) + name = name.substring(0, idx); + + return StringUtils.normalizeWhitespaces(name); + } + private final String name; private final @Nullable HardwareVendor vendor; private final @Nullable Cores cores; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java index 07fa50ca92..43ebbf1823 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java @@ -104,7 +104,7 @@ private static void detectName(CentralProcessor.Builder builder, TreeMap and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jackhuang.hmcl.util; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * @author Glavo + */ +public final class StringUtilsTest { + + @Test + public void testNormalizeWhitespaces() { + assertEquals("", StringUtils.normalizeWhitespaces("")); + assertEquals("", StringUtils.normalizeWhitespaces(" ")); + assertEquals("", StringUtils.normalizeWhitespaces(" \t")); + assertEquals("", StringUtils.normalizeWhitespaces(" \t ")); + + assertEquals("abc", StringUtils.normalizeWhitespaces("abc")); + assertEquals("abc", StringUtils.normalizeWhitespaces(" abc")); + assertEquals("abc", StringUtils.normalizeWhitespaces("abc ")); + assertEquals("abc", StringUtils.normalizeWhitespaces(" abc ")); + assertEquals("abc", StringUtils.normalizeWhitespaces(" \tabc \t")); + + assertEquals("a bc", StringUtils.normalizeWhitespaces("a bc")); + assertEquals("a bc", StringUtils.normalizeWhitespaces("a bc")); + assertEquals("a bc", StringUtils.normalizeWhitespaces("a \tbc")); + assertEquals("a bc", StringUtils.normalizeWhitespaces(" a \tbc ")); + assertEquals("a b c", StringUtils.normalizeWhitespaces(" a\tb c ")); + assertEquals("a b c", StringUtils.normalizeWhitespaces(" a \t b c ")); + assertEquals("a b c", StringUtils.normalizeWhitespaces(" a \t b c ")); + } +} From f710b169d40f6bed153af4ccf9b910cb6b32bba2 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:32:35 +0800 Subject: [PATCH 02/12] update --- .../hmcl/util/platform/hardware/CentralProcessor.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index e33c1b558c..345b202b62 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -29,6 +29,10 @@ public static String cleanName(String name) { if (name == null) return null; + int idx = name.indexOf('@'); + if (idx > 0) + name = name.substring(0, idx); + for (String removeString : new String[]{ " CPU", " FPU", " APU", " Processor", " Dual-Core", " Quad-Core", " Six-Core", " Eight-Core", " Ten-Core", @@ -37,9 +41,7 @@ public static String cleanName(String name) { name = name.replace(removeString, ""); } - int idx = name.indexOf('@'); - if (idx > 0) - name = name.substring(0, idx); + name = name.replace("Intel(R) Core(TM) ", "Intel Core "); return StringUtils.normalizeWhitespaces(name); } From 09420697f699c329218bd65a61c4f7ecada82ff5 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:35:09 +0800 Subject: [PATCH 03/12] update --- .../hmcl/util/platform/hardware/CentralProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 345b202b62..8a96cd8727 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -41,7 +41,9 @@ public static String cleanName(String name) { name = name.replace(removeString, ""); } - name = name.replace("Intel(R) Core(TM) ", "Intel Core "); + name = name.replace("Intel(R) ", "Intel "); + name = name.replace("Core(TM) ", "Core "); + name = name.replace("Celeron(R) ", "Celeron "); return StringUtils.normalizeWhitespaces(name); } From 0c8f3c8217a20edf5769c52ddb1727d7d03eb403 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:43:10 +0800 Subject: [PATCH 04/12] update --- .../util/platform/hardware/CentralProcessor.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 8a96cd8727..e076918076 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -26,12 +26,14 @@ public final class CentralProcessor { public static String cleanName(String name) { - if (name == null) + if (name == null) { return null; + } int idx = name.indexOf('@'); - if (idx > 0) + if (idx > 0) { name = name.substring(0, idx); + } for (String removeString : new String[]{ " CPU", " FPU", " APU", " Processor", @@ -41,9 +43,11 @@ public static String cleanName(String name) { name = name.replace(removeString, ""); } - name = name.replace("Intel(R) ", "Intel "); - name = name.replace("Core(TM) ", "Core "); - name = name.replace("Celeron(R) ", "Celeron "); + if (name.contains("Intel")) { + name = name.replaceFirst("^([0-9]+th Gen )?Intel(\\(R\\))? ", "Intel "); + name = name.replace("Core(TM) ", "Core "); + name = name.replace("Celeron(R) ", "Celeron "); + } return StringUtils.normalizeWhitespaces(name); } From 7aa971ccec892e793bd9f7cf55474eae5a91e44b Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:45:26 +0800 Subject: [PATCH 05/12] update --- .../hmcl/util/platform/hardware/CentralProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index e076918076..f7d5deba08 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -44,9 +44,11 @@ public static String cleanName(String name) { } if (name.contains("Intel")) { - name = name.replaceFirst("^([0-9]+th Gen )?Intel(\\(R\\))? ", "Intel "); + name = name.replaceFirst("^([0-9]+th Gen )?Intel", "Intel"); + name = name.replace("Intel(R) ", "Intel "); name = name.replace("Core(TM) ", "Core "); name = name.replace("Celeron(R) ", "Celeron "); + name = name.replace("Pentium(R) ", "Pentium "); } return StringUtils.normalizeWhitespaces(name); From 46d0ac6da40b19fde31ffb601924bef6d2da1eac Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 11:48:24 +0800 Subject: [PATCH 06/12] update --- .../platform/hardware/CentralProcessor.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index f7d5deba08..fdb837f008 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -26,25 +26,18 @@ public final class CentralProcessor { public static String cleanName(String name) { - if (name == null) { + if (name == null) return null; - } int idx = name.indexOf('@'); - if (idx > 0) { + if (idx > 0) name = name.substring(0, idx); - } - for (String removeString : new String[]{ - " CPU", " FPU", " APU", " Processor", - " Dual-Core", " Quad-Core", " Six-Core", " Eight-Core", " Ten-Core", - " 2-Core", " 4-Core", " 6-Core", " 8-Core", " 10-Core", " 12-Core", " 14-Core", " 16-Core" - }) { - name = name.replace(removeString, ""); - } + name = name.replaceAll(" (\\d+|Dual|Quad|Six|Eight|Ten)-Core", ""); + name = name.replaceAll(" (CPU|FPU|APU|Processor)", ""); if (name.contains("Intel")) { - name = name.replaceFirst("^([0-9]+th Gen )?Intel", "Intel"); + name = name.replaceFirst("^(\\d+th Gen )?Intel", "Intel"); name = name.replace("Intel(R) ", "Intel "); name = name.replace("Core(TM) ", "Core "); name = name.replace("Celeron(R) ", "Celeron "); From d873a54c242ea6effd41b260a576fa474f86af95 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 12:00:43 +0800 Subject: [PATCH 07/12] update --- .../platform/hardware/CentralProcessor.java | 8 ++++ .../hardware/CentralProcessorTest.java | 42 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index fdb837f008..3ed1c1fe47 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -40,8 +40,16 @@ public static String cleanName(String name) { name = name.replaceFirst("^(\\d+th Gen )?Intel", "Intel"); name = name.replace("Intel(R) ", "Intel "); name = name.replace("Core(TM) ", "Core "); + name = name.replace("Xeon(R) ", "Xeon "); name = name.replace("Celeron(R) ", "Celeron "); name = name.replace("Pentium(R) ", "Pentium "); + } else if (name.contains("AMD")) { + idx = name.indexOf(" w/ Radeon "); + if (idx < 0) + idx = name.indexOf(" with Radeon "); + + if (idx > 0) + name = name.substring(0, idx); } return StringUtils.normalizeWhitespaces(name); diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java new file mode 100644 index 0000000000..88989a4dd6 --- /dev/null +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java @@ -0,0 +1,42 @@ +/* + * Hello Minecraft! Launcher + * Copyright (C) 2025 huangyuhui and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.jackhuang.hmcl.util.platform.hardware; + +import org.junit.jupiter.api.Test; + +import static org.jackhuang.hmcl.util.platform.hardware.CentralProcessor.cleanName; +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * @author Glavo + */ +public final class CentralProcessorTest { + + @Test + public void testCleanName() { + assertEquals("Intel Core i7-12700K", cleanName("12th Gen Intel(R) Core(TM) i7-12700K")); + assertEquals("Intel Xeon E5-2660 v2", cleanName("Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz")); + assertEquals("Intel Celeron N5105", cleanName("Intel(R) Celeron(R) N5105 @ 2.00GHz")); + assertEquals("Intel Pentium Silver J5005", cleanName("Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz")); + + assertEquals("AMD Ryzen 7 5800X", cleanName("AMD Ryzen 7 5800X 8-Core Processor")); + assertEquals("AMD Ryzen 7 6800U", cleanName("AMD Ryzen 7 6800U with Radeon Graphics")); + assertEquals("AMD Ryzen 7 7840HS", cleanName("AMD Ryzen 7 7840HS w/ Radeon 780M Graphics")); + assertEquals("AMD EPYC 7713", cleanName("AMD EPYC 7713 64-Core Processor")); + } +} From 6b7c883f66f3db728755e37c717daafab0194602 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 12:00:54 +0800 Subject: [PATCH 08/12] update --- .../jackhuang/hmcl/util/platform/hardware/CentralProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 3ed1c1fe47..1e1389de17 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -33,7 +33,7 @@ public static String cleanName(String name) { if (idx > 0) name = name.substring(0, idx); - name = name.replaceAll(" (\\d+|Dual|Quad|Six|Eight|Ten)-Core", ""); + name = name.replaceFirst(" (\\d+|Dual|Quad|Six|Eight|Ten)-Core", ""); name = name.replaceAll(" (CPU|FPU|APU|Processor)", ""); if (name.contains("Intel")) { From 6de1d3fa491fbff14b5670b3d49084d3d3fd79d1 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 12:01:55 +0800 Subject: [PATCH 09/12] update --- .../hmcl/util/platform/hardware/CentralProcessorTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java index 88989a4dd6..948d2d0ad1 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java @@ -30,6 +30,7 @@ public final class CentralProcessorTest { @Test public void testCleanName() { assertEquals("Intel Core i7-12700K", cleanName("12th Gen Intel(R) Core(TM) i7-12700K")); + assertEquals("Intel Core Ultra 9 285K", cleanName("Intel(R) Core(TM) Ultra 9 285K")); assertEquals("Intel Xeon E5-2660 v2", cleanName("Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz")); assertEquals("Intel Celeron N5105", cleanName("Intel(R) Celeron(R) N5105 @ 2.00GHz")); assertEquals("Intel Pentium Silver J5005", cleanName("Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz")); From 18d4517aebd30ca5a009c849315bf5f07e65cd6c Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 13:56:03 +0800 Subject: [PATCH 10/12] update --- .../platform/hardware/CentralProcessor.java | 17 +++++++++-------- .../util/platform/linux/LinuxCPUDetector.java | 2 ++ .../hardware/CentralProcessorTest.java | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 1e1389de17..429f0cbee2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -33,23 +33,24 @@ public static String cleanName(String name) { if (idx > 0) name = name.substring(0, idx); - name = name.replaceFirst(" (\\d+|Dual|Quad|Six|Eight|Ten)-Core", ""); + name = name.replaceFirst(" (\\d+|Dual|Quad|Six|Eight|Ten)-[Cc]ores?", ""); name = name.replaceAll(" (CPU|FPU|APU|Processor)", ""); if (name.contains("Intel")) { - name = name.replaceFirst("^(\\d+th Gen )?Intel", "Intel"); - name = name.replace("Intel(R) ", "Intel "); - name = name.replace("Core(TM) ", "Core "); - name = name.replace("Xeon(R) ", "Xeon "); - name = name.replace("Celeron(R) ", "Celeron "); - name = name.replace("Pentium(R) ", "Pentium "); + name = name.replaceFirst("^(\\d+th Gen )?Intel(\\(R\\)|®)? ", "Intel "); + name = name.replaceAll(" ([a-zA-Z]+)\\((?:TM|R|™|®)\\) ", " $1 "); + name = name.replace("Core(TM)2", "Core 2"); } else if (name.contains("AMD")) { - idx = name.indexOf(" w/ Radeon "); + idx = name.indexOf(" w/ Radeon "); // Radeon 780M Graphics if (idx < 0) idx = name.indexOf(" with Radeon "); + if (idx < 0) + idx = name.indexOf(" with AMD Radeon "); if (idx > 0) name = name.substring(0, idx); + } else if (name.contains("Loongson")) { + name = name.replaceFirst("^Loongson-3A R\\d \\((Loongson-[^)]+)\\)", "$1"); } return StringUtils.normalizeWhitespaces(name); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java index 43ebbf1823..ac9b0d23e9 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/linux/LinuxCPUDetector.java @@ -100,6 +100,8 @@ private static void detectName(CentralProcessor.Builder builder, TreeMap Date: Wed, 21 May 2025 14:12:47 +0800 Subject: [PATCH 11/12] update --- .../hmcl/util/platform/hardware/CentralProcessor.java | 3 ++- .../util/platform/hardware/CentralProcessorTest.java | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java index 429f0cbee2..514cc3f3db 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessor.java @@ -41,12 +41,13 @@ public static String cleanName(String name) { name = name.replaceAll(" ([a-zA-Z]+)\\((?:TM|R|™|®)\\) ", " $1 "); name = name.replace("Core(TM)2", "Core 2"); } else if (name.contains("AMD")) { + name = name.replace("(tm)", ""); + idx = name.indexOf(" w/ Radeon "); // Radeon 780M Graphics if (idx < 0) idx = name.indexOf(" with Radeon "); if (idx < 0) idx = name.indexOf(" with AMD Radeon "); - if (idx > 0) name = name.substring(0, idx); } else if (name.contains("Loongson")) { diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java index 3317cfb6e1..caaa3a3c71 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java @@ -32,20 +32,25 @@ public void testCleanName() { assertEquals("Intel Core i7-12700K", cleanName("12th Gen Intel(R) Core(TM) i7-12700K")); assertEquals("Intel Core Ultra 9 285K", cleanName("Intel(R) Core(TM) Ultra 9 285K")); assertEquals("Intel Xeon E5-2660 v2", cleanName("Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz")); + assertEquals("Intel Xeon Phi 7250", cleanName("Intel(R) Xeon Phi(TM) CPU 7250 @ 1.40GHz")); assertEquals("Intel Celeron N5105", cleanName("Intel(R) Celeron(R) N5105 @ 2.00GHz")); assertEquals("Intel Pentium Silver J5005", cleanName("Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz")); assertEquals("Intel Atom E3940", cleanName("Intel(R) Atom(TM) Processor E3940 @ 1.60GHz")); assertEquals("Intel Core 2 Duo T7500", cleanName("Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz")); assertEquals("Intel Core 2 Quad Q9500", cleanName("Intel(R) Core(TM)2 Quad CPU Q9500 @ 2.83GHz")); - assertEquals("AMD Ryzen 7 5800X", cleanName("AMD Ryzen 7 5800X 8-Core Processor")); - assertEquals("AMD Ryzen 7 6800U", cleanName("AMD Ryzen 7 6800U with Radeon Graphics")); assertEquals("AMD Ryzen 7 7840HS", cleanName("AMD Ryzen 7 7840HS w/ Radeon 780M Graphics")); + assertEquals("AMD Ryzen 7 6800U", cleanName("AMD Ryzen 7 6800U with Radeon Graphics")); + assertEquals("AMD Ryzen 7 5800X", cleanName("AMD Ryzen 7 5800X 8-Core Processor")); + assertEquals("AMD Ryzen 5 2400G", cleanName("AMD Ryzen 5 2400G with Radeon Vega Graphics")); assertEquals("AMD EPYC 7713", cleanName("AMD EPYC 7713 64-Core Processor")); assertEquals("AMD Ryzen Threadripper 3960X", cleanName("AMD Ryzen Threadripper 3960X 24-Core Processor")); assertEquals("AMD Ryzen Threadripper PRO 5995WX", cleanName("AMD Ryzen Threadripper PRO 5995WX 64-Cores")); + assertEquals("AMD Ryzen Embedded V2748", cleanName("AMD Ryzen Embedded V2748 with Radeon Graphics")); assertEquals("AMD A8-7410", cleanName("AMD A8-7410 APU with AMD Radeon R5 Graphics")); - assertEquals("AMD Phenom(tm) II X6 1055T", cleanName("AMD Phenom(tm) II X6 1055T Processor")); + assertEquals("AMD FX-8350", cleanName("AMD FX(tm)-8350 Eight-Core Processor")); + assertEquals("AMD Phenom II X6 1055T", cleanName("AMD Phenom(tm) II X6 1055T Processor")); + assertEquals("AMD Athlon 5350", cleanName("AMD Athlon(tm) 5350 APU with Radeon(tm) R3")); assertEquals("Hygon C86 7285", cleanName("Hygon C86 7285 32-core Processor")); assertEquals("Hygon C86 3250", cleanName("Hygon C86 3250 8-core Processor")); From 27a828c0aefce7a7c8d9ff0f850ca1f11d083230 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 21 May 2025 14:17:25 +0800 Subject: [PATCH 12/12] update --- .../hmcl/util/platform/hardware/CentralProcessorTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java index caaa3a3c71..2019f25472 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/platform/hardware/CentralProcessorTest.java @@ -31,11 +31,13 @@ public final class CentralProcessorTest { public void testCleanName() { assertEquals("Intel Core i7-12700K", cleanName("12th Gen Intel(R) Core(TM) i7-12700K")); assertEquals("Intel Core Ultra 9 285K", cleanName("Intel(R) Core(TM) Ultra 9 285K")); + assertEquals("Intel Xeon Platinum 8380", cleanName("Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz")); assertEquals("Intel Xeon E5-2660 v2", cleanName("Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz")); assertEquals("Intel Xeon Phi 7250", cleanName("Intel(R) Xeon Phi(TM) CPU 7250 @ 1.40GHz")); assertEquals("Intel Celeron N5105", cleanName("Intel(R) Celeron(R) N5105 @ 2.00GHz")); assertEquals("Intel Pentium Silver J5005", cleanName("Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz")); assertEquals("Intel Atom E3940", cleanName("Intel(R) Atom(TM) Processor E3940 @ 1.60GHz")); + assertEquals("Intel Core i7 X 990", cleanName("Intel(R) Core(TM) i7 CPU X 990 @ 3.47GHz")); assertEquals("Intel Core 2 Duo T7500", cleanName("Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz")); assertEquals("Intel Core 2 Quad Q9500", cleanName("Intel(R) Core(TM)2 Quad CPU Q9500 @ 2.83GHz"));