Emulator Issues #11496
Metroid Prime - Raindrop rendering appears to cause crash when using Intel HD 615 graphics
Metroid Prime (Gamecube)
Including a European version, and a US version with widescreen hack applied.
Game ID? (right click the game in the game list, properties, info tab)
GM8P01 (EU Region)
GM8E01 (US Region)
MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)
GM8P01 - b1379c44e0ebc521e18215de3e5dbeea (compressed as .gcz)
GM8E01 - 0d2ba934eec6a59ee1e155e0d039f194 (widescreen hack + trimmed ISO)
What's the problem? Describe what went wrong.
When emulating Metroid Prime on newer development builds such as 5.0-9213, or less recent such as 5.0-85xx, an emulator crash can occur in a specific area of the game.
On the landing site of Tallon Overworld, rainfall can render raindrops on Samus' visor.
At any time raindrops can be generated, there is a small chance the emulator will crash when using Direct3D 11 graphical backend on Intel HD 615 graphics.
This includes during the landing cinematic cutscene when the Samus character model is loaded into the scene, emerging from her gunship.
What steps will reproduce the problem?
- Emulate Metroid Prime on a device using Intel HD 615 integrated graphics, using recent 5.0 development builds.
- Set graphical backend to Direct3D 11.
- Finish the Frigate Orpheon opening section of the game.
- Landing cutscene will play, during most of which Samus model is not loaded.
- At first instance of Samus model appearing on-screen, there exists a small chance every frame of crash occurring.
- If cutscene finishes playing without a crash, game can be saved to Gamecube memory card.
- After save prompt, normal gameplay resumes, with Samus starting in area where raindrops can generate on visor.
- Raindrops will generate when moving forward, or looking skyward.
- Raindrops will not generate when looking down, under a ceiling, or submerged in water. In such instances a crash will not occur.
There are two variations of this crash.
When storing XFB Copies to Texture Only, the following warning will display.
Dismissing this error will cause the application to close.
DXTexture failed in c:\buildbot\release-win-x64\build\source\core\videobackends\d3d\dxtexture.cpp at line 124: Create backing DXTexture
A separate error is displayed when storing XFB copies to texture + ram, and disabling "Defer EFB Copies to RAM"
Dismissing this error will cause the warning at line 327 to repeat, until eventually the error at line 124 is re-encountered.
Map failed in c:\buildbot\release-win-x64\build\source\core\videobackends\d3d\dxtexture.cpp at line 327: Map readback texture
Issue has been occurring on multiple driver versions predating the current 22.214.171.12471 drivers release December 20th, 2018.
Issue will not occur in OpenGL backend.
Issue is not resolved by a wide number of graphical configuration changes, including ubershaders, internal resolution, use of widescreen hacks or not, scaled EFB copy, EFB access from CPU, fog settings, per-pixel lighting, EFB copy filter, arbitrary Mipmap detection, how EFB or XFB copies are stored to texture/ram, option to immediately present XFB, texture cache accuracy, ignore format changes, fast depth calculation, disable bounding box.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Dolphin version 5.0-9213
Is the issue present in the latest stable version?
No, tested on 5.0 stable release from mid-2016. No crash will occur.
What are your PC specifications? (CPU, GPU, Operating System, more)
- Intel Core m3-7y30 @ 1.00GHz 1.61GHz
- Intel(R) HD Graphics 615
- Windows 10 Home version 1803
- 8.00 GB RAM
Have also tested on a Dell XPS 15 using either GTX 1050 graphics or Intel HD 630 graphics, or a desktop PC using GTX 770 graphics or Intel HD 4600 graphics. No crash issue will occur.
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
See attached screenshots and attached savestate in five-part 7zip archive.
#1 Updated by Rupeeclock 4 months ago
Whilst investigating issue 11495, retested this issue in Dolphin 4.0-1146 and 4.0-1192 (tev_fixes_new branch merge).
A crash would also occur in the same scenario, but with a different error message.
DX11::PSTextureEncoder::EncodeFailed in PSTextureEncoder.cpp at line 1168: map staging buffer (0x887a0005)
Might be worth testing this against https://github.com/dolphin-emu/dolphin/pull/7753, as EFB copies have been rewritten to use the common interface. https://dl.dolphin-emu.org/prs/pr-7753-dolphin-latest-x64.7z
#4 Updated by Rupeeclock 2 months ago
Tested the issue again on my GPD Win 2, 5.0-9610 and [refs/pull/7753/head] 5.0-9612 both still experience crashes in the same scenario.
This was tested on an older set of drivers and the most recent Intel Graphics Driver version 126.96.36.19919 (January 14, 2019)
There were some differences in warnings and behaviour though.
Whilst fullscreen, Dolphin would become non-responsive and eventually quit by itself.
Whilst windowed, it would display a variety of warnings:
Failed to create 16x16x1 D3D backing texture
Failed to create 64x64x1 D3D backing texture
Failed to create 32x20x1 D3D backing texture
Failed to create 128x128x1 D3D backing texture
When ignoring these warnings, video output would be stuck on the last rendered frame but the game continues to be playable, accepting control input and producing sound.
I also observed that this crash would not occur when full speed emulation was not achieved. It was less likely to occur when playing at 2x internal resolution, and more likely on native where full speed was consistent.
Lastly, this does not resolve issue 11495 either.