Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
be1335c
重构 Renderer 并引入 Renderer2 以增强 Vulkan 渲染器支持
Glavo Apr 11, 2026
1d1f8e3
移除 Renderer2 并合并功能到重构后的 Renderer
Glavo Apr 11, 2026
dea1569
重构 Renderer 并引入 Renderer.DEFAULT
Glavo Apr 11, 2026
f493c53
重构 Renderer 接口,更新驱动类型为 Renderer.Driver,增强对 Vulkan 和 OpenGL 的支持
Glavo Apr 11, 2026
6ebd5ea
优化 Renderer.java 中的异常处理,简化代码逻辑
Glavo Apr 11, 2026
50a4438
增强 Renderer 支持,简化获取支持的渲染器逻辑
Glavo Apr 11, 2026
22d6e4c
Refactor Vulkan driver detection and improve renderer support
Glavo Apr 11, 2026
257402c
Refactor Vulkan driver detection and improve renderer support
Glavo Apr 11, 2026
4e89a61
Enhance Vulkan driver documentation with detailed descriptions for ea…
Glavo Apr 11, 2026
34cab67
Add isSupported implementation for PANVK Vulkan driver
Glavo Apr 11, 2026
835e0d9
Add ARM architecture support and update Vulkan driver checks for Broa…
Glavo Apr 11, 2026
e2d7fd2
Refactor renderer variable naming in DefaultLauncher.java
Glavo Apr 11, 2026
12dcdde
Remove unused Vulkan descriptor file finder method
Glavo Apr 11, 2026
5571445
Update Vulkan renderer names and descriptions in Chinese localization
Glavo Apr 11, 2026
5244fba
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 11, 2026
f67fb0e
Refactor Vulkan driver detection and improve renderer support
Glavo Apr 11, 2026
d9923c6
Update Vulkan renderer names in Chinese localization
Glavo Apr 11, 2026
a63d500
Comment out Intel HasVK driver implementation in Renderer.java
Glavo Apr 11, 2026
4428940
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 11, 2026
fbdebef
Add HomebrewUtils for macOS Homebrew path detection
Glavo Apr 11, 2026
7dab5f6
Refactor Vulkan driver detection for Homebrew on macOS
Glavo Apr 11, 2026
1df4e03
Add ARM64 architecture support in Renderer.java
Glavo Apr 11, 2026
966df28
Refactor Homebrew Vulkan library path handling
Glavo Apr 11, 2026
88eb301
Add architecture check for Vulkan driver on macOS
Glavo Apr 11, 2026
98f2a9b
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 11, 2026
d6c1e76
Add Vulkan driver file detection for Windows GPUs
Glavo Apr 11, 2026
6cbe21b
Add Vulkan driver environment variable handling for system architecture
Glavo Apr 11, 2026
1bfcc84
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 11, 2026
387b5f4
Refactor Vulkan driver detection logic for macOS and Linux
Glavo Apr 11, 2026
fc1cdba
Refactor Vulkan driver detection logic for macOS and Linux
Glavo Apr 11, 2026
6c7f313
Refactor Homebrew Vulkan library path handling
Glavo Apr 11, 2026
979be5e
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 11, 2026
7ead7d8
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 12, 2026
d62d984
Refactor Vulkan driver detection order for macOS Homebrew
Glavo Apr 12, 2026
c78f674
Refactor Vulkan driver file pattern for Windows ARM64
Glavo Apr 12, 2026
d49d56c
Refactor Homebrew Vulkan library path handling
Glavo Apr 12, 2026
2f4f954
Add Intel HASVK Vulkan driver support
Glavo Apr 12, 2026
5a0f037
Add Qualcomm and Turnip Vulkan driver support
Glavo Apr 12, 2026
e6403d7
Add Qualcomm Vulkan driver support for Windows ARM64
Glavo Apr 12, 2026
143fd18
Add Vulkan renderer options and reorganize renderer list
Glavo Apr 12, 2026
9e3a96b
Update Vulkan renderer descriptions in Chinese localization
Glavo Apr 12, 2026
ddbe930
Change default renderer from Vulkan to OpenGL
Glavo Apr 12, 2026
4115df5
Remove hardware vendor check from panfrost support condition
Glavo Apr 12, 2026
fa3814f
Remove hardware vendor check from panfrost support condition
Glavo Apr 12, 2026
c495a7d
Update MoltenVK link description in renderer comments
Glavo Apr 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,10 @@ private void launch0() {
}
}),
Task.composeAsync(() -> {
Renderer renderer = setting.getRenderer();
if (renderer == null || renderer.getMesaDriverName() == null
|| OperatingSystem.CURRENT_OS != OperatingSystem.WINDOWS) {
if (OperatingSystem.CURRENT_OS != OperatingSystem.WINDOWS
|| !(setting.getRenderer() instanceof Renderer.Driver renderer)
|| renderer.mesaDriverName() == null)
return null;
}

Library lib = NativePatcher.getWindowsMesaLoader(java, renderer, OperatingSystem.SYSTEM_VERSION);
if (lib == null)
Expand All @@ -188,7 +187,7 @@ private void launch0() {
return null;
}

String agent = FileUtils.getAbsolutePath(file) + "=" + renderer.getMesaDriverName();
String agent = FileUtils.getAbsolutePath(file) + "=" + renderer.mesaDriverName();

if (GameLibrariesTask.shouldDownloadLibrary(repository, version.get(), lib, integrityCheck)) {
return new LibraryDownloadTask(dependencyManager, file, lib)
Expand Down
14 changes: 4 additions & 10 deletions HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@ public JsonElement serialize(VersionSetting src, Type typeOfSrc, JsonSerializati

obj.addProperty("graphicsBackend", src.getGraphicsBackend().name());
obj.addProperty("renderer", src.getRenderer().name());
if (src.getRenderer() == Renderer.LLVMPIPE)
if (src.getRenderer() == Renderer.OpenGL.LLVMPIPE)
obj.addProperty("useSoftwareRenderer", true);

return obj;
Expand Down Expand Up @@ -909,15 +909,9 @@ public VersionSetting deserialize(JsonElement json, Type typeOfT, JsonDeserializ
}

vs.setRenderer(Optional.ofNullable(obj.get("renderer")).map(JsonElement::getAsString)
.flatMap(name -> {
try {
return Optional.of(Renderer.valueOf(name.toUpperCase(Locale.ROOT)));
} catch (IllegalArgumentException ignored) {
return Optional.empty();
}
}).orElseGet(() -> {
.map(Renderer::of).orElseGet(() -> {
boolean useSoftwareRenderer = Optional.ofNullable(obj.get("useSoftwareRenderer")).map(JsonElement::getAsBoolean).orElse(false);
return useSoftwareRenderer ? Renderer.LLVMPIPE : Renderer.DEFAULT;
return useSoftwareRenderer ? Renderer.OpenGL.LLVMPIPE : Renderer.DEFAULT;
}));

vs.setGraphicsBackend(Optional.ofNullable(obj.get("graphicsBackend")).map(JsonElement::getAsString)
Expand All @@ -927,7 +921,7 @@ public VersionSetting deserialize(JsonElement json, Type typeOfT, JsonDeserializ
} catch (IllegalArgumentException ignored) {
return Optional.empty();
}
}).orElseGet(() -> vs.getRenderer().getApi()));
}).orElseGet(() -> vs.getRenderer() instanceof Renderer.Driver renderer ? renderer.api() : GraphicsAPI.DEFAULT));

return vs;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,22 +219,20 @@ else if (gameVersion.compareTo("26.2-snapshot-2") < 0)
return I18n.hasKey(bundleKey) ? i18n(bundleKey) : null;
});
rendererPane.setValue(Renderer.DEFAULT);
rendererPane.setItems(Renderer.DEFAULT);

FXUtils.onChangeAndOperate(graphicsBackendPane.valueProperty(), backend -> {
if (backend == null) { // unbind
return;
}

rendererPane.setItems(Renderer.SUPPORTED.get(backend));
rendererPane.setItems(Renderer.getSupported(backend));
if (backend == GraphicsAPI.DEFAULT) {
rendererPane.setDisable(true);
rendererPane.setValue(Renderer.DEFAULT);
} else {
rendererPane.setDisable(false);
if (rendererPane.getValue() == null || !rendererPane.getValue().isSupported(backend)) {
if (!(rendererPane.getValue() instanceof Renderer.Driver driver) || driver.api() != backend)
rendererPane.setValue(Renderer.DEFAULT);
}
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ public static Version patchNative(DefaultGameRepository repository,
if (windowsVersion.isAtLeast(OSVersion.WINDOWS_10)) {
return getNatives(java.getPlatform()).get("mesa-loader");
} else if (windowsVersion.isAtLeast(OSVersion.WINDOWS_7)) {
if (renderer == Renderer.LLVMPIPE)
if (renderer == Renderer.OpenGL.LLVMPIPE)
return getNatives(java.getPlatform()).get("software-renderer-loader");
else
return null;
Expand Down
38 changes: 34 additions & 4 deletions HMCL/src/main/resources/assets/lang/I18N.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1389,14 +1389,44 @@ settings.advanced.post_exit_command.prompt=Commands to execute after the game ex
settings.advanced.renderer=Renderer
settings.advanced.renderer.default=Default
settings.advanced.renderer.default.desc=Use System Default
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=OpenGL renderer based on DirectX 12
# Vulkan Renderers
settings.advanced.renderer.lavapipe=Mesa Lavapipe
settings.advanced.renderer.lavapipe.desc=Software Vulkan Renderer
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=Software OpenGL Renderer
settings.advanced.renderer.dozen=Mesa Dozen
settings.advanced.renderer.dozen.desc=Vulkan renderer based on DirectX 12 (Experimental)
settings.advanced.renderer.nvidia_vulkan=NVIDIA
settings.advanced.renderer.nvidia_vulkan.desc=Official Vulkan driver for NVIDIA GPUs
settings.advanced.renderer.nvidia_nvk=NVIDIA (NVK)
settings.advanced.renderer.nvidia_nvk.desc=Open-source Vulkan driver for NVIDIA GPUs
settings.advanced.renderer.amdvlk=AMD
settings.advanced.renderer.amdvlk.desc=Official Vulkan driver for AMD GPUs
settings.advanced.renderer.amd_radv=AMD (RADV)
settings.advanced.renderer.amd_radv.desc=Open-source Vulkan driver for AMD GPUs
settings.advanced.renderer.intel_vulkan=Intel
settings.advanced.renderer.intel_vulkan.desc=Official Vulkan driver for Intel GPUs
settings.advanced.renderer.intel_anv=Intel (ANV)
settings.advanced.renderer.intel_anv.desc=Open-source Vulkan driver for Intel GPUs
settings.advanced.renderer.intel_hasvk=Intel (HASVK)
settings.advanced.renderer.intel_hasvk.desc=Open-source Vulkan driver for older Intel GPUs
settings.advanced.renderer.qualcomm=Qualcomm
settings.advanced.renderer.qualcomm.desc=Official Vulkan driver for Qualcomm Adreno GPUs
settings.advanced.renderer.turnip=Qualcomm (Turnip)
settings.advanced.renderer.turnip.desc=Open-source Vulkan driver for Qualcomm Adreno GPUs
settings.advanced.renderer.moltenvk=MoltenVK
settings.advanced.renderer.moltenvk.desc=Vulkan renderer based on Metal
settings.advanced.renderer.kosmickrisp=KosmicKrisp
settings.advanced.renderer.kosmickrisp.desc=Vulkan renderer based on Metal 4 (Experimental)
settings.advanced.renderer.powervr=PowerVR
settings.advanced.renderer.powervr.desc=Open-source Vulkan driver for PowerVR GPUs (Experimental)
settings.advanced.renderer.panvk=PanVK
settings.advanced.renderer.panvk.desc=Open-source Vulkan driver for Arm Mali GPUs (Experimental)
settings.advanced.renderer.v3dv=V3DV
settings.advanced.renderer.v3dv.desc=Open-source Vulkan driver for Raspberry Pi 4/5 GPUs (Experimental)
# OpenGL Renderers
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=Software OpenGL renderer
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=OpenGL renderer based on DirectX 12
settings.advanced.renderer.zink=Mesa Zink
settings.advanced.renderer.zink.desc=OpenGL renderer based on Vulkan
settings.advanced.server_ip=Server Address
Expand Down
40 changes: 35 additions & 5 deletions HMCL/src/main/resources/assets/lang/I18N_zh.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1173,17 +1173,47 @@ settings.advanced.process_priority.high=高
settings.advanced.process_priority.high.desc=優先保證遊戲執行,但可能會導致其他程式卡頓
settings.advanced.post_exit_command=遊戲結束後執行指令
settings.advanced.post_exit_command.prompt=將在遊戲結束後呼叫使用
settings.advanced.renderer=繪製器
settings.advanced.renderer=繪製器/驅動
settings.advanced.renderer.default=預設
settings.advanced.renderer.default.desc=使用系統預設繪製器
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=基於 DirectX 12 的 OpenGL 繪製器
# Vulkan Renderers
settings.advanced.renderer.lavapipe=Mesa Lavapipe
settings.advanced.renderer.lavapipe.desc=軟體 Vulkan 繪製器
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=軟體 OpenGL 繪製器
settings.advanced.renderer.dozen=Mesa Dozen
settings.advanced.renderer.dozen.desc=基於 DirectX 12 的 Vulkan 繪製器 (實驗性)
settings.advanced.renderer.nvidia_vulkan=NVIDIA
settings.advanced.renderer.nvidia_vulkan.desc=NVIDIA GPU 的官方 Vulkan 驅動
settings.advanced.renderer.nvidia_nvk=NVIDIA (NVK)
settings.advanced.renderer.nvidia_nvk.desc=NVIDIA GPU 的開源 Vulkan 驅動
settings.advanced.renderer.amdvlk=AMD
settings.advanced.renderer.amdvlk.desc=AMD GPU 的官方 Vulkan 驅動
settings.advanced.renderer.amd_radv=AMD (RADV)
settings.advanced.renderer.amd_radv.desc=AMD GPU 的開源 Vulkan 驅動
settings.advanced.renderer.intel_vulkan=Intel
settings.advanced.renderer.intel_vulkan.desc=Intel GPU 的官方 Vulkan 驅動
settings.advanced.renderer.intel_anv=Intel (ANV)
settings.advanced.renderer.intel_anv.desc=Intel GPU 的開源 Vulkan 驅動
settings.advanced.renderer.intel_hasvk=Intel (HASVK)
settings.advanced.renderer.intel_hasvk.desc=Intel 舊 GPU 的開源 Vulkan 驅動
settings.advanced.renderer.qualcomm=高通
settings.advanced.renderer.qualcomm.desc=高通 Adreno GPU 的官方 Vulkan 驅動
settings.advanced.renderer.turnip=高通 (Turnip)
settings.advanced.renderer.turnip.desc=高通 Adreno GPU 的開源 Vulkan 驅動
settings.advanced.renderer.moltenvk=MoltenVK
settings.advanced.renderer.moltenvk.desc=基於 Metal 的 Vulkan 繪製器
settings.advanced.renderer.kosmickrisp=KosmicKrisp
settings.advanced.renderer.kosmickrisp.desc=基於 Metal 4 的 Vulkan 繪製器 (實驗性)
settings.advanced.renderer.powervr=PowerVR
settings.advanced.renderer.powervr.desc=PowerVR GPU 的開源 Vulkan 驅動 (實驗性)
settings.advanced.renderer.panvk=PanVK
settings.advanced.renderer.panvk.desc=Arm Mali GPU 的開源 Vulkan 驅動 (實驗性)
settings.advanced.renderer.v3dv=V3DV
settings.advanced.renderer.v3dv.desc=樹莓派 4/5 GPU 的開源 Vulkan 驅動 (實驗性)
# OpenGL Renderers
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=軟體 OpenGL 繪製器
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=基於 DirectX 12 的 OpenGL 繪製器
settings.advanced.renderer.zink=Mesa Zink
settings.advanced.renderer.zink.desc=基於 Vulkan 的 OpenGL 繪製器
settings.advanced.server_ip=伺服器位址
Expand Down
40 changes: 35 additions & 5 deletions HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1178,17 +1178,47 @@ settings.advanced.process_priority.high=高
settings.advanced.process_priority.high.desc=优先保证游戏运行,但可能会导致其他程序卡顿
settings.advanced.post_exit_command=游戏结束后执行命令
settings.advanced.post_exit_command.prompt=将在游戏结束后调用
settings.advanced.renderer=渲染器
settings.advanced.renderer=渲染器/驱动
settings.advanced.renderer.default=默认
settings.advanced.renderer.default.desc=使用系统默认渲染器
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=基于 DirectX 12 的 OpenGL 渲染器
settings.advanced.renderer.dozen=Mesa Dozen
settings.advanced.renderer.dozen.desc=基于 DirectX 12 的 Vulkan 渲染器 (实验性)
# Vulkan Renderers
settings.advanced.renderer.lavapipe=Mesa Lavapipe
settings.advanced.renderer.lavapipe.desc=软件 Vulkan 渲染器
settings.advanced.renderer.dozen=Mesa Dozen
settings.advanced.renderer.dozen.desc=基于 DirectX 12 的 Vulkan 渲染器 (实验性)
settings.advanced.renderer.nvidia_vulkan=NVIDIA
settings.advanced.renderer.nvidia_vulkan.desc=NVIDIA GPU 的官方 Vulkan 驱动
settings.advanced.renderer.nvidia_nvk=NVIDIA (NVK)
settings.advanced.renderer.nvidia_nvk.desc=NVIDIA GPU 的开源 Vulkan 驱动
settings.advanced.renderer.amdvlk=AMD
settings.advanced.renderer.amdvlk.desc=AMD GPU 的官方 Vulkan 驱动
settings.advanced.renderer.amd_radv=AMD (RADV)
settings.advanced.renderer.amd_radv.desc=AMD GPU 的开源 Vulkan 驱动
settings.advanced.renderer.intel_vulkan=Intel
settings.advanced.renderer.intel_vulkan.desc=Intel GPU 的官方 Vulkan 驱动
settings.advanced.renderer.intel_anv=Intel (ANV)
settings.advanced.renderer.intel_anv.desc=Intel GPU 的开源 Vulkan 驱动
settings.advanced.renderer.intel_hasvk=Intel (HASVK)
settings.advanced.renderer.intel_hasvk.desc=Intel 旧 GPU 的开源 Vulkan 驱动
settings.advanced.renderer.qualcomm=高通
settings.advanced.renderer.qualcomm.desc=高通 Adreno GPU 的官方 Vulkan 驱动
settings.advanced.renderer.turnip=高通 (Turnip)
settings.advanced.renderer.turnip.desc=高通 Adreno GPU 的开源 Vulkan 驱动
settings.advanced.renderer.moltenvk=MoltenVK
settings.advanced.renderer.moltenvk.desc=基于 Metal 的 Vulkan 渲染器
settings.advanced.renderer.kosmickrisp=KosmicKrisp
settings.advanced.renderer.kosmickrisp.desc=基于 Metal 4 的 Vulkan 渲染器 (实验性)
settings.advanced.renderer.powervr=PowerVR
settings.advanced.renderer.powervr.desc=PowerVR GPU 的开源 Vulkan 驱动 (实验性)
settings.advanced.renderer.panvk=PanVK
settings.advanced.renderer.panvk.desc=Arm Mali GPU 的开源 Vulkan 驱动 (实验性)
settings.advanced.renderer.v3dv=V3DV
settings.advanced.renderer.v3dv.desc=树莓派 4/5 GPU 的开源 Vulkan 驱动 (实验性)
# OpenGL Renderers
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=软件 OpenGL 渲染器
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=基于 DirectX 12 的 OpenGL 渲染器
settings.advanced.renderer.zink=Mesa Zink
settings.advanced.renderer.zink.desc=基于 Vulkan 的 OpenGL 渲染器
settings.advanced.server_ip=服务器地址
Expand Down
Loading