skia2/resources/sksl/shared/ArrayComparison.sksl
John Stiles 80c256e027 Revert "Fix array-of-matrix/struct comparisons in Metal."
This reverts commit 23d8f94535.

Reason for revert: SkSL_ArrayComparison test causes Adreno 630/640 to crash in Vulkan

Original change's description:
> Fix array-of-matrix/struct comparisons in Metal.
>
> Metal needs helper functions in order to compare arrays, structs, and
> matrices. Depending on the input code, it was possible for the
> array-comparison helper to be emitted before a matrix-comparison
> or struct-comparison helper. If this occurred, array comparisons of that
> matrix or struct type would fail, because the operator== for the array's
> inner type was defined after array==, and Metal (like C++) parses
> top-to-bottom and only considers functions declared above the current
> function.
>
> We now emit prototypes for all the array, struct and matrix helper
> function. These prototypes are emitted above any helper functions. This
> ensures visibility no matter how your comparisons are organized.
>
> Change-Id: Ib3d8828c301fd0fa6c209788f9ea60800371edbe
> Bug: skia:12326
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437739
> Commit-Queue: John Stiles <johnstiles@google.com>
> Auto-Submit: John Stiles <johnstiles@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=brianosman@google.com,ethannicholas@google.com,johnstiles@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com

Change-Id: I9e0fc69c46e1b4f63133e21e130e527ca4f0b31a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:12326
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/438076
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-08-10 14:30:55 +00:00

24 lines
669 B
Plaintext

uniform half4 colorGreen, colorRed;
struct S {
int x, y;
};
half4 main(float2 coords) {
float f1[4] = float[4](1, 2, 3, 4);
float f2[4] = float[4](1, 2, 3, 4);
float f3[4] = float[4](1, 2, 3, -4);
int3 v1[2] = int3[2](int3(1, 2, 3), int3(4, 5, 6));
int3 v2[2] = int3[2](int3(1, 2, 3), int3(4, 5, 6));
int3 v3[2] = int3[2](int3(1, 2, 3), int3(4, 5, -6));
S s1[3] = S[3](S(1, 2), S(3, 4), S(5, 6));
S s2[3] = S[3](S(1, 2), S(0, 0), S(5, 6));
S s3[3] = S[3](S(1, 2), S(3, 4), S(5, 6));
return (f1 == f2) && (f1 != f3) &&
(v1 == v2) && (v1 != v3) &&
(s1 != s2) && (s3 == s1) ? colorGreen : colorRed;
}