summaryrefslogtreecommitdiff
path: root/libs/hwui/DisplayList.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/DisplayList.h')
-rw-r--r--libs/hwui/DisplayList.h132
1 files changed, 2 insertions, 130 deletions
diff --git a/libs/hwui/DisplayList.h b/libs/hwui/DisplayList.h
index 0cfc3b701aff..a952cc23e1ef 100644
--- a/libs/hwui/DisplayList.h
+++ b/libs/hwui/DisplayList.h
@@ -16,148 +16,20 @@
#pragma once
-#include <SkCamera.h>
-#include <SkDrawable.h>
-#include <SkMatrix.h>
-
-#include <private/hwui/DrawGlInfo.h>
-
-#include <utils/KeyedVector.h>
-#include <utils/LinearAllocator.h>
-#include <utils/RefBase.h>
-#include <utils/SortedVector.h>
-#include <utils/String8.h>
-
-#include <cutils/compiler.h>
-
-#include <androidfw/ResourceTypes.h>
-
-#include "CanvasProperty.h"
-#include "Debug.h"
-#include "GlFunctorLifecycleListener.h"
-#include "Matrix.h"
-#include "RenderProperties.h"
-#include "TreeInfo.h"
-#include "hwui/Bitmap.h"
-
-#include <vector>
-
-class SkBitmap;
-class SkPaint;
-class SkPath;
-class SkRegion;
+#include "pipeline/skia/SkiaDisplayList.h"
namespace android {
namespace uirenderer {
-class Rect;
-class Layer;
-
-struct RecordedOp;
-struct RenderNodeOp;
-
-typedef RecordedOp BaseOpType;
-typedef RenderNodeOp NodeOpType;
-
namespace VectorDrawable {
class Tree;
};
typedef uirenderer::VectorDrawable::Tree VectorDrawableRoot;
-struct FunctorContainer {
- Functor* functor;
- GlFunctorLifecycleListener* listener;
-};
-
/**
* Data structure that holds the list of commands used in display list stream
*/
-class DisplayList {
- friend class RecordingCanvas;
-
-public:
- struct Chunk {
- // range of included ops in DisplayList::ops()
- size_t beginOpIndex;
- size_t endOpIndex;
-
- // range of included children in DisplayList::children()
- size_t beginChildIndex;
- size_t endChildIndex;
-
- // whether children with non-zero Z in the chunk should be reordered
- bool reorderChildren;
-
- // clip at the beginning of a reorder section, applied to reordered children
- const ClipBase* reorderClip;
- };
-
- DisplayList();
- virtual ~DisplayList();
-
- // index of DisplayListOp restore, after which projected descendants should be drawn
- int projectionReceiveIndex;
-
- const LsaVector<Chunk>& getChunks() const { return chunks; }
- const LsaVector<BaseOpType*>& getOps() const { return ops; }
-
- const LsaVector<NodeOpType*>& getChildren() const { return children; }
-
- const LsaVector<sk_sp<Bitmap>>& getBitmapResources() const { return bitmapResources; }
-
- size_t addChild(NodeOpType* childOp);
-
- void ref(VirtualLightRefBase* prop) { referenceHolders.push_back(prop); }
-
- size_t getUsedSize() { return allocator.usedSize(); }
-
- virtual bool isEmpty() const { return ops.empty(); }
- virtual bool hasFunctor() const { return !functors.empty(); }
- virtual bool hasVectorDrawables() const { return !vectorDrawables.empty(); }
- virtual bool isSkiaDL() const { return false; }
- virtual bool reuseDisplayList(RenderNode* node, renderthread::CanvasContext* context) {
- return false;
- }
-
- virtual void syncContents();
- virtual void updateChildren(std::function<void(RenderNode*)> updateFn);
- virtual bool prepareListAndChildren(
- TreeObserver& observer, TreeInfo& info, bool functorsNeedLayer,
- std::function<void(RenderNode*, TreeObserver&, TreeInfo&, bool)> childFn);
-
- virtual void output(std::ostream& output, uint32_t level);
-
-protected:
- // allocator into which all ops and LsaVector arrays allocated
- LinearAllocator allocator;
- LinearStdAllocator<void*> stdAllocator;
-
-private:
- LsaVector<Chunk> chunks;
- LsaVector<BaseOpType*> ops;
-
- // list of Ops referring to RenderNode children for quick, non-drawing traversal
- LsaVector<NodeOpType*> children;
-
- // Resources - Skia objects + 9 patches referred to by this DisplayList
- LsaVector<sk_sp<Bitmap>> bitmapResources;
- LsaVector<const SkPath*> pathResources;
- LsaVector<const Res_png_9patch*> patchResources;
- LsaVector<std::unique_ptr<const SkPaint>> paints;
- LsaVector<std::unique_ptr<const SkRegion>> regions;
- LsaVector<sp<VirtualLightRefBase>> referenceHolders;
-
- // List of functors
- LsaVector<FunctorContainer> functors;
-
- // List of VectorDrawables that need to be notified of pushStaging. Note that this list gets
- // nothing
- // but a callback during sync DisplayList, unlike the list of functors defined above, which
- // gets special treatment exclusive for webview.
- LsaVector<VectorDrawableRoot*> vectorDrawables;
-
- void cleanupResources();
-};
+using DisplayList = skiapipeline::SkiaDisplayList;
}; // namespace uirenderer
}; // namespace android