diff options
author | Chris Craik <ccraik@google.com> | 2013-02-19 09:56:33 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-02-19 09:56:33 -0800 |
commit | 620cff4006ee0b507f00ef8a242ecff4e60ba4e9 (patch) | |
tree | 30c29f1ee548bb5da57a0a68b95f3c25beaa8eb6 /libs/hwui/DeferredDisplayList.h | |
parent | 57a8b612fa6b31a18f9e00a7bdf7dfbd261f793c (diff) | |
parent | ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23 (diff) | |
download | frameworks_base-620cff4006ee0b507f00ef8a242ecff4e60ba4e9.zip frameworks_base-620cff4006ee0b507f00ef8a242ecff4e60ba4e9.tar.gz frameworks_base-620cff4006ee0b507f00ef8a242ecff4e60ba4e9.tar.bz2 |
am ad82f20d: Merge "DisplayList draw operation reordering"
* commit 'ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23':
DisplayList draw operation reordering
Diffstat (limited to 'libs/hwui/DeferredDisplayList.h')
-rw-r--r-- | libs/hwui/DeferredDisplayList.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/libs/hwui/DeferredDisplayList.h b/libs/hwui/DeferredDisplayList.h new file mode 100644 index 0000000..4fcb297 --- /dev/null +++ b/libs/hwui/DeferredDisplayList.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_HWUI_DEFERRED_DISPLAY_LIST_H +#define ANDROID_HWUI_DEFERRED_DISPLAY_LIST_H + +#include <utils/Errors.h> +#include <utils/Vector.h> + +#include "Matrix.h" +#include "Rect.h" + +namespace android { +namespace uirenderer { + +class DrawOp; +class DrawOpBatch; +class OpenGLRenderer; +class SkiaShader; + +class DeferredDisplayList { +public: + DeferredDisplayList() { clear(); } + ~DeferredDisplayList() { clear(); } + + enum OpBatchId { + kOpBatch_None = -1, // Don't batch + kOpBatch_Bitmap, + kOpBatch_Patch, + kOpBatch_AlphaVertices, + kOpBatch_Vertices, + kOpBatch_AlphaMaskTexture, + kOpBatch_Text, + kOpBatch_ColorText, + + kOpBatch_Count, // Add other batch ids before this + }; + + bool isEmpty() { return mBatches.isEmpty(); } + + /** + * Plays back all of the draw ops recorded into batches to the renderer. + * Adjusts the state of the renderer as necessary, and restores it when complete + */ + status_t flush(OpenGLRenderer& renderer, Rect& dirty, int32_t flags, + uint32_t level); + + /** + * Add a draw op into the DeferredDisplayList, reordering as needed (for performance) if + * disallowReorder is false, respecting draw order when overlaps occur + */ + void add(DrawOp* op, bool disallowReorder); + +private: + void clear(); + + + Vector<DrawOpBatch*> mBatches; + int mBatchIndices[kOpBatch_Count]; +}; + +}; // namespace uirenderer +}; // namespace android + +#endif // ANDROID_HWUI_DEFERRED_DISPLAY_LIST_H |