1 /* 2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef ROSEN_RENDER_SERVICE_BASE_TRANSACTION_RS_IRENDER_SERVICE_CONNECTION_H 17 #define ROSEN_RENDER_SERVICE_BASE_TRANSACTION_RS_IRENDER_SERVICE_CONNECTION_H 18 19 #include <iremote_broker.h> 20 #include <string> 21 #include <surface.h> 22 23 #include "command/rs_command.h" 24 #include "command/rs_node_showing_command.h" 25 #include "ipc_callbacks/buffer_available_callback.h" 26 #include "ipc_callbacks/buffer_clear_callback.h" 27 #include "ipc_callbacks/iapplication_agent.h" 28 #include "ipc_callbacks/rs_isurface_occlusion_change_callback.h" 29 #include "ipc_callbacks/rs_surface_buffer_callback.h" 30 #include "ipc_callbacks/rs_iframe_rate_linker_expected_fps_update_callback.h" 31 #include "ipc_callbacks/screen_change_callback.h" 32 #include "ipc_callbacks/surface_capture_callback.h" 33 #include "memory/rs_memory_graphic.h" 34 #include "screen_manager/rs_screen_capability.h" 35 #include "screen_manager/rs_screen_data.h" 36 #include "screen_manager/rs_screen_hdr_capability.h" 37 #include "screen_manager/rs_screen_mode_info.h" 38 #include "screen_manager/screen_types.h" 39 #include "screen_manager/rs_virtual_screen_resolution.h" 40 #include "transaction/rs_transaction_data.h" 41 #include "transaction/rs_render_service_client.h" 42 #include "ivsync_connection.h" 43 #include "ipc_callbacks/rs_ihgm_config_change_callback.h" 44 #include "ipc_callbacks/rs_iocclusion_change_callback.h" 45 #include "ipc_callbacks/rs_iuiextension_callback.h" 46 #include "vsync_iconnection_token.h" 47 48 namespace OHOS { 49 namespace Rosen { 50 51 class RSIRenderServiceConnection : public IRemoteBroker { 52 public: 53 DECLARE_INTERFACE_DESCRIPTOR(u"ohos.rosen.RenderServiceConnection"); 54 55 RSIRenderServiceConnection() = default; 56 virtual ~RSIRenderServiceConnection() noexcept = default; 57 58 virtual void CommitTransaction(std::unique_ptr<RSTransactionData>& transactionData) = 0; 59 virtual void ExecuteSynchronousTask(const std::shared_ptr<RSSyncTask>& task) = 0; 60 61 virtual bool GetUniRenderEnabled() = 0; 62 63 virtual bool CreateNode(const RSSurfaceRenderNodeConfig& config) = 0; 64 virtual bool CreateNode(const RSDisplayNodeConfig& displayNodeConfig, NodeId nodeId) = 0; 65 virtual sptr<Surface> CreateNodeAndSurface(const RSSurfaceRenderNodeConfig& config) = 0; 66 67 virtual sptr<IVSyncConnection> CreateVSyncConnection(const std::string& name, 68 const sptr<VSyncIConnectionToken>& token = nullptr, 69 uint64_t id = 0, 70 NodeId windowNodeId = 0, 71 bool fromXcomponent = false) = 0; 72 73 virtual std::shared_ptr<Media::PixelMap> CreatePixelMapFromSurface(sptr<Surface> surface, 74 const Rect &srcRect) = 0; 75 76 virtual int32_t SetFocusAppInfo( 77 int32_t pid, int32_t uid, const std::string &bundleName, const std::string &abilityName, 78 uint64_t focusNodeId) = 0; 79 80 virtual ScreenId GetDefaultScreenId() = 0; 81 82 virtual ScreenId GetActiveScreenId() = 0; 83 84 virtual std::vector<ScreenId> GetAllScreenIds() = 0; 85 86 // mirrorId: decide which screen id to mirror, INVALID_SCREEN_ID means do not mirror any screen. 87 virtual ScreenId CreateVirtualScreen( 88 const std::string &name, 89 uint32_t width, 90 uint32_t height, 91 sptr<Surface> surface, 92 ScreenId mirrorId = 0, 93 int32_t flags = 0, 94 std::vector<NodeId> whiteList = {}) = 0; 95 96 virtual int32_t SetVirtualScreenBlackList(ScreenId id, std::vector<NodeId>& blackListVector) = 0; 97 98 virtual int32_t AddVirtualScreenBlackList(ScreenId id, std::vector<NodeId>& blackListVector) = 0; 99 100 virtual int32_t RemoveVirtualScreenBlackList(ScreenId id, std::vector<NodeId>& blackListVector) = 0; 101 102 virtual int32_t SetVirtualScreenSecurityExemptionList( 103 ScreenId id, const std::vector<NodeId>& securityExemptionList) = 0; 104 105 virtual int32_t SetCastScreenEnableSkipWindow(ScreenId id, bool enable) = 0; 106 107 virtual int32_t SetVirtualScreenSurface(ScreenId id, sptr<Surface> surface) = 0; 108 109 virtual void RemoveVirtualScreen(ScreenId id) = 0; 110 111 virtual int32_t SetScreenChangeCallback(sptr<RSIScreenChangeCallback> callback) = 0; 112 113 virtual void SetScreenActiveMode(ScreenId id, uint32_t modeId) = 0; 114 115 virtual void SetScreenRefreshRate(ScreenId id, int32_t sceneId, int32_t rate) = 0; 116 117 virtual void SetRefreshRateMode(int32_t refreshRateMode) = 0; 118 119 virtual void SyncFrameRateRange(FrameRateLinkerId id, const FrameRateRange& range, 120 int32_t animatorExpectedFrameRate) = 0; 121 122 virtual void UnregisterFrameRateLinker(FrameRateLinkerId id) = 0; 123 124 virtual uint32_t GetScreenCurrentRefreshRate(ScreenId id) = 0; 125 126 virtual int32_t GetCurrentRefreshRateMode() = 0; 127 128 virtual std::vector<int32_t> GetScreenSupportedRefreshRates(ScreenId id) = 0; 129 130 virtual bool GetShowRefreshRateEnabled() = 0; 131 132 virtual void SetShowRefreshRateEnabled(bool enable) = 0; 133 134 virtual std::string GetRefreshInfo(pid_t pid) = 0; 135 136 virtual int32_t SetVirtualScreenResolution(ScreenId id, uint32_t width, uint32_t height) = 0; 137 138 virtual void MarkPowerOffNeedProcessOneFrame() = 0; 139 140 virtual void DisablePowerOffRenderControl(ScreenId id) = 0; 141 142 virtual void SetScreenPowerStatus(ScreenId id, ScreenPowerStatus status) = 0; 143 144 virtual void TakeSurfaceCapture(NodeId id, sptr<RSISurfaceCaptureCallback> callback, 145 const RSSurfaceCaptureConfig& captureConfig, 146 RSSurfaceCapturePermissions permissions = RSSurfaceCapturePermissions()) = 0; 147 148 virtual void SetWindowFreezeImmediately(NodeId id, bool isFreeze, sptr<RSISurfaceCaptureCallback> callback, 149 const RSSurfaceCaptureConfig& captureConfig) = 0; 150 151 virtual void RegisterApplicationAgent(uint32_t pid, sptr<IApplicationAgent> app) = 0; 152 153 virtual RSVirtualScreenResolution GetVirtualScreenResolution(ScreenId id) = 0; 154 155 virtual RSScreenModeInfo GetScreenActiveMode(ScreenId id) = 0; 156 157 virtual std::vector<RSScreenModeInfo> GetScreenSupportedModes(ScreenId id) = 0; 158 159 virtual RSScreenCapability GetScreenCapability(ScreenId id) = 0; 160 161 virtual ScreenPowerStatus GetScreenPowerStatus(ScreenId id) = 0; 162 163 virtual RSScreenData GetScreenData(ScreenId id) = 0; 164 165 virtual MemoryGraphic GetMemoryGraphic(int pid) = 0; 166 167 virtual bool GetTotalAppMemSize(float& cpuMemSize, float& gpuMemSize) = 0; 168 169 virtual std::vector<MemoryGraphic> GetMemoryGraphics() = 0; 170 171 virtual int32_t GetScreenBacklight(ScreenId id) = 0; 172 173 virtual void SetScreenBacklight(ScreenId id, uint32_t level) = 0; 174 175 virtual void RegisterBufferAvailableListener( 176 NodeId id, sptr<RSIBufferAvailableCallback> callback, bool isFromRenderThread) = 0; 177 178 virtual void RegisterBufferClearListener( 179 NodeId id, sptr<RSIBufferClearCallback> callback) = 0; 180 181 virtual int32_t GetScreenSupportedColorGamuts(ScreenId id, std::vector<ScreenColorGamut>& mode) = 0; 182 183 virtual int32_t GetScreenSupportedMetaDataKeys(ScreenId id, std::vector<ScreenHDRMetadataKey>& keys) = 0; 184 185 virtual int32_t GetScreenColorGamut(ScreenId id, ScreenColorGamut& mode) = 0; 186 187 virtual int32_t SetScreenColorGamut(ScreenId id, int32_t modeIdx) = 0; 188 189 virtual int32_t SetScreenGamutMap(ScreenId id, ScreenGamutMap mode) = 0; 190 191 virtual int32_t SetScreenCorrection(ScreenId id, ScreenRotation screenRotation) = 0; 192 193 virtual bool SetVirtualMirrorScreenCanvasRotation(ScreenId id, bool canvasRotation) = 0; 194 195 virtual bool SetVirtualMirrorScreenScaleMode(ScreenId id, ScreenScaleMode scaleMode) = 0; 196 197 virtual bool SetGlobalDarkColorMode(bool isDark) = 0; 198 199 virtual int32_t GetScreenGamutMap(ScreenId id, ScreenGamutMap& mode) = 0; 200 201 virtual int32_t GetScreenHDRCapability(ScreenId id, RSScreenHDRCapability& screenHdrCapability) = 0; 202 203 virtual int32_t GetPixelFormat(ScreenId id, GraphicPixelFormat& pixelFormat) = 0; 204 205 virtual int32_t SetPixelFormat(ScreenId id, GraphicPixelFormat pixelFormat) = 0; 206 207 virtual int32_t GetScreenSupportedHDRFormats(ScreenId id, std::vector<ScreenHDRFormat>& hdrFormats) = 0; 208 209 virtual int32_t GetScreenHDRFormat(ScreenId id, ScreenHDRFormat& hdrFormat) = 0; 210 211 virtual int32_t SetScreenHDRFormat(ScreenId id, int32_t modeIdx) = 0; 212 213 virtual int32_t GetScreenSupportedColorSpaces(ScreenId id, std::vector<GraphicCM_ColorSpaceType>& colorSpaces) = 0; 214 215 virtual int32_t GetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType& colorSpace) = 0; 216 217 virtual int32_t SetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType colorSpace) = 0; 218 219 virtual int32_t GetScreenType(ScreenId id, RSScreenType& screenType) = 0; 220 221 virtual bool GetBitmap(NodeId id, Drawing::Bitmap& bitmap) = 0; 222 virtual bool GetPixelmap(NodeId id, std::shared_ptr<Media::PixelMap> pixelmap, 223 const Drawing::Rect* rect, std::shared_ptr<Drawing::DrawCmdList> drawCmdList) = 0; 224 virtual bool RegisterTypeface(uint64_t globalUniqueId, std::shared_ptr<Drawing::Typeface>& typeface) = 0; 225 virtual bool UnRegisterTypeface(uint64_t globalUniqueId) = 0; 226 227 virtual int32_t SetScreenSkipFrameInterval(ScreenId id, uint32_t skipFrameInterval) = 0; 228 229 virtual int32_t SetVirtualScreenRefreshRate(ScreenId id, uint32_t maxRefreshRate, uint32_t& actualRefreshRate) = 0; 230 231 virtual int32_t RegisterOcclusionChangeCallback(sptr<RSIOcclusionChangeCallback> callback) = 0; 232 233 virtual int32_t RegisterSurfaceOcclusionChangeCallback( 234 NodeId id, sptr<RSISurfaceOcclusionChangeCallback> callback, std::vector<float>& partitionPoints) = 0; 235 236 virtual int32_t UnRegisterSurfaceOcclusionChangeCallback(NodeId id) = 0; 237 238 virtual int32_t RegisterHgmConfigChangeCallback(sptr<RSIHgmConfigChangeCallback> callback) = 0; 239 240 virtual int32_t RegisterHgmRefreshRateModeChangeCallback(sptr<RSIHgmConfigChangeCallback> callback) = 0; 241 242 virtual void SetAppWindowNum(uint32_t num) = 0; 243 244 virtual int32_t RegisterHgmRefreshRateUpdateCallback(sptr<RSIHgmConfigChangeCallback> callback) = 0; 245 246 virtual int32_t RegisterFrameRateLinkerExpectedFpsUpdateCallback(int32_t pid, 247 sptr<RSIFrameRateLinkerExpectedFpsUpdateCallback> callback) = 0; 248 249 virtual bool SetSystemAnimatedScenes(SystemAnimatedScenes systemAnimatedScenes) = 0; 250 251 virtual void ShowWatermark(const std::shared_ptr<Media::PixelMap> &watermarkImg, bool isShow) = 0; 252 253 virtual int32_t ResizeVirtualScreen(ScreenId id, uint32_t width, uint32_t height) = 0; 254 255 virtual void ReportJankStats() = 0; 256 257 virtual void NotifyLightFactorStatus(bool isSafe) = 0; 258 259 virtual void NotifyPackageEvent(uint32_t listSize, const std::vector<std::string>& packageList) = 0; 260 261 virtual void NotifyRefreshRateEvent(const EventInfo& eventInfo) = 0; 262 263 virtual void NotifyTouchEvent(int32_t touchStatus, int32_t touchCnt) = 0; 264 265 virtual void NotifyDynamicModeEvent(bool enableDynamicMode) = 0; 266 267 virtual void ReportEventResponse(DataBaseRs info) = 0; 268 269 virtual void ReportEventComplete(DataBaseRs info) = 0; 270 271 virtual void ReportEventJankFrame(DataBaseRs info) = 0; 272 273 virtual void ReportGameStateData(GameStateData info) = 0; 274 275 virtual void SetHardwareEnabled(NodeId id, bool isEnabled, SelfDrawingNodeType selfDrawingType, 276 bool dynamicHardwareEnable) = 0; 277 278 virtual uint32_t SetHidePrivacyContent(NodeId id, bool needHidePrivacyContent) = 0; 279 280 virtual void SetCacheEnabledForRotation(bool isEnabled) = 0; 281 282 virtual void SetOnRemoteDiedCallback(const OnRemoteDiedCallback& callback) = 0; 283 284 virtual void RunOnRemoteDiedCallback() = 0; 285 286 virtual void SetVirtualScreenUsingStatus(bool isVirtualScreenUsingStatus) = 0; 287 288 virtual void SetCurtainScreenUsingStatus(bool isCurtainScreenOn) = 0; 289 290 virtual void DropFrameByPid(const std::vector<int32_t> pidList) = 0; 291 292 virtual std::vector<ActiveDirtyRegionInfo> GetActiveDirtyRegionInfo() = 0; 293 294 virtual GlobalDirtyRegionInfo GetGlobalDirtyRegionInfo() = 0; 295 296 virtual LayerComposeInfo GetLayerComposeInfo() = 0; 297 298 virtual HwcDisabledReasonInfos GetHwcDisabledReasonInfo() = 0; 299 300 virtual void SetVmaCacheStatus(bool flag) = 0; 301 302 virtual int32_t RegisterUIExtensionCallback(uint64_t userId, sptr<RSIUIExtensionCallback> callback) = 0; 303 304 virtual bool SetAncoForceDoDirect(bool direct) = 0; 305 306 virtual void SetLayerTop(const std::string &nodeIdStr, bool isTop) = 0; 307 #ifdef TP_FEATURE_ENABLE 308 virtual void SetTpFeatureConfig(int32_t feature, const char* config, TpFeatureConfigType tpFeatureConfigType) = 0; 309 #endif 310 311 virtual void RegisterSurfaceBufferCallback(pid_t pid, uint64_t uid, 312 sptr<RSISurfaceBufferCallback> callback) = 0; 313 314 virtual void UnregisterSurfaceBufferCallback(pid_t pid, uint64_t uid) = 0; 315 }; 316 } // namespace Rosen 317 } // namespace OHOS 318 319 #endif // ROSEN_RENDER_SERVICE_BASE_TRANSACTION_RS_IRENDER_SERVICE_CONNECTION_H 320