From 47ee0caa102dff004881d24726a83010b53da39e Mon Sep 17 00:00:00 2001 From: John Stiles Date: Fri, 30 Oct 2020 15:58:49 -0400 Subject: [PATCH] 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 Commit-Queue: Brian Osman Reviewed-by: Brian Osman --- gn/sksl_tests.gni | 3 ++- tests/sksl/shared/Texture.sksl | 10 -------- tests/sksl/shared/Texture1D.sksl | 7 ++++++ tests/sksl/shared/Texture2D.sksl | 7 ++++++ tests/sksl/shared/golden/Texture.glsl | 11 --------- tests/sksl/shared/golden/Texture1D.glsl | 8 +++++++ .../golden/{Texture.metal => Texture1D.metal} | 0 tests/sksl/shared/golden/Texture2D.glsl | 8 +++++++ tests/sksl/shared/golden/Texture2D.metal | 24 +++++++++++++++++++ 9 files changed, 56 insertions(+), 22 deletions(-) delete mode 100644 tests/sksl/shared/Texture.sksl create mode 100644 tests/sksl/shared/Texture1D.sksl create mode 100644 tests/sksl/shared/Texture2D.sksl delete mode 100644 tests/sksl/shared/golden/Texture.glsl create mode 100644 tests/sksl/shared/golden/Texture1D.glsl rename tests/sksl/shared/golden/{Texture.metal => Texture1D.metal} (100%) create mode 100644 tests/sksl/shared/golden/Texture2D.glsl create mode 100644 tests/sksl/shared/golden/Texture2D.metal diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni index cb2f874ed3..7d637f2dd7 100644 --- a/gn/sksl_tests.gni +++ b/gn/sksl_tests.gni @@ -232,7 +232,8 @@ sksl_shared_tests = [ "$_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 f3c1467d3c..0000000000 --- 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 0000000000..12ff321948 --- /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 0000000000..de090c90d2 --- /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 2b30c01fcf..0000000000 --- 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 0000000000..934b39c530 --- /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 0000000000..a5119ac9ac --- /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 0000000000..b570ed854e --- /dev/null +++ b/tests/sksl/shared/golden/Texture2D.metal @@ -0,0 +1,24 @@ +#include +#include +using namespace metal; +struct Inputs { +}; +struct Outputs { + float4 sk_FragColor [[color(0)]]; +}; +struct Globals { + texture2d tex; + sampler texSmplr; +}; +fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d 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; +}