Change Marker IDs to be strings

They are hashed to uint32_t at the API boundary (SkCanvas, SkVertices),
but making them functionally strings will make the SkSL interaction much
nicer.

Change-Id: I0979871bf3d21373812129eb7e994987b3030e00
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285664
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 68f92db..7352117 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1541,16 +1541,16 @@
     this->setMatrix(SkMatrix::I());
 }
 
-void SkCanvas::markCTM(MarkerID id) {
-    if (id == 0) return;
-
-    this->onMarkCTM(id);
-
-    fMarkerStack->setMarker(id, this->getLocalToDevice(), fMCRec);
+void SkCanvas::markCTM(const char* name) {
+    if (name && name[0]) {
+        fMarkerStack->setMarker(SkOpts::hash_fn(name, strlen(name), 0),
+                                this->getLocalToDevice(), fMCRec);
+        this->onMarkCTM(name);
+    }
 }
 
-bool SkCanvas::findMarkedCTM(MarkerID id, SkM44* mx) const {
-    return fMarkerStack->findMarker(id, mx);
+bool SkCanvas::findMarkedCTM(const char* name, SkM44* mx) const {
+    return name && name[0] && fMarkerStack->findMarker(SkOpts::hash_fn(name, strlen(name), 0), mx);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -1963,7 +1963,7 @@
                 return;
             }
             // If we can't provide any of the asked-for matrices, we can't draw this
-            if (attr.fMarkerID && !this->findMarkedCTM(attr.fMarkerID, nullptr)) {
+            if (attr.fMarkerID && !fMarkerStack->findMarker(attr.fMarkerID, nullptr)) {
                 return;
             }
         }