GLSL: fix vector relational ops.

In GLSL, relational operators are only valid for scalar operands. For
vector operands, lessThan, greaterThan, etc must be used.

Bug: tint:1303

Change-Id: Ia800f89111630c756dc1b30ef0c6858fb520fb16
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/69561
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
Stephen White
2021-11-16 16:16:56 +00:00
committed by Tint LUCI CQ
parent 90eb5aa292
commit b9170c65fc
6 changed files with 65 additions and 16 deletions

View File

@@ -1,5 +1,3 @@
SKIP: FAILED
#version 310 es
precision mediump float;
@@ -87,7 +85,7 @@ struct tint_symbol_6 {
vec4 fs_main_inner(vec2 texcoord) {
vec2 clampedTexcoord = clamp(texcoord, vec2(0.0f, 0.0f), vec2(1.0f, 1.0f));
if (!(all((clampedTexcoord == texcoord)))) {
if (!(all(equal(clampedTexcoord, texcoord)))) {
discard;
}
vec4 srcColor = texture(myTexture, texcoord);
@@ -111,10 +109,3 @@ void main() {
}
Error parsing GLSL shader:
ERROR: 0:28: 'all' : no matching overloaded function found
ERROR: 0:28: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.

View File

@@ -46,7 +46,7 @@ void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
if ((tint_tmp)) {
bool tint_tmp_3 = success;
if (tint_tmp_3) {
tint_tmp_3 = all((texelFetch(dst, ivec3(ivec2(dstTexCoord), 0)) == nonCoveredColor));
tint_tmp_3 = all(equal(texelFetch(dst, ivec3(ivec2(dstTexCoord), 0)), nonCoveredColor));
}
success = (tint_tmp_3);
} else {

View File

@@ -64,7 +64,7 @@ void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_in
}
bool tint_tmp = (tint_tmp_1);
if (tint_tmp) {
tint_tmp = all((writeIndex < dims));
tint_tmp = all(lessThan(writeIndex, dims));
}
if ((tint_tmp)) {
vec3 acc = vec3(0.0f, 0.0f, 0.0f);

View File

@@ -33,12 +33,12 @@ bool coordsInBounds_vi2_vi2_(inout ivec2 coord, inout ivec2 shape) {
bool x_87 = false;
bool x_88_phi = false;
ivec2 x_76 = coord;
bool x_81 = all((x_76 >= ivec2(0, 0)));
bool x_81 = all(greaterThanEqual(x_76, ivec2(0, 0)));
x_88_phi = x_81;
if (x_81) {
ivec2 x_84 = coord;
ivec2 x_85 = shape;
x_87 = all((x_84 < x_85));
x_87 = all(lessThan(x_84, x_85));
x_88_phi = x_87;
}
return x_88_phi;