vkd3d-shader/hlsl: Implement the f32tof16() intrinsic.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov
2024-10-17 23:21:18 +02:00
committed by Henri Verbeet
parent f54797bae5
commit cf3e251a9f
Notes: Henri Verbeet 2024-10-22 20:54:54 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1200
7 changed files with 187 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
[require]
shader model >= 4.0
[pixel shader]
uniform float a;
uint4 main() : sv_target
{
return f32tof16(a);
}
[test]
uniform 0 float 42.0
draw quad
probe (0, 0) rgbaui (0x5140, 0x5140, 0x5140, 0x5140)
% zero
uniform 0 float 0.0
draw quad
probe (0, 0) rgbaui (0x0, 0x0, 0x0, 0x0)
% negative zero
uniform 0 uint 0x8000
draw quad
probe (0, 0) rgba(-0.0, -0.0, -0.0, -0.0)
% subnormal number
uniform 0 float 5.9604645e-08
draw quad
probe (0, 0) rgbaui (0x1, 0x1, 0x1, 0x1)
% subnormal number
uniform 0 float 1.1920929e-07
draw quad
probe (0, 0) rgbaui (0x2, 0x2, 0x2, 0x2)
% subnormal number
uniform 0 float 2.3841858e-07
draw quad
probe (0, 0) rgbaui (0x4, 0x4, 0x4, 0x4)
% subnormal number
uniform 0 float 4.7683716e-07
draw quad
probe (0, 0) rgbaui (0x8, 0x8, 0x8, 0x8)
% subnormal number
uniform 0 float 9.536743e-07
draw quad
probe (0, 0) rgbaui (0x10, 0x10, 0x10, 0x10)
% subnormal number
uniform 0 float 1.9073486e-06
draw quad
probe (0, 0) rgbaui (0x20, 0x20, 0x20, 0x20)
% subnormal number
uniform 0 float 3.8146973e-06
draw quad
probe (0, 0) rgbaui (0x40, 0x40, 0x40, 0x40)
% subnormal number
uniform 0 float 7.6293945e-06
draw quad
probe (0, 0) rgbaui (0x80, 0x80, 0x80, 0x80)
% subnormal number
uniform 0 float 1.5258789e-05
draw quad
probe (0, 0) rgbaui (0x100, 0x100, 0x100, 0x100)
% subnormal number
uniform 0 float 3.0517578e-05
draw quad
probe (0, 0) rgbaui (0x200, 0x200, 0x200, 0x200)
% I'd love to use rgba probes here but msvc doesn't scanf infinity :(
% positive infinity
uniform 0 uint 0x7f800000
draw quad
probe (0, 0) rgbaui (0x7c00, 0x7c00, 0x7c00, 0x7c00)
% negative infinity
uniform 0 uint 0xff800000
draw quad
probe (0, 0) rgbaui (0xfc00, 0xfc00, 0xfc00, 0xfc00)