GLSL: support any() and all() on scalars.
It's a no-op.
Bug: tint:1462
Change-Id: Ic79f33682097be075eb2e99b714d1e65bed10d4d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/82365
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 4ce15d5..4adbbc7 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -689,6 +689,12 @@
// GLSL does not support abs() on unsigned arguments. However, it's a no-op.
return EmitExpression(out, expr->args[0]);
}
+ if ((builtin->Type() == sem::BuiltinType::kAny ||
+ builtin->Type() == sem::BuiltinType::kAll) &&
+ TypeOf(expr->args[0])->UnwrapRef()->is_scalar()) {
+ // GLSL does not support any() or all() on scalar arguments. It's a no-op.
+ return EmitExpression(out, expr->args[0]);
+ }
if (builtin->IsBarrier()) {
return EmitBarrierCall(out, builtin);
}
diff --git a/test/tint/builtins/gen/all/353d6a.wgsl.expected.glsl b/test/tint/builtins/gen/all/353d6a.wgsl.expected.glsl
index 1208198..b66c3f5 100644
--- a/test/tint/builtins/gen/all/353d6a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/all/353d6a.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
#version 310 es
void all_353d6a() {
- bool res = all(false);
+ bool res = false;
}
vec4 vertex_main() {
@@ -18,19 +16,11 @@
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
return;
}
-Error parsing GLSL shader:
-ERROR: 0:4: 'all' : no matching overloaded function found
-ERROR: 0:4: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:4: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
precision mediump float;
void all_353d6a() {
- bool res = all(false);
+ bool res = false;
}
void fragment_main() {
@@ -41,18 +31,10 @@
fragment_main();
return;
}
-Error parsing GLSL shader:
-ERROR: 0:5: 'all' : no matching overloaded function found
-ERROR: 0:5: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
void all_353d6a() {
- bool res = all(false);
+ bool res = false;
}
void compute_main() {
@@ -64,11 +46,3 @@
compute_main();
return;
}
-Error parsing GLSL shader:
-ERROR: 0:4: 'all' : no matching overloaded function found
-ERROR: 0:4: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:4: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/any/2ab91a.wgsl.expected.glsl b/test/tint/builtins/gen/any/2ab91a.wgsl.expected.glsl
index eef474e..bbde395 100644
--- a/test/tint/builtins/gen/any/2ab91a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/any/2ab91a.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
#version 310 es
void any_2ab91a() {
- bool res = any(false);
+ bool res = false;
}
vec4 vertex_main() {
@@ -18,19 +16,11 @@
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
return;
}
-Error parsing GLSL shader:
-ERROR: 0:4: 'any' : no matching overloaded function found
-ERROR: 0:4: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:4: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
precision mediump float;
void any_2ab91a() {
- bool res = any(false);
+ bool res = false;
}
void fragment_main() {
@@ -41,18 +31,10 @@
fragment_main();
return;
}
-Error parsing GLSL shader:
-ERROR: 0:5: 'any' : no matching overloaded function found
-ERROR: 0:5: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
void any_2ab91a() {
- bool res = any(false);
+ bool res = false;
}
void compute_main() {
@@ -64,11 +46,3 @@
compute_main();
return;
}
-Error parsing GLSL shader:
-ERROR: 0:4: 'any' : no matching overloaded function found
-ERROR: 0:4: '=' : cannot convert from ' const float' to ' temp bool'
-ERROR: 0:4: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
index 5104880..4b0b145 100644
--- a/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2577 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2582 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************
diff --git a/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
index 5104880..4b0b145 100644
--- a/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2577 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2582 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************
diff --git a/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
index 5104880..4b0b145 100644
--- a/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2577 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2582 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************