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>
This commit is contained in:
Stephen White 2022-03-02 14:39:52 +00:00 committed by Tint LUCI CQ
parent 628289e17d
commit ecb570ff64
6 changed files with 15 additions and 61 deletions

View File

@ -689,6 +689,12 @@ bool GeneratorImpl::EmitBuiltinCall(std::ostream& out,
// GLSL does not support abs() on unsigned arguments. However, it's a no-op. // GLSL does not support abs() on unsigned arguments. However, it's a no-op.
return EmitExpression(out, expr->args[0]); 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()) { if (builtin->IsBarrier()) {
return EmitBarrierCall(out, builtin); return EmitBarrierCall(out, builtin);
} }

View File

@ -1,9 +1,7 @@
SKIP: FAILED
#version 310 es #version 310 es
void all_353d6a() { void all_353d6a() {
bool res = all(false); bool res = false;
} }
vec4 vertex_main() { vec4 vertex_main() {
@ -18,19 +16,11 @@ void main() {
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
return; 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 #version 310 es
precision mediump float; precision mediump float;
void all_353d6a() { void all_353d6a() {
bool res = all(false); bool res = false;
} }
void fragment_main() { void fragment_main() {
@ -41,18 +31,10 @@ void main() {
fragment_main(); fragment_main();
return; 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 #version 310 es
void all_353d6a() { void all_353d6a() {
bool res = all(false); bool res = false;
} }
void compute_main() { void compute_main() {
@ -64,11 +46,3 @@ void main() {
compute_main(); compute_main();
return; 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.

View File

@ -1,9 +1,7 @@
SKIP: FAILED
#version 310 es #version 310 es
void any_2ab91a() { void any_2ab91a() {
bool res = any(false); bool res = false;
} }
vec4 vertex_main() { vec4 vertex_main() {
@ -18,19 +16,11 @@ void main() {
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
return; 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 #version 310 es
precision mediump float; precision mediump float;
void any_2ab91a() { void any_2ab91a() {
bool res = any(false); bool res = false;
} }
void fragment_main() { void fragment_main() {
@ -41,18 +31,10 @@ void main() {
fragment_main(); fragment_main();
return; 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 #version 310 es
void any_2ab91a() { void any_2ab91a() {
bool res = any(false); bool res = false;
} }
void compute_main() { void compute_main() {
@ -64,11 +46,3 @@ void main() {
compute_main(); compute_main();
return; 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.

View File

@ -1,6 +1,6 @@
SKIP: FAILED 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.
******************************************************************** ********************************************************************

View File

@ -1,6 +1,6 @@
SKIP: FAILED 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.
******************************************************************** ********************************************************************

View File

@ -1,6 +1,6 @@
SKIP: FAILED 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.
******************************************************************** ********************************************************************