ValveSoftware / Dota-2-Vulkan

Tracker for issues specific to the Vulkan version of Dota 2 on Windows, Linux, and macOS
101 stars 17 forks source link

Kaby Lake video driver regression - game is not working on Vulkan #315

Closed skoruppa closed 5 years ago

skoruppa commented 5 years ago

Your system information

Please describe your issue in as much detail as possible:

Using mesa 19.1.0 when Vulkan is enabled, the game just crashes right after launching

[S_API] SteamAPI_Init(): Loaded '/home/p-skorupa/.steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 570
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197990112964 [API loaded yes]
Steam_SetMinidumpSteamID:  Setting Steam ID:  76561197990112964
Setting breakpad minidump AppID = 373300
Fossilize INFO: Overriding serialization path: "/home/p-skorupa/.steam/steam/steamapps/shadercache/570/steamapprun_pipeline_cache".
Fontconfig warning: "/home/p-skorupa/.steam/steam/steamapps/common/dota 2 beta/game/core/panorama/fonts/conf.d/41-repl-os-win.conf", line 148: Having multiple values in <test> isn't supported and may not work as expected
Fontconfig warning: "/home/p-skorupa/.steam/steam/steamapps/common/dota 2 beta/game/core/panorama/fonts/conf.d/41-repl-os-win.conf", line 160: Having multiple values in <test> isn't supported and may not work as expected
crash_20190626215542_1.dmp[23964]: Uploading dump (out-of-process)
/tmp/dumps/crash_20190626215542_1.dmp
./dota.sh: linia 104: 23945 Błąd w obliczeniach zmiennoprzecinkowych                  (zrzut pamięci) ${STEAM_RUNTIME_PREFIX} ${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"

crash_20190626215542_1.zip

Steps for reproducing this issue:

  1. Update mesa to 19.1.0
  2. Install Vulkan DLC and enable Vulkan as Graphics API
  3. Run the game
kisak-valve commented 5 years ago

This floating point exception before getting to the game's main menu bisects to:

commit a7d48718466978bd5a6ae73d9cf1c2ea566d772c
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Wed Feb 20 18:14:56 2019 -0600

    anv/pipeline: Sort bindings by most used first

    This commit just sorts the bindings by how often they're used vs the
    array size of the binding.  This will let us make more nuanced decisions
    about what goes in the binding table vs. what to make bindless.

    Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>

:040000 040000 6cbf6a670b34fa473b820ed7672eff3c1bf66982 2feb952dfdbd87127888534a49f84fafb3b037c2 M  src

@jekstrand, can you check if you can reproduce this?

kisak-valve commented 5 years ago

Looking at this a little bit more on my test boxes, I think that there's been a recent game change that's exposed a behavior difference between mesa 19.0 and 19.1 rather than a driver regression that fell through the cracks.

danginsburg commented 5 years ago

-vulkan_disable_steam_shader_cache should workaround it for now. We are aware of this bug and are investigating. @Plagman

gfxstrand commented 5 years ago

It could also be an issue in our pipeline cache where it's not caching something properly. That's kind-of an odd commit for such an issue to bisect to, thought.

danginsburg commented 5 years ago

It could also be an issue in our pipeline cache where it's not caching something properly. That's kind-of an odd commit for such an issue to bisect to, thought.

We have identified that we have a pipeline being created with a descriptor set layout that is missing a binding. It fails validation and crashes ANV and AMDVLK, but not RADV or NVIDIA. It's still our bug though. The problem we're working on is identifying how the bad descriptor set layout got in the cache and what we can do to filter it out.

@HansKristian-Work said that "Intel ANV crashes on a pipeline which fails validation. I built driver with debug and the crash makes sense. The shader is accessing a texture which does not exist in the pipeline layout. I inspected the shader + layout information and it's faulty indeed."

danginsburg commented 5 years ago

This is fixed, closing.