Revert "libgui: Remove custom BufferQueue allocators"
This reverts commit acd5615057
.
Change-Id: I877f63a57fbddb4dcff71b3909b460ecc05981eb
This commit is contained in:
parent
acd5615057
commit
70982a5f95
7 changed files with 23 additions and 14 deletions
|
@ -25,6 +25,7 @@
|
|||
namespace android {
|
||||
|
||||
GLHelper::GLHelper() :
|
||||
mGraphicBufferAlloc(new GraphicBufferAlloc()),
|
||||
mDisplay(EGL_NO_DISPLAY),
|
||||
mContext(EGL_NO_CONTEXT),
|
||||
mDummySurface(EGL_NO_SURFACE),
|
||||
|
@ -202,7 +203,7 @@ bool GLHelper::createNamedSurfaceTexture(GLuint name, uint32_t w, uint32_t h,
|
|||
sp<GLConsumer>* glConsumer, EGLSurface* surface) {
|
||||
sp<IGraphicBufferProducer> producer;
|
||||
sp<IGraphicBufferConsumer> consumer;
|
||||
BufferQueue::createBufferQueue(&producer, &consumer);
|
||||
BufferQueue::createBufferQueue(&producer, &consumer, mGraphicBufferAlloc);
|
||||
sp<GLConsumer> glc = new GLConsumer(consumer, name,
|
||||
GL_TEXTURE_EXTERNAL_OES, false, true);
|
||||
glc->setDefaultBufferSize(w, h);
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gui/GraphicBufferAlloc.h>
|
||||
#include <gui/GLConsumer.h>
|
||||
#include <gui/Surface.h>
|
||||
#include <gui/SurfaceControl.h>
|
||||
|
@ -74,6 +75,8 @@ private:
|
|||
|
||||
bool setUpShaders(const ShaderDesc* shaderDescs, size_t numShaders);
|
||||
|
||||
sp<GraphicBufferAlloc> mGraphicBufferAlloc;
|
||||
|
||||
EGLDisplay mDisplay;
|
||||
EGLContext mContext;
|
||||
EGLSurface mDummySurface;
|
||||
|
|
|
@ -76,7 +76,8 @@ public:
|
|||
// producers and consumers. allocator is used to allocate all the
|
||||
// needed gralloc buffers.
|
||||
static void createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
|
||||
sp<IGraphicBufferConsumer>* outConsumer);
|
||||
sp<IGraphicBufferConsumer>* outConsumer,
|
||||
const sp<IGraphicBufferAlloc>& allocator = NULL);
|
||||
|
||||
private:
|
||||
BufferQueue(); // Create through createBufferQueue
|
||||
|
|
|
@ -75,7 +75,7 @@ public:
|
|||
// BufferQueueCore manages a pool of gralloc memory slots to be used by
|
||||
// producers and consumers. allocator is used to allocate all the needed
|
||||
// gralloc buffers.
|
||||
BufferQueueCore();
|
||||
BufferQueueCore(const sp<IGraphicBufferAlloc>& allocator = NULL);
|
||||
virtual ~BufferQueueCore();
|
||||
|
||||
private:
|
||||
|
|
|
@ -62,13 +62,14 @@ void BufferQueue::ProxyConsumerListener::onSidebandStreamChanged() {
|
|||
}
|
||||
|
||||
void BufferQueue::createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
|
||||
sp<IGraphicBufferConsumer>* outConsumer) {
|
||||
sp<IGraphicBufferConsumer>* outConsumer,
|
||||
const sp<IGraphicBufferAlloc>& allocator) {
|
||||
LOG_ALWAYS_FATAL_IF(outProducer == NULL,
|
||||
"BufferQueue: outProducer must not be NULL");
|
||||
LOG_ALWAYS_FATAL_IF(outConsumer == NULL,
|
||||
"BufferQueue: outConsumer must not be NULL");
|
||||
|
||||
sp<BufferQueueCore> core(new BufferQueueCore());
|
||||
sp<BufferQueueCore> core(new BufferQueueCore(allocator));
|
||||
LOG_ALWAYS_FATAL_IF(core == NULL,
|
||||
"BufferQueue: failed to create BufferQueueCore");
|
||||
|
||||
|
|
|
@ -38,8 +38,8 @@ static String8 getUniqueName() {
|
|||
android_atomic_inc(&counter));
|
||||
}
|
||||
|
||||
BufferQueueCore::BufferQueueCore() :
|
||||
mAllocator(),
|
||||
BufferQueueCore::BufferQueueCore(const sp<IGraphicBufferAlloc>& allocator) :
|
||||
mAllocator(allocator),
|
||||
mMutex(),
|
||||
mIsAbandoned(false),
|
||||
mConsumerControlledByApp(false),
|
||||
|
@ -75,12 +75,13 @@ BufferQueueCore::BufferQueueCore() :
|
|||
mSingleBufferCache(Rect::INVALID_RECT, 0, NATIVE_WINDOW_SCALING_MODE_FREEZE,
|
||||
HAL_DATASPACE_UNKNOWN)
|
||||
{
|
||||
sp<ISurfaceComposer> composer(ComposerService::getComposerService());
|
||||
mAllocator = composer->createGraphicBufferAlloc();
|
||||
if (mAllocator == NULL) {
|
||||
BQ_LOGE("createGraphicBufferAlloc failed");
|
||||
if (allocator == NULL) {
|
||||
sp<ISurfaceComposer> composer(ComposerService::getComposerService());
|
||||
mAllocator = composer->createGraphicBufferAlloc();
|
||||
if (mAllocator == NULL) {
|
||||
BQ_LOGE("createGraphicBufferAlloc failed");
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot = 0; slot < BufferQueueDefs::NUM_BUFFER_SLOTS; ++slot) {
|
||||
mFreeSlots.insert(slot);
|
||||
}
|
||||
|
|
|
@ -483,7 +483,8 @@ void SurfaceFlinger::init() {
|
|||
|
||||
sp<IGraphicBufferProducer> producer;
|
||||
sp<IGraphicBufferConsumer> consumer;
|
||||
BufferQueue::createBufferQueue(&producer, &consumer);
|
||||
BufferQueue::createBufferQueue(&producer, &consumer,
|
||||
new GraphicBufferAlloc());
|
||||
|
||||
sp<FramebufferSurface> fbs = new FramebufferSurface(*mHwc, i,
|
||||
consumer);
|
||||
|
@ -1435,7 +1436,8 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags)
|
|||
sp<IGraphicBufferProducer> producer;
|
||||
sp<IGraphicBufferProducer> bqProducer;
|
||||
sp<IGraphicBufferConsumer> bqConsumer;
|
||||
BufferQueue::createBufferQueue(&bqProducer, &bqConsumer);
|
||||
BufferQueue::createBufferQueue(&bqProducer, &bqConsumer,
|
||||
new GraphicBufferAlloc());
|
||||
|
||||
int32_t hwcDisplayId = -1;
|
||||
if (state.isVirtualDisplay()) {
|
||||
|
|
Loading…
Reference in a new issue