diff --git a/src/gpu/gradients/GrRadialGradientLayout.fp b/src/gpu/gradients/GrRadialGradientLayout.fp
index fd47295..a50e658 100644
--- a/src/gpu/gradients/GrRadialGradientLayout.fp
+++ b/src/gpu/gradients/GrRadialGradientLayout.fp
@@ -49,22 +49,22 @@
 
 @test(d) {
     SkScalar scale = GrGradientShader::RandomParams::kGradientScale;
-    sk_sp<SkShader> shader;
+    std::unique_ptr<GrFragmentProcessor> fp;
+    GrTest::TestAsFPArgs asFPArgs(d);
     do {
         GrGradientShader::RandomParams params(d->fRandom);
         SkPoint center = {d->fRandom->nextRangeScalar(0.0f, scale),
                           d->fRandom->nextRangeScalar(0.0f, scale)};
         SkScalar radius = d->fRandom->nextRangeScalar(0.0f, scale);
-        shader = params.fUseColors4f
+        sk_sp<SkShader> shader = params.fUseColors4f
                          ? SkGradientShader::MakeRadial(center, radius, params.fColors4f,
                                                         params.fColorSpace, params.fStops,
                                                         params.fColorCount, params.fTileMode)
                          : SkGradientShader::MakeRadial(center, radius, params.fColors,
                                                         params.fStops, params.fColorCount,
                                                         params.fTileMode);
-    } while (!shader);
-    GrTest::TestAsFPArgs asFPArgs(d);
-    std::unique_ptr<GrFragmentProcessor> fp = as_SB(shader)->asFragmentProcessor(asFPArgs.args());
-    GrAlwaysAssert(fp);
+        // Degenerate params can create an Empty (non-null) shader, where fp will be nullptr
+        fp = shader ? as_SB(shader)->asFragmentProcessor(asFPArgs.args()) : nullptr;
+    } while (!fp);
     return fp;
 }
diff --git a/src/gpu/gradients/generated/GrRadialGradientLayout.cpp b/src/gpu/gradients/generated/GrRadialGradientLayout.cpp
index 4643c9b..af578d1 100644
--- a/src/gpu/gradients/generated/GrRadialGradientLayout.cpp
+++ b/src/gpu/gradients/generated/GrRadialGradientLayout.cpp
@@ -57,23 +57,24 @@
 #if GR_TEST_UTILS
 std::unique_ptr<GrFragmentProcessor> GrRadialGradientLayout::TestCreate(GrProcessorTestData* d) {
     SkScalar scale = GrGradientShader::RandomParams::kGradientScale;
-    sk_sp<SkShader> shader;
+    std::unique_ptr<GrFragmentProcessor> fp;
+    GrTest::TestAsFPArgs asFPArgs(d);
     do {
         GrGradientShader::RandomParams params(d->fRandom);
         SkPoint center = {d->fRandom->nextRangeScalar(0.0f, scale),
                           d->fRandom->nextRangeScalar(0.0f, scale)};
         SkScalar radius = d->fRandom->nextRangeScalar(0.0f, scale);
-        shader = params.fUseColors4f
-                         ? SkGradientShader::MakeRadial(center, radius, params.fColors4f,
-                                                        params.fColorSpace, params.fStops,
-                                                        params.fColorCount, params.fTileMode)
-                         : SkGradientShader::MakeRadial(center, radius, params.fColors,
-                                                        params.fStops, params.fColorCount,
-                                                        params.fTileMode);
-    } while (!shader);
-    GrTest::TestAsFPArgs asFPArgs(d);
-    std::unique_ptr<GrFragmentProcessor> fp = as_SB(shader)->asFragmentProcessor(asFPArgs.args());
-    GrAlwaysAssert(fp);
+        sk_sp<SkShader> shader =
+                params.fUseColors4f
+                        ? SkGradientShader::MakeRadial(center, radius, params.fColors4f,
+                                                       params.fColorSpace, params.fStops,
+                                                       params.fColorCount, params.fTileMode)
+                        : SkGradientShader::MakeRadial(center, radius, params.fColors,
+                                                       params.fStops, params.fColorCount,
+                                                       params.fTileMode);
+        // Degenerate params can create an Empty (non-null) shader, where fp will be nullptr
+        fp = shader ? as_SB(shader)->asFragmentProcessor(asFPArgs.args()) : nullptr;
+    } while (!fp);
     return fp;
 }
 #endif
