Other validation stuff I plan to send as soon as !450 and !550 are in.
I guess the CI is going to timeout because of too many commits, so I'll preemptively stop it.
-- v5: vkd3d-shader/ir: Validate PHI instructions. vkd3d-shader/ir: Validate modifiers and shift for SSA destinations. vkd3d-shader/ir: Do not allow IMMCONST and IMMCONST64 as destination registers. vkd3d-shader/ir: Check that all instructions appear in a block. vkd3d-shader/ir: Validate RET instructions. vkd3d-shader/ir: Validate SWITCH_MONOLITHIC instructions. tests: Add a couple of degenerate switch instances. vkd3d-shader/ir: Validate BRANCH instructions. vkd3d-shader/ir: Validate LABEL instructions. vkd3d-shader/ir: Validate LABEL registers. vkd3d-shader/ir: Validate that structured CF does not appear in block-based shaders. vkd3d-shader/ir: Check that SSA registers are used validly. vkd3d-shader/ir: Check that SSA registers have consistent dimensions. vkd3d-shader/ir: Check that TEMP registers have consistent dimensions. vkd3d-shader/ir: Use vkd3d_free() instead of free(). vkd3d-shader/ir: Simplify control flow in vsir_validate_register(). tests: Add a test with non-trivial control flow. [test] Do not check DXBC checksum. [test] tests: Dump the DXIL code. vkd3d-shader/dxil: Handle the DXIL SWITCH instruction. vkd3d-shader/dxil: Handle the DXIL PHI instruction. vkd3d-shader/dxil: Handle the DXIL BR instruction conditional variant. vkd3d-shader/dxil: Handle the DXIL BR instruction unconditional variant. vkd3d-shader/dxil: Introduce a code block terminator struct. vkd3d-shader/ir: Include an initial label instruction in the first control flow block. vkd3d-shader/spirv: Do not emit function code before the main prolog. vkd3d-shader/spirv: Declare indexable temps as Private unless function scope is specified. vkd3d-shader/ir: Store code block names in struct vkd3d_shader_desc. vkd3d-shader/ir: Flatten SWITCH/CASE/DEFAULT/ENDSWITCH control flow instructions. vkd3d-shader/ir: Flatten LOOP/BREAK/CONTINUE/ENDLOOP control flow instructions. vkd3d-shader/ir: Flatten IF/ELSE/ENDIF control flow instructions. vkd3d-shader/spirv: Handle RETP in spirv_compiler_handle_instruction(). vkd3d-shader/spirv: Handle DISCARD and TEXKILL in spirv_compiler_handle_instruction(). vkd3d-shader/spirv: Emit descriptor offset loads in the function entry block.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/559