Reland "HLSL: force FXC to never unroll loops"

Now that I've landed this change to Dawn to disable FXC optimizations:
https://dawn-review.googlesource.com/c/dawn/+/70700,, we can reland this
change. The Tint-into-Dawn roll was failing because FXC would miscompile
certain loops into infinite loops when not unrolled.

Also reland
test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.hlsl

Bug: tint:1112
Bug: dawn:1203
Change-Id: I641d68864b833e0fbe3b117d397b89ae96482536
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/71000
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
Antonio Maiorano
2021-11-25 18:44:50 +00:00
committed by Tint LUCI CQ
parent 91785d277b
commit e2528e9297
50 changed files with 118 additions and 111 deletions

View File

@@ -21,7 +21,7 @@ static bool2 v2b = bool2(false, false);
void foo() {
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
set_float2(v2f, i, 1.0f);
set_int3(v3i, i, 1);
set_uint4(v4u, i, 1u);
@@ -33,7 +33,7 @@ void foo() {
[numthreads(1, 1, 1)]
void main() {
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -30,7 +30,7 @@ void foo() {
[numthreads(1, 1, 1)]
void main() {
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -61,7 +61,7 @@ void main() {
bool3 v3b = bool3(false, false, false);
bool4 v4b = bool4(false, false, false, false);
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
set_float2(v2f, i, 1.0f);
set_float3(v3f, i, 1.0f);
set_float4(v4f, i, 1.0f);

View File

@@ -25,7 +25,7 @@ void main() {
bool2 v2b = bool2(false, false);
bool2 v2b_2 = bool2(false, false);
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
set_float2(v2f, i, 1.0f);
set_int3(v3i, i, 1);
set_uint4(v4u, i, 1u);

View File

@@ -61,7 +61,7 @@ void main() {
bool3 v3b = bool3(false, false, false);
bool4 v4b = bool4(false, false, false, false);
{
for(int i = 0; (i < 2); i = (i + 1)) {
[loop] for(int i = 0; (i < 2); i = (i + 1)) {
set_float2(v2f, i, 1.0f);
set_int2(v2i, i, 1);
set_uint2(v2u, i, 1u);