Add z-reordering support to OpReorderer

Change-Id: I3fa969fe53cf648d145810f69fa7dada376c0b9a
diff --git a/libs/hwui/OpReorderer.h b/libs/hwui/OpReorderer.h
index 77be402..936b6ed 100644
--- a/libs/hwui/OpReorderer.h
+++ b/libs/hwui/OpReorderer.h
@@ -182,6 +182,10 @@
     virtual GLuint getTargetFbo() const override { return 0; }
 
 private:
+    enum class ChildrenSelectMode {
+        Negative,
+        Positive
+    };
     void saveForLayer(uint32_t layerWidth, uint32_t layerHeight,
             const BeginLayerOp* beginLayerOp, RenderNode* renderNode);
     void restoreForLayer();
@@ -195,8 +199,15 @@
     // should always be surrounded by a save/restore pair
     void deferNodePropsAndOps(RenderNode& node);
 
+    void deferShadow(const RenderNodeOp& casterOp);
+
     void deferImpl(const DisplayList& displayList);
 
+    template <typename V>
+    void defer3dChildren(ChildrenSelectMode mode, const V& zTranslatedNodes);
+
+    void deferRenderNodeOp(const RenderNodeOp& op);
+
     void replayBakedOpsImpl(void* arg, BakedOpDispatcher* receivers);
 
     /**