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

Commit ff12cba7 authored by Pablo Ceballos's avatar Pablo Ceballos Committed by Android (Google) Code Review
Browse files

Merge "BQ: Modify consumer buffer count interfaces"

parents 7208c058 19e3e06e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -207,7 +207,7 @@ bool GLHelper::createNamedSurfaceTexture(GLuint name, uint32_t w, uint32_t h,
    sp<GLConsumer> glc = new GLConsumer(consumer, name,
            GL_TEXTURE_EXTERNAL_OES, false, true);
    glc->setDefaultBufferSize(w, h);
    glc->setDefaultMaxBufferCount(3);
    producer->setMaxDequeuedBufferCount(2);
    glc->setConsumerUsageBits(GRALLOC_USAGE_HW_COMPOSER);

    sp<ANativeWindow> anw = new Surface(producer);
+2 −14
Original line number Diff line number Diff line
@@ -100,20 +100,8 @@ public:
    // is 1x1.
    virtual status_t setDefaultBufferSize(uint32_t width, uint32_t height);

    // setDefaultMaxBufferCount sets the default value for the maximum buffer
    // count (the initial default is 2). If the producer has requested a
    // buffer count using setBufferCount, the default buffer count will only
    // take effect if the producer sets the count back to zero.
    //
    // The count must be between 2 and NUM_BUFFER_SLOTS, inclusive.
    virtual status_t setDefaultMaxBufferCount(int bufferCount);

    // disableAsyncBuffer disables the extra buffer used in async mode
    // (when both producer and consumer have set their "isControlledByApp"
    // flag) and has dequeueBuffer() return WOULD_BLOCK instead.
    //
    // This can only be called before connect().
    virtual status_t disableAsyncBuffer();
    // see IGraphicBufferConsumer::setMaxBufferCount
    virtual status_t setMaxBufferCount(int bufferCount);

    // setMaxAcquiredBufferCount sets the maximum number of buffers that can
    // be acquired by the consumer at one time (default 1).  This call will
+3 −22
Original line number Diff line number Diff line
@@ -105,12 +105,6 @@ private:
    // connected, mDequeueCondition must be broadcast.
    int getMaxBufferCountLocked(bool async) const;

    // setDefaultMaxBufferCountLocked sets the maximum number of buffer slots
    // that will be used if the producer does not override the buffer slot
    // count. The count must be between 2 and NUM_BUFFER_SLOTS, inclusive. The
    // initial default is 2.
    status_t setDefaultMaxBufferCountLocked(int count);

    // freeBufferLocked frees the GraphicBuffer and sync resources for the
    // given slot.
    void freeBufferLocked(int slot);
@@ -196,10 +190,6 @@ private:
    // synchronous mode.
    mutable Condition mDequeueCondition;

    // mUseAsyncBuffer indicates whether an extra buffer is used in async mode
    // to prevent dequeueBuffer from blocking.
    bool mUseAsyncBuffer;

    // mDequeueBufferCannotBlock indicates whether dequeueBuffer is allowed to
    // block. This flag is set during connect when both the producer and
    // consumer are controlled by the application.
@@ -222,11 +212,9 @@ private:
    // is specified.
    android_dataspace mDefaultBufferDataSpace;

    // mDefaultMaxBufferCount is the default limit on the number of buffers that
    // will be allocated at one time. This default limit is set by the consumer.
    // The limit (as opposed to the default limit) may be overriden by the
    // producer.
    int mDefaultMaxBufferCount;
    // mMaxBufferCount is the limit on the number of buffers that will be
    // allocated at one time. This limit can be set by the consumer.
    int mMaxBufferCount;

    // mMaxAcquiredBufferCount is the number of buffers that the consumer may
    // acquire at one time. It defaults to 1, and can be changed by the consumer
@@ -240,13 +228,6 @@ private:
    // via setMaxDequeuedBufferCount.
    int mMaxDequeuedBufferCount;

    // mOverrideMaxBufferCount defaults to false and is set to true once the
    // producer has called setMaxDequeuedBufferCount or setAsyncMode. Once it is
    // set mDefaultMaxBufferCount is ignored and the max buffer count is
    // calculated based on mMaxAcquiredBufferCount, mMaxDequeuedBufferCount, and
    // mAsyncMode.
    bool mOverrideMaxBufferCount;

    // mBufferHasBeenQueued is true once a buffer has been queued. It is reset
    // when something causes all buffers to be freed (e.g., changing the buffer
    // count).
+1 −5
Original line number Diff line number Diff line
@@ -112,11 +112,6 @@ public:
    // union fence.
    void setReleaseFence(const sp<Fence>& fence);

    // setDefaultMaxBufferCount sets the default limit on the maximum number
    // of buffers that will be allocated at one time. The image producer may
    // override the limit.
    status_t setDefaultMaxBufferCount(int bufferCount);

    // getTransformMatrix retrieves the 4x4 texture coordinate transform matrix
    // associated with the texture image set by the most recent call to
    // updateTexImage.
@@ -201,6 +196,7 @@ public:
    status_t setDefaultBufferDataSpace(android_dataspace defaultDataSpace);
    status_t setConsumerUsageBits(uint32_t usage);
    status_t setTransformHint(uint32_t hint);
    status_t setMaxAcquiredBufferCount(int maxAcquiredBuffers);

    // detachFromContext detaches the GLConsumer from the calling thread's
    // current OpenGL ES context.  This context must be the same as the context
+13 −17
Original line number Diff line number Diff line
@@ -188,32 +188,28 @@ public:
    // * BAD_VALUE - either w or h was zero
    virtual status_t setDefaultBufferSize(uint32_t w, uint32_t h) = 0;

    // setDefaultMaxBufferCount sets the default value for the maximum buffer
    // count (the initial default is 2). If the producer has requested a
    // buffer count using setBufferCount, the default buffer count will only
    // take effect if the producer sets the count back to zero.
    // setMaxBufferCount sets the maximum value for the number of buffers used
    // in the buffer queue (the initial default is NUM_BUFFER_SLOTS). If a call
    // to setMaxAcquiredBufferCount (by the consumer), or a call to setAsyncMode
    // or setMaxDequeuedBufferCount (by the producer), would cause this value to
    // be exceeded then that call will fail. This call will fail if a producer
    // is connected to the BufferQueue.
    //
    // The count must be between 2 and NUM_BUFFER_SLOTS, inclusive.
    // The count must be between 1 and NUM_BUFFER_SLOTS, inclusive. The count
    // cannot be less than maxAcquiredBufferCount.
    //
    // Return of a value other than NO_ERROR means an error has occurred:
    // * BAD_VALUE - bufferCount was out of range (see above).
    virtual status_t setDefaultMaxBufferCount(int bufferCount) = 0;

    // disableAsyncBuffer disables the extra buffer used in async mode
    // (when both producer and consumer have set their "isControlledByApp"
    // flag) and has dequeueBuffer() return WOULD_BLOCK instead.
    //
    // This can only be called before consumerConnect().
    //
    // Return of a value other than NO_ERROR means an error has occurred:
    // * INVALID_OPERATION - attempting to call this after consumerConnect.
    virtual status_t disableAsyncBuffer() = 0;
    // * INVALID_OPERATION - attempting to call this after a producer connected.
    virtual status_t setMaxBufferCount(int bufferCount) = 0;

    // setMaxAcquiredBufferCount sets the maximum number of buffers that can
    // be acquired by the consumer at one time (default 1).  This call will
    // fail if a producer is connected to the BufferQueue.
    //
    // maxAcquiredBuffers must be (inclusive) between 1 and MAX_MAX_ACQUIRED_BUFFERS.
    // maxAcquiredBuffers must be (inclusive) between 1 and
    // MAX_MAX_ACQUIRED_BUFFERS. It also cannot cause the maxBufferCount value
    // to be exceeded.
    //
    // Return of a value other than NO_ERROR means an error has occurred:
    // * BAD_VALUE - maxAcquiredBuffers was out of range (see above).
Loading