1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2006 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker #pragma once 18*38e8c45fSAndroid Build Coastguard Worker 19*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/CachingHint.h> 20*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/DisplayBrightness.h> 21*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/DisplayCaptureArgs.h> 22*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/FrameTimelineInfo.h> 23*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IDisplayEventConnection.h> 24*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IFpsListener.h> 25*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IHdrLayerInfoListener.h> 26*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IRegionSamplingListener.h> 27*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IScreenCaptureListener.h> 28*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/ITunnelModeEnabledListener.h> 29*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IWindowInfosListener.h> 30*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/IWindowInfosPublisher.h> 31*38e8c45fSAndroid Build Coastguard Worker #include <android/gui/LayerCaptureArgs.h> 32*38e8c45fSAndroid Build Coastguard Worker #include <binder/IBinder.h> 33*38e8c45fSAndroid Build Coastguard Worker #include <binder/IInterface.h> 34*38e8c45fSAndroid Build Coastguard Worker #include <gui/ITransactionCompletedListener.h> 35*38e8c45fSAndroid Build Coastguard Worker #include <gui/SpHash.h> 36*38e8c45fSAndroid Build Coastguard Worker #include <math/vec4.h> 37*38e8c45fSAndroid Build Coastguard Worker #include <stdint.h> 38*38e8c45fSAndroid Build Coastguard Worker #include <sys/types.h> 39*38e8c45fSAndroid Build Coastguard Worker #include <ui/ConfigStoreTypes.h> 40*38e8c45fSAndroid Build Coastguard Worker #include <ui/DisplayId.h> 41*38e8c45fSAndroid Build Coastguard Worker #include <ui/DisplayMode.h> 42*38e8c45fSAndroid Build Coastguard Worker #include <ui/DisplayedFrameStats.h> 43*38e8c45fSAndroid Build Coastguard Worker #include <ui/FrameStats.h> 44*38e8c45fSAndroid Build Coastguard Worker #include <ui/GraphicBuffer.h> 45*38e8c45fSAndroid Build Coastguard Worker #include <ui/GraphicTypes.h> 46*38e8c45fSAndroid Build Coastguard Worker #include <ui/PixelFormat.h> 47*38e8c45fSAndroid Build Coastguard Worker #include <ui/Rotation.h> 48*38e8c45fSAndroid Build Coastguard Worker #include <utils/Errors.h> 49*38e8c45fSAndroid Build Coastguard Worker #include <utils/RefBase.h> 50*38e8c45fSAndroid Build Coastguard Worker #include <utils/Timers.h> 51*38e8c45fSAndroid Build Coastguard Worker #include <utils/Vector.h> 52*38e8c45fSAndroid Build Coastguard Worker 53*38e8c45fSAndroid Build Coastguard Worker #include <optional> 54*38e8c45fSAndroid Build Coastguard Worker #include <unordered_set> 55*38e8c45fSAndroid Build Coastguard Worker #include <vector> 56*38e8c45fSAndroid Build Coastguard Worker 57*38e8c45fSAndroid Build Coastguard Worker #include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> 58*38e8c45fSAndroid Build Coastguard Worker 59*38e8c45fSAndroid Build Coastguard Worker namespace android { 60*38e8c45fSAndroid Build Coastguard Worker 61*38e8c45fSAndroid Build Coastguard Worker struct client_cache_t; 62*38e8c45fSAndroid Build Coastguard Worker class ComposerState; 63*38e8c45fSAndroid Build Coastguard Worker struct DisplayStatInfo; 64*38e8c45fSAndroid Build Coastguard Worker struct DisplayState; 65*38e8c45fSAndroid Build Coastguard Worker struct InputWindowCommands; 66*38e8c45fSAndroid Build Coastguard Worker class HdrCapabilities; 67*38e8c45fSAndroid Build Coastguard Worker class Rect; 68*38e8c45fSAndroid Build Coastguard Worker 69*38e8c45fSAndroid Build Coastguard Worker using gui::FrameTimelineInfo; 70*38e8c45fSAndroid Build Coastguard Worker using gui::IDisplayEventConnection; 71*38e8c45fSAndroid Build Coastguard Worker using gui::IRegionSamplingListener; 72*38e8c45fSAndroid Build Coastguard Worker using gui::IScreenCaptureListener; 73*38e8c45fSAndroid Build Coastguard Worker using gui::SpHash; 74*38e8c45fSAndroid Build Coastguard Worker 75*38e8c45fSAndroid Build Coastguard Worker namespace ui { 76*38e8c45fSAndroid Build Coastguard Worker 77*38e8c45fSAndroid Build Coastguard Worker struct DisplayMode; 78*38e8c45fSAndroid Build Coastguard Worker struct DisplayState; 79*38e8c45fSAndroid Build Coastguard Worker struct DynamicDisplayInfo; 80*38e8c45fSAndroid Build Coastguard Worker 81*38e8c45fSAndroid Build Coastguard Worker } // namespace ui 82*38e8c45fSAndroid Build Coastguard Worker 83*38e8c45fSAndroid Build Coastguard Worker /* 84*38e8c45fSAndroid Build Coastguard Worker * This class defines the Binder IPC interface for accessing various 85*38e8c45fSAndroid Build Coastguard Worker * SurfaceFlinger features. 86*38e8c45fSAndroid Build Coastguard Worker */ 87*38e8c45fSAndroid Build Coastguard Worker class ISurfaceComposer: public IInterface { 88*38e8c45fSAndroid Build Coastguard Worker public: 89*38e8c45fSAndroid Build Coastguard Worker DECLARE_META_INTERFACE(SurfaceComposer) 90*38e8c45fSAndroid Build Coastguard Worker 91*38e8c45fSAndroid Build Coastguard Worker // flags for setTransactionState() 92*38e8c45fSAndroid Build Coastguard Worker enum { 93*38e8c45fSAndroid Build Coastguard Worker eAnimation = 0x02, 94*38e8c45fSAndroid Build Coastguard Worker 95*38e8c45fSAndroid Build Coastguard Worker // Explicit indication that this transaction and others to follow will likely result in a 96*38e8c45fSAndroid Build Coastguard Worker // lot of layers being composed, and thus, SurfaceFlinger should wake-up earlier to avoid 97*38e8c45fSAndroid Build Coastguard Worker // missing frame deadlines. In this case SurfaceFlinger will wake up at 98*38e8c45fSAndroid Build Coastguard Worker // (sf vsync offset - debug.sf.early_phase_offset_ns). SurfaceFlinger will continue to be 99*38e8c45fSAndroid Build Coastguard Worker // in the early configuration until it receives eEarlyWakeupEnd. These flags are 100*38e8c45fSAndroid Build Coastguard Worker // expected to be used by WindowManager only and are guarded by 101*38e8c45fSAndroid Build Coastguard Worker // android.permission.WAKEUP_SURFACE_FLINGER 102*38e8c45fSAndroid Build Coastguard Worker eEarlyWakeupStart = 0x08, 103*38e8c45fSAndroid Build Coastguard Worker eEarlyWakeupEnd = 0x10, 104*38e8c45fSAndroid Build Coastguard Worker eOneWay = 0x20 105*38e8c45fSAndroid Build Coastguard Worker }; 106*38e8c45fSAndroid Build Coastguard Worker 107*38e8c45fSAndroid Build Coastguard Worker /* open/close transactions. requires ACCESS_SURFACE_FLINGER permission */ 108*38e8c45fSAndroid Build Coastguard Worker virtual status_t setTransactionState( 109*38e8c45fSAndroid Build Coastguard Worker const FrameTimelineInfo& frameTimelineInfo, Vector<ComposerState>& state, 110*38e8c45fSAndroid Build Coastguard Worker Vector<DisplayState>& displays, uint32_t flags, const sp<IBinder>& applyToken, 111*38e8c45fSAndroid Build Coastguard Worker InputWindowCommands inputWindowCommands, int64_t desiredPresentTime, 112*38e8c45fSAndroid Build Coastguard Worker bool isAutoTimestamp, const std::vector<client_cache_t>& uncacheBuffer, 113*38e8c45fSAndroid Build Coastguard Worker bool hasListenerCallbacks, const std::vector<ListenerCallbacks>& listenerCallbacks, 114*38e8c45fSAndroid Build Coastguard Worker uint64_t transactionId, const std::vector<uint64_t>& mergedTransactionIds) = 0; 115*38e8c45fSAndroid Build Coastguard Worker }; 116*38e8c45fSAndroid Build Coastguard Worker 117*38e8c45fSAndroid Build Coastguard Worker // ---------------------------------------------------------------------------- 118*38e8c45fSAndroid Build Coastguard Worker 119*38e8c45fSAndroid Build Coastguard Worker class BnSurfaceComposer: public BnInterface<ISurfaceComposer> { 120*38e8c45fSAndroid Build Coastguard Worker public: 121*38e8c45fSAndroid Build Coastguard Worker enum ISurfaceComposerTag { 122*38e8c45fSAndroid Build Coastguard Worker // Note: BOOT_FINISHED must remain this value, it is called from 123*38e8c45fSAndroid Build Coastguard Worker // Java by ActivityManagerService. 124*38e8c45fSAndroid Build Coastguard Worker BOOT_FINISHED = IBinder::FIRST_CALL_TRANSACTION, 125*38e8c45fSAndroid Build Coastguard Worker CREATE_CONNECTION, // Deprecated. Autogenerated by .aidl now. 126*38e8c45fSAndroid Build Coastguard Worker GET_STATIC_DISPLAY_INFO, // Deprecated. Autogenerated by .aidl now. 127*38e8c45fSAndroid Build Coastguard Worker CREATE_DISPLAY_EVENT_CONNECTION, // Deprecated. Autogenerated by .aidl now. 128*38e8c45fSAndroid Build Coastguard Worker CREATE_VIRTUAL_DISPLAY, // Deprecated. Autogenerated by .aidl now. 129*38e8c45fSAndroid Build Coastguard Worker DESTROY_VIRTUAL_DISPLAY, // Deprecated. Autogenerated by .aidl now. 130*38e8c45fSAndroid Build Coastguard Worker GET_PHYSICAL_DISPLAY_TOKEN, // Deprecated. Autogenerated by .aidl now. 131*38e8c45fSAndroid Build Coastguard Worker SET_TRANSACTION_STATE, 132*38e8c45fSAndroid Build Coastguard Worker AUTHENTICATE_SURFACE, // Deprecated. Autogenerated by .aidl now. 133*38e8c45fSAndroid Build Coastguard Worker GET_SUPPORTED_FRAME_TIMESTAMPS, // Deprecated. Autogenerated by .aidl now. 134*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_MODES, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 135*38e8c45fSAndroid Build Coastguard Worker GET_ACTIVE_DISPLAY_MODE, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 136*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_STATE, 137*38e8c45fSAndroid Build Coastguard Worker CAPTURE_DISPLAY, // Deprecated. Autogenerated by .aidl now. 138*38e8c45fSAndroid Build Coastguard Worker CAPTURE_LAYERS, // Deprecated. Autogenerated by .aidl now. 139*38e8c45fSAndroid Build Coastguard Worker CLEAR_ANIMATION_FRAME_STATS, // Deprecated. Autogenerated by .aidl now. 140*38e8c45fSAndroid Build Coastguard Worker GET_ANIMATION_FRAME_STATS, // Deprecated. Autogenerated by .aidl now. 141*38e8c45fSAndroid Build Coastguard Worker SET_POWER_MODE, // Deprecated. Autogenerated by .aidl now. 142*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_STATS, 143*38e8c45fSAndroid Build Coastguard Worker GET_HDR_CAPABILITIES, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 144*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_COLOR_MODES, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 145*38e8c45fSAndroid Build Coastguard Worker GET_ACTIVE_COLOR_MODE, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 146*38e8c45fSAndroid Build Coastguard Worker SET_ACTIVE_COLOR_MODE, // Deprecated. Autogenerated by .aidl now. 147*38e8c45fSAndroid Build Coastguard Worker ENABLE_VSYNC_INJECTIONS, // Deprecated. Autogenerated by .aidl now. 148*38e8c45fSAndroid Build Coastguard Worker INJECT_VSYNC, // Deprecated. Autogenerated by .aidl now. 149*38e8c45fSAndroid Build Coastguard Worker GET_LAYER_DEBUG_INFO, // Deprecated. Autogenerated by .aidl now. 150*38e8c45fSAndroid Build Coastguard Worker GET_COMPOSITION_PREFERENCE, // Deprecated. Autogenerated by .aidl now. 151*38e8c45fSAndroid Build Coastguard Worker GET_COLOR_MANAGEMENT, // Deprecated. Autogenerated by .aidl now. 152*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES, // Deprecated. Autogenerated by .aidl now. 153*38e8c45fSAndroid Build Coastguard Worker SET_DISPLAY_CONTENT_SAMPLING_ENABLED, // Deprecated. Autogenerated by .aidl now. 154*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAYED_CONTENT_SAMPLE, 155*38e8c45fSAndroid Build Coastguard Worker GET_PROTECTED_CONTENT_SUPPORT, // Deprecated. Autogenerated by .aidl now. 156*38e8c45fSAndroid Build Coastguard Worker IS_WIDE_COLOR_DISPLAY, // Deprecated. Autogenerated by .aidl now. 157*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_NATIVE_PRIMARIES, // Deprecated. Autogenerated by .aidl now. 158*38e8c45fSAndroid Build Coastguard Worker GET_PHYSICAL_DISPLAY_IDS, // Deprecated. Autogenerated by .aidl now. 159*38e8c45fSAndroid Build Coastguard Worker ADD_REGION_SAMPLING_LISTENER, // Deprecated. Autogenerated by .aidl now. 160*38e8c45fSAndroid Build Coastguard Worker REMOVE_REGION_SAMPLING_LISTENER, // Deprecated. Autogenerated by .aidl now. 161*38e8c45fSAndroid Build Coastguard Worker SET_DESIRED_DISPLAY_MODE_SPECS, // Deprecated. Autogenerated by .aidl now. 162*38e8c45fSAndroid Build Coastguard Worker GET_DESIRED_DISPLAY_MODE_SPECS, // Deprecated. Autogenerated by .aidl now. 163*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_BRIGHTNESS_SUPPORT, // Deprecated. Autogenerated by .aidl now. 164*38e8c45fSAndroid Build Coastguard Worker SET_DISPLAY_BRIGHTNESS, // Deprecated. Autogenerated by .aidl now. 165*38e8c45fSAndroid Build Coastguard Worker CAPTURE_DISPLAY_BY_ID, // Deprecated. Autogenerated by .aidl now. 166*38e8c45fSAndroid Build Coastguard Worker NOTIFY_POWER_BOOST, // Deprecated. Autogenerated by .aidl now. 167*38e8c45fSAndroid Build Coastguard Worker SET_GLOBAL_SHADOW_SETTINGS, 168*38e8c45fSAndroid Build Coastguard Worker GET_AUTO_LOW_LATENCY_MODE_SUPPORT, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 169*38e8c45fSAndroid Build Coastguard Worker SET_AUTO_LOW_LATENCY_MODE, // Deprecated. Autogenerated by .aidl now. 170*38e8c45fSAndroid Build Coastguard Worker GET_GAME_CONTENT_TYPE_SUPPORT, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 171*38e8c45fSAndroid Build Coastguard Worker SET_GAME_CONTENT_TYPE, // Deprecated. Use GET_DYNAMIC_DISPLAY_INFO instead. 172*38e8c45fSAndroid Build Coastguard Worker SET_FRAME_RATE, // Deprecated. Autogenerated by .aidl now. 173*38e8c45fSAndroid Build Coastguard Worker // Deprecated. Use DisplayManager.setShouldAlwaysRespectAppRequestedMode(true); 174*38e8c45fSAndroid Build Coastguard Worker ACQUIRE_FRAME_RATE_FLEXIBILITY_TOKEN, 175*38e8c45fSAndroid Build Coastguard Worker SET_FRAME_TIMELINE_INFO, // Deprecated. Autogenerated by .aidl now. 176*38e8c45fSAndroid Build Coastguard Worker ADD_TRANSACTION_TRACE_LISTENER, // Deprecated. Autogenerated by .aidl now. 177*38e8c45fSAndroid Build Coastguard Worker GET_GPU_CONTEXT_PRIORITY, 178*38e8c45fSAndroid Build Coastguard Worker GET_MAX_ACQUIRED_BUFFER_COUNT, 179*38e8c45fSAndroid Build Coastguard Worker GET_DYNAMIC_DISPLAY_INFO, // Deprecated. Autogenerated by .aidl now. 180*38e8c45fSAndroid Build Coastguard Worker ADD_FPS_LISTENER, // Deprecated. Autogenerated by .aidl now. 181*38e8c45fSAndroid Build Coastguard Worker REMOVE_FPS_LISTENER, // Deprecated. Autogenerated by .aidl now. 182*38e8c45fSAndroid Build Coastguard Worker OVERRIDE_HDR_TYPES, // Deprecated. Autogenerated by .aidl now. 183*38e8c45fSAndroid Build Coastguard Worker ADD_HDR_LAYER_INFO_LISTENER, // Deprecated. Autogenerated by .aidl now. 184*38e8c45fSAndroid Build Coastguard Worker REMOVE_HDR_LAYER_INFO_LISTENER, // Deprecated. Autogenerated by .aidl now. 185*38e8c45fSAndroid Build Coastguard Worker ON_PULL_ATOM, // Deprecated. Autogenerated by .aidl now. 186*38e8c45fSAndroid Build Coastguard Worker ADD_TUNNEL_MODE_ENABLED_LISTENER, // Deprecated. Autogenerated by .aidl now. 187*38e8c45fSAndroid Build Coastguard Worker REMOVE_TUNNEL_MODE_ENABLED_LISTENER, // Deprecated. Autogenerated by .aidl now. 188*38e8c45fSAndroid Build Coastguard Worker ADD_WINDOW_INFOS_LISTENER, // Deprecated. Autogenerated by .aidl now. 189*38e8c45fSAndroid Build Coastguard Worker REMOVE_WINDOW_INFOS_LISTENER, // Deprecated. Autogenerated by .aidl now. 190*38e8c45fSAndroid Build Coastguard Worker GET_PRIMARY_PHYSICAL_DISPLAY_ID, // Deprecated. Autogenerated by .aidl now. 191*38e8c45fSAndroid Build Coastguard Worker GET_DISPLAY_DECORATION_SUPPORT, 192*38e8c45fSAndroid Build Coastguard Worker GET_BOOT_DISPLAY_MODE_SUPPORT, // Deprecated. Autogenerated by .aidl now. 193*38e8c45fSAndroid Build Coastguard Worker SET_BOOT_DISPLAY_MODE, // Deprecated. Autogenerated by .aidl now. 194*38e8c45fSAndroid Build Coastguard Worker CLEAR_BOOT_DISPLAY_MODE, // Deprecated. Autogenerated by .aidl now. 195*38e8c45fSAndroid Build Coastguard Worker SET_OVERRIDE_FRAME_RATE, // Deprecated. Autogenerated by .aidl now. 196*38e8c45fSAndroid Build Coastguard Worker GET_SCHEDULING_POLICY, 197*38e8c45fSAndroid Build Coastguard Worker // Always append new enum to the end. 198*38e8c45fSAndroid Build Coastguard Worker }; 199*38e8c45fSAndroid Build Coastguard Worker 200*38e8c45fSAndroid Build Coastguard Worker virtual status_t onTransact(uint32_t code, const Parcel& data, 201*38e8c45fSAndroid Build Coastguard Worker Parcel* reply, uint32_t flags = 0); 202*38e8c45fSAndroid Build Coastguard Worker }; 203*38e8c45fSAndroid Build Coastguard Worker 204*38e8c45fSAndroid Build Coastguard Worker } // namespace android 205