Loading include/gui/ISurfaceComposer.h +18 −0 Original line number Diff line number Diff line Loading @@ -22,9 +22,12 @@ #include <utils/RefBase.h> #include <utils/Errors.h> #include <utils/Timers.h> #include <utils/Vector.h> #include <binder/IInterface.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <gui/IGraphicBufferAlloc.h> Loading Loading @@ -122,6 +125,19 @@ public: uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ, bool useIdentityTransform) = 0; /* Clears the frame statistics for animations. * * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t clearAnimationFrameStats() = 0; /* Gets the frame statistics for animations. * * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t getAnimationFrameStats(FrameStats* outStats) const = 0; }; // ---------------------------------------------------------------------------- Loading @@ -145,6 +161,8 @@ public: GET_DISPLAY_INFO, CONNECT_DISPLAY, CAPTURE_SCREEN, CLEAR_ANIMATION_FRAME_STATS, GET_ANIMATION_FRAME_STATS }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading include/gui/ISurfaceComposerClient.h +11 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/IInterface.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> namespace android { Loading Loading @@ -65,6 +66,16 @@ public: * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t destroySurface(const sp<IBinder>& handle) = 0; /* * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t clearLayerFrameStats(const sp<IBinder>& handle) const = 0; /* * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t getLayerFrameStats(const sp<IBinder>& handle, FrameStats* outStats) const = 0; }; // ---------------------------------------------------------------------------- Loading include/gui/SurfaceComposerClient.h +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <utils/SortedVector.h> #include <utils/threads.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <gui/CpuConsumer.h> Loading Loading @@ -125,6 +126,12 @@ public: status_t setLayerStack(const sp<IBinder>& id, uint32_t layerStack); status_t destroySurface(const sp<IBinder>& id); status_t clearLayerFrameStats(const sp<IBinder>& token) const; status_t getLayerFrameStats(const sp<IBinder>& token, FrameStats* outStats) const; static status_t clearAnimationFrameStats(); static status_t getAnimationFrameStats(FrameStats* outStats); static void setDisplaySurface(const sp<IBinder>& token, const sp<IGraphicBufferProducer>& bufferProducer); static void setDisplayLayerStack(const sp<IBinder>& token, Loading include/gui/SurfaceControl.h +7 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <utils/RefBase.h> #include <utils/threads.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <ui/Region.h> Loading Loading @@ -73,6 +74,9 @@ public: sp<Surface> getSurface() const; status_t clearLayerFrameStats() const; status_t getLayerFrameStats(FrameStats* outStats) const; private: // can't be copied SurfaceControl& operator = (SurfaceControl& rhs); Loading include/ui/FrameStats.h 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_UI_FRAME_STATS_H #define ANDROID_UI_FRAME_STATS_H #include <utils/Flattenable.h> #include <utils/Timers.h> #include <utils/Vector.h> namespace android { class FrameStats : public LightFlattenable<FrameStats> { public: /* * Approximate refresh time, in nanoseconds. */ nsecs_t refreshPeriodNano; /* * The times in nanoseconds for when the frame contents were posted by the producer (e.g. * the application). They are either explicitly set or defaulted to the time when * Surface::queueBuffer() was called. */ Vector<nsecs_t> desiredPresentTimesNano; /* * The times in milliseconds for when the frame contents were presented on the screen. */ Vector<nsecs_t> actualPresentTimesNano; /* * The times in nanoseconds for when the frame contents were ready to be presented. Note that * a frame can be posted and still it contents being rendered asynchronously in GL. In such a * case these are the times when the frame contents were completely rendered (i.e. their fences * signaled). */ Vector<nsecs_t> frameReadyTimesNano; // LightFlattenable bool isFixedSize() const; size_t getFlattenedSize() const; status_t flatten(void* buffer, size_t size) const; status_t unflatten(void const* buffer, size_t size); }; }; // namespace android #endif // ANDROID_UI_FRAME_STATS_H Loading
include/gui/ISurfaceComposer.h +18 −0 Original line number Diff line number Diff line Loading @@ -22,9 +22,12 @@ #include <utils/RefBase.h> #include <utils/Errors.h> #include <utils/Timers.h> #include <utils/Vector.h> #include <binder/IInterface.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <gui/IGraphicBufferAlloc.h> Loading Loading @@ -122,6 +125,19 @@ public: uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ, bool useIdentityTransform) = 0; /* Clears the frame statistics for animations. * * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t clearAnimationFrameStats() = 0; /* Gets the frame statistics for animations. * * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t getAnimationFrameStats(FrameStats* outStats) const = 0; }; // ---------------------------------------------------------------------------- Loading @@ -145,6 +161,8 @@ public: GET_DISPLAY_INFO, CONNECT_DISPLAY, CAPTURE_SCREEN, CLEAR_ANIMATION_FRAME_STATS, GET_ANIMATION_FRAME_STATS }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading
include/gui/ISurfaceComposerClient.h +11 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/IInterface.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> namespace android { Loading Loading @@ -65,6 +66,16 @@ public: * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t destroySurface(const sp<IBinder>& handle) = 0; /* * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t clearLayerFrameStats(const sp<IBinder>& handle) const = 0; /* * Requires ACCESS_SURFACE_FLINGER permission */ virtual status_t getLayerFrameStats(const sp<IBinder>& handle, FrameStats* outStats) const = 0; }; // ---------------------------------------------------------------------------- Loading
include/gui/SurfaceComposerClient.h +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <utils/SortedVector.h> #include <utils/threads.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <gui/CpuConsumer.h> Loading Loading @@ -125,6 +126,12 @@ public: status_t setLayerStack(const sp<IBinder>& id, uint32_t layerStack); status_t destroySurface(const sp<IBinder>& id); status_t clearLayerFrameStats(const sp<IBinder>& token) const; status_t getLayerFrameStats(const sp<IBinder>& token, FrameStats* outStats) const; static status_t clearAnimationFrameStats(); static status_t getAnimationFrameStats(FrameStats* outStats); static void setDisplaySurface(const sp<IBinder>& token, const sp<IGraphicBufferProducer>& bufferProducer); static void setDisplayLayerStack(const sp<IBinder>& token, Loading
include/gui/SurfaceControl.h +7 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <utils/RefBase.h> #include <utils/threads.h> #include <ui/FrameStats.h> #include <ui/PixelFormat.h> #include <ui/Region.h> Loading Loading @@ -73,6 +74,9 @@ public: sp<Surface> getSurface() const; status_t clearLayerFrameStats() const; status_t getLayerFrameStats(FrameStats* outStats) const; private: // can't be copied SurfaceControl& operator = (SurfaceControl& rhs); Loading
include/ui/FrameStats.h 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_UI_FRAME_STATS_H #define ANDROID_UI_FRAME_STATS_H #include <utils/Flattenable.h> #include <utils/Timers.h> #include <utils/Vector.h> namespace android { class FrameStats : public LightFlattenable<FrameStats> { public: /* * Approximate refresh time, in nanoseconds. */ nsecs_t refreshPeriodNano; /* * The times in nanoseconds for when the frame contents were posted by the producer (e.g. * the application). They are either explicitly set or defaulted to the time when * Surface::queueBuffer() was called. */ Vector<nsecs_t> desiredPresentTimesNano; /* * The times in milliseconds for when the frame contents were presented on the screen. */ Vector<nsecs_t> actualPresentTimesNano; /* * The times in nanoseconds for when the frame contents were ready to be presented. Note that * a frame can be posted and still it contents being rendered asynchronously in GL. In such a * case these are the times when the frame contents were completely rendered (i.e. their fences * signaled). */ Vector<nsecs_t> frameReadyTimesNano; // LightFlattenable bool isFixedSize() const; size_t getFlattenedSize() const; status_t flatten(void* buffer, size_t size) const; status_t unflatten(void const* buffer, size_t size); }; }; // namespace android #endif // ANDROID_UI_FRAME_STATS_H