tint/test-runner: Split expectations for FXC and DXC

Change tint's `--fxc` flag to take the path of the FXC compiler DLL.
Have tint attempt to validate with both FXC and DXC if `--validate` is
passed.

Fix the 'dirsWithNoPassExpectations' logic which looks like it got
broken with the tint -> dawn merge. It also incorrectly applied
filepath.FromSlash() on windows.

Change-Id: I0f46aa5c21bc48a2abc48402c41f846aff4a8633
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/96800
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
This commit is contained in:
Ben Clayton
2022-07-22 17:43:27 +00:00
committed by Dawn LUCI CQ
parent 0778d9a48f
commit 7d34de88f1
5122 changed files with 73624 additions and 206 deletions

View File

@@ -0,0 +1,26 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
[loop] for(int i = 0; (i < 4); i = (i + 1)) {
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x] = v;
s1.a1 = tint_symbol_1;
}
}
}
return;
}

View File

@@ -0,0 +1,29 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
int i = 0;
[loop] while (true) {
if (!((i < 4))) { break; }
i = (i + 1);
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x] = v;
s1.a1 = tint_symbol_1;
}
}
}
return;
}

View File

@@ -0,0 +1,27 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
int i = 0;
{
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x] = v;
s1.a1 = tint_symbol_1;
}
[loop] for(; (i < 4); i = (i + 1)) {
}
}
return;
}

View File

@@ -0,0 +1,36 @@
struct InnerS {
int v;
};
struct S1 {
InnerS a2[8];
};
struct OuterS {
S1 a1[8];
};
static uint nextIndex = 0u;
uint getNextIndex() {
nextIndex = (nextIndex + 1u);
return nextIndex;
}
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s = (OuterS)0;
{
S1 tint_symbol_1[8] = s.a1;
const uint tint_symbol_4 = getNextIndex();
const uint tint_symbol_2_save = tint_symbol_4;
InnerS tint_symbol_3[8] = tint_symbol_1[tint_symbol_2_save].a2;
tint_symbol_3[uniforms[0].y] = v;
tint_symbol_1[tint_symbol_2_save].a2 = tint_symbol_3;
s.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,22 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x] = v;
s1.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,22 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8][8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
InnerS tint_symbol_1[8][8] = s1.a1;
tint_symbol_1[uniforms[0].x][uniforms[0].y] = v;
s1.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,25 @@
struct InnerS {
int v;
};
struct S1 {
InnerS s2;
};
struct OuterS {
S1 a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
S1 tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x].s2 = v;
s1.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,28 @@
struct InnerS {
int v;
};
struct S1 {
InnerS a2[8];
};
struct OuterS {
S1 a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s = (OuterS)0;
{
S1 tint_symbol_1[8] = s.a1;
const uint tint_symbol_2_save = uniforms[0].x;
InnerS tint_symbol_3[8] = tint_symbol_1[tint_symbol_2_save].a2;
tint_symbol_3[uniforms[0].y] = v;
tint_symbol_1[tint_symbol_2_save].a2 = tint_symbol_3;
s.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,19 @@
struct InnerS {
int v;
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
RWByteAddressBuffer s1 : register(u0, space0);
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, InnerS value) {
buffer.Store((offset + 0u), asuint(value.v));
}
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
tint_symbol_1(s1, (4u * uniforms[0].x), v);
return;
}

View File

@@ -0,0 +1,19 @@
struct InnerS {
int v;
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
RWByteAddressBuffer s : register(u0, space0);
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, InnerS value) {
buffer.Store((offset + 0u), asuint(value.v));
}
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
tint_symbol_1(s, ((32u * uniforms[0].x) + (4u * uniforms[0].y)), v);
return;
}

View File

@@ -0,0 +1,33 @@
void set_vector_float2x4(inout float2x4 mat, int col, float4 val) {
switch (col) {
case 0: mat[0] = val; break;
case 1: mat[1] = val; break;
}
}
void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
switch (col) {
case 0:
mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
break;
case 1:
mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
break;
}
}
struct OuterS {
float2x4 m1;
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
OuterS s1 = (OuterS)0;
set_vector_float2x4(s1.m1, uniforms[0].x, (1.0f).xxxx);
set_scalar_float2x4(s1.m1, uniforms[0].x, uniforms[0].x, 1.0f);
return;
}

View File

@@ -0,0 +1,28 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
InnerS a2[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[uniforms[0].x] = v;
s1.a1 = tint_symbol_1;
}
{
InnerS tint_symbol_3[8] = s1.a2;
tint_symbol_3[uniforms[0].x] = v;
s1.a2 = tint_symbol_3;
}
return;
}

View File

@@ -0,0 +1,25 @@
struct InnerS {
int v;
};
struct S1 {
InnerS a[8];
};
struct OuterS {
S1 s2;
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
{
InnerS tint_symbol_1[8] = s1.s2.a;
tint_symbol_1[uniforms[0].x] = v;
s1.s2.a = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,18 @@
void set_float3(inout float3 vec, int idx, float val) {
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
}
struct OuterS {
float3 v1;
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
OuterS s1 = (OuterS)0;
set_float3(s1.v1, uniforms[0].x, 1.0f);
return;
}

View File

@@ -0,0 +1,25 @@
void set_float3(inout float3 vec, int idx, float val) {
vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec;
}
struct OuterS {
uint a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
uint f(uint i) {
return (i + 1u);
}
[numthreads(1, 1, 1)]
void main() {
OuterS s1 = (OuterS)0;
float3 v = float3(0.0f, 0.0f, 0.0f);
set_float3(v, s1.a1[uniforms[0].x], 1.0f);
const uint tint_symbol = f(s1.a1[uniforms[0].x]);
set_float3(v, tint_symbol, 1.0f);
return;
}

View File

@@ -0,0 +1,23 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
[numthreads(1, 1, 1)]
void main() {
InnerS v = (InnerS)0;
OuterS s1 = (OuterS)0;
const uint p_save = uniforms[0].x;
{
InnerS tint_symbol_1[8] = s1.a1;
tint_symbol_1[p_save] = v;
s1.a1 = tint_symbol_1;
}
return;
}

View File

@@ -0,0 +1,26 @@
struct InnerS {
int v;
};
struct OuterS {
InnerS a1[8];
};
cbuffer cbuffer_uniforms : register(b4, space1) {
uint4 uniforms[1];
};
void f(inout OuterS p) {
InnerS v = (InnerS)0;
{
InnerS tint_symbol_1[8] = p.a1;
tint_symbol_1[uniforms[0].x] = v;
p.a1 = tint_symbol_1;
}
}
[numthreads(1, 1, 1)]
void main() {
OuterS s1 = (OuterS)0;
f(s1);
return;
}

View File

@@ -0,0 +1,6 @@
RWByteAddressBuffer s : register(u0, space0);
[numthreads(1, 1, 1)]
void main() {
return;
}

View File

@@ -0,0 +1,9 @@
int f(int a, int b, int c) {
return ((a * b) + c);
}
[numthreads(1, 1, 1)]
void main() {
f(1, 2, 3);
return;
}

View File

@@ -0,0 +1,12 @@
int f(int a, int b, int c) {
return ((a * b) + c);
}
[numthreads(1, 1, 1)]
void main() {
const int tint_symbol = f(1, 2, 3);
const int tint_symbol_1 = f(4, 5, 6);
const int tint_symbol_2 = f(8, 9, 10);
const int tint_symbol_3 = f(7, tint_symbol_2, 11);
return;
}

View File

@@ -0,0 +1,6 @@
RWByteAddressBuffer s : register(u0, space0);
[numthreads(1, 1, 1)]
void main() {
return;
}

View File

@@ -0,0 +1,6 @@
RWByteAddressBuffer s : register(u0, space0);
[numthreads(1, 1, 1)]
void main() {
return;
}

View File

@@ -0,0 +1,8 @@
cbuffer cbuffer_u : register(b0, space0) {
uint4 u[1];
};
[numthreads(1, 1, 1)]
void main() {
return;
}