diff --git a/gm/runtimecolorfilter.cpp b/gm/runtimecolorfilter.cpp
index 84a7bb3..8093c46 100644
--- a/gm/runtimecolorfilter.cpp
+++ b/gm/runtimecolorfilter.cpp
@@ -21,8 +21,6 @@
 #include <utility>
 
 const char* SKSL_TEST_SRC = R"(
-    uniform half b;
-
     void main(inout half4 color) {
         color.a = color.r*0.3 + color.g*0.6 + color.b*0.1;
         color.r = 0;
@@ -35,11 +33,9 @@
     auto img = GetResourceAsImage("images/mandrill_256.png");
     canvas->drawImage(img, 0, 0, nullptr);
 
-    float b = 0.75;
-    sk_sp<SkData> data = SkData::MakeWithCopy(&b, sizeof(b));
     sk_sp<SkRuntimeEffect> effect = std::get<0>(SkRuntimeEffect::Make(SkString(SKSL_TEST_SRC)));
 
-    auto cf1 = effect->makeColorFilter(data);
+    auto cf1 = effect->makeColorFilter(nullptr);
     SkPaint p;
     p.setColorFilter(cf1);
     canvas->drawImage(img, 256, 0, &p);
diff --git a/src/core/SkRuntimeEffect.cpp b/src/core/SkRuntimeEffect.cpp
index 926b1f4..283e540 100644
--- a/src/core/SkRuntimeEffect.cpp
+++ b/src/core/SkRuntimeEffect.cpp
@@ -296,7 +296,10 @@
 sk_sp<SkShader> SkRuntimeEffect::makeShader(sk_sp<SkData> inputs,
                                             sk_sp<SkShader> children[], size_t childCount,
                                             const SkMatrix* localMatrix, bool isOpaque) {
-    return inputs && inputs->size() == this->inputSize() && childCount == fChildren.size()
+    if (!inputs) {
+        inputs = SkData::MakeEmpty();
+    }
+    return inputs->size() == this->inputSize() && childCount == fChildren.size()
         ? sk_sp<SkShader>(new SkRTShader(sk_ref_sp(this), std::move(inputs), localMatrix,
                                          children, childCount, isOpaque))
         : nullptr;
@@ -308,7 +311,10 @@
     extern sk_sp<SkColorFilter> SkMakeRuntimeColorFilter(sk_sp<SkRuntimeEffect>, sk_sp<SkData>,
                                                          sk_sp<SkColorFilter>[], size_t);
 
-    return inputs && inputs->size() == this->inputSize() && childCount == fChildren.size()
+    if (!inputs) {
+        inputs = SkData::MakeEmpty();
+    }
+    return inputs->size() == this->inputSize() && childCount == fChildren.size()
         ? SkMakeRuntimeColorFilter(sk_ref_sp(this), std::move(inputs), children, childCount)
         : nullptr;
 }
