mirror of
https://git.sanhost.net/sanasol/hytale-f2p
synced 2026-02-26 05:41:48 -03:00
Merge GPU preference feature branch to main branch version 2.0.2 for testing (#3)
* modernized UI for GPU Preference option * feat: auto-detect dedicated GPU on hybrid laptops (iGPU+dGPU) * feat: detailed GPU info in auto-detection feature on startup * feat: add GPU options for launcher - Add GPU preference setting (Auto/Integrated/Dedicated) - Implement Linux GPU selection with DRI_PRIME and NVIDIA env vars - Add GPU detection using Electron's app.getGPUInfo() - Update settings UI with GPU preference dropdown - Integrate GPU preference into game launch process * feat: auto-detect dedicated GPU on hybrid laptops (iGPU+dGPU) * added fallbacks to and option to use integrated GPU. * add package-lock and fix deps version * changed 'Nvidia' string to 'NVIDIA' * fix: selecting `dedicated` option while using nvidia GPU did not set its specific env variables * remove unused `CONFIG_FILE` variable on launcher core modules * fix: duplicated save-load gpu detection functions * move game option settings to the top, while custom java to the bottom * fix: settings-header margin-bottom from 3rem to 1rem and supress line-clamp warning
This commit is contained in:
48
main.js
48
main.js
@@ -161,6 +161,19 @@ app.whenReady().then(async () => {
|
||||
console.log('Node.js version:', process.versions.node);
|
||||
console.log('Log directory:', logger.getLogDirectory());
|
||||
|
||||
try {
|
||||
const { loadGpuPreference, detectGpu } = require('./backend/launcher');
|
||||
const savedPreference = loadGpuPreference();
|
||||
if (savedPreference === 'auto') {
|
||||
global.detectedGpu = detectGpu(); // if 'auto' selected = preload GPU detection
|
||||
console.log('GPU auto-detection completed on startup:', global.detectedGpu);
|
||||
} else {
|
||||
console.log('GPU preference is manual, skipping auto-detection');
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Failed to preload GPU detection:', error.message);
|
||||
global.detectedGpu = { mode: 'integrated', vendor: 'intel' };
|
||||
}
|
||||
|
||||
|
||||
// Initialize Profile Manager (runs migration if needed)
|
||||
@@ -282,7 +295,7 @@ app.on('window-all-closed', () => {
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.handle('launch-game', async (event, playerName, javaPath, installPath) => {
|
||||
ipcMain.handle('launch-game', async (event, playerName, javaPath, installPath, gpuPreference) => {
|
||||
try {
|
||||
const progressCallback = (message, percent, speed, downloaded, total) => {
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
@@ -297,8 +310,8 @@ ipcMain.handle('launch-game', async (event, playerName, javaPath, installPath) =
|
||||
}
|
||||
};
|
||||
|
||||
const result = await launchGameWithVersionCheck(playerName, progressCallback, javaPath, installPath);
|
||||
|
||||
const result = await launchGameWithVersionCheck(playerName, progressCallback, javaPath, installPath, gpuPreference);
|
||||
|
||||
return result;
|
||||
} catch (error) {
|
||||
console.error('Launch error:', error);
|
||||
@@ -710,6 +723,35 @@ ipcMain.handle('get-update-info', async () => {
|
||||
return updateManager.getUpdateInfo();
|
||||
});
|
||||
|
||||
ipcMain.handle('get-gpu-info', () => {
|
||||
try {
|
||||
return app.getGPUInfo('complete');
|
||||
} catch (error) {
|
||||
console.error('Error getting GPU info:', error);
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.handle('save-gpu-preference', (event, gpuPreference) => {
|
||||
const { saveGpuPreference } = require('./backend/launcher');
|
||||
saveGpuPreference(gpuPreference);
|
||||
return { success: true };
|
||||
});
|
||||
|
||||
ipcMain.handle('load-gpu-preference', () => {
|
||||
const { loadGpuPreference } = require('./backend/launcher');
|
||||
return loadGpuPreference();
|
||||
});
|
||||
|
||||
ipcMain.handle('get-detected-gpu', () => {
|
||||
if (global.detectedGpu) {
|
||||
return global.detectedGpu;
|
||||
}
|
||||
const { detectGpu } = require('./backend/launcher');
|
||||
global.detectedGpu = detectGpu();
|
||||
return global.detectedGpu;
|
||||
});
|
||||
|
||||
ipcMain.handle('window-close', () => {
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
mainWindow.close();
|
||||
|
||||
Reference in New Issue
Block a user