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>
This commit is contained in:
John Stiles 2020-10-30 15:58:49 -04:00 committed by Skia Commit-Bot
parent 67e58cb909
commit 47ee0caa10
9 changed files with 56 additions and 22 deletions

View File

@ -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",

View File

@ -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));
}

View File

@ -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));
}

View File

@ -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));
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}