--
v2: vkd3d-shader/hlsl: Avoid using HLSL_CLASS_OBJECT without checking the base type.
vkd3d-shader/hlsl: Consider any valid register reservation to invoke manual packing.
tests: Add more tests for manual packing.
vkd3d-shader/hlsl: Use hlsl_type_is_resource() for unbounded array checks.
tests: Test HLSL unbounded array syntax.
vkd3d-shader/hlsl: Add SM5.1 shader target strings.
vkd3d-shader/hlsl: Move shader version helpers to hlsl.h.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/757
Overall this is simpler, results in less verbose SPIR-V code which is easier to debug, and eliminates stuttering issues in Horizon Zero Dawn when run in an SM 6 dev branch with Gio's cfg4 structuriser branch.
--
v6: vkd3d-shader/ir: Materialise SSAs to temps before lowering switch instructions.
vkd3d-shader/ir: Convert SSAs to temps only if the block of origin does not dominate all uses.
vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().
vkd3d-shader/spirv: Emit a uint result for RESINFO_UINT if the dst register is SSA.
vkd3d-shader/ir: Materialise phis to temps in the incoming blocks.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/749
Overall this is simpler, results in less verbose SPIR-V code which is easier to debug, and eliminates stuttering issues in Horizon Zero Dawn when run in an SM 6 dev branch with Gio's cfg4 structuriser branch.
--
v5: vkd3d-shader/ir: Materialise SSAs to temps before lowering switch instructions.
vkd3d-shader/ir: Convert SSAs to temps only if the block of origin does not dominate all uses.
vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().
vkd3d-shader/spirv: Emit a uint result for RESINFO_UINT if the dst register is SSA.
vkd3d-shader/ir: Materialise phis to temps in the incoming blocks.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/749
~~This applies on top of !711, the last three commits belong here.~~
This MR and the following ones will introduce a number of optimization passes on the structured representation of the shader, with the goal of fixing the idiosyncrasies of the code generated by the new structurizer. The general pattern is that we want to recognize when the combination of loops and jumps can be rather written with selection constructs. Ideally that should bring to removing all the synthesized loop intervals, but that cannot be guaranteed in general. We still want to do remove all the loops we can, first to make the generated code easier to read and to recompile, and second because having fewer loops also means that more multilevel jumps become ordinary single level jumps, which do not require overhead to be represented in SPIR-V.
--
v6: vkd3d-shader/ir: Synthesize selection constructs from conditional jumps.
vkd3d-shader/ir: Remove trailing `continue's.
vkd3d-shader/ir: Move `continue's to the false branch when possible.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/722