libretro / libretro/parallel-n64

mupen64plus-libretro: crash on Mali GPU (Android)

Open
#154 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
407
Forks
151
Avg merge
11h 53m
Merged PRs (30d)
11

Description

Hi,
I found mupen64plus core run ok on GPU Adreno, but crash on GPU Mali-450, Mali-400, Mali-300.

Here is a error log from a Mali-450 device:
11-15 18:34:59.933: I/RetroArch(23778): Environ GET_VARIABLE mupen64-filtering:
11-15 18:34:59.933: I/RetroArch(23778): automatic
11-15 18:34:59.933: I/RetroArch(23778): Environ GET_VARIABLE mupen64-filtering:
11-15 18:34:59.933: I/RetroArch(23778): automatic
11-15 18:34:59.943: I/RetroArch[libretro INFO] ::(23778): Detected RDRAM size: 007fffff
11-15 18:34:59.943: I/RetroArch(23778): Environ GET_VARIABLE mupen64-screensize:
11-15 18:34:59.943: I/RetroArch(23778): 640x480
11-15 18:34:59.943: I/RetroArch[libretro INFO] ::(23778): GL_RENDERER: Mali-450 MP
11-15 18:34:59.943: E/RetroArch[libretro ERROR] ::(23778): 0:20: P0004: High precision not supported, instead compiling high precision as medium precision
11-15 18:34:59.943: E/RetroArch[libretro ERROR] ::(23778): 0:30: L0002: Undeclared variable 'gl_FragDepth'
11-15 18:34:59.943: A/libc(23778): Fatal signal 11 (SIGSEGV) at 0x0000004a (code=1), thread 23855 (com.retroarch)

For comparison, here is a ok log from a Adreno-320 device:
11-15 18:02:01.119: I/RetroArch:(28458): Environ GET_VARIABLE mupen64-filtering:
11-15 18:02:01.119: I/RetroArch:(28458): automatic
11-15 18:02:01.119: I/RetroArch:(28458): Environ GET_VARIABLE mupen64-filtering:
11-15 18:02:01.119: I/RetroArch:(28458): automatic
11-15 18:02:01.119: I/RetroArch: [libretro INFO] ::(28458): Detected RDRAM size: 007fffff
11-15 18:02:01.119: I/RetroArch:(28458): Environ GET_VARIABLE mupen64-screensize:
11-15 18:02:01.119: I/RetroArch:(28458): 640x480
11-15 18:02:01.119: I/RetroArch: [libretro INFO] ::(28458): GL_RENDERER: Adreno (TM) 320
11-15 18:02:01.159: I/RetroArch: [libretro INFO] ::(28458): mupen64plus: Starting R4300 emulator: Dynamic Recompiler
11-15 18:02:01.159: I/RetroArch: [libretro INFO] ::(28458): mupen64plus: Init new dynarec
11-15 18:02:01.159: I/RetroArch: [libretro INFO] ::(28458): mupen64plus: 32MB cache initialised at: 7B335000
11-15 18:02:01.199: I/RetroArch:(28458): Environ GET_VARIABLE mupen64-disableexpmem:
11-15 18:02:01.199: I/RetroArch:(28458): no

It seems that the crash happen on GL_RENDERER.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the crash on a Mali-450, Mali-400, or Mali-300 Android device and compare the provided logs with the Adreno-320 log. Investigate the shader compilation errors, especially the undeclared gl_FragDepth message, and the point where execution stops after GL_RENDERER is reported. Done means the cause is identified and the core no longer crashes on the affected Mali GPUs.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, c
Domain
computer-graphics, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.