Index: tests/SkSLGLSLTest.cpp |
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp |
index b615f678140ecca0de5a7b38a1273a4cb1a5ba99..ad1fe0d9014671fc54ebafd1e93f229611d8caae 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"); |
+} |