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

Commit 5686bae2 authored by Chris Craik's avatar Chris Craik
Browse files

Dump GL errors and crash on failure to allocate texture for layer

bug:22029728

Change-Id: Ib6f778975225b36567b12e30967955640ec185b3
parent bcca4ac4
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -14,15 +14,13 @@
 * limitations under the License.
 */

#define LOG_TAG "OpenGLRenderer"
#define ATRACE_TAG ATRACE_TAG_VIEW

#include "LayerCache.h"
#include "LayerRenderer.h"
#include "Matrix.h"
#include "Properties.h"
#include "Rect.h"
#include "renderstate/RenderState.h"
#include "utils/GLUtils.h"
#include "utils/TraceUtils.h"

#include <ui/Rect.h>
@@ -238,8 +236,9 @@ Layer* LayerRenderer::createRenderLayer(RenderState& renderState, uint32_t width
        layer->allocateTexture();

        // This should only happen if we run out of memory
        if (glGetError() != GL_NO_ERROR) {
            ALOGE("Could not allocate texture for layer (fbo=%d %dx%d)", fbo, width, height);
        if (CC_UNLIKELY(GLUtils::dumpGLErrors())) {
            LOG_ALWAYS_FATAL("Could not allocate texture for layer (fbo=%d %dx%d)",
                    fbo, width, height);
            renderState.bindFramebuffer(previousFbo);
            layer->decStrong(nullptr);
            return nullptr;
+4 −3
Original line number Diff line number Diff line
@@ -14,8 +14,6 @@
 * limitations under the License.
 */

#define LOG_TAG "OpenGLRenderer"

#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>

@@ -26,9 +24,11 @@
namespace android {
namespace uirenderer {

void GLUtils::dumpGLErrors() {
bool GLUtils::dumpGLErrors() {
    bool errorObserved = false;
    GLenum status = GL_NO_ERROR;
    while ((status = glGetError()) != GL_NO_ERROR) {
        errorObserved = true;
        switch (status) {
        case GL_INVALID_ENUM:
            ALOGE("GL error:  GL_INVALID_ENUM");
@@ -46,6 +46,7 @@ void GLUtils::dumpGLErrors() {
            ALOGE("GL error: 0x%x", status);
        }
    }
    return errorObserved;
}

}; // namespace uirenderer
+2 −3
Original line number Diff line number Diff line
@@ -20,12 +20,11 @@ namespace android {
namespace uirenderer {

class GLUtils {
private:
public:
    /**
     * Print out any GL errors with ALOGE
     * Print out any GL errors with ALOGE, returns true if any errors were found.
     */
    static void dumpGLErrors();
    static bool dumpGLErrors();

}; // class GLUtils