@@ -160,8 +160,10 @@ public final class LauncherHelper {
|
|||||||
}),
|
}),
|
||||||
Task.composeAsync(() -> {
|
Task.composeAsync(() -> {
|
||||||
Renderer renderer = setting.getRenderer();
|
Renderer renderer = setting.getRenderer();
|
||||||
if (renderer != Renderer.DEFAULT && OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
|
if (renderer != Renderer.DEFAULT
|
||||||
Library lib = NativePatcher.getMesaLoader(java);
|
&& OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS
|
||||||
|
&& OperatingSystem.WINDOWS_VERSION != null) {
|
||||||
|
Library lib = NativePatcher.getWindowsMesaLoader(java, renderer, OperatingSystem.WINDOWS_VERSION);
|
||||||
if (lib == null)
|
if (lib == null)
|
||||||
return null;
|
return null;
|
||||||
File file = dependencyManager.getGameRepository().getLibraryFile(version.get(), lib);
|
File file = dependencyManager.getGameRepository().getLibraryFile(version.get(), lib);
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ import org.jackhuang.hmcl.util.platform.Architecture;
|
|||||||
import org.jackhuang.hmcl.java.JavaRuntime;
|
import org.jackhuang.hmcl.java.JavaRuntime;
|
||||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||||
import org.jackhuang.hmcl.util.platform.Platform;
|
import org.jackhuang.hmcl.util.platform.Platform;
|
||||||
|
import org.jackhuang.hmcl.util.platform.windows.WindowsVersion;
|
||||||
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
|
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
@@ -178,7 +181,19 @@ public final class NativePatcher {
|
|||||||
return version.setLibraries(newLibraries);
|
return version.setLibraries(newLibraries);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Library getMesaLoader(JavaRuntime javaVersion) {
|
public static @Nullable Library getWindowsMesaLoader(@NotNull JavaRuntime javaVersion, @NotNull Renderer renderer, @NotNull WindowsVersion windowsVersion) {
|
||||||
return getNatives(javaVersion.getPlatform()).get("mesa-loader");
|
if (renderer == Renderer.DEFAULT)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (windowsVersion.compareTo(WindowsVersion.WINDOWS_10) >= 0) {
|
||||||
|
return getNatives(javaVersion.getPlatform()).get("mesa-loader");
|
||||||
|
} else if (windowsVersion.compareTo(WindowsVersion.WINDOWS_7) >= 0) {
|
||||||
|
if (renderer == Renderer.LLVMPIPE)
|
||||||
|
return getNatives(javaVersion.getPlatform()).get("software-renderer-loader");
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4007,6 +4007,17 @@
|
|||||||
"size": 27971214
|
"size": 27971214
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"software-renderer-loader": {
|
||||||
|
"name": "org.glavo:llvmpipe-loader:1.0",
|
||||||
|
"downloads": {
|
||||||
|
"artifact": {
|
||||||
|
"path": "org/glavo/llvmpipe-loader/1.0/llvmpipe-loader-1.0.jar",
|
||||||
|
"url": "https://repo1.maven.org/maven2/org/glavo/llvmpipe-loader/1.0/llvmpipe-loader-1.0.jar",
|
||||||
|
"sha1": "ff255415e5c4b2a18970da0a8e552b557ca013ae",
|
||||||
|
"size": 12964773
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"windows-x86": {
|
"windows-x86": {
|
||||||
|
|||||||
Reference in New Issue
Block a user