diff options
| author | 2011-11-14 11:39:30 -0800 | |
|---|---|---|
| committer | 2011-11-14 11:39:30 -0800 | |
| commit | 7077506f9945b87b02bdd47ffce75a5b813c821c (patch) | |
| tree | 303448affa31375afa0a721d8d5555801ead8454 | |
| parent | cde433c5f75fd4ac2ab31e9fc34654750d1e83f8 (diff) | |
Revert "Discard framebuffer rendering queues when discarding layers"
This reverts commit da96f8ac2c1c35a54f3f36e6d776cb386a251d03.
| -rw-r--r-- | core/java/android/view/GLES20Canvas.java | 1 | ||||
| -rw-r--r-- | core/java/android/view/GLES20Layer.java | 7 | ||||
| -rw-r--r-- | core/java/android/view/HardwareLayer.java | 5 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 19 | ||||
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 11 | ||||
| -rw-r--r-- | core/jni/android_view_GLES20Canvas.cpp | 5 | ||||
| -rw-r--r-- | libs/hwui/Android.mk | 2 | ||||
| -rw-r--r-- | libs/hwui/Extensions.h | 3 | ||||
| -rw-r--r-- | libs/hwui/LayerRenderer.cpp | 26 | ||||
| -rw-r--r-- | libs/hwui/LayerRenderer.h | 1 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 5 | 
11 files changed, 5 insertions, 80 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index ac06d2d9501c..d948ec28cbd2 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -154,7 +154,6 @@ class GLES20Canvas extends HardwareCanvas {      static native void nSetTextureLayerTransform(int layerId, int matrix);      static native void nDestroyLayer(int layerId);      static native void nDestroyLayerDeferred(int layerId); -    static native void nFlushLayer(int layerId);      static native boolean nCopyLayer(int layerId, int bitmap);      /////////////////////////////////////////////////////////////////////////// diff --git a/core/java/android/view/GLES20Layer.java b/core/java/android/view/GLES20Layer.java index 4f25792d6317..fd3b9e55b111 100644 --- a/core/java/android/view/GLES20Layer.java +++ b/core/java/android/view/GLES20Layer.java @@ -60,13 +60,6 @@ abstract class GLES20Layer extends HardwareLayer {          }          mLayer = 0;      } -     -    @Override -    void flush() { -        if (mLayer != 0) { -            GLES20Canvas.nFlushLayer(mLayer); -        } -    }      static class Finalizer {          private int mLayerId; diff --git a/core/java/android/view/HardwareLayer.java b/core/java/android/view/HardwareLayer.java index d5666f37d7ab..28389abc3421 100644 --- a/core/java/android/view/HardwareLayer.java +++ b/core/java/android/view/HardwareLayer.java @@ -116,11 +116,6 @@ abstract class HardwareLayer {      abstract void destroy();      /** -     * Flush the render queue associated with this layer. -     */ -    abstract void flush(); - -    /**       * This must be invoked before drawing onto this layer.       * @param currentCanvas       */ diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 3bddeef1d4f7..dc46d424450f 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10146,12 +10146,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal                  break;          }      } -     -    void flushLayer() { -        if (mLayerType == LAYER_TYPE_HARDWARE && mHardwareLayer != null) { -            mHardwareLayer.flush(); -        } -    }      /**       * <p>Returns a hardware layer that can be used to draw this view again @@ -10164,9 +10158,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal                  !mAttachInfo.mHardwareRenderer.isEnabled()) {              return null;          } -         -        if (!mAttachInfo.mHardwareRenderer.validate()) return null; -                  final int width = mRight - mLeft;          final int height = mBottom - mTop; @@ -10241,14 +10232,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal       */      boolean destroyLayer() {          if (mHardwareLayer != null) { -            AttachInfo info = mAttachInfo; -            if (info != null && info.mHardwareRenderer != null && -                    info.mHardwareRenderer.isEnabled()) { -                if (!info.mHardwareRenderer.validate()) { -                    mHardwareLayer.destroy(); -                    mHardwareLayer = null;                     -                } -            } +            mHardwareLayer.destroy(); +            mHardwareLayer = null;              return true;          }          return false; diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 50b34b016a98..e366e72976c0 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2957,16 +2957,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager          if (enabled != mDrawLayers) {              mDrawLayers = enabled;              invalidate(true); -             -            AttachInfo info = mAttachInfo; -            if (info != null && info.mHardwareRenderer != null && -                    info.mHardwareRenderer.isEnabled()) { -                if (!info.mHardwareRenderer.validate()) { -                    enabled = false; -                } -            } else { -                enabled = false; -            }              // We need to invalidate any child with a layer. For instance,              // if a child is backed by a hardware layer and we disable layers @@ -2978,7 +2968,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager              for (int i = 0; i < mChildrenCount; i++) {                  View child = mChildren[i];                  if (child.mLayerType != LAYER_TYPE_NONE) { -                    if (!enabled) child.flushLayer();                      child.invalidate(true);                  }              } diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp index 78b8e8ede38a..4f75fad684f3 100644 --- a/core/jni/android_view_GLES20Canvas.cpp +++ b/core/jni/android_view_GLES20Canvas.cpp @@ -718,10 +718,6 @@ static void android_view_GLES20Canvas_destroyLayerDeferred(JNIEnv* env,      LayerRenderer::destroyLayerDeferred(layer);  } -static void android_view_GLES20Canvas_flushLayer(JNIEnv* env, jobject clazz, Layer* layer) { -    LayerRenderer::flushLayer(layer); -} -  static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz,          OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y, SkPaint* paint) {      renderer->drawLayer(layer, x, y, paint); @@ -864,7 +860,6 @@ static JNINativeMethod gMethods[] = {      { "nSetTextureLayerTransform", "(II)V",    (void*) android_view_GLES20Canvas_setTextureLayerTransform },      { "nDestroyLayer",           "(I)V",       (void*) android_view_GLES20Canvas_destroyLayer },      { "nDestroyLayerDeferred",   "(I)V",       (void*) android_view_GLES20Canvas_destroyLayerDeferred }, -    { "nFlushLayer",             "(I)V",       (void*) android_view_GLES20Canvas_flushLayer },      { "nDrawLayer",              "(IIFFI)V",   (void*) android_view_GLES20Canvas_drawLayer },      { "nCopyLayer",              "(II)Z",      (void*) android_view_GLES20Canvas_copyLayer }, diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk index 95e0a181333e..9bfc94cb11fd 100644 --- a/libs/hwui/Android.mk +++ b/libs/hwui/Android.mk @@ -38,7 +38,7 @@ ifeq ($(USE_OPENGL_RENDERER),true)  		external/skia/src/ports \  		external/skia/include/utils -	LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DGL_GLEXT_PROTOTYPES +	LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER  	LOCAL_CFLAGS += -fvisibility=hidden  	LOCAL_MODULE_CLASS := SHARED_LIBRARIES  	LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h index 48e42471aa65..38d113000480 100644 --- a/libs/hwui/Extensions.h +++ b/libs/hwui/Extensions.h @@ -66,7 +66,6 @@ public:          mHasNPot = hasExtension("GL_OES_texture_npot");          mHasFramebufferFetch = hasExtension("GL_NV_shader_framebuffer_fetch"); -        mHasDiscardFramebuffer = hasExtension("GL_EXT_discard_framebuffer");          const char* vendor = (const char*) glGetString(GL_VENDOR);          EXT_LOGD("Vendor: %s", vendor); @@ -81,7 +80,6 @@ public:      inline bool hasNPot() const { return mHasNPot; }      inline bool hasFramebufferFetch() const { return mHasFramebufferFetch; }      inline bool needsHighpTexCoords() const { return mNeedsHighpTexCoords; } -    inline bool hasDiscardFramebuffer() const { return mHasDiscardFramebuffer; }      bool hasExtension(const char* extension) const {          const String8 s(extension); @@ -100,7 +98,6 @@ private:      bool mHasNPot;      bool mNeedsHighpTexCoords;      bool mHasFramebufferFetch; -    bool mHasDiscardFramebuffer;  }; // class Extensions  }; // namespace uirenderer diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index b7c079b585a3..e38b4794bcae 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -305,10 +305,8 @@ void LayerRenderer::destroyLayer(Layer* layer) {          LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d",                  layer->getWidth(), layer->getHeight(), layer->getFbo()); -        GLuint fbo = layer->getFbo(); -        if (fbo) { -            flushLayer(layer); -            Caches::getInstance().fboCache.put(fbo); +        if (layer->getFbo()) { +            Caches::getInstance().fboCache.put(layer->getFbo());          }          if (!Caches::getInstance().layerCache.put(layer)) { @@ -333,26 +331,6 @@ void LayerRenderer::destroyLayerDeferred(Layer* layer) {      }  } -void LayerRenderer::flushLayer(Layer* layer) { -#ifdef GL_EXT_discard_framebuffer -    GLuint fbo = layer->getFbo(); -    if (layer && fbo) { -        // If possible, discard any enqued operations on deferred -        // rendering architectures -        if (Caches::getInstance().extensions.hasDiscardFramebuffer()) { -            GLuint previousFbo; -            glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo); - -            GLenum attachments = GL_COLOR_ATTACHMENT0; -            glBindFramebuffer(GL_FRAMEBUFFER, fbo); -            glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, &attachments); - -            glBindFramebuffer(GL_FRAMEBUFFER, previousFbo); -        } -    } -#endif -} -  bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) {      Caches& caches = Caches::getInstance();      if (layer && layer->isTextureLayer() && bitmap->width() <= caches.maxTextureSize && diff --git a/libs/hwui/LayerRenderer.h b/libs/hwui/LayerRenderer.h index 72d8d81aa130..61043015f768 100644 --- a/libs/hwui/LayerRenderer.h +++ b/libs/hwui/LayerRenderer.h @@ -61,7 +61,6 @@ public:              bool isOpaque, GLenum renderTarget, float* transform);      ANDROID_API static void destroyLayer(Layer* layer);      ANDROID_API static void destroyLayerDeferred(Layer* layer); -    ANDROID_API static void flushLayer(Layer* layer);      ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap);  private: diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 1a8c19977ca6..32595e4a55ae 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -611,11 +611,6 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {      }      if (fboLayer) { -        // Note: No need to use glDiscardFramebufferEXT() since we never -        //       create/compose layers that are not on screen with this -        //       code path -        // See LayerRenderer::destroyLayer(Layer*) -          // Detach the texture from the FBO          glBindFramebuffer(GL_FRAMEBUFFER, current->fbo);          glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);  |