Initial clipShader implementation for SkClipStack and GPU

Change-Id: I0af800900a7fbd9d16af0058ee0754358ebc3875
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/293562
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/utils/SkClipStackUtils.cpp b/src/utils/SkClipStackUtils.cpp
index 00b9336..fade198 100644
--- a/src/utils/SkClipStackUtils.cpp
+++ b/src/utils/SkClipStackUtils.cpp
@@ -14,6 +14,11 @@
 
     SkClipStack::Iter iter(cs, SkClipStack::Iter::kBottom_IterStart);
     while (const SkClipStack::Element* element = iter.next()) {
+        if (element->getDeviceSpaceType() == SkClipStack::Element::DeviceSpaceType::kShader) {
+            // TODO: Handle DeviceSpaceType::kShader somehow; it can't be turned into an SkPath
+            // but perhaps the pdf backend can apply shaders in another way.
+            continue;
+        }
         SkPath operand;
         if (element->getDeviceSpaceType() != SkClipStack::Element::DeviceSpaceType::kEmpty) {
             element->asDeviceSpacePath(&operand);