Create GrOptDrawState before recording draw in GrInOrderDrawBuffer

Review URL: https://codereview.chromium.org/739673002
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp
index 836400e..f8510ff 100644
--- a/src/gpu/gl/GrGLProgramDesc.cpp
+++ b/src/gpu/gl/GrGLProgramDesc.cpp
@@ -73,19 +73,19 @@
     return key;
 }
 
-static uint32_t gen_transform_key(const GrFragmentStage& effectStage,
+static uint32_t gen_transform_key(const GrPendingFragmentStage& stage,
                                   bool useExplicitLocalCoords) {
     uint32_t totalKey = 0;
-    int numTransforms = effectStage.getProcessor()->numTransforms();
+    int numTransforms = stage.getProcessor()->numTransforms();
     for (int t = 0; t < numTransforms; ++t) {
         uint32_t key = 0;
-        if (effectStage.isPerspectiveCoordTransform(t, useExplicitLocalCoords)) {
+        if (stage.isPerspectiveCoordTransform(t)) {
             key |= kGeneral_MatrixType;
         } else {
             key |= kNoPersp_MatrixType;
         }
 
-        const GrCoordTransform& coordTransform = effectStage.getProcessor()->coordTransform(t);
+        const GrCoordTransform& coordTransform = stage.getProcessor()->coordTransform(t);
         if (kLocal_GrCoordSet != coordTransform.sourceCoords() && useExplicitLocalCoords) {
             key |= kPositionCoords_Flag;
         }
@@ -161,8 +161,8 @@
 };
 
 struct FragmentProcessorKeyBuilder {
-    typedef GrFragmentStage StagedProcessor;
-    static bool GetProcessorKey(const GrFragmentStage& fps,
+    typedef GrPendingFragmentStage StagedProcessor;
+    static bool GetProcessorKey(const GrPendingFragmentStage& fps,
                                 const GrGLCaps& caps,
                                 bool useLocalCoords,
                                 GrProcessorKeyBuilder* b,