Evan Tang reported that new fixmes appeared on the shader_runner when
running some of his tests after
f50d0ae2cbc5ee2a26fedd7b8aac2def62decd6c.
vkd3d:652593:fixme:shader_sm4_read_src_param Unhandled mask 0x4.
The change to blame seems to be this added line in
sm4_src_from_constant_value().
+ src->swizzle = VKD3D_SHADER_NO_SWIZZLE;
On tpf binaries the last 12 bytes of each src register in an instruction
specify the swizzle, and there are 5 possible combinations:
Dimension NONE
-------- 00
Dimension SCALAR
-------- 01
Dimension VEC4, with a 4 bit writemask:
---- xxxx 00 01
Dimension VEC4, with an 8 bit swizzle:
xx xx xx xx 01 01
Dimension VEC4, with a 2bit scalar dimension number:
------ xx 10 01
So far, we have only seen src registers use 4 bit writemasks in a
single case: for vec4 constants, and it is always zero.
So we expect this:
---- 0000 00 01
Now, I probably wanted to initialize src->swizzle to zero when writing
constants, but VKD3D_SHADER_NO_SWIZZLE is not zero, it is actually the
default swizzle:
11 10 01 00
And the last 4 bits (0x4) get written in the mask part, which causes
the reader to complain.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/438
--
v6: vkd3d-shader/ir: Validate the index of a TEMP register.
vkd3d-shader/ir: Validate the DCL_TEMPS instruction.
vkd3d-shader/ir: Validate the register index count.
vkd3d-shader/ir: Validate the register dimension.
vkd3d-shader/ir: Validate the register data type.
vkd3d-shader/ir: Validate the register precision.
vkd3d-shader/dxil: Use vsir_register_init() to initialize registers.
vkd3d-shader: Deduplicate profile version comparison functions.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/432
A few recent changes broke the macOS build. Unfortunately nobody noticed, because the macOS CI job always fails. :-(
However, we can still fix that. I'm not sure that the last commit is the best approach, would like to have comments from Henri.
--
v6: include: Import vkd3d_d3dcompiler.h instead of redefining D3D_BLOB_PART.
ci: Make the MoltenVK logging less verbose.
vkd3d-shader: Explicitly cast vkd3d_shader_global_flags to uint64_t.
ci: Allow the artifact copy to fail.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/423
--
v3: vkd3d-shader/spirv: No longer handle builtin array size mismatch in spirv_compiler_emit_input().
vkd3d-shader/spirv: Remove handling of VKD3DSPR_OUTCONTROLPOINT.
vkd3d-shader/ir: Check for vocp usage during IR normalization.
vkd3d-shader/ir: Pass a vkd3d_shader_parser to instruction_array_normalise_io_registers().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/421