--
v12: vkd3d-shader/ir: Normalise signatures and input/output registers to the Shader Model 6 pattern.
vkd3d-shader/ir: Eliminate struct vkd3d_shader_normaliser.
vkd3d-shader/spirv: Support emitting multi-dimensional array variables.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/181
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v12: tests: Add RWBuffer writing test.
tests: Add support for UAV buffers in the d3d11 runner.
tests: Add support for UAV buffers to d3d12 runner.
tests: Rename readback helper to be more generic.
tests: Add support for UAV buffers in Vulkan runner.
vkd3d-shader/hlsl: Improve UAV format type checking for buffer types.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/193
Otherwise, it is possible that the register used by the temp is
overridden by a subsequent instruction within the same loop.
--
v2: vkd3d-shader/hlsl: Extend the liveness of nodes produced outside loops.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/208
~~This one's marked as a draft, as there seems to be a blocker with the method parameters.~~
~~The first commit totally works, _if_ the ddx/ddy parameters are literals - they do _not_ work when passing a variable of any kind. The test comes from tests/d3d12.c, so I'm mostly just trying to migrate that to the HLSL test suite, but it currently hits an assert before we get to the resource load (which does eventually work) and I'm not sure what's causing it:~~
```
vkd3d-compiler: libs/vkd3d-shader/tpf.c:3190: sm4_register_from_node: Assertion `instr->reg.allocated' failed.
```
~~Seems like it's surprised when we try to load from the constant buffer maybe?~~ Fixed!
--
v11: vkd3d-shader/hlsl: Add support for SampleGrad() method
tests: Add a test for SampleGrad() method
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/184
--
v2: windows.gaming.input: Query IGameController interface in TryGetFactoryControllerFromGameController.
dinput/tests: Test that FromGameController also works with IRawGameController.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2873
This fixes a performance regression introduced during state redesign shortly after Wine 5.0.
Some games create a great amount of lights (around 1000 and growing) and touch them quite often. That results in each light being relayed to CS thread before each draw which is taking a great amount of time (performance drop in Nosferatu: The Wrath of Malachi from ~150 fps to ~10-15 at start location; that's with another unrelated regression related to streaming buffer management sorted out).
It is also possible to use bitmasks like for other states, but then with these lights amount even iterating over the full set of lights during stateblock apply leads to noticable performance drop.
With this patchset Nosferatu reaches ~180 fps on the same place (~115 on Windows on the same machine, with the difference being probably due to SWVP).
--
v2: wined3d: Use RB tree for storing lights.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2833