On Fri Aug 8 11:42:41 2025 +0000, Tyson Whitehead wrote:
> I compiled and tested the `master` branch of wine on my machine and it
> is broken exactly like I expected it would be under Linux 6.12.4.
> That is, wine has went from all three busses working and giving the same
> results as Windows to now only `hidraw` working. For both the the UDEV
> (input) and SDL backends, autocenter is now permanently stuck on for all
> test cases using my [test
> program](https://github.com/twhitehead/issue-wine-ff-autocenter/tree/master…
> (i.e., on regardless of what is specified or not for
> `DIPROP_AUTOCENTER`). It short, this merge request has introduced a regression.
> Currently updating my distro to the latest to see what effects
> @TomaszPakula's merged kernel driver work might have. I almost certain
> it will also be broken as well, although it may switch for permanently
> stuck on to permanently stuck off depending on whether or not his work
> changed the kernel default from on to off. I'll report back.
The evdev and SDL backends suffer from impedence mismatch and they cannot work identically to hidraw on every possible device. You should use hidraw with your device, and every time it is supported, and evdev / SDL for every other devices where it's not.
Then making sure evdev / SDL works best for devices without the hidraw alternative is more important than making all the backends work similarly for devices which can already be used with hidraw.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8605#note_112449
On Thu Aug 7 22:34:16 2025 +0000, Tyson Whitehead wrote:
> I wrote the `DIPROP_AUTOCENTER` implementation and the test cases for it
> and believe I came to understand it then. It's been a bit, but, IIRC,
> the bus protocol is HID messages. This is what the dinput code talks.
> The backends interpret them. For hidraw it pretty much passes them on.
> For UDEV (input) and SDL it interpreters to the native API calls.
>
> I have tested my device using the code I posted with all the backends by
> setting the `DisableHidraw`, `DisableInput`, and `Enable SDL` registry
> entries. With wine 10.0 it agrees perfectly with what Windows does. I
> don't think this will be the case anymore now that this merge request
> has been accepted. I could be wrong though. I will compile it up and try.
> Here is the relevant `WINEDEBUG=+hid` log line show the USB Sidewinder 2
> (045e:001b) being taken by each backend under Wine 10.0 when running my
> test program. With hidraw (requires adding `rw` access to the relevant
> `/dev/hidraw*` device)
> ```
> 00bc:trace:hid:udev_add_device udev "/dev/hidraw13" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B1/hidraw/hidraw13
> ...
> 00bc:trace:hid:bus_main_thread creating hidraw device 045e:001b with
> usages 0001:0004
> 00bc:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version
> 0a00, input 0, uid 00000000, is_gamepad 0, is_hidraw 1, is_bluetooth 0},
> unix_device 0x7e503200
> ```
> with UDEV (input) (picks up twice as both `/dev/event*` and `/dev/js*` devices)
> ```
> 00c0:trace:hid:udev_add_device udev "/dev/input/event30" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B0/input/input1990/event30
> ...
> 00c0:trace:hid:udev_add_device udev "/dev/input/js1" syspath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/0003:045E:001B.02B0/input/input1990/js1
> ...
> 00c0:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with
> usages 0001:0005
> 00c0:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version
> 0100, input 0, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth 0},
> unix_device 0x7e50bcb0
> ...
> 00c0:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with
> usages 0001:0005
> 00c0:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version
> 0a00, input 0, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth 0},
> unix_device 0x7e55bd90
> ```
> and with SDL
> ```
> 00bc:trace:hid:sdl_add_device Making up serial number for Microsoft
> SideWinder Force Feedback 2 Joystick: 030043cf5e0400001b00000000010000.1
> ...
> 00bc:trace:hid:bus_main_thread creating non-hidraw device 045e:001b with
> usages 0001:0004
> 00bc:trace:hid:bus_create_hid_device desc {vid 045e, pid 001b, version
> 0100, input -1, uid 00000000, is_gamepad 0, is_hidraw 0, is_bluetooth
> 0}, unix_device 0x7e5bc630
> ```
I compiled and tested the `master` branch of wine on my machine and it is broken exactly like I expected it would be under Linux 6.12.4.
That is, wine has went from all three busses working and giving the same results as Windows to now only `hidraw` working. For both the the UDEV (input) and SDL backends, autocenter is now permanently stuck on for all test cases using my [test program](https://github.com/twhitehead/issue-wine-ff-autocenter/tree/master… (i.e., on regardless of what is specified or not for `DIPROP_AUTOCENTER`). It short, this merge request has introduced a regression.
Currently updating my distro to the latest to see what effects @TomaszPakula's merged kernel driver work might have. I almost certain it will also be broken as well, although it may switch for permanently stuck on to permanently stuck off depending on whether or not his work changed the kernel default from on to off. I'll report back.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8605#note_112448