First, the main things you require are at least:
- AMDGPU / AMDGPU-PRO >= 21.20 (Currently I am using 21.40.1)
- Mesa >= 21.3.3 (Currently, still does not seem to resolve memory leak supposedly fixed in 21.2-devel)
- Steam with ProtonGE-6.21-GE-2 (Note: Use protonup tool to help grab the latest-greatest version if necessary. Requires restarting Steam.)
To get the game to at least launch the main window with this, ensure you do the following before starting:
- Clean out the existing prefix area - If you have tried launching the game before
- Ensure you can see the newly added ProtonGE-6.21-GE-2 (or later) version in the Compatibility tab
- Ensure "Force the use of a specific Steam Play compatibility tool" enabled if you cannot see this in the menu/window...
Set the launch options as follows to enforce use of the AMDVLK OpenSource driver and enable logging in Proton to allow for debugging:
VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/amd_icd.x86_64.json" PROTON_LOG=1 %command%
With d3dvk-proton v2.5 in future it should be possible to provide the missing DXR1.1 features with:
VKD3D_CONFIG=dxr11
However, when trying this currently has no effect after installing the custom build of dx12.dll over the default for the prefix.
This was using the supplied setup_vkd3d_proton.sh script as provided, it at least detects correctly that ReBAR/SAM is enabled plus the DXR1.1 environment override enabled.
It also correctly points to the shader cache area and detects native dx12.dll override as expected from the setup script.
0120:info:vkd3d_config_flags_init_once: VKD3D_CONFIG='dxr11'.
0120:info:vkd3d_get_vk_version: vkd3d-proton - applicationVersion: 2.5.0.
0120:info:vkd3d_instance_init: vkd3d-proton - build: 3fefc540c81a2fc.
0120:warn:vkd3d_init_device_caps: Device does not expose robust buffer access for the update after bind feature, enabling it anyways.
0120:warn:vkd3d_init_depth_stencil_formats: Mapping VK_FORMAT_D24_UNORM_S8_UINT to VK_FORMAT_D32_SFLOAT_S8_UINT.
0120:info:vkd3d_memory_info_init_budgets: Applying resizable BAR budget to memory types: 0x44.
0120:info:vkd3d_bindless_state_get_bindless_flags: Device does not support VK_VALVE_mutable_descriptor_type.
0120:fixme:d3d12_device_caps_init_feature_options1: TotalLaneCount = 2560, may be inaccurate.
0120:warn:d3d12_device_create: Feature level 0xc100 is not supported.
0120:info:vkd3d_get_vk_version: vkd3d-proton - applicationVersion: 2.5.0.
0120:info:vkd3d_instance_init: vkd3d-proton - build: 3fefc540c81a2fc.
0120:warn:vkd3d_init_device_caps: Device does not expose robust buffer access for the update after bind feature, enabling it anyways.
0120:warn:vkd3d_init_depth_stencil_formats: Mapping VK_FORMAT_D24_UNORM_S8_UINT to VK_FORMAT_D32_SFLOAT_S8_UINT.
0120:info:vkd3d_memory_info_init_budgets: Applying resizable BAR budget to memory types: 0x44.
0120:info:vkd3d_bindless_state_get_bindless_flags: Device does not support VK_VALVE_mutable_descriptor_type.
0120:fixme:d3d12_device_caps_init_feature_options1: TotalLaneCount = 2560, may be inaccurate.
6154.219:011c:01f4:trace:mscoree:DllMain (0000000356770000, 2, 0000000000000000)
6154.220:011c:01f0:trace:mscoree:DllMain (0000000356770000, 2, 0000000000000000)
0120:fixme:d3d12_swapchain_init: Ignoring swap effect 0x4.
0120:fixme:d3d12_swapchain_init: Ignoring swapchain flags 0x2.
0120:warn:select_vk_format: Failed to find Vulkan swapchain format for DXGI_FORMAT_R8G8B8A8_UNORM.
0120:warn:d3d12_swapchain_create_vulkan_swapchain: Swapchain dimensions 2560x1440 are not supported (2554-2554 x 1415-1415).
0120:fixme:d3d12_swapchain_resize_buffers: Ignoring flags 0x2.
0120:warn:select_vk_format: Failed to find Vulkan swapchain format for DXGI_FORMAT_R8G8B8A8_UNORM.
0120:fixme:d3d12_swapchain_CheckColorSpaceSupport: iface 00000000008a0050, colour_space 0, colour_space_support 000000000041cea0 semi-stub!
0120:fixme:d3d12_swapchain_SetColorSpace1: iface 00000000008a0050, colour_space 0 semi-stub!
0120:fixme:d3d12_command_queue_init: Ignoring priority 0x64.
6154.550:011c:020c:trace:mscoree:DllMain (0000000356770000, 2, 0000000000000000)
6154.551:011c:0210:trace:mscoree:DllMain (0000000356770000, 2, 0000000000000000)
0120:warn:d3d12_resource_validate_create_info: Ignoring optimized clear value.
0120:fixme:d3d12_device_SetResidencyPriority: iface 00000000183f0030, object_count 1, objects 000000000041cc68, priorities 000000000041cdc0 stub!
0120:fixme:d3d12_command_list_ResourceBarrier: NULL resource for pResourceAfter. Won't be able to transition images away from UNDEFINED.
0174:warn:d3d12_pipeline_state_init_graphics: Ignoring stencilTestEnable due to lack of stencil aspect.
01a4:warn:d3d12_pipeline_state_init_graphics: Ignoring stencilTestEnable due to lack of stencil aspect.
0184:warn:create_shader_stage: Failed to create Vulkan shader module, vr -3.
This will validly detect an Vulkan 1.2.x compatible device through DXVK for my RX 6700XT, but the game will still insist the GPU is potentially not supported.
Presumably because it does not pass through the GPU model/vendor string correctly, as the output log will contain:
* GPU INFO:
info: Game: wmic.exe
info: DXVK: v1.9.2-async
info: Built-in extension providers:
info: Win32 WSI
info: OpenVR
info: OpenXR
warn: OpenXR: Unable to get required Vulkan instance extensions size
info: Enabled instance extensions:
info: VK_KHR_get_surface_capabilities2
info: VK_KHR_surface
info: VK_KHR_win32_surface
warn: OpenXR: Unable to get required Vulkan Device extensions size
info: Unknown AMD GPU:
info: Driver: 2.0.198
info: Vulkan: 1.2.188
info: Memory Heap[0]:
info: Size: 12272 MiB
info: Flags: 0x0
info: Memory Type[1]: Property Flags = 0x6
info: Memory Type[3]: Property Flags = 0xe
info: Memory Type[5]: Property Flags = 0xc6
info: Memory Type[7]: Property Flags = 0xce
info: Memory Heap[1]:
info: Size: 12272 MiB
info: Flags: 0x3
info: Memory Type[0]: Property Flags = 0x1
info: Memory Type[2]: Property Flags = 0x7
info: Memory Type[4]: Property Flags = 0xc1
info: Memory Type[6]: Property Flags = 0xc7
You are then presented with a prompt window that will only respond to keyboard input, which you can then tell it to launch by pressing tab twice to "Run Anyway".
It will then load up full screen, but the output is extremely garbled, system memory will climb pretty fast and lock up the machine.
You can also try enforcing use of the AMDGPU-PRO driver (even with the AMDGPU driver installed as the default DRM for Xorg/Wayland).
This requires pulling the AMDGPU-PRO packages, extracting them in a non-root area, changing 1 file and overriding LD_LIBRARY_PATH and VLK_ICD_FILENAMES.