mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Introduce the "u64" 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
@@ -368,14 +368,14 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x1300000002, 21)
|
probe uav 1 (0) u64(0x1300000002, 21)
|
||||||
probe uav 1 (1) rgui64(0x1300000002, 21)
|
probe uav 1 (1) u64(0x1300000002, 21)
|
||||||
probe uav 1 (2) rgui64(0x1300000002, 21)
|
probe uav 1 (2) u64(0x1300000002, 21)
|
||||||
probe uav 1 (3) rgui64(0x1300000002, 21)
|
probe uav 1 (3) u64(0x1300000002, 21)
|
||||||
probe uav 1 (4) rgui64(0x1700000006, 10)
|
probe uav 1 (4) u64(0x1700000006, 10)
|
||||||
probe uav 1 (5) rgui64(0x1700000006, 10)
|
probe uav 1 (5) u64(0x1700000006, 10)
|
||||||
probe uav 1 (6) rgui64(0x1700000006, 10)
|
probe uav 1 (6) u64(0x1700000006, 10)
|
||||||
probe uav 1 (7) rgui64(0x1700000006, 10)
|
probe uav 1 (7) u64(0x1700000006, 10)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -390,10 +390,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x2a00000008, 31)
|
probe uav 1 (0) u64(0x2a00000008, 31)
|
||||||
probe uav 1 (1) rgui64(0x2a00000008, 31)
|
probe uav 1 (1) u64(0x2a00000008, 31)
|
||||||
probe uav 1 (2) rgui64(0x2a00000008, 31)
|
probe uav 1 (2) u64(0x2a00000008, 31)
|
||||||
probe uav 1 (3) rgui64(0x2a00000008, 31)
|
probe uav 1 (3) u64(0x2a00000008, 31)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -408,10 +408,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xe400000008, 0x780)
|
probe uav 1 (0) u64(0xe400000008, 0x780)
|
||||||
probe uav 1 (1) rgui64(0xe400000008, 0x780)
|
probe uav 1 (1) u64(0xe400000008, 0x780)
|
||||||
probe uav 1 (2) rgui64(0xe400000008, 0x780)
|
probe uav 1 (2) u64(0xe400000008, 0x780)
|
||||||
probe uav 1 (3) rgui64(0xe400000008, 0x780)
|
probe uav 1 (3) u64(0xe400000008, 0x780)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -426,10 +426,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x800000001, 4)
|
probe uav 1 (0) u64(0x800000001, 4)
|
||||||
probe uav 1 (1) rgui64(0x800000001, 4)
|
probe uav 1 (1) u64(0x800000001, 4)
|
||||||
probe uav 1 (2) rgui64(0x800000001, 4)
|
probe uav 1 (2) u64(0x800000001, 4)
|
||||||
probe uav 1 (3) rgui64(0x800000001, 4)
|
probe uav 1 (3) u64(0x800000001, 4)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -444,10 +444,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xf00000002, 16)
|
probe uav 1 (0) u64(0xf00000002, 16)
|
||||||
probe uav 1 (1) rgui64(0xf00000002, 16)
|
probe uav 1 (1) u64(0xf00000002, 16)
|
||||||
probe uav 1 (2) rgui64(0xf00000002, 16)
|
probe uav 1 (2) u64(0xf00000002, 16)
|
||||||
probe uav 1 (3) rgui64(0xf00000002, 16)
|
probe uav 1 (3) u64(0xf00000002, 16)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -462,10 +462,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0, 0)
|
probe uav 1 (0) u64(0, 0)
|
||||||
probe uav 1 (1) rgui64( 0x800000001, 16)
|
probe uav 1 (1) u64( 0x800000001, 16)
|
||||||
probe uav 1 (2) rgui64(0x1300000002, 21)
|
probe uav 1 (2) u64(0x1300000002, 21)
|
||||||
probe uav 1 (3) rgui64(0x2200000004, 25)
|
probe uav 1 (3) u64(0x2200000004, 25)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -480,10 +480,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(1, 1)
|
probe uav 1 (0) u64(1, 1)
|
||||||
probe uav 1 (1) rgui64( 0x800000001, 16)
|
probe uav 1 (1) u64( 0x800000001, 16)
|
||||||
probe uav 1 (2) rgui64(0x1300000001, 80)
|
probe uav 1 (2) u64(0x1300000001, 80)
|
||||||
probe uav 1 (3) rgui64(0x3500000002, 320)
|
probe uav 1 (3) u64(0x3500000002, 320)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -498,10 +498,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x800000000, 0)
|
probe uav 1 (0) u64(0x800000000, 0)
|
||||||
probe uav 1 (1) rgui64(0x800000000, 0)
|
probe uav 1 (1) u64(0x800000000, 0)
|
||||||
probe uav 1 (2) rgui64(0x800000000, 0)
|
probe uav 1 (2) u64(0x800000000, 0)
|
||||||
probe uav 1 (3) rgui64(0x800000000, 0)
|
probe uav 1 (3) u64(0x800000000, 0)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -516,10 +516,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xf00000007, 0x17)
|
probe uav 1 (0) u64(0xf00000007, 0x17)
|
||||||
probe uav 1 (1) rgui64(0xf00000007, 0x17)
|
probe uav 1 (1) u64(0xf00000007, 0x17)
|
||||||
probe uav 1 (2) rgui64(0xf00000007, 0x17)
|
probe uav 1 (2) u64(0xf00000007, 0x17)
|
||||||
probe uav 1 (3) rgui64(0xf00000007, 0x17)
|
probe uav 1 (3) u64(0xf00000007, 0x17)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -534,10 +534,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x400000006, 0x17)
|
probe uav 1 (0) u64(0x400000006, 0x17)
|
||||||
probe uav 1 (1) rgui64(0x400000006, 0x17)
|
probe uav 1 (1) u64(0x400000006, 0x17)
|
||||||
probe uav 1 (2) rgui64(0x400000006, 0x17)
|
probe uav 1 (2) u64(0x400000006, 0x17)
|
||||||
probe uav 1 (3) rgui64(0x400000006, 0x17)
|
probe uav 1 (3) u64(0x400000006, 0x17)
|
||||||
|
|
||||||
|
|
||||||
[uav 0]
|
[uav 0]
|
||||||
@@ -563,10 +563,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0x600000005, 0x800000007)
|
probe uav 1 (0) u64(0x600000005, 0x800000007)
|
||||||
probe uav 1 (1) rgui64(0x200000001, 0x400000003)
|
probe uav 1 (1) u64(0x200000001, 0x400000003)
|
||||||
probe uav 1 (2) rgui64(0xe0000000d, 0x100000000f)
|
probe uav 1 (2) u64(0xe0000000d, 0x100000000f)
|
||||||
probe uav 1 (3) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (3) u64(0xa00000009, 0xc0000000b)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -583,10 +583,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (0) u64(0xa00000009, 0xc0000000b)
|
||||||
probe uav 1 (1) rgui64(0xe0000000d, 0x100000000f)
|
probe uav 1 (1) u64(0xe0000000d, 0x100000000f)
|
||||||
probe uav 1 (2) rgui64(0x200000001, 0x400000003)
|
probe uav 1 (2) u64(0x200000001, 0x400000003)
|
||||||
probe uav 1 (3) rgui64(0x600000005, 0x800000007)
|
probe uav 1 (3) u64(0x600000005, 0x800000007)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -603,10 +603,10 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xe0000000d, 0x100000000f)
|
probe uav 1 (0) u64(0xe0000000d, 0x100000000f)
|
||||||
probe uav 1 (1) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (1) u64(0xa00000009, 0xc0000000b)
|
||||||
probe uav 1 (2) rgui64(0x600000005, 0x800000007)
|
probe uav 1 (2) u64(0x600000005, 0x800000007)
|
||||||
probe uav 1 (3) rgui64(0x200000001, 0x400000003)
|
probe uav 1 (3) u64(0x200000001, 0x400000003)
|
||||||
|
|
||||||
|
|
||||||
[compute shader]
|
[compute shader]
|
||||||
@@ -623,7 +623,7 @@ void main(uint id : SV_GroupIndex)
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
bug(mvk) dispatch 4 1 1
|
bug(mvk) dispatch 4 1 1
|
||||||
probe uav 1 (0) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (0) u64(0xa00000009, 0xc0000000b)
|
||||||
probe uav 1 (1) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (1) u64(0xa00000009, 0xc0000000b)
|
||||||
probe uav 1 (2) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (2) u64(0xa00000009, 0xc0000000b)
|
||||||
probe uav 1 (3) rgui64(0xa00000009, 0xc0000000b)
|
probe uav 1 (3) u64(0xa00000009, 0xc0000000b)
|
||||||
|
@@ -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);
|
fatal_error("Malformed int64 constant '%s'.\n", *line);
|
||||||
|
|
||||||
*i = val;
|
*i = val;
|
||||||
*line = rest + (!is_uniform && *rest == ',');
|
*line = rest;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void read_uint64(const char **line, uint64_t *u, bool is_uniform)
|
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);
|
fatal_error("Malformed uint64 constant '%s'.\n", *line);
|
||||||
|
|
||||||
*u = val;
|
*u = val;
|
||||||
*line = rest + (!is_uniform && *rest == ',');
|
*line = rest;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void read_int64_t2(const char **line, struct i64vec2 *v)
|
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_readback *rb;
|
||||||
struct resource *resource;
|
struct resource *resource;
|
||||||
bool is_signed = false;
|
bool is_signed = false;
|
||||||
|
D3D12_BOX box;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
int len;
|
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);
|
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;
|
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)))
|
else if (match_string(line, "rui", &line) || (is_signed = match_string(line, "ri", &line)))
|
||||||
{
|
{
|
||||||
unsigned int expect;
|
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 != '(')
|
if (*line != '(')
|
||||||
fatal_error("Malformed probe arguments '%s'.\n", line);
|
fatal_error("Malformed probe arguments '%s'.\n", line);
|
||||||
++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)
|
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, "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))
|
else if (match_string(line, "rgd", &line))
|
||||||
{
|
{
|
||||||
struct dvec2 v;
|
struct dvec2 v;
|
||||||
|
Reference in New Issue
Block a user