Hash :
7e815c77
Author :
Date :
2020-07-08T13:43:40
Implement EXT_shadow_samplers Bug: angleproject:4863,b/161716126 Change-Id: I6beb45d91f59a851787c9f40b40266fb985198d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288330 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// EXT_shadow_samplers_test.cpp:
// Test for EXT_shadow_samplers
//
#include "tests/test_utils/ShaderExtensionTest.h"
using EXTShadowSamplersTest = sh::ShaderExtensionTest;
namespace
{
const char EXTPragma[] = "#extension GL_EXT_shadow_samplers : require\n";
// Shader calling shadow2DEXT()
const char ESSL100_ShadowSamplersShader[] =
R"(
precision mediump float;
varying vec3 texCoord0v;
uniform sampler2DShadow tex;
void main()
{
float color = shadow2DEXT(tex, texCoord0v);
})";
// Extension flag is required to compile properly. Expect failure when it is
// not present.
TEST_P(EXTShadowSamplersTest, CompileFailsWithoutExtension)
{
mResources.EXT_shadow_samplers = 0;
InitializeCompiler();
EXPECT_FALSE(TestShaderCompile(EXTPragma));
}
// Extension directive is required to compile properly. Expect failure when
// it is not present.
TEST_P(EXTShadowSamplersTest, CompileFailsWithExtensionWithoutPragma)
{
mResources.EXT_shadow_samplers = 1;
InitializeCompiler();
EXPECT_FALSE(TestShaderCompile(""));
}
// With extension flag and extension directive, compiling succeeds.
// Also test that the extension directive state is reset correctly.
TEST_P(EXTShadowSamplersTest, CompileSucceedsWithExtensionAndPragma)
{
mResources.EXT_shadow_samplers = 1;
InitializeCompiler();
EXPECT_TRUE(TestShaderCompile(EXTPragma));
// Test reset functionality.
EXPECT_FALSE(TestShaderCompile(""));
EXPECT_TRUE(TestShaderCompile(EXTPragma));
}
// The SL #version 100 shaders that are correct work similarly
// in both GL2 and GL3, with and without the version string.
INSTANTIATE_TEST_SUITE_P(CorrectESSL100Shaders,
EXTShadowSamplersTest,
Combine(Values(SH_GLES2_SPEC),
Values(sh::ESSLVersion100),
Values(ESSL100_ShadowSamplersShader)));
} // anonymous namespace