diff --git a/tests/hlsl/wave-ops-uint.shader_test b/tests/hlsl/wave-ops-uint.shader_test index e63ac9f8c..86c4e951a 100644 --- a/tests/hlsl/wave-ops-uint.shader_test +++ b/tests/hlsl/wave-ops-uint.shader_test @@ -368,14 +368,14 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x1300000002, 21) -probe uav 1 (1) rgui64(0x1300000002, 21) -probe uav 1 (2) rgui64(0x1300000002, 21) -probe uav 1 (3) rgui64(0x1300000002, 21) -probe uav 1 (4) rgui64(0x1700000006, 10) -probe uav 1 (5) rgui64(0x1700000006, 10) -probe uav 1 (6) rgui64(0x1700000006, 10) -probe uav 1 (7) rgui64(0x1700000006, 10) +probe uav 1 (0) u64(0x1300000002, 21) +probe uav 1 (1) u64(0x1300000002, 21) +probe uav 1 (2) u64(0x1300000002, 21) +probe uav 1 (3) u64(0x1300000002, 21) +probe uav 1 (4) u64(0x1700000006, 10) +probe uav 1 (5) u64(0x1700000006, 10) +probe uav 1 (6) u64(0x1700000006, 10) +probe uav 1 (7) u64(0x1700000006, 10) [compute shader] @@ -390,10 +390,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x2a00000008, 31) -probe uav 1 (1) rgui64(0x2a00000008, 31) -probe uav 1 (2) rgui64(0x2a00000008, 31) -probe uav 1 (3) rgui64(0x2a00000008, 31) +probe uav 1 (0) u64(0x2a00000008, 31) +probe uav 1 (1) u64(0x2a00000008, 31) +probe uav 1 (2) u64(0x2a00000008, 31) +probe uav 1 (3) u64(0x2a00000008, 31) [compute shader] @@ -408,10 +408,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xe400000008, 0x780) -probe uav 1 (1) rgui64(0xe400000008, 0x780) -probe uav 1 (2) rgui64(0xe400000008, 0x780) -probe uav 1 (3) rgui64(0xe400000008, 0x780) +probe uav 1 (0) u64(0xe400000008, 0x780) +probe uav 1 (1) u64(0xe400000008, 0x780) +probe uav 1 (2) u64(0xe400000008, 0x780) +probe uav 1 (3) u64(0xe400000008, 0x780) [compute shader] @@ -426,10 +426,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x800000001, 4) -probe uav 1 (1) rgui64(0x800000001, 4) -probe uav 1 (2) rgui64(0x800000001, 4) -probe uav 1 (3) rgui64(0x800000001, 4) +probe uav 1 (0) u64(0x800000001, 4) +probe uav 1 (1) u64(0x800000001, 4) +probe uav 1 (2) u64(0x800000001, 4) +probe uav 1 (3) u64(0x800000001, 4) [compute shader] @@ -444,10 +444,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xf00000002, 16) -probe uav 1 (1) rgui64(0xf00000002, 16) -probe uav 1 (2) rgui64(0xf00000002, 16) -probe uav 1 (3) rgui64(0xf00000002, 16) +probe uav 1 (0) u64(0xf00000002, 16) +probe uav 1 (1) u64(0xf00000002, 16) +probe uav 1 (2) u64(0xf00000002, 16) +probe uav 1 (3) u64(0xf00000002, 16) [compute shader] @@ -462,10 +462,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0, 0) -probe uav 1 (1) rgui64( 0x800000001, 16) -probe uav 1 (2) rgui64(0x1300000002, 21) -probe uav 1 (3) rgui64(0x2200000004, 25) +probe uav 1 (0) u64(0, 0) +probe uav 1 (1) u64( 0x800000001, 16) +probe uav 1 (2) u64(0x1300000002, 21) +probe uav 1 (3) u64(0x2200000004, 25) [compute shader] @@ -480,10 +480,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(1, 1) -probe uav 1 (1) rgui64( 0x800000001, 16) -probe uav 1 (2) rgui64(0x1300000001, 80) -probe uav 1 (3) rgui64(0x3500000002, 320) +probe uav 1 (0) u64(1, 1) +probe uav 1 (1) u64( 0x800000001, 16) +probe uav 1 (2) u64(0x1300000001, 80) +probe uav 1 (3) u64(0x3500000002, 320) [compute shader] @@ -498,10 +498,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x800000000, 0) -probe uav 1 (1) rgui64(0x800000000, 0) -probe uav 1 (2) rgui64(0x800000000, 0) -probe uav 1 (3) rgui64(0x800000000, 0) +probe uav 1 (0) u64(0x800000000, 0) +probe uav 1 (1) u64(0x800000000, 0) +probe uav 1 (2) u64(0x800000000, 0) +probe uav 1 (3) u64(0x800000000, 0) [compute shader] @@ -516,10 +516,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xf00000007, 0x17) -probe uav 1 (1) rgui64(0xf00000007, 0x17) -probe uav 1 (2) rgui64(0xf00000007, 0x17) -probe uav 1 (3) rgui64(0xf00000007, 0x17) +probe uav 1 (0) u64(0xf00000007, 0x17) +probe uav 1 (1) u64(0xf00000007, 0x17) +probe uav 1 (2) u64(0xf00000007, 0x17) +probe uav 1 (3) u64(0xf00000007, 0x17) [compute shader] @@ -534,10 +534,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x400000006, 0x17) -probe uav 1 (1) rgui64(0x400000006, 0x17) -probe uav 1 (2) rgui64(0x400000006, 0x17) -probe uav 1 (3) rgui64(0x400000006, 0x17) +probe uav 1 (0) u64(0x400000006, 0x17) +probe uav 1 (1) u64(0x400000006, 0x17) +probe uav 1 (2) u64(0x400000006, 0x17) +probe uav 1 (3) u64(0x400000006, 0x17) [uav 0] @@ -563,10 +563,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0x600000005, 0x800000007) -probe uav 1 (1) rgui64(0x200000001, 0x400000003) -probe uav 1 (2) rgui64(0xe0000000d, 0x100000000f) -probe uav 1 (3) rgui64(0xa00000009, 0xc0000000b) +probe uav 1 (0) u64(0x600000005, 0x800000007) +probe uav 1 (1) u64(0x200000001, 0x400000003) +probe uav 1 (2) u64(0xe0000000d, 0x100000000f) +probe uav 1 (3) u64(0xa00000009, 0xc0000000b) [compute shader] @@ -583,10 +583,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xa00000009, 0xc0000000b) -probe uav 1 (1) rgui64(0xe0000000d, 0x100000000f) -probe uav 1 (2) rgui64(0x200000001, 0x400000003) -probe uav 1 (3) rgui64(0x600000005, 0x800000007) +probe uav 1 (0) u64(0xa00000009, 0xc0000000b) +probe uav 1 (1) u64(0xe0000000d, 0x100000000f) +probe uav 1 (2) u64(0x200000001, 0x400000003) +probe uav 1 (3) u64(0x600000005, 0x800000007) [compute shader] @@ -603,10 +603,10 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xe0000000d, 0x100000000f) -probe uav 1 (1) rgui64(0xa00000009, 0xc0000000b) -probe uav 1 (2) rgui64(0x600000005, 0x800000007) -probe uav 1 (3) rgui64(0x200000001, 0x400000003) +probe uav 1 (0) u64(0xe0000000d, 0x100000000f) +probe uav 1 (1) u64(0xa00000009, 0xc0000000b) +probe uav 1 (2) u64(0x600000005, 0x800000007) +probe uav 1 (3) u64(0x200000001, 0x400000003) [compute shader] @@ -623,7 +623,7 @@ void main(uint id : SV_GroupIndex) [test] bug(mvk) dispatch 4 1 1 -probe uav 1 (0) rgui64(0xa00000009, 0xc0000000b) -probe uav 1 (1) rgui64(0xa00000009, 0xc0000000b) -probe uav 1 (2) rgui64(0xa00000009, 0xc0000000b) -probe uav 1 (3) rgui64(0xa00000009, 0xc0000000b) +probe uav 1 (0) u64(0xa00000009, 0xc0000000b) +probe uav 1 (1) u64(0xa00000009, 0xc0000000b) +probe uav 1 (2) u64(0xa00000009, 0xc0000000b) +probe uav 1 (3) u64(0xa00000009, 0xc0000000b) diff --git a/tests/shader_runner.c b/tests/shader_runner.c index 6004ac96d..dd445167c 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -849,7 +849,7 @@ static void read_int64(const char **line, int64_t *i, bool is_uniform) fatal_error("Malformed int64 constant '%s'.\n", *line); *i = val; - *line = rest + (!is_uniform && *rest == ','); + *line = rest; } static void read_uint64(const char **line, uint64_t *u, bool is_uniform) @@ -864,7 +864,7 @@ static void read_uint64(const char **line, uint64_t *u, bool is_uniform) fatal_error("Malformed uint64 constant '%s'.\n", *line); *u = val; - *line = rest + (!is_uniform && *rest == ','); + *line = rest; } static void read_int64_t2(const char **line, struct i64vec2 *v) @@ -1142,6 +1142,7 @@ static void parse_test_directive(struct shader_runner *runner, const char *line) struct resource_readback *rb; struct resource *resource; bool is_signed = false; + D3D12_BOX box; RECT rect; int len; @@ -1204,7 +1205,47 @@ static void parse_test_directive(struct shader_runner *runner, const char *line) rb = runner->ops->get_resource_readback(runner, resource, array_layer * resource->desc.level_count); - if (match_string(line, "rgbaui", &line)) + box.left = rect.left; + box.right = rect.right; + box.top = rect.top; + box.bottom = rect.bottom; + box.front = 0; + box.back = 1; + + if (match_string(line, "u64", &line) || (is_signed = match_string(line, "i64", &line))) + { + struct u64vec2 v; + + if (*line != '(') + fatal_error("Malformed probe arguments '%s'.\n", line); + ++line; + + if (is_signed) + read_int64(&line, (int64_t *)&v.x, false); + else + read_uint64(&line, &v.x, false); + + while (isspace(*line)) + ++line; + if (*line == ',') + { + ++line; + if (is_signed) + read_int64(&line, (int64_t *)&v.y, false); + else + read_uint64(&line, &v.y, false); + line = close_parentheses(line); + todo_if(runner->is_todo) bug_if(runner->is_bug) + check_readback_data_u64vec2(rb, &rect, &v); + } + else + { + line = close_parentheses(line); + todo_if(runner->is_todo) bug_if(runner->is_bug) + check_readback_data_uint64(rb, &box, v.x, 0); + } + } + else if (match_string(line, "rgbaui", &line)) { struct uvec4 v; @@ -1255,14 +1296,7 @@ static void parse_test_directive(struct shader_runner *runner, const char *line) else if (match_string(line, "rui", &line) || (is_signed = match_string(line, "ri", &line))) { unsigned int expect; - D3D12_BOX box; - box.left = rect.left; - box.right = rect.right; - box.top = rect.top; - box.bottom = rect.bottom; - box.front = 0; - box.back = 1; if (*line != '(') fatal_error("Malformed probe arguments '%s'.\n", line); ++line; @@ -1274,40 +1308,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, "rgui64", &line)) - { - struct u64vec2 v; - - if (*line != '(') - fatal_error("Malformed probe arguments '%s'.\n", line); - ++line; - read_uint64(&line, &v.x, false); - read_uint64(&line, &v.y, false); - line = close_parentheses(line); - todo_if(runner->is_todo) check_readback_data_u64vec2(rb, &rect, &v); - } - else if (match_string(line, "rui64", &line) || (is_signed = match_string(line, "i64", &line))) - { - uint64_t expect; - D3D12_BOX box; - - box.left = rect.left; - box.right = rect.right; - box.top = rect.top; - box.bottom = rect.bottom; - box.front = 0; - box.back = 1; - if (*line != '(') - fatal_error("Malformed probe arguments '%s'.\n", line); - ++line; - if (is_signed) - read_int64(&line, (int64_t *)&expect, false); - else - read_uint64(&line, &expect, false); - line = close_parentheses(line); - todo_if(runner->is_todo) bug_if(runner->is_bug) - check_readback_data_uint64(rb, &box, expect, 0); - } else if (match_string(line, "rgd", &line)) { struct dvec2 v;