Skip to content

Commit 9d66da8

Browse files
Dave BurkeAndroid (Google) Code Review
authored andcommitted
Merge "Revert "Discard framebuffer rendering queues when discarding layers"" into ics-mr1
2 parents 72a31ab + 7077506 commit 9d66da8

File tree

11 files changed

+5
-80
lines changed

11 files changed

+5
-80
lines changed

core/java/android/view/GLES20Canvas.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ static native void nUpdateTextureLayer(int layerId, int width, int height, boole
154154
static native void nSetTextureLayerTransform(int layerId, int matrix);
155155
static native void nDestroyLayer(int layerId);
156156
static native void nDestroyLayerDeferred(int layerId);
157-
static native void nFlushLayer(int layerId);
158157
static native boolean nCopyLayer(int layerId, int bitmap);
159158

160159
///////////////////////////////////////////////////////////////////////////

core/java/android/view/GLES20Layer.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,6 @@ void destroy() {
6060
}
6161
mLayer = 0;
6262
}
63-
64-
@Override
65-
void flush() {
66-
if (mLayer != 0) {
67-
GLES20Canvas.nFlushLayer(mLayer);
68-
}
69-
}
7063

7164
static class Finalizer {
7265
private int mLayerId;

core/java/android/view/HardwareLayer.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,6 @@ boolean isOpaque() {
115115
*/
116116
abstract void destroy();
117117

118-
/**
119-
* Flush the render queue associated with this layer.
120-
*/
121-
abstract void flush();
122-
123118
/**
124119
* This must be invoked before drawing onto this layer.
125120
* @param currentCanvas

core/java/android/view/View.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10146,12 +10146,6 @@ public void buildLayer() {
1014610146
break;
1014710147
}
1014810148
}
10149-
10150-
void flushLayer() {
10151-
if (mLayerType == LAYER_TYPE_HARDWARE && mHardwareLayer != null) {
10152-
mHardwareLayer.flush();
10153-
}
10154-
}
1015510149

1015610150
/**
1015710151
* <p>Returns a hardware layer that can be used to draw this view again
@@ -10164,9 +10158,6 @@ HardwareLayer getHardwareLayer() {
1016410158
!mAttachInfo.mHardwareRenderer.isEnabled()) {
1016510159
return null;
1016610160
}
10167-
10168-
if (!mAttachInfo.mHardwareRenderer.validate()) return null;
10169-
1017010161

1017110162
final int width = mRight - mLeft;
1017210163
final int height = mBottom - mTop;
@@ -10241,14 +10232,8 @@ HardwareLayer getHardwareLayer() {
1024110232
*/
1024210233
boolean destroyLayer() {
1024310234
if (mHardwareLayer != null) {
10244-
AttachInfo info = mAttachInfo;
10245-
if (info != null && info.mHardwareRenderer != null &&
10246-
info.mHardwareRenderer.isEnabled()) {
10247-
if (!info.mHardwareRenderer.validate()) {
10248-
mHardwareLayer.destroy();
10249-
mHardwareLayer = null;
10250-
}
10251-
}
10235+
mHardwareLayer.destroy();
10236+
mHardwareLayer = null;
1025210237
return true;
1025310238
}
1025410239
return false;

core/java/android/view/ViewGroup.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2957,16 +2957,6 @@ public void setChildrenLayersEnabled(boolean enabled) {
29572957
if (enabled != mDrawLayers) {
29582958
mDrawLayers = enabled;
29592959
invalidate(true);
2960-
2961-
AttachInfo info = mAttachInfo;
2962-
if (info != null && info.mHardwareRenderer != null &&
2963-
info.mHardwareRenderer.isEnabled()) {
2964-
if (!info.mHardwareRenderer.validate()) {
2965-
enabled = false;
2966-
}
2967-
} else {
2968-
enabled = false;
2969-
}
29702960

29712961
// We need to invalidate any child with a layer. For instance,
29722962
// if a child is backed by a hardware layer and we disable layers
@@ -2978,7 +2968,6 @@ public void setChildrenLayersEnabled(boolean enabled) {
29782968
for (int i = 0; i < mChildrenCount; i++) {
29792969
View child = mChildren[i];
29802970
if (child.mLayerType != LAYER_TYPE_NONE) {
2981-
if (!enabled) child.flushLayer();
29822971
child.invalidate(true);
29832972
}
29842973
}

core/jni/android_view_GLES20Canvas.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -718,10 +718,6 @@ static void android_view_GLES20Canvas_destroyLayerDeferred(JNIEnv* env,
718718
LayerRenderer::destroyLayerDeferred(layer);
719719
}
720720

721-
static void android_view_GLES20Canvas_flushLayer(JNIEnv* env, jobject clazz, Layer* layer) {
722-
LayerRenderer::flushLayer(layer);
723-
}
724-
725721
static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz,
726722
OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y, SkPaint* paint) {
727723
renderer->drawLayer(layer, x, y, paint);
@@ -864,7 +860,6 @@ static JNINativeMethod gMethods[] = {
864860
{ "nSetTextureLayerTransform", "(II)V", (void*) android_view_GLES20Canvas_setTextureLayerTransform },
865861
{ "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer },
866862
{ "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred },
867-
{ "nFlushLayer", "(I)V", (void*) android_view_GLES20Canvas_flushLayer },
868863
{ "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer },
869864
{ "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer },
870865

libs/hwui/Android.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ ifeq ($(USE_OPENGL_RENDERER),true)
3838
external/skia/src/ports \
3939
external/skia/include/utils
4040

41-
LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DGL_GLEXT_PROTOTYPES
41+
LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER
4242
LOCAL_CFLAGS += -fvisibility=hidden
4343
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
4444
LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui

libs/hwui/Extensions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ class Extensions {
6666

6767
mHasNPot = hasExtension("GL_OES_texture_npot");
6868
mHasFramebufferFetch = hasExtension("GL_NV_shader_framebuffer_fetch");
69-
mHasDiscardFramebuffer = hasExtension("GL_EXT_discard_framebuffer");
7069

7170
const char* vendor = (const char*) glGetString(GL_VENDOR);
7271
EXT_LOGD("Vendor: %s", vendor);
@@ -81,7 +80,6 @@ class Extensions {
8180
inline bool hasNPot() const { return mHasNPot; }
8281
inline bool hasFramebufferFetch() const { return mHasFramebufferFetch; }
8382
inline bool needsHighpTexCoords() const { return mNeedsHighpTexCoords; }
84-
inline bool hasDiscardFramebuffer() const { return mHasDiscardFramebuffer; }
8583

8684
bool hasExtension(const char* extension) const {
8785
const String8 s(extension);
@@ -100,7 +98,6 @@ class Extensions {
10098
bool mHasNPot;
10199
bool mNeedsHighpTexCoords;
102100
bool mHasFramebufferFetch;
103-
bool mHasDiscardFramebuffer;
104101
}; // class Extensions
105102

106103
}; // namespace uirenderer

libs/hwui/LayerRenderer.cpp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,8 @@ void LayerRenderer::destroyLayer(Layer* layer) {
305305
LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d",
306306
layer->getWidth(), layer->getHeight(), layer->getFbo());
307307

308-
GLuint fbo = layer->getFbo();
309-
if (fbo) {
310-
flushLayer(layer);
311-
Caches::getInstance().fboCache.put(fbo);
308+
if (layer->getFbo()) {
309+
Caches::getInstance().fboCache.put(layer->getFbo());
312310
}
313311

314312
if (!Caches::getInstance().layerCache.put(layer)) {
@@ -333,26 +331,6 @@ void LayerRenderer::destroyLayerDeferred(Layer* layer) {
333331
}
334332
}
335333

336-
void LayerRenderer::flushLayer(Layer* layer) {
337-
#ifdef GL_EXT_discard_framebuffer
338-
GLuint fbo = layer->getFbo();
339-
if (layer && fbo) {
340-
// If possible, discard any enqued operations on deferred
341-
// rendering architectures
342-
if (Caches::getInstance().extensions.hasDiscardFramebuffer()) {
343-
GLuint previousFbo;
344-
glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);
345-
346-
GLenum attachments = GL_COLOR_ATTACHMENT0;
347-
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
348-
glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, &attachments);
349-
350-
glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
351-
}
352-
}
353-
#endif
354-
}
355-
356334
bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) {
357335
Caches& caches = Caches::getInstance();
358336
if (layer && layer->isTextureLayer() && bitmap->width() <= caches.maxTextureSize &&

libs/hwui/LayerRenderer.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ class LayerRenderer: public OpenGLRenderer {
6161
bool isOpaque, GLenum renderTarget, float* transform);
6262
ANDROID_API static void destroyLayer(Layer* layer);
6363
ANDROID_API static void destroyLayerDeferred(Layer* layer);
64-
ANDROID_API static void flushLayer(Layer* layer);
6564
ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap);
6665

6766
private:

0 commit comments

Comments
 (0)