清理高通骁龙 SoC 名称 (#3935)

This commit is contained in:
Glavo
2025-05-25 13:05:54 +08:00
committed by GitHub
parent 58a4700a46
commit ad312a61fe
6 changed files with 82 additions and 5 deletions

View File

@@ -20,6 +20,9 @@ package org.jackhuang.hmcl.util.platform.hardware;
import org.jackhuang.hmcl.util.StringUtils;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Glavo
*/
@@ -35,14 +38,13 @@ public final class CentralProcessor {
name = name.replaceFirst(" (\\d+|Dual|Quad|Six|Eight|Ten)-[Cc]ores?", "");
name = name.replaceAll(" (CPU|FPU|APU|Processor)", "");
name = name.replaceAll("\\((TM|R)\\)(?=\\s|$)", "");
if (name.contains("Intel")) {
name = name.replaceFirst("^(\\d+th Gen )?Intel(\\(R\\)|®)? ", "Intel ");
name = name.replaceAll(" ([a-zA-Z]+)\\((?:TM|R|™|®)\\) ", " $1 ");
name = name.replaceFirst("^(\\d+th Gen )?Intel\\s+", "Intel ");
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 ");
@@ -52,6 +54,17 @@ public final class CentralProcessor {
name = name.substring(0, idx);
} else if (name.contains("Loongson")) {
name = name.replaceFirst("^Loongson-3A R\\d \\((Loongson-[^)]+)\\)", "$1");
} else if (name.contains("Snapdragon")) {
name = StringUtils.normalizeWhitespaces(name);
if (name.startsWith("Snapdragon ")) {
Matcher matcher = Pattern.compile("Snapdragon X Elite - (?<id>X1E\\S+) - Qualcomm Oryon").matcher(name);
if (matcher.matches()) {
name = "Qualcomm Snapdragon X Elite " + matcher.group("id");
} else if (!name.contains("Qualcomm")) {
name = "Qualcomm " + name;
}
}
}
return StringUtils.normalizeWhitespaces(name);

View File

@@ -17,15 +17,38 @@
*/
package org.jackhuang.hmcl.util.platform.hardware;
import org.jackhuang.hmcl.util.StringUtils;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Glavo
*/
public final class GraphicsCard {
public static String cleanName(String name) {
if (name == null)
return null;
name = name.replaceAll("\\((TM|R)\\)(?=\\s|$)", "");
name = name.replace(" GPU", "");
if (name.contains("Snapdragon")) {
name = StringUtils.normalizeWhitespaces(name);
if (name.startsWith("Snapdragon ")) {
Matcher matcher = Pattern.compile("Snapdragon X Elite - (?<id>X1E\\S+) - Qualcomm Adreno").matcher(name);
if (matcher.matches()) {
name = "Qualcomm Adreno Graphics";
}
}
}
return StringUtils.normalizeWhitespaces(name);
}
public static Builder builder() {
return new Builder();
}

View File

@@ -193,7 +193,7 @@ final class LinuxGPUDetector {
if (device != null) {
matcher = Pattern.compile(".*\\[(?<name>.*)]").matcher(device.getName());
if (matcher.matches())
builder.setName(builder.getVendor() + " " + matcher.group("name"));
builder.setName(GraphicsCard.cleanName(builder.getVendor() + " " + matcher.group("name")));
else
builder.setName(builder.getVendor() + " " + device.getName());
}

View File

@@ -75,7 +75,7 @@ public final class WindowsHardwareDetector extends HardwareDetector {
String adapterDACType = videoController.get("AdapterDACType");
if (StringUtils.isNotBlank(name)) {
cards.add(GraphicsCard.builder().setName(name)
cards.add(GraphicsCard.builder().setName(GraphicsCard.cleanName(name))
.setVendor(HardwareVendor.of(adapterCompatibility))
.setDriverVersion(driverVersion)
.setType(StringUtils.isBlank(adapterDACType)