gl2: disable tex-storage path on Android Adreno 8xx/X1#18758
Merged
LibretroAdmin merged 1 commit intolibretro:masterfrom Feb 23, 2026
Merged
Conversation
This was referenced Feb 22, 2026
|
Can confirm this works on Samsung Galaxy s25+. I imagined it wouldn't work because of Samsung drivers, but long and behold, its working perfectly fine. Thank you so much, for the time being, i will be using this fork, just need to try Retroachievements. |
ak5k
pushed a commit
to ak5k/RetroArch
that referenced
this pull request
Feb 24, 2026
Co-authored-by: Hunter Sadler <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
Android GL2: disable glTexStorage path on Qualcomm Adreno 8xx/X1 to avoid black-screen regressions
Summary
This patch adds a targeted Android GLES quirk in
gfx/drivers/gl2.cto disable theglTexStoragetexture allocation path on Qualcomm Adreno 8xx/X1 devices.On affected Snapdragon Elite-class devices, GL HW-rendered content can run audio with no video (black screen). Falling back to the existing
glTexImage2Dpath resolves rendering.Problem
On Android devices using newer Qualcomm Adreno 8xx/X1 drivers, GLideN64 (and other GL HW contexts) can produce black screen while content/audio continues.
Observed behavior in failing runs includes:
E libEGL: called unimplemented OpenGL ES APIFailing log evidence (stock RetroArch + stock core):
Change
gl2_tex_storage_allowed()ingfx/drivers/gl2.c>= 800or containsX1, disableglTexStorageuse.gl2_load_texture_image()now gates tex-storage path through this check.No behavior changes for non-Android builds or non-affected GPUs.
Why RetroArch-side (not core-side)
mupen64plus-libretro-nxrequests a HW GL context through libretro, but frontend texture allocation behavior in GL2 is owned by RetroArch.Core-only experiments were run and did not resolve black screen on stock RetroArch.
Validation
Device-tested on Android arm64 with
com.retroarch.aarch64:Latest retest (2026-02-22) with this cleaned patch also passed (non-black screenshot metrics captured).
Patched run evidence (patched RetroArch + stock core):
Related issues
User Comment
I ran into this issue on my Odin 3 trying to use GLideN64 to play Paper Mario for N64. Seems like it could be an issue effecting more than just GLideN64 on snapdragon elite devices. After the patch its working on my device, I was even able to load high res textures via .htc files from the paper mario 4k texture pack. I hope this helps and no worries if this isn't mergeable its out of my area of expertise, I've hosted temporary artifacts for other users to try for now. I used codex-5.3-xhigh to generate this code.