Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1fc883b2 authored by Romain Guy's avatar Romain Guy
Browse files

Add logging to the new layers API.

Change-Id: I78b9426eb17de3e775aca9fafe4a50bd9c0785c4
parent 3aaff3ae
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -44,4 +44,7 @@
// 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

#endif // ANDROID_HWUI_DEBUG_H
+22 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#define LOG_TAG "OpenGLRenderer"

#include "LayerRenderer.h"
#include "Properties.h"

namespace android {
namespace uirenderer {
@@ -26,14 +27,19 @@ namespace uirenderer {
///////////////////////////////////////////////////////////////////////////////

void LayerRenderer::prepare(bool opaque) {
    LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mFbo);

    glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &mPreviousFbo);
    glBindFramebuffer(GL_FRAMEBUFFER, mFbo);

    OpenGLRenderer::prepare(opaque);
}

void LayerRenderer::finish() {
    OpenGLRenderer::finish();
    glBindFramebuffer(GL_FRAMEBUFFER, mPreviousFbo);

    LAYER_RENDERER_LOGD("Finished rendering into layer, fbo = %d", mFbo);
}

///////////////////////////////////////////////////////////////////////////////
@@ -42,6 +48,8 @@ void LayerRenderer::finish() {

GLuint LayerRenderer::createLayer(uint32_t width, uint32_t height,
        uint32_t* layerWidth, uint32_t* layerHeight, GLuint* texture) {
    LAYER_RENDERER_LOGD("Creating new layer %dx%d", width, height);

    GLuint previousFbo;
    glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);

@@ -49,6 +57,12 @@ GLuint LayerRenderer::createLayer(uint32_t width, uint32_t height,
    glGenFramebuffers(1, &fbo);
    glBindFramebuffer(GL_FRAMEBUFFER, fbo);

    if (glGetError() != GL_NO_ERROR) {
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
        glDeleteBuffers(1, &fbo);
        return 0;
    }

    glActiveTexture(GL_TEXTURE0);
    glGenTextures(1, texture);
    glBindTexture(GL_TEXTURE_2D, *texture);
@@ -65,9 +79,9 @@ GLuint LayerRenderer::createLayer(uint32_t width, uint32_t height,
            GL_RGBA, GL_UNSIGNED_BYTE, NULL);

    if (glGetError() != GL_NO_ERROR) {
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
        glDeleteBuffers(1, &fbo);
        glDeleteTextures(1, texture);
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
        return 0;
    }

@@ -75,9 +89,9 @@ GLuint LayerRenderer::createLayer(uint32_t width, uint32_t height,
                *texture, 0);

    if (glGetError() != GL_NO_ERROR) {
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
        glDeleteBuffers(1, &fbo);
        glDeleteTextures(1, texture);
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
        return 0;
    }

@@ -91,6 +105,8 @@ GLuint LayerRenderer::createLayer(uint32_t width, uint32_t height,

void LayerRenderer::resizeLayer(GLuint fbo, GLuint texture, uint32_t width, uint32_t height,
        uint32_t* layerWidth, uint32_t* layerHeight) {
    LAYER_RENDERER_LOGD("Resizing layer fbo = %d to %dx%d", fbo, width, height);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, texture);

@@ -112,11 +128,15 @@ void LayerRenderer::resizeLayer(GLuint fbo, GLuint texture, uint32_t width, uint
}

void LayerRenderer::destroyLayer(GLuint fbo, GLuint texture) {
    LAYER_RENDERER_LOGD("Destroying layer, fbo = %d", fbo);

    if (fbo) glDeleteFramebuffers(1, &fbo);
    if (texture) glDeleteTextures(1, &texture);
}

void LayerRenderer::destroyLayerDeferred(GLuint fbo, GLuint texture) {
    LAYER_RENDERER_LOGD("Deferring layer destruction, fbo = %d", fbo);

    Caches& caches = Caches::getInstance();
    if (fbo) caches.deleteFboDeferred(fbo);
    if (texture) caches.deleteTextureDeferred(texture);
+11 −0
Original line number Diff line number Diff line
@@ -22,6 +22,17 @@
namespace android {
namespace uirenderer {

///////////////////////////////////////////////////////////////////////////////
// Defines
///////////////////////////////////////////////////////////////////////////////

// Debug
#if DEBUG_LAYER_RENDERER
    #define LAYER_RENDERER_LOGD(...) LOGD(__VA_ARGS__)
#else
    #define LAYER_RENDERER_LOGD(...)
#endif

///////////////////////////////////////////////////////////////////////////////
// Renderer
///////////////////////////////////////////////////////////////////////////////