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

Commit 2b6386e1 authored by Chia-I Wu's avatar Chia-I Wu
Browse files

surfaceflinger: add RenderEngine::mEGLDisplay

It does not make much sense to have EGLConfig/EGLContext but not
EGLDisplay in RenderEngine.  We also need this as we move forward on
making EGL an implementation detail of RenderEngine.

Test: SurfaceFlinger_test
Change-Id: I9e2c9b9817e2c2a9b2555ea575be6dcd91927b79
parent b2c76246
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -120,7 +120,8 @@ DisplayDevice::DisplayDevice(
     */
     */


    EGLSurface eglSurface;
    EGLSurface eglSurface;
    EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
    EGLDisplay display = mFlinger->getRenderEngine().getEGLDisplay();

    if (config == EGL_NO_CONFIG) {
    if (config == EGL_NO_CONFIG) {
        config = RenderEngine::chooseEglConfig(display, PIXEL_FORMAT_RGBA_8888,
        config = RenderEngine::chooseEglConfig(display, PIXEL_FORMAT_RGBA_8888,
                                               /*logConfig*/ false);
                                               /*logConfig*/ false);
+10 −4
Original line number Original line Diff line number Diff line
@@ -139,7 +139,7 @@ std::unique_ptr<RenderEngine> RenderEngine::create(EGLDisplay display,
        engine = std::make_unique<GLES20RenderEngine>(featureFlags);
        engine = std::make_unique<GLES20RenderEngine>(featureFlags);
        break;
        break;
    }
    }
    engine->setEGLHandles(config, ctxt);
    engine->setEGLHandles(display, config, ctxt);


    ALOGI("OpenGL ES informations:");
    ALOGI("OpenGL ES informations:");
    ALOGI("vendor    : %s", extensions.getVendor());
    ALOGI("vendor    : %s", extensions.getVendor());
@@ -155,18 +155,24 @@ std::unique_ptr<RenderEngine> RenderEngine::create(EGLDisplay display,
    return engine;
    return engine;
}
}


RenderEngine::RenderEngine() : mEGLConfig(NULL), mEGLContext(EGL_NO_CONTEXT) {
RenderEngine::RenderEngine() : mEGLDisplay(EGL_NO_DISPLAY), mEGLConfig(NULL),
    mEGLContext(EGL_NO_CONTEXT) {
}
}


RenderEngine::~RenderEngine() {
RenderEngine::~RenderEngine() {
}
}


void RenderEngine::setEGLHandles(EGLConfig config, EGLContext ctxt) {
void RenderEngine::setEGLHandles(EGLDisplay display, EGLConfig config, EGLContext ctxt) {
    mEGLDisplay = display;
    mEGLConfig = config;
    mEGLConfig = config;
    mEGLContext = ctxt;
    mEGLContext = ctxt;
}
}


EGLContext RenderEngine::getEGLConfig() const {
EGLDisplay RenderEngine::getEGLDisplay() const {
    return mEGLDisplay;
}

EGLConfig RenderEngine::getEGLConfig() const {
    return mEGLConfig;
    return mEGLConfig;
}
}


+3 −1
Original line number Original line Diff line number Diff line
@@ -50,9 +50,10 @@ class RenderEngine {
    };
    };
    static GlesVersion parseGlesVersion(const char* str);
    static GlesVersion parseGlesVersion(const char* str);


    EGLDisplay mEGLDisplay;
    EGLConfig mEGLConfig;
    EGLConfig mEGLConfig;
    EGLContext mEGLContext;
    EGLContext mEGLContext;
    void setEGLHandles(EGLConfig config, EGLContext ctxt);
    void setEGLHandles(EGLDisplay display, EGLConfig config, EGLContext ctxt);


    virtual void bindImageAsFramebuffer(EGLImageKHR image, uint32_t* texName, uint32_t* fbName, uint32_t* status) = 0;
    virtual void bindImageAsFramebuffer(EGLImageKHR image, uint32_t* texName, uint32_t* fbName, uint32_t* status) = 0;
    virtual void unbindFramebuffer(uint32_t texName, uint32_t fbName) = 0;
    virtual void unbindFramebuffer(uint32_t texName, uint32_t fbName) = 0;
@@ -127,6 +128,7 @@ public:
    virtual size_t getMaxTextureSize() const = 0;
    virtual size_t getMaxTextureSize() const = 0;
    virtual size_t getMaxViewportDims() const = 0;
    virtual size_t getMaxViewportDims() const = 0;


    EGLDisplay getEGLDisplay() const;
    EGLConfig getEGLConfig() const;
    EGLConfig getEGLConfig() const;
    EGLContext getEGLContext() const;
    EGLContext getEGLContext() const;
};
};