Adds new FEXCore presets#492
Conversation
Adds "Extreme" and "Denuvo" FEXCore presets with tailored environment variable configurations. These presets offer users more granular control over FEXCore's behavior, potentially enhancing performance or compatibility for specific applications. The "Extreme" preset focuses on aggressive performance optimizations. The "Denuvo" preset includes additional settings to improve compatibility with games using the Denuvo DRM.
📝 WalkthroughWalkthroughAdds two new FEXCore presets, Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@app/src/main/java/com/winlator/fexcore/FEXCorePreset.java`:
- Around line 10-11: The public constant DEVUVO in FEXCorePreset is a typo; add
a new correctly spelled public constant DENUVO (e.g., public static final String
DENUVO = "DENUVO"), annotate or comment the existing DEVUVO as `@Deprecated` with
a note to use DENUVO, and update all usages to reference FEXCorePreset.DENUVO
while leaving DEVUVO as a deprecated alias for backward compatibility; ensure
both constants are in the FEXCorePreset class alongside EXTREME and run a
project-wide find/replace of DEVUVO usages to the new DENUVO where safe.
🧹 Nitpick comments (1)
app/src/main/java/com/winlator/fexcore/FEXCorePresetManager.java (1)
54-79: Reduce duplication between PERFORMANCE/EXTREME/DEVUVO env var setup.
The EXTREME/DEVUVO blocks repeat the PERFORMANCE defaults, which risks drift if those defaults change. A small helper keeps them in sync.♻️ Suggested refactor
- else if (id.equals(FEXCorePreset.EXTREME)) { - envVars.put("FEX_TSOENABLED", "0"); - envVars.put("FEX_VECTORTSOENABLED", "0"); - envVars.put("FEX_MEMCPYSETTSOENABLED", "0"); - envVars.put("FEX_HALFBARRIERTSOENABLED", "0"); - envVars.put("FEX_X87REDUCEDPRECISION", "1"); - envVars.put("FEX_MULTIBLOCK", "1"); - - // Based from PERFORMANCE - envVars.put("FEX_SMALLTSCSCALE", "1"); - envVars.put("FEX_VOLATILEMETADATA", "1"); - } - else if (id.equals(FEXCorePreset.DEVUVO)) { - envVars.put("FEX_TSOENABLED", "0"); - envVars.put("FEX_VECTORTSOENABLED", "0"); - envVars.put("FEX_MEMCPYSETTSOENABLED", "0"); - envVars.put("FEX_HALFBARRIERTSOENABLED", "0"); - envVars.put("FEX_X87REDUCEDPRECISION", "1"); - envVars.put("FEX_MULTIBLOCK", "1"); - - // Based from EXTREME - envVars.put("FEX_SMALLTSCSCALE", "1"); - envVars.put("FEX_VOLATILEMETADATA", "1"); - envVars.put("FEX_SMCCHECKS", "full"); - envVars.put("FEX_HIDEHYPERVISORBIT", "1"); - } + else if (id.equals(FEXCorePreset.EXTREME)) { + applyPerformanceEnvVars(envVars); + envVars.put("FEX_SMALLTSCSCALE", "1"); + envVars.put("FEX_VOLATILEMETADATA", "1"); + } + else if (id.equals(FEXCorePreset.DEVUVO)) { + applyPerformanceEnvVars(envVars); + envVars.put("FEX_SMALLTSCSCALE", "1"); + envVars.put("FEX_VOLATILEMETADATA", "1"); + envVars.put("FEX_SMCCHECKS", "full"); + envVars.put("FEX_HIDEHYPERVISORBIT", "1"); + }// Add near getEnvVars (helper method) private static void applyPerformanceEnvVars(EnvVars envVars) { envVars.put("FEX_TSOENABLED", "0"); envVars.put("FEX_VECTORTSOENABLED", "0"); envVars.put("FEX_MEMCPYSETTSOENABLED", "0"); envVars.put("FEX_HALFBARRIERTSOENABLED", "0"); envVars.put("FEX_X87REDUCEDPRECISION", "1"); envVars.put("FEX_MULTIBLOCK", "1"); }
| public static final String EXTREME = "EXTREME"; | ||
| public static final String DEVUVO = "DENUVO"; |
There was a problem hiding this comment.
Fix the preset constant name typo before it becomes public API.
DEVUVO looks like a misspelling of “DENUVO”; since this is public, callers may copy the typo. Consider adding a correctly spelled constant (and deprecating the misspelled one) and updating usages.
💡 Suggested fix
- public static final String EXTREME = "EXTREME";
- public static final String DEVUVO = "DENUVO";
+ public static final String EXTREME = "EXTREME";
+ public static final String DENUVO = "DENUVO";
+ `@Deprecated`
+ public static final String DEVUVO = DENUVO;📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| public static final String EXTREME = "EXTREME"; | |
| public static final String DEVUVO = "DENUVO"; | |
| public static final String EXTREME = "EXTREME"; | |
| public static final String DENUVO = "DENUVO"; | |
| `@Deprecated` | |
| public static final String DEVUVO = DENUVO; |
🤖 Prompt for AI Agents
In `@app/src/main/java/com/winlator/fexcore/FEXCorePreset.java` around lines 10 -
11, The public constant DEVUVO in FEXCorePreset is a typo; add a new correctly
spelled public constant DENUVO (e.g., public static final String DENUVO =
"DENUVO"), annotate or comment the existing DEVUVO as `@Deprecated` with a note to
use DENUVO, and update all usages to reference FEXCorePreset.DENUVO while
leaving DEVUVO as a deprecated alias for backward compatibility; ensure both
constants are in the FEXCorePreset class alongside EXTREME and run a
project-wide find/replace of DEVUVO usages to the new DENUVO where safe.
Adds "Extreme" and "Denuvo" FEXCore presets with tailored environment variable configurations.
These presets offer users more granular control over FEXCore's behavior, potentially enhancing performance or compatibility for specific applications.
The "Extreme" preset focuses on aggressive performance optimizations.
The "Denuvo" preset includes additional settings to improve compatibility with games using the Denuvo DRM.
Summary by cubic
Adds two new FEXCore presets, “Extreme” and “Denuvo,” to give users finer control over performance and game compatibility, especially for titles using Denuvo DRM.
Written for commit 395bab3. Summary will update on new commits.
Summary by CodeRabbit
New Features
Localization