Chris Craik c3566d0642 DisplayList draw operation reordering
bug:8037003

The reordering enables similar operations to draw together, minimizing the
OpenGL state change operations that go inbetween draws. Eventually, multiple
complete canvas draw operations will be merged (into a single glDrawArrays call,
for example)

Reorders DisplayList draw operations when:

-They can move backwards in the command stream to be after similar
operations without violating draw ordering

-The OpenGLRenderer is in a simple, replayable state (no complex clip,
or filter/shadow etc)

Also adds two system properties to control the deferral/reordering:
    "debug.hwui.disable_draw_defer"
    "debug.hwui.disable_draw_reorder"
which can be set to "true" to control the display list manipulation

Change-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32
2013-02-15 13:30:09 -08:00

93 lines
2.7 KiB
C

/*
* Copyright (C) 2010 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_DEBUG_H
#define ANDROID_HWUI_DEBUG_H
// Turn on to check for OpenGL errors on each frame
#define DEBUG_OPENGL 1
// Turn on to display informations about the GPU
#define DEBUG_EXTENSIONS 0
// Turn on to enable initialization information
#define DEBUG_INIT 0
// Turn on to enable memory usage summary on each frame
#define DEBUG_MEMORY_USAGE 0
// Turn on to enable debugging of cache flushes
#define DEBUG_CACHE_FLUSH 0
// Turn on to enable layers debugging when rendered as regions
#define DEBUG_LAYERS_AS_REGIONS 0
// Turn on to enable debugging when the clip is not a rect
#define DEBUG_CLIP_REGIONS 0
// Turn on to display debug info about vertex/fragment shaders
#define DEBUG_PROGRAMS 0
// Turn on to display info about layers
#define DEBUG_LAYERS 0
// Turn on to display info about render buffers
#define DEBUG_RENDER_BUFFERS 0
// Turn on to make stencil operations easier to debug
#define DEBUG_STENCIL 0
// Turn on to display debug info about 9patch objects
#define DEBUG_PATCHES 0
// Turn on to "explode" 9patch objects
#define DEBUG_EXPLODE_PATCHES 0
// Turn on to display vertex and tex coords data about 9patch objects
// This flag requires DEBUG_PATCHES to be turned on
#define DEBUG_PATCHES_VERTICES 0
// Turn on to display vertex and tex coords data used by empty quads
// in 9patch objects
// This flag requires DEBUG_PATCHES to be turned on
#define DEBUG_PATCHES_EMPTY_VERTICES 0
// Turn on to display debug info about shapes
#define DEBUG_SHAPES 0
// Turn on to display debug info about textures
#define DEBUG_TEXTURES 0
// Turn on to display debug info about the layer renderer
#define DEBUG_LAYER_RENDERER 0
// Turn on to enable additional debugging in the font renderers
#define DEBUG_FONT_RENDERER 0
// Turn on to log draw operation batching and deferral information
#define DEBUG_DEFER 0
// Turn on to dump display list state
#define DEBUG_DISPLAY_LIST 0
// Turn on to insert an event marker for each display list op
#define DEBUG_DISPLAY_LIST_OPS_AS_EVENTS 0
#if DEBUG_INIT
#define INIT_LOGD(...) ALOGD(__VA_ARGS__)
#else
#define INIT_LOGD(...)
#endif
#endif // ANDROID_HWUI_DEBUG_H