Switch from querying swizzle on caps to using swizzles stored on proxies.

Change-Id: I03f4a3affd6dda7a83bee8eec768dcaa93a6b801
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220534
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index 895c223..9a338f3 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -18,7 +18,8 @@
 
 GrPipeline::GrPipeline(const InitArgs& args,
                        GrProcessorSet&& processors,
-                       GrAppliedClip&& appliedClip) {
+                       GrAppliedClip&& appliedClip)
+        : fOutputSwizzle(args.fOutputSwizzle) {
     SkASSERT(processors.isFinalized());
 
     fFlags = (Flags)args.fInputFlags;
@@ -93,14 +94,16 @@
     return this->getXferProcessor().xferBarrierType(caps);
 }
 
-GrPipeline::GrPipeline(GrScissorTest scissorTest, SkBlendMode blendmode, InputFlags inputFlags,
+GrPipeline::GrPipeline(GrScissorTest scissorTest, SkBlendMode blendmode,
+                       const GrSwizzle& outputSwizzle, InputFlags inputFlags,
                        const GrUserStencilSettings* userStencil)
         : fWindowRectsState()
         , fUserStencilSettings(userStencil)
         , fFlags((Flags)inputFlags)
         , fXferProcessor(GrPorterDuffXPFactory::MakeNoCoverageXP(blendmode))
         , fFragmentProcessors()
-        , fNumColorProcessors(0) {
+        , fNumColorProcessors(0)
+        , fOutputSwizzle(outputSwizzle) {
     if (GrScissorTest::kEnabled == scissorTest) {
         fFlags |= Flags::kScissorEnabled;
     }