Add Metal support for degrees() and radians() intrinsics.

Change-Id: I4a483c455c9a12c92b717a0c2713d32ab44dcd6f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/343099
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/SkSLMetalCodeGenerator.cpp b/src/sksl/SkSLMetalCodeGenerator.cpp
index 8bf4587..9a79e76 100644
--- a/src/sksl/SkSLMetalCodeGenerator.cpp
+++ b/src/sksl/SkSLMetalCodeGenerator.cpp
@@ -45,11 +45,13 @@
     fIntrinsicMap[String("floatBitsToUint")]    = SPECIAL(Bitcast);
     fIntrinsicMap[String("intBitsToFloat")]     = SPECIAL(Bitcast);
     fIntrinsicMap[String("uintBitsToFloat")]    = SPECIAL(Bitcast);
+    fIntrinsicMap[String("degrees")]            = SPECIAL(Degrees);
     fIntrinsicMap[String("distance")]           = SPECIAL(Distance);
     fIntrinsicMap[String("dot")]                = SPECIAL(Dot);
     fIntrinsicMap[String("length")]             = SPECIAL(Length);
     fIntrinsicMap[String("mod")]                = SPECIAL(Mod);
     fIntrinsicMap[String("normalize")]          = SPECIAL(Normalize);
+    fIntrinsicMap[String("radians")]            = SPECIAL(Radians);
     fIntrinsicMap[String("sample")]             = SPECIAL(Texture);
     fIntrinsicMap[String("equal")]              = METAL(Equal);
     fIntrinsicMap[String("notEqual")]           = METAL(NotEqual);
@@ -636,6 +638,18 @@
             this->write(")");
             break;
         }
+        case kDegrees_SpecialIntrinsic: {
+            this->write("((");
+            this->writeExpression(*arguments[0], kSequence_Precedence);
+            this->write(") * 57.2957795)");
+            break;
+        }
+        case kRadians_SpecialIntrinsic: {
+            this->write("((");
+            this->writeExpression(*arguments[0], kSequence_Precedence);
+            this->write(") * 0.0174532925)");
+            break;
+        }
         default:
             ABORT("unsupported special intrinsic kind");
     }