daniel-schuermann / mesa

Mesa 3D graphics library (mirror; no pull requests here please)
http://mesa3d.org
135 stars 3 forks source link

LA Noire crashes during Intro video with ACO only #153

Closed Kzimir closed 1 year ago

Kzimir commented 4 years ago

Hello,

I have LA Noire from Rockstar Games Launcher and not from Steam. If you want to reproduce the issue with ACO, you need to download the game on Windows, there is an issue during download on Linux + Wine.

The game works with RADV_PERFTEST=llvm but crashes with RADV_PERFTEST=aco when the intro videos are launched.

Unfortunatly, it's impossible to do a renderdoc capture, the game crashes at launch with renderdoc variable.

I have only a screenshot for the game and the output console : Screenshot

You can see in the output console this line : free(): invalide size

Odel'

daniel-schuermann commented 4 years ago

Would you be able to create a debug build to point out which assertion failed?

Kzimir commented 4 years ago

Yes, i'm on Gentoo so i can rebuild mesa-git with debug option enabled. Just explain me what i need to do once Mesa is rebuilt.

daniel-schuermann commented 4 years ago

Well, the stderr output from Wine would be a start. Something else you could try is to take a renderdoc capture with LLVM (or does this also crash?).

Kzimir commented 4 years ago

Yes, renderdoc capture crash with LLVM unfortunatly. No need to use Mesa debug env variable ?

Kzimir commented 4 years ago

@daniel-schuermann Here the screenshot where you can see the stderr ouput : Mesa_ACO_Debug_On

daniel-schuermann commented 4 years ago

Do you think you can get a stack trace? Or would that take too long? Btw, we had this error occasionally because of broken GCC versions. If you use, gcc 8.3, you might want to try a different one.

Kzimir commented 4 years ago

Yes i can get a stack trace but how i do that ? And concernig GCC, i use GCC 9.2.0

daniel-schuermann commented 4 years ago

For example by starting the game with valgrind (note that this makes it take much longer). Something else you could do is to send me the shaders captured with https://gitlab.freedesktop.org/mesa/vkpipeline-db (just follow the instructions from the README). Run the game with llvm until the main menu, this should be enough.

Kzimir commented 4 years ago

1- I tried Valgrind and i have only this trace. But i don't know if it's good for you : valgrind-out.txt

2- I tried vkpipeline-db too but when i launch the game with the instruction, no shaders are captured. Even if i load a savegame.

daniel-schuermann commented 4 years ago

did you use the full paths like /home/... ?

Kzimir commented 4 years ago

I used that : export VK_LAYER_PATH=$VK_LAYER_PATH:/home/odelpasso/Bureau/vkpipeline-db/VkLayer_vkpipeline_db.json export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/odelpasso/Bureau/vkpipeline-db/build/libVkLayer_vkpipeline_db.so export VK_INSTANCE_LAYERS=VK_LAYER_vkpipeline_db export VKPIPELINE_DB_CAPTURE_PATH=/home/odelpasso/Bureau/vkpipeline-db/dirpath/

And the folder is still empty after to quit the game and Rockstar Launcher.

pendingchaos commented 4 years ago

Maybe try

export VK_LAYER_PATH=$VK_LAYER_PATH:/home/odelpasso/Bureau/vkpipeline-db/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/odelpasso/Bureau/vkpipeline-db/build/

?

The README isn't very clear on this, but I think that's how what they are meant to be set to

Kzimir commented 4 years ago

Thanks, it works. :D

@daniel-schuermann, the archive : shaders.tar.gz

daniel-schuermann commented 4 years ago

@Odelpasso Thanks, that's a start :) However, there are only 4 pipelines captured when it should be more like 1000+. For some reason it sometimes seems to not capture all pipelines right away (this happened for me as well..). Would you just try again to capture more pipelines? You can test that you got the right one by running ./build/run <capture-path> with ACO. It should crash with the same assertion as the game.

Kzimir commented 4 years ago

Ok, i delete my 2 last message to be clear... I'm a noob :D

I forgot that LA Noire was a 32bits game and i forgot again that : 1- Renderdoc has not 32bits support on Linux 2- I built VkPipeline_db only for 64bits... After to build with 32bits support.

So i try my Pipeline captured : a- With Pipeline captured with LLVM, i have no error when i do a ./build/run with ACO or LLVM. b- I captured Pipeline after to launch the game with ACO and i have error when i do a ./build/run with LLVM. No errors with ACO.

SPIR-V WARNING: In file ../mesa-9999/src/compiler/spirv/spirv_to_nir.c:3662 Unsupported SPIR-V capability: SpvCapabilityDemoteToHelperInvocationEXT (5379) 44 bytes into the SPIR-V binary Unknown intrinsic: intrinsic demote_if (ssa_117) () Unknown intrinsic: intrinsic demote_if (ssa_145) () Unknown intrinsic: intrinsic demote_if (ssa_147) () Unknown intrinsic: intrinsic demote_if (ssa_149) () Unknown intrinsic: intrinsic demote () () Unknown intrinsic: intrinsic demote_if (ssa_161) () Unknown intrinsic: intrinsic demote_if (ssa_169) () Unknown intrinsic: intrinsic demote_if (ssa_178) ()

Pipeline captured when the game is launched with ACO : ACO_Pipeline.tar.gz

Pipeline captured when the game is launched with LLVM : LLVM_Pipeline.tar.gz

@daniel-schuermann As i have not crash with vkPipeline_db and Renderdoc does not support 32bits, an apitrace can help ?

Kzimir commented 4 years ago

No news ? The pipeline that i captured are not good ?

Kzimir commented 4 years ago

@daniel-schuermann @pendingchaos How to use Valgrind ? I only need to rebuild libdrm and mesa with Valgrind options and launch the game ?

Venemo commented 1 year ago

Hi,

This repo is no longer being maintained since ACO was merged in upstream Mesa since late 2019. If you have issues with it, please open an issue in upstream Mesa here: https://gitlab.freedesktop.org/mesa/mesa/-/issues - select the Radeon Vulkan bug report template and fill out the details.