Split Texture test into separate 1D and 2D tests.
This improves the test output for Metal. Previously, the Metal output
was just an error message, since 1D textures were unsupported. Now we
have a valid golden output for the 2D case in Metal. (1D is still
unsupported and is likely to remain unsupported; Skia currently has no
use case for 1D textures.)
Change-Id: I91977712030f08e371cc6bfb2afa578940ca00b7
Bug: skia:10797
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330940
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni
index cb2f874..7d637f2 100644
--- a/gn/sksl_tests.gni
+++ b/gn/sksl_tests.gni
@@ -232,7 +232,8 @@
"$_tests/sksl/shared/SwizzleScalar.sksl",
"$_tests/sksl/shared/TernaryAsLValueEntirelyFoldable.sksl",
"$_tests/sksl/shared/TernaryAsLValueFoldableTest.sksl",
- "$_tests/sksl/shared/Texture.sksl",
+ "$_tests/sksl/shared/Texture1D.sksl",
+ "$_tests/sksl/shared/Texture2D.sksl",
"$_tests/sksl/shared/TextureSharpen.sksl",
"$_tests/sksl/shared/UnaryPositiveNegative.sksl",
"$_tests/sksl/shared/UnusedVariables.sksl",
diff --git a/tests/sksl/shared/Texture.sksl b/tests/sksl/shared/Texture.sksl
deleted file mode 100644
index f3c1467..0000000
--- a/tests/sksl/shared/Texture.sksl
+++ /dev/null
@@ -1,10 +0,0 @@
-layout(binding=0) uniform sampler1D one;
-layout(binding=1) uniform sampler2D two;
-
-void main() {
- float4 a = sample(one, 0);
- float4 b = sample(two, float2(0));
- float4 c = sample(one, float2(0));
- float4 d = sample(two, float3(0));
- sk_FragColor = half4(half(a.x), half(b.x), half(c.x), half(d.x));
-}
diff --git a/tests/sksl/shared/Texture1D.sksl b/tests/sksl/shared/Texture1D.sksl
new file mode 100644
index 0000000..12ff321
--- /dev/null
+++ b/tests/sksl/shared/Texture1D.sksl
@@ -0,0 +1,7 @@
+layout(binding=0) uniform sampler1D tex;
+
+void main() {
+ float4 a = sample(tex, 0);
+ float4 b = sample(tex, float2(0));
+ sk_FragColor = half4(float2(a.xy), float2(b.zw));
+}
diff --git a/tests/sksl/shared/Texture2D.sksl b/tests/sksl/shared/Texture2D.sksl
new file mode 100644
index 0000000..de090c9
--- /dev/null
+++ b/tests/sksl/shared/Texture2D.sksl
@@ -0,0 +1,7 @@
+layout(binding=0) uniform sampler2D tex;
+
+void main() {
+ float4 a = sample(tex, float2(0));
+ float4 b = sample(tex, float3(0));
+ sk_FragColor = half4(float2(a.xy), float2(b.zw));
+}
diff --git a/tests/sksl/shared/golden/Texture.glsl b/tests/sksl/shared/golden/Texture.glsl
deleted file mode 100644
index 2b30c01..0000000
--- a/tests/sksl/shared/golden/Texture.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-
-out vec4 sk_FragColor;
-layout (binding = 0) uniform sampler1D one;
-layout (binding = 1) uniform sampler2D two;
-void main() {
- vec4 a = texture(one, 0.0);
- vec4 b = texture(two, vec2(0.0));
- vec4 c = textureProj(one, vec2(0.0));
- vec4 d = textureProj(two, vec3(0.0));
- sk_FragColor = vec4(a.x, b.x, c.x, d.x);
-}
diff --git a/tests/sksl/shared/golden/Texture1D.glsl b/tests/sksl/shared/golden/Texture1D.glsl
new file mode 100644
index 0000000..934b39c
--- /dev/null
+++ b/tests/sksl/shared/golden/Texture1D.glsl
@@ -0,0 +1,8 @@
+
+out vec4 sk_FragColor;
+layout (binding = 0) uniform sampler1D tex;
+void main() {
+ vec4 a = texture(tex, 0.0);
+ vec4 b = textureProj(tex, vec2(0.0));
+ sk_FragColor = vec4(a.xy, b.zw);
+}
diff --git a/tests/sksl/shared/golden/Texture.metal b/tests/sksl/shared/golden/Texture1D.metal
similarity index 100%
rename from tests/sksl/shared/golden/Texture.metal
rename to tests/sksl/shared/golden/Texture1D.metal
diff --git a/tests/sksl/shared/golden/Texture2D.glsl b/tests/sksl/shared/golden/Texture2D.glsl
new file mode 100644
index 0000000..a5119ac
--- /dev/null
+++ b/tests/sksl/shared/golden/Texture2D.glsl
@@ -0,0 +1,8 @@
+
+out vec4 sk_FragColor;
+layout (binding = 0) uniform sampler2D tex;
+void main() {
+ vec4 a = texture(tex, vec2(0.0));
+ vec4 b = textureProj(tex, vec3(0.0));
+ sk_FragColor = vec4(a.xy, b.zw);
+}
diff --git a/tests/sksl/shared/golden/Texture2D.metal b/tests/sksl/shared/golden/Texture2D.metal
new file mode 100644
index 0000000..b570ed8
--- /dev/null
+++ b/tests/sksl/shared/golden/Texture2D.metal
@@ -0,0 +1,24 @@
+#include <metal_stdlib>
+#include <simd/simd.h>
+using namespace metal;
+struct Inputs {
+};
+struct Outputs {
+ float4 sk_FragColor [[color(0)]];
+};
+struct Globals {
+ texture2d<float> tex;
+ sampler texSmplr;
+};
+fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d<float> tex[[texture(0)]], sampler texSmplr[[sampler(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
+ Globals globalStruct{tex, texSmplr};
+ thread Globals* _globals = &globalStruct;
+ (void)_globals;
+ Outputs _outputStruct;
+ thread Outputs* _out = &_outputStruct;
+ float3 tmpCoord0;
+ float4 a = _globals->tex.sample(_globals->texSmplr, float2(0.0));
+ float4 b = _globals->tex.sample(_globals->texSmplr, (tmpCoord0 = float3(0.0), tmpCoord0.xy / tmpCoord0.z));
+ _out->sk_FragColor = float4(a.xy, b.zw);
+ return *_out;
+}