protonscr

Path of Exile no mouse cursor

dxvkclosed bughelp wanteddxgi
doitsujin/dxvk#498 · opened 2018-07-16 by m42a · updated 2019-08-26 · 12 comments · github
Mm42a 2018-07-16 github

When I run Path of Exile under DXVK, the mouse cursor does not show up and my mouse clicks don't register. When I click the UI elements they flicker like I temporarily moved my mouse off of them. The mouse works fine when using Wine's native DX11.

Software information

Path of Exile (64-bit)
Wine has https://aur.archlinux.org/cgit/aur.git/tree/poe-fix.patch?h=wine-staging-pba-git applied and is set to emulate a virtual desktop

System information

  • GPU: GeForce GTX 970
  • Driver: 396.24.10
  • Wine version: wine-3.12 (Staging)
  • DXVK version: 4ab5682

Apitrace file(s)

https://drive.google.com/file/d/1Vg4A5UK2nLvrxtxPwvHyFqveTyulrvuk/view?usp=sharing

Log files

  • d3d11.log:
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_1
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_1
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
  • dxgi.log:
info:  Game: PathOfExile_x64.exe
info:  DXVK: v0.62-2-g4ab5682
warn:  OpenVR: Failed to locate module
info:  Enabled instance extensions:
info:    VK_KHR_get_physical_device_properties2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface
info:  GeForce GTX 970:
info:    Driver: 396.24.10
info:    Vulkan: 1.1.80
info:    Memory Heap[0]: 
info:      Size: 4096 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:      Memory Type[8]: Property Flags = 0x1
info:    Memory Heap[1]: 
info:      Size: 17839 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[9]: Property Flags = 0x6
info:      Memory Type[10]: Property Flags = 0xe
info:  Game: PathOfExile_x64.exe
info:  DXVK: v0.62-2-g4ab5682
warn:  OpenVR: Failed to locate module
info:  Enabled instance extensions:
info:    VK_KHR_get_physical_device_properties2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface
info:  GeForce GTX 970:
info:    Driver: 396.24.10
info:    Vulkan: 1.1.80
info:    Memory Heap[0]: 
info:      Size: 4096 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:      Memory Type[8]: Property Flags = 0x1
info:    Memory Heap[1]: 
info:      Size: 17839 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[9]: Property Flags = 0x6
info:      Memory Type[10]: Property Flags = 0xe
info:  Enabled device extensions:
info:    VK_EXT_shader_viewport_index_layer
info:    VK_EXT_vertex_attribute_divisor
info:    VK_KHR_dedicated_allocation
info:    VK_KHR_descriptor_update_template
info:    VK_KHR_get_memory_requirements2
info:    VK_KHR_image_format_list
info:    VK_KHR_maintenance1
info:    VK_KHR_maintenance2
info:    VK_KHR_sampler_mirror_clamp_to_edge
info:    VK_KHR_shader_draw_parameters
info:    VK_KHR_swapchain
info:  Enabled device extensions:
info:    VK_EXT_shader_viewport_index_layer
info:    VK_EXT_vertex_attribute_divisor
info:    VK_KHR_dedicated_allocation
info:    VK_KHR_descriptor_update_template
info:    VK_KHR_get_memory_requirements2
info:    VK_KHR_image_format_list
info:    VK_KHR_maintenance1
info:    VK_KHR_maintenance2
info:    VK_KHR_sampler_mirror_clamp_to_edge
info:    VK_KHR_shader_draw_parameters
info:    VK_KHR_swapchain
warn:  DXGI: MakeWindowAssociation: Ignoring flags
info:  DxgiVkPresenter: Recreating swap chain: 
  Format:       VK_FORMAT_B8G8R8A8_SRGB
  Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
  Buffer size:  1918x1064
TTk-Glitch 2018-07-16 github

That looks like a lutris issue though.. If you're using lutris, disable its runtime from the options.

Mm42a 2018-07-16 github

I am not using lutris

TTk-Glitch 2018-07-16 github

Might be your DE or virtual desktop then (I'm going to try that). PoE works just fine for me with same geforce driver (also maxwell GPU), same wine version, same DXVK and same display resolution.
Edit : tried a virtual desktop but nope, works fine.

Mm42a 2018-07-16 github
TTk-Glitch 2018-07-16 github

Not the first time I've heard about mouse cursor issues and XMonad.. I'm not using it myself and can't really say for sure it's related but, still, I have my doubts it's DXVK's fault. However if you happen to be missing some wine optional dependencies, it might help to check that page from GE : https://www.gloriouseggroll.tv/how-to-get-out-of-wine-dependency-hell/
Hopefully that will help. Sorry if it doesn't.

Mm42a 2018-07-16 github

I did some digging in winedbg and found out that without DXVK, the windows gets a WM_MOUSEMOVE message when it's created. With DXVK, this message doesn't show up, and later WM_MOUSEMOVE messages that show up when I actually move the mouse appear to get dropped.

Ddoitsujin maintainer 2018-07-16 github

That's interesting given that it's the game that creates the window, not DXVK. DXVK only creates an IDXGISwapChain instance for that window, but that shouldn't interfere with input handling.

It also doesn't register any window message hooks, so WM_MOUSEMOVE messages sent to the window do not get dropped, at least not because of DXVK.

No idea what's going on and it seems to work for everyone else.

Mm42a 2018-07-16 github

I think it has to do with my dual monitor setup. My primary monitor is positioned at 1440,1480, and my secondary monitor is at 0,0. Previously I was starting PoE on my primary monitor. When I tried started it on my secondary monitor, it worked. The message log for DXVK has a bunch of lines like SPY_DumpStructure WINDOWPOS hwnd=0x10020, after=(nil), at (1440,1496) w=1918 h=1062, flags=0x00000014 where 0x10020 is the desktop window. The interesting thing is that the desktop window starts out at 0,0 but right after the enabled device extensions are printed out there is a WM_DISPLAYCHANGE message and the window gets moved to 1440,1496.

My suspicion is that whatever wine uses to do coordinate translation for virtual desktops isn't being invoked when using DXVK, and so when wine gets the mouse movements it thinks they're for a different window and drops them. This appears to be only affected by the starting position; if I start the wine virtual desktop at 0,0 and move it to my primary monitor it keeps working, and if I start it on my primary monitor and then move it to 0,0 it keeps not working.

Ddoitsujin maintainer 2018-07-16 github

It should be noted that DXVK does not currently handle multi-monitor setups very well from a DXGI point-of-view, it only supports one single IDXGIOutput per adapter, which is the one covering (0,0). wined3d also supports only one output, but I think they return the primary monitor in all situations.

On Widnows, I think the primary display always starts at (0,0), but this assumption might be causing issues with wine. Unfortunately there doesn't seem to be a way to enumerate all monitors currently attached to the desktop. Edit: this might be what I'm looking for.

Does it work correctly with no virtual desktop?

Ddoitsujin maintainer 2018-07-16 github

@m42a 1c86ed8c93e0cca3006c7702012cb5db8e9ca860 implements multi-monitor support in DXGI. If this doesn't fix the problem, I'll go with "probably not my bug".

Edit: Nevermind, I'll have to revert that commit.

Mm42a 2018-07-17 github

It does work correctly with no virtual desktop.

Ddoitsujin maintainer 2018-07-17 github

Hmm, in that case this probably isn't my issue in the first place. DXVK doesn't even know that a virtual desktop exists. This might still have something to do with multi-monitor support (you could give the dxgi-multi-monitor branch a shot), but as mentioned, if that doesn't fix it, I cannot fix it in DXVK.

Nothing extracted yet.