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

Commit 3e784674 authored by John Reck's avatar John Reck Committed by Android Git Automerger
Browse files

am ebd4f16e: am 982cc91d: am 8e9d7d55: Merge "Eliminate requireGlContext" into mnc-dev

* commit 'ebd4f16e':
  Eliminate requireGlContext
parents e85a3e54 ebd4f16e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "Properties.h"
#include "renderstate/RenderState.h"
#include "ShadowTessellator.h"
#include "utils/GLUtils.h"

#include <utils/Log.h>
#include <utils/String8.h>
@@ -276,6 +277,9 @@ void Caches::flush(FlushMode mode) {

    clearGarbage();
    glFinish();
    // Errors during cleanup should be considered non-fatal, dump them and
    // and move on. TODO: All errors or just errors like bad surface?
    GLUtils::dumpGLErrors();
}

///////////////////////////////////////////////////////////////////////////////
+0 −1
Original line number Diff line number Diff line
@@ -119,7 +119,6 @@ void DeferredLayerUpdater::doUpdateTexImage() {

void DeferredLayerUpdater::detachSurfaceTexture() {
    if (mSurfaceTexture.get()) {
        mRenderThread.eglManager().requireGlContext();
        status_t err = mSurfaceTexture->detachFromContext();
        if (err != 0) {
            // TODO: Elevate to fatal exception
+2 −1
Original line number Diff line number Diff line
@@ -169,7 +169,8 @@ void RenderState::debugOverdraw(bool enable, bool clear) {

void RenderState::requireGLContext() {
    assertOnGLThread();
    mRenderThread.eglManager().requireGlContext();
    LOG_ALWAYS_FATAL_IF(!mRenderThread.eglManager().hasEglContext(),
            "No GL context!");
}

void RenderState::assertOnGLThread() {
+2 −13
Original line number Diff line number Diff line
@@ -262,8 +262,6 @@ void CanvasContext::draw() {

    if (drew) {
        swapBuffers(dirty, width, height);
    } else {
        mEglManager.cancelFrame();
    }

    // TODO: Use a fence for real completion?
@@ -297,7 +295,6 @@ void CanvasContext::invokeFunctor(RenderThread& thread, Functor* functor) {
    ATRACE_CALL();
    DrawGlInfo::Mode mode = DrawGlInfo::kModeProcessNoContext;
    if (thread.eglManager().hasEglContext()) {
        thread.eglManager().requireGlContext();
        mode = DrawGlInfo::kModeProcess;
    }

@@ -318,7 +315,6 @@ static void destroyPrefetechedNode(RenderNode* node) {

void CanvasContext::freePrefetechedLayers() {
    if (mPrefetechedLayers.size()) {
        requireGlContext();
        std::for_each(mPrefetechedLayers.begin(), mPrefetechedLayers.end(), destroyPrefetechedNode);
        mPrefetechedLayers.clear();
    }
@@ -329,7 +325,6 @@ void CanvasContext::buildLayer(RenderNode* node) {
    if (!mEglManager.hasEglContext() || !mCanvas) {
        return;
    }
    requireGlContext();
    // buildLayer() will leave the tree in an unknown state, so we must stop drawing
    stopDrawing();

@@ -352,7 +347,6 @@ void CanvasContext::buildLayer(RenderNode* node) {
}

bool CanvasContext::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) {
    requireGlContext();
    layer->apply();
    return LayerRenderer::copyLayer(mRenderThread.renderState(), layer->backingLayer(), bitmap);
}
@@ -360,7 +354,6 @@ bool CanvasContext::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap)
void CanvasContext::destroyHardwareResources() {
    stopDrawing();
    if (mEglManager.hasEglContext()) {
        requireGlContext();
        freePrefetechedLayers();
        mRootRenderNode->destroyHardwareResources();
        Caches::getInstance().flush(Caches::kFlushMode_Layers);
@@ -372,7 +365,6 @@ void CanvasContext::trimMemory(RenderThread& thread, int level) {
    if (!thread.eglManager().hasEglContext()) return;

    ATRACE_CALL();
    thread.eglManager().requireGlContext();
    if (level >= TRIM_MEMORY_COMPLETE) {
        Caches::getInstance().flush(Caches::kFlushMode_Full);
        thread.eglManager().destroy();
@@ -382,7 +374,8 @@ void CanvasContext::trimMemory(RenderThread& thread, int level) {
}

void CanvasContext::runWithGlContext(RenderTask* task) {
    requireGlContext();
    LOG_ALWAYS_FATAL_IF(!mEglManager.hasEglContext(),
            "GL context not initialized!");
    task->run();
}

@@ -391,10 +384,6 @@ Layer* CanvasContext::createTextureLayer() {
    return LayerRenderer::createTextureLayer(mRenderThread.renderState());
}

void CanvasContext::requireGlContext() {
    mEglManager.requireGlContext();
}

void CanvasContext::setTextureAtlas(RenderThread& thread,
        const sp<GraphicBuffer>& buffer, int64_t* map, size_t mapSize) {
    thread.eglManager().setTextureAtlas(buffer, map, mapSize);
+0 −2
Original line number Diff line number Diff line
@@ -122,8 +122,6 @@ private:
    void swapBuffers(const SkRect& dirty, EGLint width, EGLint height);
    void requireSurface();

    void requireGlContext();

    void freePrefetechedLayers();

    RenderThread& mRenderThread;
Loading