Expose translator issues with struct samplers.

Struct samplers assert in the Vulkan and Metal backends during
rewriting. Add a test - skipped for now on these backends - to
highlight this issue.

Bug: angleproject:6641
Change-Id: I95cbc9e5f4122f1ac7db926ac44c4cccc1b6f87a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3256235
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
This commit is contained in:
Kyle Piddington 2021-11-01 16:54:40 -05:00 коммит произвёл Angle LUCI CQ
Родитель a517d4d95f
Коммит 88ca3b18ab
2 изменённых файлов: 58 добавлений и 0 удалений

Просмотреть файл

@ -25,6 +25,10 @@
4889 VULKAN : GeometryShaderTest.LayeredFramebufferPreRenderClear3DColor/* = SKIP
4889 VULKAN : GLSLTest_ES31.VaryingTessellationSampleInAndOut/* = SKIP
// Vulkan generic
6641 VULKAN : UniformTest.UnusedStructInlineUniform/* = SKIP
6641 VULKAN : UniformTest.UnusedStructInlineUniformWithSampler/* = SKIP
// Windows
3786 WIN NVIDIA D3D11 : BufferDataOverflowTest.VertexBufferIntegerOverflow/* = SKIP
4092 WIN VULKAN : BufferDataOverflowTest.VertexBufferIntegerOverflow/* = SKIP
@ -108,6 +112,8 @@
6570 MAC INTEL OPENGL : WebGLCompatibilityTest.RGB32FTextures/* = SKIP
6603 MAC OPENGL : ProgramBinaryES3Test.SaveAndLoadDetachedShaders/* = SKIP
6643 MAC AMD OPENGL : TransformFeedbackTest.TransformFeedbackQueryPausedDrawThenResume/* = SKIP
6641 MAC METAL : UniformTest.UnusedStructInlineUniform/* = SKIP
6641 MAC METAL : UniformTest.UnusedStructInlineUniformWithSampler/* = SKIP
// Failures from Transform Feedback Enablement. Passes on BigSur
6407 MAC NVIDIA METAL : TransformFeedbackTest.OptimizedVaryings/ES3_Metal = SKIP

Просмотреть файл

@ -1461,6 +1461,58 @@ void main()
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
TEST_P(UniformTest, UnusedStructInlineUniform)
{
constexpr char kVS[] = R"(precision highp float;
attribute vec4 position;
void main()
{
gl_Position = position;
})";
constexpr char kFS[] = R"(precision highp float;
uniform struct {
vec3 aVec3;
vec2 aVec2;
}aUniform;
varying vec2 texcoord;
void main()
{
gl_FragColor = vec4(0,1,0,1);
})";
mProgram = CompileProgram(kVS, kFS);
ASSERT_NE(mProgram, 0u);
drawQuad(mProgram, "position", 0.5f);
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
TEST_P(UniformTest, UnusedStructInlineUniformWithSampler)
{
constexpr char kVS[] = R"(precision highp float;
attribute vec4 position;
void main()
{
gl_Position = position;
})";
constexpr char kFS[] = R"(precision highp float;
uniform struct {
sampler2D aSampler;
vec3 aVec3;
}aUniform;
varying vec2 texcoord;
void main()
{
gl_FragColor = vec4(0,1,0,1);
})";
mProgram = CompileProgram(kVS, kFS);
ASSERT_NE(mProgram, 0u);
drawQuad(mProgram, "position", 0.5f);
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
}
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
// tests should be run against.
ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(SimpleUniformTest);