Loading services/surfaceflinger/CompositionEngine/include/compositionengine/RenderSurface.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,12 @@ public: // Sets the dataspace used for rendering the surface // Sets the dataspace used for rendering the surface virtual void setBufferDataspace(ui::Dataspace) = 0; virtual void setBufferDataspace(ui::Dataspace) = 0; // Sets the pixel format used for rendering the surface. // Changing the pixel format of the buffer will result in buffer // reallocation as well as some reconfiguration of the graphics context, // which are both expensive operations. virtual void setBufferPixelFormat(ui::PixelFormat) = 0; // Configures the protected rendering on the surface // Configures the protected rendering on the surface virtual void setProtected(bool useProtected) = 0; virtual void setProtected(bool useProtected) = 0; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -70,11 +70,13 @@ public: using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; using ClientTargetProperty = android::HWComposer::DeviceRequestedChanges::ClientTargetProperty; virtual bool anyLayersRequireClientComposition() const; virtual bool anyLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); virtual void applyClientTargetRequests(const ClientTargetProperty&); // Internal // Internal virtual void setConfiguration(const compositionengine::DisplayCreationArgs&); virtual void setConfiguration(const compositionengine::DisplayCreationArgs&); Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/RenderSurface.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,7 @@ public: const sp<Fence>& getClientTargetAcquireFence() const override; const sp<Fence>& getClientTargetAcquireFence() const override; void setBufferDataspace(ui::Dataspace) override; void setBufferDataspace(ui::Dataspace) override; void setBufferPixelFormat(ui::PixelFormat) override; void setDisplaySize(const ui::Size&) override; void setDisplaySize(const ui::Size&) override; void setProtected(bool useProtected) override; void setProtected(bool useProtected) override; status_t beginFrame(bool mustRecompose) override; status_t beginFrame(bool mustRecompose) override; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/mock/RenderSurface.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ public: MOCK_METHOD1(setDisplaySize, void(const ui::Size&)); MOCK_METHOD1(setDisplaySize, void(const ui::Size&)); MOCK_METHOD1(setProtected, void(bool)); MOCK_METHOD1(setProtected, void(bool)); MOCK_METHOD1(setBufferDataspace, void(ui::Dataspace)); MOCK_METHOD1(setBufferDataspace, void(ui::Dataspace)); MOCK_METHOD1(setBufferPixelFormat, void(ui::PixelFormat)); MOCK_METHOD1(beginFrame, status_t(bool mustRecompose)); MOCK_METHOD1(beginFrame, status_t(bool mustRecompose)); MOCK_METHOD2(prepareFrame, void(bool, bool)); MOCK_METHOD2(prepareFrame, void(bool, bool)); MOCK_METHOD1(dequeueBuffer, sp<GraphicBuffer>(base::unique_fd*)); MOCK_METHOD1(dequeueBuffer, sp<GraphicBuffer>(base::unique_fd*)); Loading services/surfaceflinger/CompositionEngine/src/Display.cpp +11 −0 Original line number Original line Diff line number Diff line Loading @@ -259,6 +259,7 @@ void Display::chooseCompositionStrategy() { applyChangedTypesToLayers(changes->changedTypes); applyChangedTypesToLayers(changes->changedTypes); applyDisplayRequests(changes->displayRequests); applyDisplayRequests(changes->displayRequests); applyLayerRequestsToLayers(changes->layerRequests); applyLayerRequestsToLayers(changes->layerRequests); applyClientTargetRequests(changes->clientTargetProperty); } } // Determine what type of composition we are doing from the final state // Determine what type of composition we are doing from the final state Loading Loading @@ -326,6 +327,16 @@ void Display::applyLayerRequestsToLayers(const LayerRequests& layerRequests) { } } } } void Display::applyClientTargetRequests(const ClientTargetProperty& clientTargetProperty) { if (clientTargetProperty.dataspace == ui::Dataspace::UNKNOWN) { return; } auto outputState = editState(); outputState.dataspace = clientTargetProperty.dataspace; getRenderSurface()->setBufferDataspace(clientTargetProperty.dataspace); getRenderSurface()->setBufferPixelFormat(clientTargetProperty.pixelFormat); } compositionengine::Output::FrameFences Display::presentAndGetFrameFences() { compositionengine::Output::FrameFences Display::presentAndGetFrameFences() { auto result = impl::Output::presentAndGetFrameFences(); auto result = impl::Output::presentAndGetFrameFences(); Loading Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/RenderSurface.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,12 @@ public: // Sets the dataspace used for rendering the surface // Sets the dataspace used for rendering the surface virtual void setBufferDataspace(ui::Dataspace) = 0; virtual void setBufferDataspace(ui::Dataspace) = 0; // Sets the pixel format used for rendering the surface. // Changing the pixel format of the buffer will result in buffer // reallocation as well as some reconfiguration of the graphics context, // which are both expensive operations. virtual void setBufferPixelFormat(ui::PixelFormat) = 0; // Configures the protected rendering on the surface // Configures the protected rendering on the surface virtual void setProtected(bool useProtected) = 0; virtual void setProtected(bool useProtected) = 0; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -70,11 +70,13 @@ public: using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; using ClientTargetProperty = android::HWComposer::DeviceRequestedChanges::ClientTargetProperty; virtual bool anyLayersRequireClientComposition() const; virtual bool anyLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); virtual void applyClientTargetRequests(const ClientTargetProperty&); // Internal // Internal virtual void setConfiguration(const compositionengine::DisplayCreationArgs&); virtual void setConfiguration(const compositionengine::DisplayCreationArgs&); Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/RenderSurface.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,7 @@ public: const sp<Fence>& getClientTargetAcquireFence() const override; const sp<Fence>& getClientTargetAcquireFence() const override; void setBufferDataspace(ui::Dataspace) override; void setBufferDataspace(ui::Dataspace) override; void setBufferPixelFormat(ui::PixelFormat) override; void setDisplaySize(const ui::Size&) override; void setDisplaySize(const ui::Size&) override; void setProtected(bool useProtected) override; void setProtected(bool useProtected) override; status_t beginFrame(bool mustRecompose) override; status_t beginFrame(bool mustRecompose) override; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/mock/RenderSurface.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ public: MOCK_METHOD1(setDisplaySize, void(const ui::Size&)); MOCK_METHOD1(setDisplaySize, void(const ui::Size&)); MOCK_METHOD1(setProtected, void(bool)); MOCK_METHOD1(setProtected, void(bool)); MOCK_METHOD1(setBufferDataspace, void(ui::Dataspace)); MOCK_METHOD1(setBufferDataspace, void(ui::Dataspace)); MOCK_METHOD1(setBufferPixelFormat, void(ui::PixelFormat)); MOCK_METHOD1(beginFrame, status_t(bool mustRecompose)); MOCK_METHOD1(beginFrame, status_t(bool mustRecompose)); MOCK_METHOD2(prepareFrame, void(bool, bool)); MOCK_METHOD2(prepareFrame, void(bool, bool)); MOCK_METHOD1(dequeueBuffer, sp<GraphicBuffer>(base::unique_fd*)); MOCK_METHOD1(dequeueBuffer, sp<GraphicBuffer>(base::unique_fd*)); Loading
services/surfaceflinger/CompositionEngine/src/Display.cpp +11 −0 Original line number Original line Diff line number Diff line Loading @@ -259,6 +259,7 @@ void Display::chooseCompositionStrategy() { applyChangedTypesToLayers(changes->changedTypes); applyChangedTypesToLayers(changes->changedTypes); applyDisplayRequests(changes->displayRequests); applyDisplayRequests(changes->displayRequests); applyLayerRequestsToLayers(changes->layerRequests); applyLayerRequestsToLayers(changes->layerRequests); applyClientTargetRequests(changes->clientTargetProperty); } } // Determine what type of composition we are doing from the final state // Determine what type of composition we are doing from the final state Loading Loading @@ -326,6 +327,16 @@ void Display::applyLayerRequestsToLayers(const LayerRequests& layerRequests) { } } } } void Display::applyClientTargetRequests(const ClientTargetProperty& clientTargetProperty) { if (clientTargetProperty.dataspace == ui::Dataspace::UNKNOWN) { return; } auto outputState = editState(); outputState.dataspace = clientTargetProperty.dataspace; getRenderSurface()->setBufferDataspace(clientTargetProperty.dataspace); getRenderSurface()->setBufferPixelFormat(clientTargetProperty.pixelFormat); } compositionengine::Output::FrameFences Display::presentAndGetFrameFences() { compositionengine::Output::FrameFences Display::presentAndGetFrameFences() { auto result = impl::Output::presentAndGetFrameFences(); auto result = impl::Output::presentAndGetFrameFences(); Loading