Loading libs/hwui/Android.mk +14 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,11 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk HWUI_NEW_OPS := true # Enables fine-grained GLES error checking # If set to true, every GLES call is wrapped & error checked # Has moderate overhead HWUI_ENABLE_OPENGL_VALIDATION := false hwui_src_files := \ font/CacheTexture.cpp \ font/Font.cpp \ Loading Loading @@ -157,6 +162,13 @@ ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT)) frameworks/rs endif ifeq (true, $(HWUI_ENABLE_OPENGL_VALIDATION)) hwui_cflags += -include debug/wrap_gles.h hwui_src_files += debug/wrap_gles.cpp hwui_c_includes += frameworks/native/opengl/libs/GLES2 hwui_cflags += -DDEBUG_OPENGL=3 endif # ------------------------ # static library Loading Loading @@ -188,8 +200,8 @@ LOCAL_CFLAGS := \ -DHWUI_NULL_GPU LOCAL_SRC_FILES := \ $(hwui_src_files) \ tests/common/nullegl.cpp \ tests/common/nullgles.cpp debug/nullegl.cpp \ debug/nullgles.cpp LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include) LOCAL_EXPORT_C_INCLUDE_DIRS := $(hwui_c_includes) $(call hwui_proto_include) Loading libs/hwui/BakedOpDispatcher.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -784,9 +784,7 @@ void BakedOpDispatcher::onCopyFromLayerOp(BakedOpRenderer& renderer, const CopyF .build(); renderer.renderGlop(state, glop); } GL_CHECKPOINT(); renderer.renderState().layerPool().putOrDelete(*op.layerHandle); GL_CHECKPOINT(); } } // namespace uirenderer Loading libs/hwui/BakedOpRenderer.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ void BakedOpRenderer::startRepaintLayer(OffscreenBuffer* offscreenBuffer, const // attach the texture to the FBO glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, offscreenBuffer->texture.id(), 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "startLayer FAILED"); GL_CHECKPOINT(LOW); LOG_ALWAYS_FATAL_IF(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete!"); Loading @@ -63,7 +64,7 @@ void BakedOpRenderer::endLayer() { if (mRenderTarget.stencil) { // if stencil was used for clipping, detach it and return it to pool glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "glfbrb endlayer failed"); GL_CHECKPOINT(MODERATE); mCaches.renderBufferCache.put(mRenderTarget.stencil); mRenderTarget.stencil = nullptr; } Loading @@ -74,8 +75,7 @@ void BakedOpRenderer::endLayer() { // Detach the texture from the FBO glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "endLayer FAILED, bound fbo = %u", mRenderState.getFramebuffer()); GL_CHECKPOINT(LOW); mRenderState.deleteFramebuffer(mRenderTarget.frameBufferId); mRenderTarget.frameBufferId = 0; } Loading Loading @@ -139,8 +139,6 @@ void BakedOpRenderer::endFrame(const Rect& repaintRect) { mCaches.pathCache.trim(); mCaches.tessellationCache.trim(); GL_CHECKPOINT(); #if DEBUG_MEMORY_USAGE mCaches.dumpMemoryUsage(); #else Loading libs/hwui/Debug.h +11 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,18 @@ #ifndef ANDROID_HWUI_DEBUG_H #define ANDROID_HWUI_DEBUG_H #define DEBUG_LEVEL_HIGH 3 #define DEBUG_LEVEL_MODERATE 2 #define DEBUG_LEVEL_LOW 1 #define DEBUG_LEVEL_NONE 0 // Turn on to check for OpenGL errors on each frame #define DEBUG_OPENGL 1 // Note DEBUG_LEVEL_HIGH for DEBUG_OPENGL is only setable by enabling // HWUI_ENABLE_OPENGL_VALIDATION when building HWUI. Similarly if // HWUI_ENABLE_OPENGL_VALIDATION is set then this is always DEBUG_LEVEL_HIGH #ifndef DEBUG_OPENGL #define DEBUG_OPENGL DEBUG_LEVEL_LOW #endif // Turn on to enable initialization information #define DEBUG_INIT 0 Loading libs/hwui/FrameBuilder.h +8 −8 Original line number Diff line number Diff line Loading @@ -100,30 +100,30 @@ public: // Relay through layers in reverse order, since layers // later in the list will be drawn by earlier ones for (int i = mLayerBuilders.size() - 1; i >= 1; i--) { GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); LayerBuilder& layer = *(mLayerBuilders[i]); if (layer.renderNode) { // cached HW layer - can't skip layer if empty renderer.startRepaintLayer(layer.offscreenBuffer, layer.repaintRect); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); layer.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endLayer(); } else if (!layer.empty()) { // save layer - skip entire layer if empty layer.offscreenBuffer = renderer.startTemporaryLayer(layer.width, layer.height); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); layer.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endLayer(); } } GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); const LayerBuilder& fbo0 = *(mLayerBuilders[0]); renderer.startFrame(fbo0.width, fbo0.height, fbo0.repaintRect); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); fbo0.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endFrame(fbo0.repaintRect); } Loading Loading
libs/hwui/Android.mk +14 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,11 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk HWUI_NEW_OPS := true # Enables fine-grained GLES error checking # If set to true, every GLES call is wrapped & error checked # Has moderate overhead HWUI_ENABLE_OPENGL_VALIDATION := false hwui_src_files := \ font/CacheTexture.cpp \ font/Font.cpp \ Loading Loading @@ -157,6 +162,13 @@ ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT)) frameworks/rs endif ifeq (true, $(HWUI_ENABLE_OPENGL_VALIDATION)) hwui_cflags += -include debug/wrap_gles.h hwui_src_files += debug/wrap_gles.cpp hwui_c_includes += frameworks/native/opengl/libs/GLES2 hwui_cflags += -DDEBUG_OPENGL=3 endif # ------------------------ # static library Loading Loading @@ -188,8 +200,8 @@ LOCAL_CFLAGS := \ -DHWUI_NULL_GPU LOCAL_SRC_FILES := \ $(hwui_src_files) \ tests/common/nullegl.cpp \ tests/common/nullgles.cpp debug/nullegl.cpp \ debug/nullgles.cpp LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include) LOCAL_EXPORT_C_INCLUDE_DIRS := $(hwui_c_includes) $(call hwui_proto_include) Loading
libs/hwui/BakedOpDispatcher.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -784,9 +784,7 @@ void BakedOpDispatcher::onCopyFromLayerOp(BakedOpRenderer& renderer, const CopyF .build(); renderer.renderGlop(state, glop); } GL_CHECKPOINT(); renderer.renderState().layerPool().putOrDelete(*op.layerHandle); GL_CHECKPOINT(); } } // namespace uirenderer Loading
libs/hwui/BakedOpRenderer.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ void BakedOpRenderer::startRepaintLayer(OffscreenBuffer* offscreenBuffer, const // attach the texture to the FBO glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, offscreenBuffer->texture.id(), 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "startLayer FAILED"); GL_CHECKPOINT(LOW); LOG_ALWAYS_FATAL_IF(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, "framebuffer incomplete!"); Loading @@ -63,7 +64,7 @@ void BakedOpRenderer::endLayer() { if (mRenderTarget.stencil) { // if stencil was used for clipping, detach it and return it to pool glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "glfbrb endlayer failed"); GL_CHECKPOINT(MODERATE); mCaches.renderBufferCache.put(mRenderTarget.stencil); mRenderTarget.stencil = nullptr; } Loading @@ -74,8 +75,7 @@ void BakedOpRenderer::endLayer() { // Detach the texture from the FBO glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); LOG_ALWAYS_FATAL_IF(GLUtils::dumpGLErrors(), "endLayer FAILED, bound fbo = %u", mRenderState.getFramebuffer()); GL_CHECKPOINT(LOW); mRenderState.deleteFramebuffer(mRenderTarget.frameBufferId); mRenderTarget.frameBufferId = 0; } Loading Loading @@ -139,8 +139,6 @@ void BakedOpRenderer::endFrame(const Rect& repaintRect) { mCaches.pathCache.trim(); mCaches.tessellationCache.trim(); GL_CHECKPOINT(); #if DEBUG_MEMORY_USAGE mCaches.dumpMemoryUsage(); #else Loading
libs/hwui/Debug.h +11 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,18 @@ #ifndef ANDROID_HWUI_DEBUG_H #define ANDROID_HWUI_DEBUG_H #define DEBUG_LEVEL_HIGH 3 #define DEBUG_LEVEL_MODERATE 2 #define DEBUG_LEVEL_LOW 1 #define DEBUG_LEVEL_NONE 0 // Turn on to check for OpenGL errors on each frame #define DEBUG_OPENGL 1 // Note DEBUG_LEVEL_HIGH for DEBUG_OPENGL is only setable by enabling // HWUI_ENABLE_OPENGL_VALIDATION when building HWUI. Similarly if // HWUI_ENABLE_OPENGL_VALIDATION is set then this is always DEBUG_LEVEL_HIGH #ifndef DEBUG_OPENGL #define DEBUG_OPENGL DEBUG_LEVEL_LOW #endif // Turn on to enable initialization information #define DEBUG_INIT 0 Loading
libs/hwui/FrameBuilder.h +8 −8 Original line number Diff line number Diff line Loading @@ -100,30 +100,30 @@ public: // Relay through layers in reverse order, since layers // later in the list will be drawn by earlier ones for (int i = mLayerBuilders.size() - 1; i >= 1; i--) { GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); LayerBuilder& layer = *(mLayerBuilders[i]); if (layer.renderNode) { // cached HW layer - can't skip layer if empty renderer.startRepaintLayer(layer.offscreenBuffer, layer.repaintRect); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); layer.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endLayer(); } else if (!layer.empty()) { // save layer - skip entire layer if empty layer.offscreenBuffer = renderer.startTemporaryLayer(layer.width, layer.height); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); layer.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endLayer(); } } GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); const LayerBuilder& fbo0 = *(mLayerBuilders[0]); renderer.startFrame(fbo0.width, fbo0.height, fbo0.repaintRect); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); fbo0.replayBakedOpsImpl((void*)&renderer, unmergedReceivers, mergedReceivers); GL_CHECKPOINT(); GL_CHECKPOINT(MODERATE); renderer.endFrame(fbo0.repaintRect); } Loading