diff --git a/tests/hlsl/uav-rwbyteaddressbuffer.shader_test b/tests/hlsl/uav-rwbyteaddressbuffer.shader_test index 8a25adb41..0327ba85e 100644 --- a/tests/hlsl/uav-rwbyteaddressbuffer.shader_test +++ b/tests/hlsl/uav-rwbyteaddressbuffer.shader_test @@ -81,7 +81,7 @@ float4 main() : sv_target [test] todo(glsl) draw quad if(sm<6) probe uav 1 (0) ri (12) -if(sm>=6) probe uav 1 (0) rd (12.2) +if(sm>=6) probe uav 1 (0) f64(12.2) % SM 6 add support for templated Store<>(). @@ -102,7 +102,7 @@ float4 main() : sv_target [test] draw quad probe uav 1 (0) i64(-12) -probe uav 1 (1) rd (13.3) +probe uav 1 (1) f64(13.3) [require] shader model >= 6.2 diff --git a/tests/hlsl/uav-rwstructuredbuffer.shader_test b/tests/hlsl/uav-rwstructuredbuffer.shader_test index f01253423..7c2b16b99 100644 --- a/tests/hlsl/uav-rwstructuredbuffer.shader_test +++ b/tests/hlsl/uav-rwstructuredbuffer.shader_test @@ -353,11 +353,11 @@ void main() dispatch 1 1 1 probe uav 2 (0) rui(0x4990) probe uav 2 (1) rui(0) -probe uav 2 (1) rd(5.25) +probe uav 2 (1) f64(5.25) probe uav 2 (4) rui(13) probe uav 2 (5) rui(0) probe uav 2 (6) rui(0x4a20) probe uav 2 (7) rui(0) -probe uav 2 (4) rd(-4.25) +probe uav 2 (4) f64(-4.25) probe uav 2 (10) rui(15) probe uav 2 (11) rui(0) diff --git a/tests/hlsl/wave-ops-float.shader_test b/tests/hlsl/wave-ops-float.shader_test index eb0d37238..b273c5608 100644 --- a/tests/hlsl/wave-ops-float.shader_test +++ b/tests/hlsl/wave-ops-float.shader_test @@ -526,14 +526,14 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(7.0, 2.0) -probe uav 1 (1) rgd(7.0, 2.0) -probe uav 1 (2) rgd(7.0, 2.0) -probe uav 1 (3) rgd(7.0, 2.0) -probe uav 1 (4) rgd(7.0, 2.5) -probe uav 1 (5) rgd(7.0, 2.5) -probe uav 1 (6) rgd(7.0, 2.5) -probe uav 1 (7) rgd(7.0, 2.5) +probe uav 1 (0) f64(7.0, 2.0) +probe uav 1 (1) f64(7.0, 2.0) +probe uav 1 (2) f64(7.0, 2.0) +probe uav 1 (3) f64(7.0, 2.0) +probe uav 1 (4) f64(7.0, 2.5) +probe uav 1 (5) f64(7.0, 2.5) +probe uav 1 (6) f64(7.0, 2.5) +probe uav 1 (7) f64(7.0, 2.5) [compute shader] @@ -549,10 +549,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(14.0, 4.5) -probe uav 1 (1) rgd(14.0, 4.5) -probe uav 1 (2) rgd(14.0, 4.5) -probe uav 1 (3) rgd(14.0, 4.5) +probe uav 1 (0) f64(14.0, 4.5) +probe uav 1 (1) f64(14.0, 4.5) +probe uav 1 (2) f64(14.0, 4.5) +probe uav 1 (3) f64(14.0, 4.5) [compute shader] @@ -568,10 +568,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(150.0625, 1.5) -probe uav 1 (1) rgd(150.0625, 1.5) -probe uav 1 (2) rgd(150.0625, 1.5) -probe uav 1 (3) rgd(150.0625, 1.5) +probe uav 1 (0) f64(150.0625, 1.5) +probe uav 1 (1) f64(150.0625, 1.5) +probe uav 1 (2) f64(150.0625, 1.5) +probe uav 1 (3) f64(150.0625, 1.5) [compute shader] @@ -587,10 +587,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(3.5, 1.0) -probe uav 1 (1) rgd(3.5, 1.0) -probe uav 1 (2) rgd(3.5, 1.0) -probe uav 1 (3) rgd(3.5, 1.0) +probe uav 1 (0) f64(3.5, 1.0) +probe uav 1 (1) f64(3.5, 1.0) +probe uav 1 (2) f64(3.5, 1.0) +probe uav 1 (3) f64(3.5, 1.0) [compute shader] @@ -606,10 +606,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(3.5, 1.5) -probe uav 1 (1) rgd(3.5, 1.5) -probe uav 1 (2) rgd(3.5, 1.5) -probe uav 1 (3) rgd(3.5, 1.5) +probe uav 1 (0) f64(3.5, 1.5) +probe uav 1 (1) f64(3.5, 1.5) +probe uav 1 (2) f64(3.5, 1.5) +probe uav 1 (3) f64(3.5, 1.5) [compute shader] @@ -625,10 +625,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(0.0, 0.0) -probe uav 1 (1) rgd(3.5, 1.0) -probe uav 1 (2) rgd(7.0, 2.0) -probe uav 1 (3) rgd(10.5, 3.5) +probe uav 1 (0) f64(0.0, 0.0) +probe uav 1 (1) f64(3.5, 1.0) +probe uav 1 (2) f64(7.0, 2.0) +probe uav 1 (3) f64(10.5, 3.5) [compute shader] @@ -644,10 +644,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(1.0, 1.0) -probe uav 1 (1) rgd(3.5, 1.0) -probe uav 1 (2) rgd(12.25, 1.0) -probe uav 1 (3) rgd(42.875, 1.5) +probe uav 1 (0) f64(1.0, 1.0) +probe uav 1 (1) f64(3.5, 1.0) +probe uav 1 (2) f64(12.25, 1.0) +probe uav 1 (3) f64(42.875, 1.5) [uav 0] @@ -673,10 +673,10 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(0.5, 0.25) -probe uav 1 (1) rgd(0.25, 0.5) -probe uav 1 (2) rgd(1.0, 0.75) -probe uav 1 (3) rgd(0.75, 1.0) +probe uav 1 (0) f64(0.5, 0.25) +probe uav 1 (1) f64(0.25, 0.5) +probe uav 1 (2) f64(1.0, 0.75) +probe uav 1 (3) f64(0.75, 1.0) [compute shader] @@ -693,7 +693,7 @@ void main(uint id : SV_GroupIndex) [test] dispatch 4 1 1 -probe uav 1 (0) rgd(0.75, 1.0) -probe uav 1 (1) rgd(0.75, 1.0) -probe uav 1 (2) rgd(0.75, 1.0) -probe uav 1 (3) rgd(0.75, 1.0) +probe uav 1 (0) f64(0.75, 1.0) +probe uav 1 (1) f64(0.75, 1.0) +probe uav 1 (2) f64(0.75, 1.0) +probe uav 1 (3) f64(0.75, 1.0) diff --git a/tests/shader_runner.c b/tests/shader_runner.c index dd445167c..6ee89ac11 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -867,6 +867,21 @@ static void read_uint64(const char **line, uint64_t *u, bool is_uniform) *line = rest; } +static void read_f64(const char **line, double *d) +{ + double val; + char *rest; + + errno = 0; + val = strtod(*line, &rest); + + if (errno != 0 || rest == *line) + fatal_error("Malformed f64 constant '%s'.\n", *line); + + *d = val; + *line = rest; +} + static void read_int64_t2(const char **line, struct i64vec2 *v) { read_int64(line, &v->x, true); @@ -1245,6 +1260,34 @@ static void parse_test_directive(struct shader_runner *runner, const char *line) check_readback_data_uint64(rb, &box, v.x, 0); } } + else if (match_string(line, "f64", &line)) + { + struct dvec2 v; + + if (*line != '(') + fatal_error("Malformed probe arguments '%s'.\n", line); + ++line; + + read_f64(&line, &v.x); + while (isspace(*line)) + ++line; + if (*line == ',') + { + ++line; + read_f64(&line, &v.y); + if (sscanf(line, " ) %u", &ulps) < 1) + ulps = 0; + todo_if(runner->is_todo) bug_if(runner->is_bug) + check_readback_data_dvec2(rb, &rect, &v, ulps); + } + else + { + if (sscanf(line, " ) %u", &ulps) < 1) + ulps = 0; + todo_if(runner->is_todo) bug_if(runner->is_bug) + check_readback_data_double(rb, &rect, v.x, ulps); + } + } else if (match_string(line, "rgbaui", &line)) { struct uvec4 v; @@ -1308,29 +1351,6 @@ static void parse_test_directive(struct shader_runner *runner, const char *line) todo_if(runner->is_todo) bug_if(runner->is_bug) check_readback_data_uint(rb, &box, expect, 0); } - else if (match_string(line, "rgd", &line)) - { - struct dvec2 v; - - ret = sscanf(line, "( %lf , %lf ) %u", &v.x, &v.y, &ulps); - if (ret < 2) - fatal_error("Malformed probe arguments '%s'.\n", line); - if (ret < 3) - ulps = 0; - todo_if(runner->is_todo) check_readback_data_dvec2(rb, &rect, &v, ulps); - } - else if (match_string(line, "rd", &line)) - { - double expect; - - ret = sscanf(line, "( %lf ) %u", &expect, &ulps); - if (ret < 1) - fatal_error("Malformed probe arguments '%s'.\n", line); - if (ret < 2) - ulps = 0; - todo_if(runner->is_todo) bug_if(runner->is_bug) - check_readback_data_double(rb, &rect, expect, ulps); - } else if (match_string(line, "r", &line)) { float expect;