Correct implementation of saveLayer().

Change-Id: I5375126636913e0a84f2d6bbd0ebe40d2e4f2763
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index ff65c1b..becbc22 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -119,6 +119,8 @@
         "    gl_FragColor = fragColor;\n";
 const char* gFS_Main_FragColor_Blend =
         "    gl_FragColor = blendFramebuffer(fragColor, gl_LastFragColor);\n";
+const char* gFS_Main_FragColor_Blend_Swap =
+        "    gl_FragColor = blendFramebuffer(gl_LastFragColor, fragColor);\n";
 const char* gFS_Main_ApplyColorOp[4] = {
         // None
         "",
@@ -376,7 +378,8 @@
         if (!blendFramebuffer) {
             shader.append(gFS_Main_FragColor);
         } else {
-            shader.append(gFS_Main_FragColor_Blend);
+            shader.append(!description.swapSrcDst ?
+                    gFS_Main_FragColor_Blend : gFS_Main_FragColor_Blend_Swap);
         }
     }
     // End the shader