8 Sep
2023
8 Sep
'23
6:47 p.m.
SPIR-V says this is undefined behaviour, but Direct3D actually specifies that it should clamp. Most drivers do clamp, but llvmpipe does not. Hence this fixes a couple of tests with llvmpipe. This does of course add overhead to the ftou instruction, but I cannot imagine that it is a common instruction to execute. This also is not the first time we perform such checks; cf. udiv. -- v3: vkd3d-shader/spirv: Flush NaN to zero in ftoi. vkd3d-shader/spirv: Clamp ftoi upper bound to INT_MAX. vkd3d-shader/spirv: Clamp ftoi lower bound to INT_MIN. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/289