First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v12: user32: Use the desktop shared data for GetCursorPos().
server: Expose the desktop shared mapping to clients.
server: Add a sequence number to the shared data.
server: Move the cursor position and last change time to the shared data.
server: Use the helper to update the cursor last change time.
server: Create a desktop shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
The goal here is to be able to convert between SSA and TEMP easily, which will be the second preliminary pass for the CFG structurizer.
Ideally I would have added the check in commit 4/4 for TEMPs as well, but typing information from TPF sources is insufficient. This leaves the current validation inconsistent: we check that a register is always used either as a scalar or a vec4, but that "scalar" might be 32 bit in some cases and 64 bit in others. Maybe the right thing to do here is just give up on trying to put some typing on TEMPs and just say they're always 4x32 bit words. I don't know, I'll leave this for when the dust is more settled.
--
v3: vkd3d-shader/ir: Check that SSA registers are used with compatible data types.
vkd3d-shader: Use 64 bit swizzles for 64 bit data types in VSIR.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/603
This is the current proton thread priority implementation by @rbernon rebased for upstream with a few `#ifdef`s added since AFAIK Linux is the only operating system where threads have a unique PID which can be used to set niceness on.
~~I also ran `./tools/make_requests` on https://gitlab.winehq.org/mzent/wine/-/commit/6705d3481be0409f7e971c1d2c7a3… as well and `autoconf` on https://gitlab.winehq.org/mzent/wine/-/commit/d7bafe40c411753662b2ad97148a6… (which does blow up the line count a bit).~~
A few tiny changes ~~(with the ready variable for example)~~ are in anticipation for Part 2, which also adds Mach thread priorities and recalculates thread priorities on process priority change.
Since this is a rather large MR, I hope the split here is appropriate ~~(with the second part being slightly smaller)~~, but I think logically it makes the most sense here.
--
v12: server: Check wineserver privileges on init with -20 niceness.
server: Use setpriority to update thread niceness when safe.
ntdll: Set RLIMIT_NICE to its hard limit.
server: Introduce new set_thread_priority helper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4551
This is a preliminary pass for the control flow graph structurizer. The plan, at least for the first version of the structurizer, is to have this pass, then another pass that converts all SSA registers to TEMPs (and correspondingly PHI nodes to MOVs/MOVCs), then a simple structurizer based on the so-called Böhm–Jacopini theorem. Some changes to the SPIR-V backend will also be needed, for supporting BOOL TEMP registers and fixing some details of 64 bit types.
But this pass is already quite complicated, so large enough for its own MR.
--
v4: vkd3d-shader/ir: Fixup PHI nodes when lowering switches to selection ladders.
vkd3d-shader/ir: Lower monolithic switches to selection ladders.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/598