Added DSL fragmentProcessor and Sample function
Change-Id: I76348d151fbf27454a6f60e4f5f7e1774731e61b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/395216
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/tests/SkSLDSLTest.cpp b/tests/SkSLDSLTest.cpp
index 4fdd82a..e15b0fd 100644
--- a/tests/SkSLDSLTest.cpp
+++ b/tests/SkSLDSLTest.cpp
@@ -27,8 +27,9 @@
*/
class AutoDSLContext {
public:
- AutoDSLContext(GrGpu* gpu, bool markVarsDeclared = true) {
- Start(gpu->shaderCompiler());
+ AutoDSLContext(GrGpu* gpu, bool markVarsDeclared = true,
+ SkSL::ProgramKind kind = SkSL::ProgramKind::kFragment) {
+ Start(gpu->shaderCompiler(), kind);
DSLWriter::Instance().fMangle = false;
DSLWriter::Instance().fMarkVarsDeclared = markVarsDeclared;
}
@@ -1394,6 +1395,21 @@
// Uniforms do not need to be explicitly declared
}
+DEF_GPUTEST_FOR_MOCK_CONTEXT(DSLSample, r, ctxInfo) {
+ AutoDSLContext context(ctxInfo.directContext()->priv().getGpu(), /*markVarsDeclared=*/true,
+ SkSL::ProgramKind::kFragmentProcessor);
+ DSLVar child(kUniform_Modifier, kFragmentProcessor_Type, "child");
+ EXPECT_EQUAL(Sample(child), "sample(child)");
+ EXPECT_EQUAL(Sample(child, Float2(0, 0)), "sample(child, float2(0.0, 0.0))");
+ EXPECT_EQUAL(Sample(child, Half4(1)), "sample(child, half4(1.0))");
+ EXPECT_EQUAL(Sample(child, Half4(1), Float2(0)), "sample(child, half4(1.0), float2(0.0))");
+
+ {
+ ExpectError error(r, "error: no match for sample(fragmentProcessor, bool)\n");
+ Sample(child, true).release();
+ }
+}
+
DEF_GPUTEST_FOR_MOCK_CONTEXT(DSLStruct, r, ctxInfo) {
AutoDSLContext context(ctxInfo.directContext()->priv().getGpu(), /*markVarsDeclared=*/false);