HansKristian-Work / vkd3d-proton

Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
GNU Lesser General Public License v2.1
1.82k stars 190 forks source link

Xenia - 010c:fixme:dxgi:d3d12_swapchain unimplemented flags. #1088

Open essasetic opened 2 years ago

essasetic commented 2 years ago

Hey, I'm trying to get Xenia (D3D12 build) to work on Linux through VKD3D-Proton. I'm able to get to the menus with inputs and audio but I've got no graphics. This appears to be due to D3D12_swapchain either not being implemented or having flags that aren't implemented.

Here's a screenshot of it: image

Here's also the logs from when I open up the emulator:

010c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr` (000000000011FBF0 1 C) semi-stub
010c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (000000000011FC10 1 C) semi-stub
010c:fixme:dwmapi:DwmEnableMMCSS (1) stub
i> 0000010C Build: master@0fd578caf on Apr 28 2022
i> 0000010C Storage root: C:\users\essasetic\Documents\Xenia
i> 0000010C Loaded config: C:\users\essasetic\Documents\Xenia\xenia.config.toml
i> 0000010C Content root: C:\users\essasetic\Documents\Xenia\content
i> 0000010C Cache 010c:fixme:system:EnableNonClientDpiScaling (000000000001005C): stub
root: C:\users\essasetic\Documen007c:fixme:imm:ImeSetActiveContext (0x356f40, 0): stub
007c:fixme:imm:ImmReleaseContext (0000000000010020, 0000000000356F40): stub
ts\010c:fixme:imm:ImeSetActiveContext (0x29cd30, 1): stub
010c:fixme:imm:ImmReleaseContext (000000000001005C, 000000000029CD30): stub
Xenia\cache
w> 0000010C Unable to load Japanese font; JP characters will be boxes
i> 0000011C winkey: "^A" binds key 0x41 to controller input DPAD_LEFT.
i> 0000011C winkey: "^D" binds key 0x44 to controller input DPAD_RIGHT.
i> 0000011C winkey: "^S" binds key 0x53 to controller input DPAD_DOWN.
i> 0000011C winkey: "^W" binds key 0x57 to controll010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.RawGameController", {eb8d0792-e95a-4b19-afc7-0a59f8bf759e}, 0000000140ED4550): semi-stub
er input DPAD_UP.
i> 0000011C winkey: "_A" binds key 0x41 to controller input LEFT_THUMB_010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.ArcadeStick", {5c37b8c8-37b1-4ad8-9458-200f1a30018e}, 0000000140ED4558): semi-stub
L010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.FlightStick", {5514924a-fecc-435e-83dc-5cec8a18a520}, 0000000140ED4568): semi-stub
E010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.Gamepad", {8bbce529-d49c-39e9-9560-e47dde96b7c8}, 0000000140ED4570): semi-stub
F010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.RacingWheel", {3ac12cd5-581b-4936-9f94-69f1e6514c7d}, 0000000140ED4580): semi-stub
T.
i> 0000011C winkey: 010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.Gamepad", {8bbce529-d49c-39e9-9560-e47dde96b7c8}, 0000000140ED46B0): semi-stub
"_D" binds key 0x44 to contr010c:fixme:xinput:XInputGetBatteryInformation index 0, type 0, battery 0000000140ED46E4.
oller input LEFT_THUMB_RIGHT.
i> 0000011C winkey: "_S" binds key 0x53 to controller input LEFT_THUMB_DOWN.
i> 0000011C winkey: "_W" binds key 0x57 to controller input LEFT_THUMB_UP.
i> 0000011C winkey: "F" binds key 0x46 to controller input LEFT_THUMB_PRESSED.
i> 0000011C winkey: "0x26" binds key 0x26 to controller input RIGHT_THUMB_UP.
i> 0000011C winkey: "0x28" binds key 0x28 to controller input RIGHT_THUMB_DOWN.
i> 0000011C winkey: "0x27" binds key 0x27 to controller input RIGHT_THUMB_RIGHT.
i> 0000011C winkey: "0x25" binds key 0x25 to controller input RIGHT_THUMB_LEFT.
i> 0000011C winkey: "K" binds key 0x4B to controller input RIGHT_THUMB_PRESSED.
i> 0000011C winkey: "L" binds key 0x4C to controller input X.
i> 0000011C winkey: "0xDE" binds key 0xDE to controller input B.
i> 0000011C winkey: "0xBA" binds key 0xBA to controller input A.
i> 0000011C winkey: "P" binds key 0x50 to controller input Y.
i> 0000011C winkey: "Q" binds key 0x51 to controller input LEFT_TRIGGER.
i> 0000011C winkey: "I" binds key 0x49 to controller input LEFT_TRIGGER.
i> 0000011C winkey: "E" binds key 0x45 to controller input RIGHT_TRIGGER.
i> 0000011C winkey: "O" binds key 0x4F to controller input RIGHT_TRIGGER.
i> 0000011C winkey: "Z" binds key 0x5A to controller input BACK.
i> 0000011C winkey: "X" binds key 0x58 to controller input START.
i> 0000011C winkey: "1" binds key 0x31 to controller input LEFT_SHOULDER.
i> 0000011C winkey: "3" binds key 0x33 to controller input RIGHT_SHOULDER.
i> 0000010C SDL OnControllerDeviceAdded: "PowerA Spectra Infinity Controller", JoystickType(1), GameControllerType(2), VendorID(0x20D6), ProductID(0x4002)
i> 0000010C SDL OnControllerDeviceAdded: Added at index 0.
w> 0000010C SDL GameControllerDB: file 'gamecontrollerdb.txt' does not exist.
011c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
i> 0000011C DXGI adapter: Radeon RX 6800/6800 XT / 6900 XT (vendor 0x1002, device 0x73BF)
fixme:d3d12_command_queue_init: Ignoring priority 0x64.
fixme:d3d12_device_CheckFeatureSupport: Unhandled feature 0x20.
i> 0000011C Direct3D 12 device and OS features:
* Max GPU virtual address bits per resource: 40
* Non-zeroed heap creation: no
* Pixel-shader-specified stencil reference: yes
* Programmable sample positions: tier 0
* Rfixme:d3d12_rtv_desc_create_rtv: aNULL resource RTV not implemented.
sfixme:d3d12_rtv_desc_create_rtv: tNULL resource RTV not implemented.
erizer-ordered views: no
* Resource binding: tier 3
* Tiled resources: tier 0
i> 0000011C Added handle:F8000004 for class xe::kernel::XObject
i> 0000011C XThreadF8000004 (1) Stack: 70010000-70030000
i> 0000011C Added handle:F8000008 for class xe::kernel::XObject
i> fixme:vkd3d_create_null_srv: 0Unhandled view dimension 0x8.
0fixme:vkd3d_create_null_srv: 0Unhandled view dimension 0x9.
0011C XThreadF8000008 (2) Stack: 70050000-70070000
K> F8000004 XThread::Execute thid 1 (handle=F8000004, 'GPU Commands (F8000004)', native=00000144, <host>)
K> F8000008 XThread::Execute thid 2 (handle=F8000008, 'GPU VSync (F8000008)', native=00000148, <host>)
G> F8000004 Direct3D 12 tiled resources are not used for shared memory emulation - video memory usage may increase significantly because a full 512 MB buffe
r will be created
i> 0000011C Added handle:F800000C for class xe::kernel::XObject
i> 0000011C XThreadF800000C (3) Stack: 70090000-700B0000
i> 0000011C Added handle:Ffixme:vkd3d_create_null_srv: 8Unhandled view dimension 0x8.
0fixme:vkd3d_create_null_srv: 0Unhandled view dimension 0x9.
0010 for class xe::kernel::XObject
i> 0000011C XThreadF8000010 (4) Stack: 700D0000-700F0000
i> 0000011C Added handle:F8000014 for class xe::kernel::XObject
K> F800000C XThread::Execute thid 3 (handle=F800000C, 'XMA Decoder (F800000C)', native=00000164, <host>)
K> F8000010 XThread::Execute thid 4 (handle=F8000010, 'Audio Worker (F8000010)', native=0000016C, <host>)
i> 0000011C Added handle:F8000018 for class xe::kernel::XObject
i> 0000011C Added handle:F800001C for class xe::kernel::XObject
010c:fixme:dxgi:d3d12_swapchain_init Ignoring swap effect 0x4.
010c:fixme:dxgi:wined3d_swapchain_desc_from_dxgi Ignoring scaling 0x1.
010c:fixme:dxgi:wined3d_swapchain_flags_from_dxgi Unhandled flags 0x800.
010c:fixme:dxgi:d3d12_swapchain_init Ignoring swapchain flags 0x800.
010c:fixme:dxgi:d3d12_swapchain_present Unimplemented flags 0x204.
doitsujin commented 2 years ago

Are you sure you're using vkd3d-proton and not upstream vkd3d? Some of the messages quite literally cannot happen with our code, including all the swap chain related things since they come from wine's dxgi while we're rolling our own IDXGISwapChain implementation. Either your vkd3d-proton build is extremely outdated (like at least 2 years old) or it's just straight-up not being used at all.

We don't support the swapchain flags in question either, but that does not prevent graphics output from working.

essasetic commented 2 years ago

Are you sure you're using vkd3d-proton and not upstream vkd3d? Some of the messages quite literally cannot happen with our code, including all the swap chain related things since they come from wine's dxgi while we're rolling our own IDXGISwapChain implementation. Either your vkd3d-proton build is extremely outdated (like at least 2 years old) or it's just straight-up not being used at all.

We don't support the swapchain flags in question either, but that does not prevent graphics output from working.

Ah, I thought I installed it by pointing it at the directory that Xenia is in. Probably is upstream VKD3D, I'll have another look at it.

essasetic commented 2 years ago

I forgot to run the script file inside the VKD3D-Proton folder...

With that I have some graphics output, however it is still very buggy. image


010c:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (000000000011FC10 1 C) semi-stub
010c:fixme:dwmapi:DwmEnableMMCSS (1) stub
i> 0000010C Build: master@0fd578caf on Apr 28 2022
i> 0000010C Storage root: C:\users\essasetic\Documents\Xenia
i> 0000010C Loaded config: C:\users\essasetic\Documents\Xenia\xenia.config.toml
i> 0000010C Cont010c:fixme:system:EnableNonClientDpiScaling (000000000001005C): stub
ent root: C:\users\essasetic\Documen007c:fixme:imm:ImeSetActiveContext (0x356de0, 0): stub
007c:fixme:imm:ImmReleaseContext (0000000000010020, 0000000000356DE0): stub
ts\X010c:fixme:imm:ImeSetActiveContext (0x29cb70, 1): stub
010c:fixme:imm:ImmReleaseContext (000000000001005C, 000000000029CB70): stub
enia\content
i> 0000010C Cache root: C:\users\essasetic\Documents\Xenia\cache
w> 0000010C Unable to load Japanese font; JP characters will be boxes
i> 0000011C winkey: "^A" binds key 0x41 to controller input DPAD_LEFT.
i> 0000011C winkey: "^D" binds key 0x44 to controller input DPAD_RIGHT.
i> 0000011C winkey: "^S" binds key 0x53 to controller input DPAD_DOWN.
i> 0000011C winkey: "010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.RawGameController", {eb8d0792-e95a-4b19-afc7-0a59f8bf759e}, 0000000140ED4550): semi-stub
^W" binds key 0x57 to controller input DPAD_UP.
i> 0000011C winkey: "_A" binds key 0x41010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.ArcadeStick", {5c37b8c8-37b1-4ad8-9458-200f1a30018e}, 0000000140ED4558): semi-stub
 010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.FlightStick", {5514924a-fecc-435e-83dc-5cec8a18a520}, 0000000140ED4568): semi-stub
t010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.Gamepad", {8bbce529-d49c-39e9-9560-e47dde96b7c8}, 0000000140ED4570): semi-stub
010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.RacingWheel", {3ac12cd5-581b-4936-9f94-69f1e6514c7d}, 0000000140ED4580): semi-stub
o controller input LEFT_T010c:fixme:combase:RoGetActivationFactory (L"Windows.Gaming.Input.Gamepad", {8bbce529-d49c-39e9-9560-e47dde96b7c8}, 0000000140ED46B0): semi-stub
HUMB_LEFT.
i> 0000011C win010c:fixme:xinput:XInputGetBatteryInformation index 0, type 0, battery 0000000140ED46E4.
key: "_D" binds key 0x44 to controller input LEFT_THUMB_RIGHT.
i> 0000011C winkey: "_S" binds key 0x53 to controller input LEFT_THUMB_DOWN.
i> 0000011C winkey: "_W" binds key 0x57 to controller input LEFT_THUMB_UP.
i> 0000011C winkey: "F" binds key 0x46 to controller input LEFT_THUMB_PRESSED.
i> 0000011C winkey: "0x26" binds key 0x26 to controller input RIGHT_THUMB_UP.
i> 0000011C winkey: "0x28" binds key 0x28 to controller input RIGHT_THUMB_DOWN.
i> 0000011C winkey: "0x27" binds key 0x27 to controller input RIGHT_THUMB_RIGHT.
i> 0000011C winkey: "0x25" binds key 0x25 to controller input RIGHT_THUMB_LEFT.
i> 0000011C winkey: "K" binds key 0x4B to controller input RIGHT_THUMB_PRESSED.
i> 0000011C winkey: "L" binds key 0x4C to controller input X.
i> 0000011C winkey: "0xDE" binds key 0xDE to controller input B.
i> 0000011C winkey: "0xBA" binds key 0xBA to controller input A.
i> 0000011C winkey: "P" binds key 0x50 to controller input Y.
i> 0000011C winkey: "Q" binds key 0x51 to controller input LEFT_TRIGGER.
i> 0000011C winkey: "I" binds key 0x49 to controller input LEFT_TRIGGER.
i> 0000011C winkey: "E" binds key 0x45 to controller input RIGHT_TRIGGER.
i> 0000011C winkey: "O" binds key 0x4F to controller input RIGHT_TRIGGER.
i> 0000011C winkey: "Z" binds key 0x5A to controller input BACK.
i> 0000011C winkey: "X" binds key 0x58 to controller input START.
i> 0000011C winkey: "1" binds key 0x31 to controller input LEFT_SHOULDER.
i> 0000011C winkey: "3" binds key 0x33 to controller input RIGHT_SHOULDER.
i> 0000010C SDL OnControllerDeviceAdded: "PowerA Spectra Infinity Controller", JoystickType(1), GameControllerType(2), VendorID(0x20D6), ProductID(0x4002)
i> 0000010C SDL OnControllerDeviceAdded: Added at index 0.
w> 0000010C SDL GameControllerDB: file 'gamecontrollerdb.txt' does not exist.
011c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
011c:info:vkd3d_instance_deduce_config_flags_from_environment: shader_cache is used, global_pipeline_cache is enforced.
011c:info:vkd3d_config_flags_init_once: VKD3D_CONFIG=''.
011c:info:vkd3d_get_vk_version: vkd3d-proton - applicationVersion: 2.6.0.
011c:info:vkd3d_instance_init: vkd3d-proton - build: 4603c25d69ed4f4.
011c:info:vkd3d_memory_info_init_budgets: Applying resizable BAR budget to memory types: 0x0.
011c:info:vkd3d_bindless_state_get_bindless_flags: Device supports VK_VALVE_mutable_descriptor_type.
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:d3d12_device_global_pipeline_cache_init: Using global pipeline cache, PSO caches will not be saved to individual blobs.
011c:info:d3d12_device_caps_init_shader_model: Enabling support for SM 6.6.
011c:fixme:d3d12_device_caps_init_feature_options1: TotalLaneCount = 3840, may be inaccurate.
011c:info:vkd3d_pipeline_library_init_disk_cache: Remapping VKD3D_SHADER_CACHE to: vkd3d-proton.cache.
011c:info:vkd3d_pipeline_library_init_disk_cache: Attempting to load disk cache from: vkd3d-proton.cache.
0138:info:vkd3d_pipeline_library_disk_thread_main: Performing async setup of stream archive ...
0138:info:vkd3d_pipeline_library_disk_cache_merge: No write cache exists. No need to merge any disk caches.
0138:info:vkd3d_pipeline_library_disk_cache_initial_setup: Merging pipeline libraries took 4.839 ms.
0138:info:vkd3d_pipeline_library_disk_cache_initial_setup: Mapping read-only cache took 0.086 ms.
0138:info:d3d12_pipeline_library_read_blob_stream_format: Device teardown request received, stopping parse early.
0138:info:vkd3d_pipeline_library_disk_cache_initial_setup: Parsing stream archive took 5.683 ms.
0138:info:vkd3d_pipeline_library_disk_thread_main: Done performing async setup of stream archive.
i> 0000011C DXGI adapter: Radeon RX 6800/6800 XT / 6900 XT (vendor 0x1002, device 0x73BF)
011c:info:vkd3d_get_vk_version: vkd3d-proton - applicationVersion: 2.6.0.
011c:info:vkd3d_instance_init: vkd3d-proton - build: 4603c25d69ed4f4.
011c:info:vkd3d_memory_info_init_budgets: Applying resizable BAR budget to memory types: 0x0.
011c:info:vkd3d_bindless_state_get_bindless_flags: Device supports VK_VALVE_mutable_descriptor_type.
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:vkd3d_bindless_state_add_binding: Device supports VK_VALVE_descriptor_set_host_mapping!
011c:info:d3d12_device_global_pipeline_cache_init: Using global pipeline cache, PSO caches will not be saved to individual blobs.
011c:info:d3d12_device_caps_init_shader_model: Enabling support for SM 6.6.
011c:fixme:d3d12_device_caps_init_feature_options1: TotalLaneCount = 3840, may be inaccurate.
011c:info:vkd3d_pipeline_library_init_disk_cache: Remapping VKD3D_SHADER_CACHE to: vkd3d-proton.cache.
011c:info:vkd3d_pipeline_library_init_disk_cache: Attempting to load disk cache from: vkd3d-proton.cache.
011c:fixme:d3d12_command_queue_init: Ignoring priority 0x64.
013ic>: i0n0f0o0:0v1k1dC3 dD_ipriepcetl3iDn e1_2li bdreavriyc_ed iasnkd_ tOhSr efaeda_tmuariens::
P*e rMfaoxr mGiPnUg  vaisrytnuca ls eatdudpr eosfs  sbtirtesa mp ear rrcehsiouvrec e.:. .4
0
0*1 3Nco:ni-nzfeor:ovekdd 3hde_appi pcerleiantei_olni:b ryaersy
_*d iPsikx_ecla-cshhea_dmeerrg-es:p eNcoi fwireidt es tceanccihle  reexfiesrtesn.c eN:o  yneese
d*  tPor omgerragmem aabnlye  dsiasmkp lcea cphoessi.t
io0n1s3:c :tiinefro :0
v*k dR3ads_tpeirpiezleirn-eo_rldiebrreadr yv_ideiwssk:_ cnaoc
h*e _Riensiotuialr_csee tbuipn:d iMnegr:g itnige rp i3p
e*l iTniel eldi brreasroiuersc etso:o kt i6e.r7 828
 mis>.
00001030c1:1iCn fAod:dvekdd 3hda_npdilpeel:iFn8e0_0l0i0b0r4a rfyo_rd icslkas_sc axceh:e:_kienrinteila:l:_XsOebtjuepc:t
Maip>p i0n0g0 0r0e1a1dC- oXnTlhyr ecaadcFh8e0 0t0o0o0k4  0(.11)0 7S tmasc.k
: 70010000-70030000
i> 0000011C Added handle:F8000008 fo0r1 3ccl:aisnsf ox:ev:k:dk3edr_npeilp:e:lXiOnbej_elcitb
rair>y _0d0i0s0k0_1c1aCc hXeT_hirneiatdiFa8l0_0s0e0t0u8p :( 2P)a rStsaicnkg:  s7t0re0a5m0 0a0r0c-h7i0v0e7 0t0o0o0k
 K3>. 0F3800 0m0s0.0
40 1X3Tch:rienafdo:::vEkxde3cdu_tpei ptehlidi n1e _(lhibarnadrlye_=dFi8s0k0_0t0hr0e4a,d _'mGaPiUn :C oDmomnaen dpse r(fFo8r0m0i0n0g0 4as)y'n,c  nsaettiuvpe =o0f0 0s0t0r1e4aCm,  <ahrocshti>v)e
.K
> F8000008 XThread::Execute thid 2 (handle=F8000008, 'GPU VSync (F8000008)', native=00000150, <host>)
i> 0000011C Added handle:F800000C for class xe::kernel::XObject
i> 0000011C XThreadF800000C (3) Stack: 70090000-700B0000
i> 0000011C Added handle:F8000010 for class xe::kernel::XObject
i> 0000011C XThreadF8000010 (4) Stack: 700D0000-700F0000
i> 0000011C Added handle:F8000014 for class xe::kernel::XObject
K> F800000C XThread::Execute thid 3 (handle=F800000C, 'XMA Decoder (F800000C)', native=00000154, <host>)
K> F8000010 XThread::Execute thid 4 (handle=F8000010, 'Audio Worker (F8000010)', native=00000158, <host>)
i> 0000011C Added handle:F8000018 for class xe::kernel::XObject
i> 0000011C Added handle:F800001C for class xe::kernel::XObject
010c:fixme:d3d12_swapchain_init: Ignoring swap effect 0x4.
010c:fixme:d3d12_swapchain_init: Ignoring swapchain flags 0x800.
010c:fixme:d3d12_swapchain_present: Unimplemented flags 0x204.```
essasetic commented 2 years ago

We don't support the swapchain flags in question either, but that does not prevent graphics output from working.

Out of curiosity are there plans for this to be implemented or do you not have it in the roadmap?

doitsujin commented 2 years ago

It's not really possible to implement them with Vulkan swap chains.

essasetic commented 2 years ago

It's not really possible to implement them with Vulkan swap chains.

Ah I see, thanks for the response!