This is a simplified version of !748 that doesn't handle conditional jumps. I'll submit a cleaned up version of that after this.
--
v4: vkd3d-shader/hlsl: Implement loop unrolling.
vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
vkd3d-shader/hlsl: Pull evaluate_static_expression_as_uint upwards.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/786
This is a simplified version of !748 that doesn't handle conditional jumps. I'll submit a cleaned up version of that after this.
--
v3: vkd3d-shader/hlsl: Implement loop unrolling.
vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
vkd3d-shader/hlsl: Pull evaluate_static_expression_as_uint upwards.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/786
This is a simplified version of !748 that doesn't handle conditional jumps. I'll submit a cleaned up version of that after this.
--
v2: vkd3d-shader/hlsl: Implement loop unrolling.
vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
vkd3d-shader/hlsl: Pull evaluate_static_expression_as_uint upwards.
vkd3d-shader/hlsl: Defer bounds checks to after copy propagation.
tests/hlsl: Add a test for dynamically indexed multisampled texture loads.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/786
The general idea is:
* Run copy prop initially, save the copy prop state.
* Unroll one iteration, substitute all jumps by stores to synthetic control vars, move all instructions after the jumps to checks to those control vars.
* Run copy prop on the iteration, using the previous iteration's or the root's state as the parent state.
* Probe the copy prop state to check if the "loop_broken" control variable was set, stop unrolling if it true, otherwise continue.
Some stuff I'm less sure about and would love comments on:
* The way I deferred bounds checking.
* Splitting the iter block from the body. This was needed because otherwise copy prop marks variable that are changed in iter blocks (e.g "i++") as invalidated and does not propagate them to subsequent iterations.
* Messing around with copy prop internals. I attempted two other similar solutions that were less invasive: running copy prop on the entire block after each unroll and running copy prop once, after unrolling to `max_iterations`, both were too slow to be viable.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/748
Improve minidump dumping in Wine dump:
- support several -j options to only print relevant part of the file
- support a bunch of new streams (memory list, token, thread names...)
- several other cleanups and homogeinization of output
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5493
Includes !782 to prevent the 32-bit Windows CI crashing.
--
v8: vkd3d-shader/dxil: Support SV_Depth, SV_DepthGreaterEqual and SV_DepthLessEqual.
tests/hlsl: Add an SV_Depth test.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/777
Includes !782 to prevent the 32-bit Windows CI crashing.
--
v7: vkd3d-shader/dxil: Support SV_Depth, SV_DepthGreaterEqual and SV_DepthLessEqual.
tests/hlsl: Add an SV_Depth test.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/777