aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/SkSLGLSLTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/SkSLGLSLTest.cpp')
-rw-r--r--tests/SkSLGLSLTest.cpp37
1 files changed, 28 insertions, 9 deletions
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp
index b615f67814..ad1fe0d901 100644
--- a/tests/SkSLGLSLTest.cpp
+++ b/tests/SkSLGLSLTest.cpp
@@ -27,15 +27,7 @@ static void test(skiatest::Reporter* r, const char* src, SkSL::GLCaps caps, cons
}
static SkSL::GLCaps default_caps() {
- return {
- 400,
- SkSL::GLCaps::kGL_Standard,
- false, // isCoreProfile
- false, // usesPrecisionModifiers;
- false, // mustDeclareFragmentShaderOutput
- true, // canUseMinAndAbsTogether
- false // mustForceNegatedAtanParamToFloat
- };
+ return SkSL::GLCaps();
}
DEF_TEST(SkSLHelloWorld, r) {
@@ -387,3 +379,30 @@ DEF_TEST(SkSLArrayConstructors, r) {
"vec2 test2[] = vec2[](vec2(1.0, 2.0), vec2(3.0, 4.0));\n"
"mat4 test3[] = mat4[]();\n");
}
+
+DEF_TEST(SkSLDerivatives, r) {
+ test(r,
+ "void main() { float x = dFdx(1); }",
+ default_caps(),
+ "#version 400\n"
+ "void main() {\n"
+ " float x = dFdx(1.0);\n"
+ "}\n");
+ SkSL::GLCaps caps = default_caps();
+ caps.fShaderDerivativeExtensionString = "GL_OES_standard_derivatives";
+ test(r,
+ "void main() { float x = 1; }",
+ caps,
+ "#version 400\n"
+ "void main() {\n"
+ " float x = 1.0;\n"
+ "}\n");
+ test(r,
+ "void main() { float x = dFdx(1); }",
+ caps,
+ "#version 400\n"
+ "#extension GL_OES_standard_derivatives : require\n"
+ "void main() {\n"
+ " float x = dFdx(1.0);\n"
+ "}\n");
+}