Loading services/surfaceflinger/BufferQueueLayer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -459,9 +459,11 @@ void BufferQueueLayer::onFirstRef() { // Creates a custom BufferQueue for SurfaceFlingerConsumer to use sp<IGraphicBufferProducer> producer; sp<IGraphicBufferConsumer> consumer; BufferQueue::createBufferQueue(&producer, &consumer, true); mProducer = new MonitoredProducer(producer, mFlinger, this); mConsumer = new BufferLayerConsumer(consumer, mFlinger->getRenderEngine(), mTextureName, this); mFlinger->getFactory().createBufferQueue(&producer, &consumer, true); mProducer = mFlinger->getFactory().createMonitoredProducer(producer, mFlinger, this); mConsumer = mFlinger->getFactory().createBufferLayerConsumer(consumer, mFlinger->getRenderEngine(), mTextureName, this); mConsumer->setConsumerUsageBits(getEffectiveUsage(0)); mConsumer->setContentsChangedListener(this); mConsumer->setName(mName); Loading services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -17,12 +17,14 @@ #include <compositionengine/impl/CompositionEngine.h> #include <ui/GraphicBuffer.h> #include "BufferLayerConsumer.h" #include "BufferQueueLayer.h" #include "BufferStateLayer.h" #include "ColorLayer.h" #include "ContainerLayer.h" #include "DisplayDevice.h" #include "Layer.h" #include "MonitoredProducer.h" #include "NativeWindowSurface.h" #include "StartPropertySetThread.h" #include "SurfaceFlingerDefaultFactory.h" Loading Loading @@ -92,6 +94,18 @@ void DefaultFactory::createBufferQueue(sp<IGraphicBufferProducer>* outProducer, BufferQueue::createBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); } sp<IGraphicBufferProducer> DefaultFactory::createMonitoredProducer( const sp<IGraphicBufferProducer>& producer, const sp<SurfaceFlinger>& flinger, const wp<Layer>& layer) { return new MonitoredProducer(producer, flinger, layer); } sp<BufferLayerConsumer> DefaultFactory::createBufferLayerConsumer( const sp<IGraphicBufferConsumer>& consumer, renderengine::RenderEngine& renderEngine, uint32_t textureName, Layer* layer) { return new BufferLayerConsumer(consumer, renderEngine, textureName, layer); } std::unique_ptr<surfaceflinger::NativeWindowSurface> DefaultFactory::createNativeWindowSurface( const sp<IGraphicBufferProducer>& producer) { return surfaceflinger::impl::createNativeWindowSurface(producer); Loading services/surfaceflinger/SurfaceFlingerDefaultFactory.h +6 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,12 @@ public: void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) override; sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>&, const sp<SurfaceFlinger>&, const wp<Layer>&) override; sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>&, renderengine::RenderEngine&, uint32_t tex, Layer*) override; std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>&) override; std::unique_ptr<compositionengine::CompositionEngine> createCompositionEngine() override; Loading services/surfaceflinger/SurfaceFlingerFactory.h +9 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ typedef int32_t PixelFormat; class BufferQueueLayer; class BufferStateLayer; class BufferLayerConsumer; class ColorLayer; class ContainerLayer; class DisplayDevice; Loading @@ -39,6 +40,7 @@ class GraphicBuffer; class HWComposer; class IGraphicBufferConsumer; class IGraphicBufferProducer; class Layer; class MessageQueue; class Scheduler; class StartPropertySetThread; Loading Loading @@ -85,6 +87,13 @@ public: virtual void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) = 0; virtual sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>&, const sp<SurfaceFlinger>&, const wp<Layer>&) = 0; virtual sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>&, renderengine::RenderEngine&, uint32_t tex, Layer*) = 0; virtual std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>&) = 0; Loading services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +16 −14 Original line number Diff line number Diff line Loading @@ -62,23 +62,19 @@ public: ~Factory() = default; std::unique_ptr<DispSync> createDispSync(const char*, bool) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<EventControlThread> createEventControlThread( std::function<void(bool)>) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<HWComposer> createHWComposer(const std::string&) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<MessageQueue> createMessageQueue() override { // TODO: Use test-fixture controlled factory return std::make_unique<android::impl::MessageQueue>(); } Loading @@ -88,39 +84,49 @@ public: std::unique_ptr<Scheduler> createScheduler(std::function<void(bool)>, const scheduler::RefreshRateConfigs&) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<SurfaceInterceptor> createSurfaceInterceptor(SurfaceFlinger* flinger) override { // TODO: Use test-fixture controlled factory return std::make_unique<android::impl::SurfaceInterceptor>(flinger); } sp<StartPropertySetThread> createStartPropertySetThread(bool timestampPropertyValue) override { // TODO: Use test-fixture controlled factory return new StartPropertySetThread(timestampPropertyValue); } sp<DisplayDevice> createDisplayDevice(DisplayDeviceCreationArgs&& creationArgs) override { // TODO: Use test-fixture controlled factory return new DisplayDevice(std::move(creationArgs)); } sp<GraphicBuffer> createGraphicBuffer(uint32_t width, uint32_t height, PixelFormat format, uint32_t layerCount, uint64_t usage, std::string requestorName) override { // TODO: Use test-fixture controlled factory return new GraphicBuffer(width, height, format, layerCount, usage, requestorName); } void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) override { if (!mCreateBufferQueue) return; if (!mCreateBufferQueue) { BufferQueue::createBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); return; } mCreateBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); } sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>& producer, const sp<SurfaceFlinger>& flinger, const wp<Layer>& layer) override { return new MonitoredProducer(producer, flinger, layer); } sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>& consumer, renderengine::RenderEngine& renderEngine, uint32_t textureName, Layer* layer) override { return new BufferLayerConsumer(consumer, renderEngine, textureName, layer); } std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>& producer) override { if (!mCreateNativeWindowSurface) return nullptr; Loading @@ -132,22 +138,18 @@ public: } sp<BufferQueueLayer> createBufferQueueLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<ColorLayer> createColorLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<ContainerLayer> createContainerLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } Loading Loading
services/surfaceflinger/BufferQueueLayer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -459,9 +459,11 @@ void BufferQueueLayer::onFirstRef() { // Creates a custom BufferQueue for SurfaceFlingerConsumer to use sp<IGraphicBufferProducer> producer; sp<IGraphicBufferConsumer> consumer; BufferQueue::createBufferQueue(&producer, &consumer, true); mProducer = new MonitoredProducer(producer, mFlinger, this); mConsumer = new BufferLayerConsumer(consumer, mFlinger->getRenderEngine(), mTextureName, this); mFlinger->getFactory().createBufferQueue(&producer, &consumer, true); mProducer = mFlinger->getFactory().createMonitoredProducer(producer, mFlinger, this); mConsumer = mFlinger->getFactory().createBufferLayerConsumer(consumer, mFlinger->getRenderEngine(), mTextureName, this); mConsumer->setConsumerUsageBits(getEffectiveUsage(0)); mConsumer->setContentsChangedListener(this); mConsumer->setName(mName); Loading
services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -17,12 +17,14 @@ #include <compositionengine/impl/CompositionEngine.h> #include <ui/GraphicBuffer.h> #include "BufferLayerConsumer.h" #include "BufferQueueLayer.h" #include "BufferStateLayer.h" #include "ColorLayer.h" #include "ContainerLayer.h" #include "DisplayDevice.h" #include "Layer.h" #include "MonitoredProducer.h" #include "NativeWindowSurface.h" #include "StartPropertySetThread.h" #include "SurfaceFlingerDefaultFactory.h" Loading Loading @@ -92,6 +94,18 @@ void DefaultFactory::createBufferQueue(sp<IGraphicBufferProducer>* outProducer, BufferQueue::createBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); } sp<IGraphicBufferProducer> DefaultFactory::createMonitoredProducer( const sp<IGraphicBufferProducer>& producer, const sp<SurfaceFlinger>& flinger, const wp<Layer>& layer) { return new MonitoredProducer(producer, flinger, layer); } sp<BufferLayerConsumer> DefaultFactory::createBufferLayerConsumer( const sp<IGraphicBufferConsumer>& consumer, renderengine::RenderEngine& renderEngine, uint32_t textureName, Layer* layer) { return new BufferLayerConsumer(consumer, renderEngine, textureName, layer); } std::unique_ptr<surfaceflinger::NativeWindowSurface> DefaultFactory::createNativeWindowSurface( const sp<IGraphicBufferProducer>& producer) { return surfaceflinger::impl::createNativeWindowSurface(producer); Loading
services/surfaceflinger/SurfaceFlingerDefaultFactory.h +6 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,12 @@ public: void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) override; sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>&, const sp<SurfaceFlinger>&, const wp<Layer>&) override; sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>&, renderengine::RenderEngine&, uint32_t tex, Layer*) override; std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>&) override; std::unique_ptr<compositionengine::CompositionEngine> createCompositionEngine() override; Loading
services/surfaceflinger/SurfaceFlingerFactory.h +9 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ typedef int32_t PixelFormat; class BufferQueueLayer; class BufferStateLayer; class BufferLayerConsumer; class ColorLayer; class ContainerLayer; class DisplayDevice; Loading @@ -39,6 +40,7 @@ class GraphicBuffer; class HWComposer; class IGraphicBufferConsumer; class IGraphicBufferProducer; class Layer; class MessageQueue; class Scheduler; class StartPropertySetThread; Loading Loading @@ -85,6 +87,13 @@ public: virtual void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) = 0; virtual sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>&, const sp<SurfaceFlinger>&, const wp<Layer>&) = 0; virtual sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>&, renderengine::RenderEngine&, uint32_t tex, Layer*) = 0; virtual std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>&) = 0; Loading
services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +16 −14 Original line number Diff line number Diff line Loading @@ -62,23 +62,19 @@ public: ~Factory() = default; std::unique_ptr<DispSync> createDispSync(const char*, bool) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<EventControlThread> createEventControlThread( std::function<void(bool)>) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<HWComposer> createHWComposer(const std::string&) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<MessageQueue> createMessageQueue() override { // TODO: Use test-fixture controlled factory return std::make_unique<android::impl::MessageQueue>(); } Loading @@ -88,39 +84,49 @@ public: std::unique_ptr<Scheduler> createScheduler(std::function<void(bool)>, const scheduler::RefreshRateConfigs&) override { // TODO: Use test-fixture controlled factory return nullptr; } std::unique_ptr<SurfaceInterceptor> createSurfaceInterceptor(SurfaceFlinger* flinger) override { // TODO: Use test-fixture controlled factory return std::make_unique<android::impl::SurfaceInterceptor>(flinger); } sp<StartPropertySetThread> createStartPropertySetThread(bool timestampPropertyValue) override { // TODO: Use test-fixture controlled factory return new StartPropertySetThread(timestampPropertyValue); } sp<DisplayDevice> createDisplayDevice(DisplayDeviceCreationArgs&& creationArgs) override { // TODO: Use test-fixture controlled factory return new DisplayDevice(std::move(creationArgs)); } sp<GraphicBuffer> createGraphicBuffer(uint32_t width, uint32_t height, PixelFormat format, uint32_t layerCount, uint64_t usage, std::string requestorName) override { // TODO: Use test-fixture controlled factory return new GraphicBuffer(width, height, format, layerCount, usage, requestorName); } void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, sp<IGraphicBufferConsumer>* outConsumer, bool consumerIsSurfaceFlinger) override { if (!mCreateBufferQueue) return; if (!mCreateBufferQueue) { BufferQueue::createBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); return; } mCreateBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger); } sp<IGraphicBufferProducer> createMonitoredProducer(const sp<IGraphicBufferProducer>& producer, const sp<SurfaceFlinger>& flinger, const wp<Layer>& layer) override { return new MonitoredProducer(producer, flinger, layer); } sp<BufferLayerConsumer> createBufferLayerConsumer(const sp<IGraphicBufferConsumer>& consumer, renderengine::RenderEngine& renderEngine, uint32_t textureName, Layer* layer) override { return new BufferLayerConsumer(consumer, renderEngine, textureName, layer); } std::unique_ptr<surfaceflinger::NativeWindowSurface> createNativeWindowSurface( const sp<IGraphicBufferProducer>& producer) override { if (!mCreateNativeWindowSurface) return nullptr; Loading @@ -132,22 +138,18 @@ public: } sp<BufferQueueLayer> createBufferQueueLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<ColorLayer> createColorLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } sp<ContainerLayer> createContainerLayer(const LayerCreationArgs&) override { // TODO: Use test-fixture controlled factory return nullptr; } Loading