mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Introduce the "f64" probe format.
This commit is contained in:
Notes:
Henri Verbeet
2025-06-10 18:06:45 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1555
@@ -81,7 +81,7 @@ float4 main() : sv_target
|
|||||||
[test]
|
[test]
|
||||||
todo(glsl) draw quad
|
todo(glsl) draw quad
|
||||||
if(sm<6) probe uav 1 (0) ri (12)
|
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<>().
|
% SM 6 add support for templated Store<>().
|
||||||
@@ -102,7 +102,7 @@ float4 main() : sv_target
|
|||||||
[test]
|
[test]
|
||||||
draw quad
|
draw quad
|
||||||
probe uav 1 (0) i64(-12)
|
probe uav 1 (0) i64(-12)
|
||||||
probe uav 1 (1) rd (13.3)
|
probe uav 1 (1) f64(13.3)
|
||||||
|
|
||||||
[require]
|
[require]
|
||||||
shader model >= 6.2
|
shader model >= 6.2
|
||||||
|
@@ -353,11 +353,11 @@ void main()
|
|||||||
dispatch 1 1 1
|
dispatch 1 1 1
|
||||||
probe uav 2 (0) rui(0x4990)
|
probe uav 2 (0) rui(0x4990)
|
||||||
probe uav 2 (1) rui(0)
|
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 (4) rui(13)
|
||||||
probe uav 2 (5) rui(0)
|
probe uav 2 (5) rui(0)
|
||||||
probe uav 2 (6) rui(0x4a20)
|
probe uav 2 (6) rui(0x4a20)
|
||||||
probe uav 2 (7) rui(0)
|
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 (10) rui(15)
|
||||||
probe uav 2 (11) rui(0)
|
probe uav 2 (11) rui(0)
|
||||||
|
@@ -526,14 +526,14 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(7.0, 2.0)
|
probe uav 1 (0) f64(7.0, 2.0)
|
||||||
probe uav 1 (1) rgd(7.0, 2.0)
|
probe uav 1 (1) f64(7.0, 2.0)
|
||||||
probe uav 1 (2) rgd(7.0, 2.0)
|
probe uav 1 (2) f64(7.0, 2.0)
|
||||||
probe uav 1 (3) rgd(7.0, 2.0)
|
probe uav 1 (3) f64(7.0, 2.0)
|
||||||
probe uav 1 (4) rgd(7.0, 2.5)
|
probe uav 1 (4) f64(7.0, 2.5)
|
||||||
probe uav 1 (5) rgd(7.0, 2.5)
|
probe uav 1 (5) f64(7.0, 2.5)
|
||||||
probe uav 1 (6) rgd(7.0, 2.5)
|
probe uav 1 (6) f64(7.0, 2.5)
|
||||||
probe uav 1 (7) rgd(7.0, 2.5)
|
probe uav 1 (7) f64(7.0, 2.5)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -549,10 +549,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(14.0, 4.5)
|
probe uav 1 (0) f64(14.0, 4.5)
|
||||||
probe uav 1 (1) rgd(14.0, 4.5)
|
probe uav 1 (1) f64(14.0, 4.5)
|
||||||
probe uav 1 (2) rgd(14.0, 4.5)
|
probe uav 1 (2) f64(14.0, 4.5)
|
||||||
probe uav 1 (3) rgd(14.0, 4.5)
|
probe uav 1 (3) f64(14.0, 4.5)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -568,10 +568,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(150.0625, 1.5)
|
probe uav 1 (0) f64(150.0625, 1.5)
|
||||||
probe uav 1 (1) rgd(150.0625, 1.5)
|
probe uav 1 (1) f64(150.0625, 1.5)
|
||||||
probe uav 1 (2) rgd(150.0625, 1.5)
|
probe uav 1 (2) f64(150.0625, 1.5)
|
||||||
probe uav 1 (3) rgd(150.0625, 1.5)
|
probe uav 1 (3) f64(150.0625, 1.5)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -587,10 +587,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(3.5, 1.0)
|
probe uav 1 (0) f64(3.5, 1.0)
|
||||||
probe uav 1 (1) rgd(3.5, 1.0)
|
probe uav 1 (1) f64(3.5, 1.0)
|
||||||
probe uav 1 (2) rgd(3.5, 1.0)
|
probe uav 1 (2) f64(3.5, 1.0)
|
||||||
probe uav 1 (3) rgd(3.5, 1.0)
|
probe uav 1 (3) f64(3.5, 1.0)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -606,10 +606,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(3.5, 1.5)
|
probe uav 1 (0) f64(3.5, 1.5)
|
||||||
probe uav 1 (1) rgd(3.5, 1.5)
|
probe uav 1 (1) f64(3.5, 1.5)
|
||||||
probe uav 1 (2) rgd(3.5, 1.5)
|
probe uav 1 (2) f64(3.5, 1.5)
|
||||||
probe uav 1 (3) rgd(3.5, 1.5)
|
probe uav 1 (3) f64(3.5, 1.5)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -625,10 +625,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(0.0, 0.0)
|
probe uav 1 (0) f64(0.0, 0.0)
|
||||||
probe uav 1 (1) rgd(3.5, 1.0)
|
probe uav 1 (1) f64(3.5, 1.0)
|
||||||
probe uav 1 (2) rgd(7.0, 2.0)
|
probe uav 1 (2) f64(7.0, 2.0)
|
||||||
probe uav 1 (3) rgd(10.5, 3.5)
|
probe uav 1 (3) f64(10.5, 3.5)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -644,10 +644,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(1.0, 1.0)
|
probe uav 1 (0) f64(1.0, 1.0)
|
||||||
probe uav 1 (1) rgd(3.5, 1.0)
|
probe uav 1 (1) f64(3.5, 1.0)
|
||||||
probe uav 1 (2) rgd(12.25, 1.0)
|
probe uav 1 (2) f64(12.25, 1.0)
|
||||||
probe uav 1 (3) rgd(42.875, 1.5)
|
probe uav 1 (3) f64(42.875, 1.5)
|
||||||
|
|
||||||
|
|
||||||
[uav 0]
|
[uav 0]
|
||||||
@@ -673,10 +673,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(0.5, 0.25)
|
probe uav 1 (0) f64(0.5, 0.25)
|
||||||
probe uav 1 (1) rgd(0.25, 0.5)
|
probe uav 1 (1) f64(0.25, 0.5)
|
||||||
probe uav 1 (2) rgd(1.0, 0.75)
|
probe uav 1 (2) f64(1.0, 0.75)
|
||||||
probe uav 1 (3) rgd(0.75, 1.0)
|
probe uav 1 (3) f64(0.75, 1.0)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -693,7 +693,7 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
dispatch 4 1 1
|
dispatch 4 1 1
|
||||||
probe uav 1 (0) rgd(0.75, 1.0)
|
probe uav 1 (0) f64(0.75, 1.0)
|
||||||
probe uav 1 (1) rgd(0.75, 1.0)
|
probe uav 1 (1) f64(0.75, 1.0)
|
||||||
probe uav 1 (2) rgd(0.75, 1.0)
|
probe uav 1 (2) f64(0.75, 1.0)
|
||||||
probe uav 1 (3) rgd(0.75, 1.0)
|
probe uav 1 (3) f64(0.75, 1.0)
|
||||||
|
@@ -867,6 +867,21 @@ static void read_uint64(const char **line, uint64_t *u, bool is_uniform)
|
|||||||
*line = rest;
|
*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)
|
static void read_int64_t2(const char **line, struct i64vec2 *v)
|
||||||
{
|
{
|
||||||
read_int64(line, &v->x, true);
|
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);
|
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))
|
else if (match_string(line, "rgbaui", &line))
|
||||||
{
|
{
|
||||||
struct uvec4 v;
|
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)
|
todo_if(runner->is_todo) bug_if(runner->is_bug)
|
||||||
check_readback_data_uint(rb, &box, expect, 0);
|
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))
|
else if (match_string(line, "r", &line))
|
||||||
{
|
{
|
||||||
float expect;
|
float expect;
|
||||||
|
Reference in New Issue
Block a user