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

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

surfaceflinger: simplify BufferLayerConsumer constructor

Remove texTarget and isControlledByApp.

Test: boots
Change-Id: Ica15c618d5aaaf17a1dfc6abe1e0a2777015f1a0
parent 6aff69be
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -105,9 +105,8 @@ static bool isEglImageCroppable(const Rect& crop) {
    return hasEglAndroidImageCrop() && (crop.left == 0 && crop.top == 0);
}

BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex,
                                         uint32_t texTarget, bool isControlledByApp)
      : ConsumerBase(bq, isControlledByApp),
BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex)
      : ConsumerBase(bq, false),
        mCurrentCrop(Rect::EMPTY_RECT),
        mCurrentTransform(0),
        mCurrentScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE),
@@ -119,7 +118,6 @@ BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, u
        mDefaultHeight(1),
        mFilteringEnabled(true),
        mTexName(tex),
        mTexTarget(texTarget),
        mEglDisplay(EGL_NO_DISPLAY),
        mEglContext(EGL_NO_CONTEXT),
        mCurrentTexture(BufferQueue::INVALID_BUFFER_SLOT) {
@@ -167,7 +165,7 @@ status_t BufferLayerConsumer::updateTexImage() {
        if (err == BufferQueue::NO_BUFFER_AVAILABLE) {
            // We always bind the texture even if we don't update its contents.
            BLC_LOGV("updateTexImage: no buffers were available");
            glBindTexture(mTexTarget, mTexName);
            glBindTexture(sTexTarget, mTexName);
            err = NO_ERROR;
        } else {
            BLC_LOGE("updateTexImage: acquire failed: %s (%d)", strerror(-err), err);
@@ -179,7 +177,7 @@ status_t BufferLayerConsumer::updateTexImage() {
    err = updateAndReleaseLocked(item);
    if (err != NO_ERROR) {
        // We always bind the texture.
        glBindTexture(mTexTarget, mTexName);
        glBindTexture(sTexTarget, mTexName);
        return err;
    }

@@ -299,7 +297,7 @@ status_t BufferLayerConsumer::bindTextureImageLocked() {
        BLC_LOGW("bindTextureImage: clearing GL error: %#04x", error);
    }

    glBindTexture(mTexTarget, mTexName);
    glBindTexture(sTexTarget, mTexName);
    if (mCurrentTexture == BufferQueue::INVALID_BUFFER_SLOT && mCurrentTextureImage == NULL) {
        BLC_LOGE("bindTextureImage: no currently-bound texture");
        return NO_INIT;
@@ -311,7 +309,7 @@ status_t BufferLayerConsumer::bindTextureImageLocked() {
                 mCurrentTexture);
        return UNKNOWN_ERROR;
    }
    mCurrentTextureImage->bindToTextureTarget(mTexTarget);
    mCurrentTextureImage->bindToTextureTarget(sTexTarget);

    // Wait for the new buffer to be ready.
    return doGLFenceWaitLocked();
@@ -387,10 +385,6 @@ status_t BufferLayerConsumer::syncForReleaseLocked(EGLDisplay dpy) {
    return OK;
}

uint32_t BufferLayerConsumer::getCurrentTextureTarget() const {
    return mTexTarget;
}

void BufferLayerConsumer::getTransformMatrix(float mtx[16]) {
    Mutex::Autolock lock(mMutex);
    memcpy(mtx, mCurrentTransformMatrix, sizeof(mCurrentTransformMatrix));
+7 −20
Original line number Diff line number Diff line
@@ -53,16 +53,12 @@ class String8;
 */
class BufferLayerConsumer : public ConsumerBase {
public:
    enum { TEXTURE_EXTERNAL = 0x8D65 }; // GL_TEXTURE_EXTERNAL_OES
    typedef ConsumerBase::FrameAvailableListener FrameAvailableListener;

    // BufferLayerConsumer constructs a new BufferLayerConsumer object.
    // The tex parameter indicates the name of the OpenGL ES
    // texture to which images are to be streamed. texTarget specifies the
    // OpenGL ES texture target to which the texture will be bound in
    // updateTexImage.
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex, uint32_t texureTarget,
                        bool isControlledByApp);
    // texture to which images are to be streamed.
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex);

    // updateTexImage acquires the most recently queued buffer, and sets the
    // image contents of the target texture to it.
@@ -147,10 +143,6 @@ public:
    // returned.
    sp<GraphicBuffer> getCurrentBuffer(int* outSlot = nullptr) const;

    // getCurrentTextureTarget returns the texture target of the current
    // texture as returned by updateTexImage().
    uint32_t getCurrentTextureTarget() const;

    // getCurrentCrop returns the cropping rectangle of the current buffer.
    Rect getCurrentCrop() const;

@@ -203,7 +195,7 @@ protected:
    status_t updateAndReleaseLocked(const BufferItem& item,
                                    PendingRelease* pendingRelease = nullptr);

    // Binds mTexName and the current buffer to mTexTarget.  Uses
    // Binds mTexName and the current buffer to sTexTarget.  Uses
    // mCurrentTexture if it's set, mCurrentTextureImage if not.  If the
    // bind succeeds, this calls doGLFenceWait.
    status_t bindTextureImageLocked();
@@ -288,6 +280,10 @@ private:
    // before the outstanding accesses have completed.
    status_t syncForReleaseLocked(EGLDisplay dpy);

    // sTexTarget is the GL texture target with which the GL texture object is
    // associated.
    static constexpr uint32_t sTexTarget = 0x8D65; // GL_TEXTURE_EXTERNAL_OES

    // The default consumer usage flags that BufferLayerConsumer always sets on its
    // BufferQueue instance; these will be OR:d with any additional flags passed
    // from the BufferLayerConsumer user. In particular, BufferLayerConsumer will always
@@ -345,15 +341,6 @@ private:
    // be bound when updateTexImage is called. It is set at construction time.
    const uint32_t mTexName;

    // mTexTarget is the GL texture target with which the GL texture object is
    // associated.  It is set in the constructor and never changed.  It is
    // almost always GL_TEXTURE_EXTERNAL_OES except for one use case in Android
    // Browser.  In that case it is set to GL_TEXTURE_2D to allow
    // glCopyTexSubImage to read from the texture.  This is a hack to work
    // around a GL driver limitation on the number of FBO attachments, which the
    // browser's tile cache exceeds.
    const uint32_t mTexTarget;

    // EGLSlot contains the information and object references that
    // BufferLayerConsumer maintains about a BufferQueue buffer slot.
    struct EglSlot {
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ public:

    SurfaceFlingerConsumer(const sp<IGraphicBufferConsumer>& consumer,
            uint32_t tex, Layer* layer)
        : BufferLayerConsumer(consumer, tex, BufferLayerConsumer::TEXTURE_EXTERNAL, false),
        : BufferLayerConsumer(consumer, tex),
          mTransformToDisplayInverse(false), mSurfaceDamage(), mLayer(layer)
    {}