Loading services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp +12 −5 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,7 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa const ui::Size& size, const ui::Size& maxSize) const ui::Size& size, const ui::Size& maxSize) : ConsumerBase(producer, consumer), : ConsumerBase(producer, consumer), mDisplayId(displayId), mDisplayId(displayId), mLimitedSize(limitSize(size)), mMaxSize(maxSize), mMaxSize(maxSize), mCurrentBufferSlot(-1), mCurrentBufferSlot(-1), mCurrentBuffer(), mCurrentBuffer(), Loading @@ -65,19 +66,25 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa mPreviousBuffer() { mPreviousBuffer() { ALOGV("Creating for display %s", to_string(displayId).c_str()); ALOGV("Creating for display %s", to_string(displayId).c_str()); for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) { mHwcBufferIds[i] = UINT64_MAX; } } void FramebufferSurface::initializeConsumer() { mName = "FramebufferSurface"; mName = "FramebufferSurface"; mConsumer->setConsumerName(mName); mConsumer->setConsumerName(mName); mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_COMPOSER); GRALLOC_USAGE_HW_COMPOSER); const auto limitedSize = limitSize(size); mConsumer->setDefaultBufferSize(mLimitedSize.width, mLimitedSize.height); mConsumer->setDefaultBufferSize(limitedSize.width, limitedSize.height); mConsumer->setMaxAcquiredBufferCount( mConsumer->setMaxAcquiredBufferCount( SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1); SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1); for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) { mHwcBufferIds[i] = UINT64_MAX; } } void FramebufferSurface::onFirstRef() { ConsumerBase::onFirstRef(); initializeConsumer(); } } void FramebufferSurface::resizeBuffers(const ui::Size& newSize) { void FramebufferSurface::resizeBuffers(const ui::Size& newSize) { Loading services/surfaceflinger/DisplayHardware/FramebufferSurface.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -54,9 +54,13 @@ public: virtual const sp<Fence>& getClientTargetAcquireFence() const override; virtual const sp<Fence>& getClientTargetAcquireFence() const override; void onFirstRef() override; private: private: friend class FramebufferSurfaceTest; friend class FramebufferSurfaceTest; void initializeConsumer(); // Limits the width and height by the maximum width specified. // Limits the width and height by the maximum width specified. ui::Size limitSize(const ui::Size&); ui::Size limitSize(const ui::Size&); Loading @@ -71,6 +75,8 @@ private: const PhysicalDisplayId mDisplayId; const PhysicalDisplayId mDisplayId; const ui::Size mLimitedSize; // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of // the device. // the device. const ui::Size mMaxSize; const ui::Size mMaxSize; Loading Loading
services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp +12 −5 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,7 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa const ui::Size& size, const ui::Size& maxSize) const ui::Size& size, const ui::Size& maxSize) : ConsumerBase(producer, consumer), : ConsumerBase(producer, consumer), mDisplayId(displayId), mDisplayId(displayId), mLimitedSize(limitSize(size)), mMaxSize(maxSize), mMaxSize(maxSize), mCurrentBufferSlot(-1), mCurrentBufferSlot(-1), mCurrentBuffer(), mCurrentBuffer(), Loading @@ -65,19 +66,25 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa mPreviousBuffer() { mPreviousBuffer() { ALOGV("Creating for display %s", to_string(displayId).c_str()); ALOGV("Creating for display %s", to_string(displayId).c_str()); for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) { mHwcBufferIds[i] = UINT64_MAX; } } void FramebufferSurface::initializeConsumer() { mName = "FramebufferSurface"; mName = "FramebufferSurface"; mConsumer->setConsumerName(mName); mConsumer->setConsumerName(mName); mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_COMPOSER); GRALLOC_USAGE_HW_COMPOSER); const auto limitedSize = limitSize(size); mConsumer->setDefaultBufferSize(mLimitedSize.width, mLimitedSize.height); mConsumer->setDefaultBufferSize(limitedSize.width, limitedSize.height); mConsumer->setMaxAcquiredBufferCount( mConsumer->setMaxAcquiredBufferCount( SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1); SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1); for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) { mHwcBufferIds[i] = UINT64_MAX; } } void FramebufferSurface::onFirstRef() { ConsumerBase::onFirstRef(); initializeConsumer(); } } void FramebufferSurface::resizeBuffers(const ui::Size& newSize) { void FramebufferSurface::resizeBuffers(const ui::Size& newSize) { Loading
services/surfaceflinger/DisplayHardware/FramebufferSurface.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -54,9 +54,13 @@ public: virtual const sp<Fence>& getClientTargetAcquireFence() const override; virtual const sp<Fence>& getClientTargetAcquireFence() const override; void onFirstRef() override; private: private: friend class FramebufferSurfaceTest; friend class FramebufferSurfaceTest; void initializeConsumer(); // Limits the width and height by the maximum width specified. // Limits the width and height by the maximum width specified. ui::Size limitSize(const ui::Size&); ui::Size limitSize(const ui::Size&); Loading @@ -71,6 +75,8 @@ private: const PhysicalDisplayId mDisplayId; const PhysicalDisplayId mDisplayId; const ui::Size mLimitedSize; // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of // the device. // the device. const ui::Size mMaxSize; const ui::Size mMaxSize; Loading