Bug 107765

Summary: [regression] Batman Arkham City crashes with DXVK under wine
Product: Mesa Reporter: farmboy0+freedesktop
Component: Drivers/Vulkan/radeonAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact: mesa-dev
Severity: normal    
Priority: medium    
Version: 18.2   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description farmboy0+freedesktop 2018-08-30 20:04:34 UTC
../mesa-18.2.0-rc5/src/amd/vulkan/radv_device.c:3903: FINISHME: Illegal color

teamapps\common\Batman Arkham City GOTY\Binaries\Win32\BatmanAC.exe: ../mesa-18.2.0-rc5/src/amd/vulkan/radv_pipeline.c:486: si_choose_spi_color_format: Assertion `!"unhandled blend format"' failed.
Comment 1 Timothy Arceri 2018-09-12 06:41:01 UTC
I tested current git with DXVK 0.63 and 0.71 and didn't see any crash. Although I do see "radv_device.c:3900: FINISHME: Illegal color" but that has always been the case.

Can you provide more details such as your graphics card, what DXVK version you are using etc?

Also does it work for you with Mesa git rather than 18.2?
Comment 2 farmboy0+freedesktop 2018-09-14 17:36:32 UTC
I use 
vanilla wine 3.12/3.14
DXVK 0.7.0 and 0.7.1
in a 32 or 64 bit prefix.

I have a R9 380X
Kernel 4.18.5 with DC enabled.

I tried Mesa git, no change.

Latest console output before crash:
info:  DXGI: Setting display mode: 1920x1080@60
warn:  DxgiSwapChain::QueryInterface: Unknown interface query
warn:  94d99bdb-f1f8-4ab0-b236-7da0170edab1
warn:  DXGI: MakeWindowAssociation: Ignoring flags
013b:fixme:wtsapi:WTSRegisterSessionNotification Stub 0x60226 0x00000000
warning: The VAD has been replaced by a hack pending a complete rewrite
info:  DxgiVkPresenter: Recreating swap chain: 
  Format:       VK_FORMAT_B8G8R8A8_UNORM
  Present mode: VK_PRESENT_MODE_FIFO_KHR
  Buffer size:  1920x1080
013b:fixme:imm:ImmReleaseContext (0x60226, 0xae463b8): stub
err:   D3D11DeviceContext::SetPredication: Stub
mesa: for the -simplifycfg-sink-common option: may only occur zero or one times!
../mesa-9999/src/amd/vulkan/radv_device.c:3936: FINISHME: Illegal color

amapps\common\Batman Arkham City GOTY\Binaries\Win32\BatmanAC.exe: ../mesa-9999/src/amd/vulkan/radv_pipeline.c:486: si_choose_spi_color_format: Assertion `!"unhandled blend format"' failed.
016c:fixme:dbghelp:elf_search_auxv can't find symbol in module
016c:fixme:dbghelp:validate_addr64 Unsupported address fffffffff7d40000
Comment 3 Timothy Arceri 2018-09-17 00:11:17 UTC
Ok I now see the crash when replaying a renderdoc capture on a 64-bit version of RADV (its possible I messed up my 32 RADV build or forgot to enable a debug build).

I've uploaded the capture to google driver [1]. The capture was taken from the benchmark where there are some rendering issues. Anyway the trace should be enough for others to reproduce this issue without access to the game (note rendedoc build from git required).

Seems we get to:

uint32_t radv_translate_colorformat(VkFormat format)

  ...

	case 3:
		if (HAS_SIZE(5,6,5,0)) {
			return V_028C70_COLOR_5_6_5;
		} else if (HAS_SIZE(32,8,24,0)) {
			return V_028C70_COLOR_X24_8_32_FLOAT;
		}
		break;

And fall through to:

return V_028C70_COLOR_INVALID;

[1] https://drive.google.com/file/d/1OvISgWIHv4_Y7MkWX8U-c6b0DAojbo4Y/view?usp=sharing
Comment 4 Samuel Pitoiset 2018-10-12 09:49:38 UTC
Does this branch help ?
https://cgit.freedesktop.org/~hakzsam/mesa/log/?h=radv_r32g32b32_btoi
Comment 5 farmboy0+freedesktop 2018-10-12 19:23:17 UTC
With the patch applied to mesa git wine crashes now with:
Unhandled exception: assertion failed in 32-bit code (0xf7f99b09).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:f7f99b09 ESP:12aef0d0 EBP:12aef0fc EFLAGS:00000246(   - --  I  Z- -P- )
 EAX:00000000 EBX:00000002 ECX:12aef0fc EDX:00000000
 ESI:00000008 EDI:00000000
Stack dump:
0x12aef0d0:  12aef0fc 00000000 12aef0fc f7b8456a
0x12aef0e0:  f7f94fcc d4a00018 00000000 00000006
0x12aef0f0:  f7b59fb0 07188f72 12aef120 00000000
0x12aef100:  00000000 f6fd6de0 12aef2ac 2570ba00
0x12aef110:  12aef17c 12aef2ac f7bd6d39 f7bd321b
0x12aef120:  e6a7c680 d4a00018 00000001 cb40d8a8
Backtrace:
=>0 0xf7f99b09 __kernel_vsyscall+0x9() in [vdso].so (0x12aef0fc)
  1 0xf7b8456a gsignal+0xc9() in libc.so.6 (0x12aef0fc)
  2 0xf7b85fcf abort+0x15e() in libc.so.6 (0xf7cde7de)
  3 0xf7b7b7ed in libc.so.6 (+0x257ec) (0xf7cde7de)
  4 0xf7b7b887 __assert_fail+0x56() in libc.so.6 (0x000001e6)
  5 0xe5999051 in libvulkan_radeon.so (+0x7f050) (0x00000004)
  6 0xe599fc9d in libvulkan_radeon.so (+0x85c9c) (0x12aef8c8)
  7 0xe596693f in libvulkan_radeon.so (+0x4c93e) (0x12aef8c8)
  8 0xe59830f9 in libvulkan_radeon.so (+0x690f8) (0xd4abea50)
  9 0xf04ec424 wine_vkCmdCopyImage+0x73(commandBuffer=<couldn't compute location>, srcImage=<couldn't compute location>, srcImageLayout=<couldn't compute location>, dstImage=<couldn't compute location>, dstImageLayout=<couldn't compute location>, regionCount=<couldn't compute location>, pRegions=<couldn't compute location>) [/mnt/work/Repositories/wine/dlls/winevulkan/vulkan_thunks.c:1400] in winevulkan (0x12aefce8)
  10 0x6a5a792a in d3d11 (+0x67929) (0x12aefde8)
  11 0x6a545a5c in d3d11 (+0x5a5b) (0x12aefea8)
  12 0x6a610618 in d3d11 (+0xd0617) (0x12aefeec)
  13 0x7bc852c9 call_thread_func+0xf8() [/mnt/work/Repositories/wine/dlls/ntdll/signal_i386.c:2654] in ntdll (0x12aeffdc)
  14 0x7bc81d56 call_thread_entry+0x9() in ntdll (0x12aeffec)
0xf7f99b09 __kernel_vsyscall+0x9 in [vdso].so: popl	%ebp
Comment 7 farmboy0+freedesktop 2018-10-16 19:07:41 UTC
I am still getting the same crash with mesa-git 0fa9e6d7b304f6a8064ed78a4b9c557e1026e7e5
Comment 8 Samuel Pitoiset 2018-10-16 21:06:34 UTC
Can you paste a backtrace please?
Comment 9 farmboy0+freedesktop 2018-10-16 21:10:56 UTC
Unhandled exception: assertion failed in 32-bit code (0xf7feeb09).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:f7feeb09 ESP:12aef0d0 EBP:12aef0fc EFLAGS:00000246(   - --  I  Z- -P- )
 EAX:00000000 EBX:00000002 ECX:12aef0fc EDX:00000000
 ESI:00000008 EDI:00000000
Stack dump:
0x12aef0d0:  12aef0fc 00000000 12aef0fc f7bd956a
0x12aef0e0:  f7fe9fcc d4c00018 00000000 00000006
0x12aef0f0:  f7baefb0 07188f72 12aef120 00000000
0x12aef100:  00000000 f7038890 12aef2ac dd4d6f00
0x12aef110:  12aef17c 12aef2ac f7c2bd39 f7c2821b
0x12aef120:  e778c100 d4c00018 00000001 d4c88d10
Backtrace:
=>0 0xf7feeb09 __kernel_vsyscall+0x9() in [vdso].so (0x12aef0fc)
  1 0xf7bd956a gsignal+0xc9() in libc.so.6 (0x12aef0fc)
  2 0xf7bdafcf abort+0x15e() in libc.so.6 (0xf7d337de)
  3 0xf7bd07ed in libc.so.6 (+0x257ec) (0xf7d337de)
  4 0xf7bd0887 __assert_fail+0x56() in libc.so.6 (0x000001e6)
  5 0xe5b980d1 in libvulkan_radeon.so (+0x7f0d0) (0x00000004)
  6 0xe5b9ed1d in libvulkan_radeon.so (+0x85d1c) (0x12aef8c8)
  7 0xe5b6598f in libvulkan_radeon.so (+0x4c98e) (0x12aef8c8)
  8 0xe5b82179 in libvulkan_radeon.so (+0x69178) (0xd4c63860)
  9 0xf0e55424 wine_vkCmdCopyImage+0x73(commandBuffer=<couldn't compute location>, srcImage=<couldn't compute location>, srcImageLayout=<couldn't compute location>, dstImage=<couldn't compute location>, dstImageLayout=<couldn't compute location>, regionCount=<couldn't compute location>, pRegions=<couldn't compute location>) [/mnt/work/Repositories/wine/dlls/winevulkan/vulkan_thunks.c:1400] in winevulkan (0x12aefce8)
  10 0x6a5afd9a in d3d11 (+0x6fd99) (0x12aefde8)
  11 0x6a545c4c in d3d11 (+0x5c4b) (0x12aefea8)
  12 0x6a6158c8 in d3d11 (+0xd58c7) (0x12aefeec)
  13 0x7bc852c9 call_thread_func+0xf8() [/mnt/work/Repositories/wine/dlls/ntdll/signal_i386.c:2654] in ntdll (0x12aeffdc)
  14 0x7bc81d56 call_thread_entry+0x9() in ntdll (0x12aeffec)
0xf7feeb09 __kernel_vsyscall+0x9 in [vdso].so: popl	%ebp
Comment 10 Samuel Pitoiset 2018-10-16 21:28:01 UTC
Okay, so apparently Batman needs itoi with R32G32B32 too. I thought only btoi as needed by that game. I will implement it.

Can you explain how to reproduce the problem in-game?
Comment 11 farmboy0+freedesktop 2018-10-16 21:45:34 UTC
Just start the game. After the intro videos it crashes, before the first game screen.
Or if you want a faster crash do this:
https://pcgamingwiki.com/wiki/Batman:_Arkham_City#Skip_intro_videos
Comment 12 Timothy Arceri 2018-10-16 22:37:35 UTC
(In reply to farmboy0+freedesktop from comment #11)
> Just start the game. After the intro videos it crashes, before the first
> game screen.
> Or if you want a faster crash do this:
> https://pcgamingwiki.com/wiki/Batman:_Arkham_City#Skip_intro_videos

I cannot reproduce this new crash, the game works issue free for me now. I updated to DXVK 0.90 to be sure but still not seeing any problem.
Comment 13 farmboy0+freedesktop 2018-10-17 19:39:52 UTC
Can you tell me what settings you use?
Do you use a 64 bit prefix?
Comment 14 Samuel Pitoiset 2018-10-23 07:40:07 UTC
Can you try this branch please?

https://cgit.freedesktop.org/~hakzsam/mesa/log/?h=radv_itoi_r32g32b32
Comment 15 farmboy0+freedesktop 2018-10-24 18:59:16 UTC
With this branch I ma successfully able to run Batman: Arkham City on my system.
Comment 16 Samuel Pitoiset 2018-10-24 19:59:56 UTC
Cool, do you have any rendering issues with that branch?
Comment 17 farmboy0+freedesktop 2018-10-24 20:39:22 UTC
I didnt notice any.
Comment 18 Samuel Pitoiset 2018-10-26 08:49:53 UTC
Thanks for confirming.

Should be fixed with https://cgit.freedesktop.org/mesa/mesa/commit/?id=79bbdf8e45f0961b800279afadb4bb74129d7034

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.