Set up RetroArch shaders and video filters on Android safely
Start with the default video output and one lightweight shader preset. Confirm the preset type matches the active video driver, compare emulation speed and temperature, then save it at the narrowest useful scope. Use a CPU video filter only when you specifically need that layer; do not stack effects until each one passes a clean baseline test.
Do this in order
- 01
Record RetroArch, core, video driver, device refresh rate, and the current speed reading with shaders and video filters disabled.
- 02
Load one authorized game and choose one lightweight preset compatible with the active driver.
- 03
Apply the preset, replay the same scene, and compare emulation speed, frame pacing, audio, and sustained device temperature.
- 04
If performance drops, remove the preset before testing a simpler pass or a different compatible shader language.
- 05
Save the working preset at game, content-directory, core, or global scope, choosing the narrowest scope that matches the intent.
- 06
Restart the same content and verify the expected automatic preset loaded; record how to remove it before adding another effect.
Decision and diagnostic table
| Layer or scope | Use it for | Diagnostic rule |
|---|---|---|
| GPU shader preset | CRT response, scaling, color, or scanline processing | Driver must support its shader language |
| CPU video filter | A specific software filter before GPU output | Test alone because it adds CPU work |
| Game / directory / core / global preset | Automatic application at increasing breadth | The most specific matching preset wins |
Shader, filter, and bilinear scaling are different layers
A shader preset can contain several GPU passes. A video filter is a separate CPU-side processing stage, while bilinear scaling is a basic video setting. Combining all three makes a slowdown hard to attribute.
Begin from a known default and add only one layer at a time.
Match the preset to the video driver
RetroArch supports different preset families such as Slang, GLSL, and Cg in different driver contexts. A preset that is present on disk can still fail when its language or referenced textures are unavailable to the active driver.
Use the shipped or officially updated shader directory and keep the exact error log when a preset does not load.
Save the smallest automatic scope
A game preset affects one title, a content-directory preset affects a folder for that core, a core preset affects all content for that core, and a global preset reaches everything. More specific automatic presets override broader ones.
Restart after saving. Seeing the same picture only before restart does not prove the automatic preset path is correct.
Visual effects do not change content rights. Use games and any external textures or bezel assets only when their licenses permit your use; this guide links no third-party artwork packs.