diff --git a/rosen/modules/render_service/core/pipeline/main_thread/rs_render_service.cpp b/rosen/modules/render_service/main/server/rs_render_service.cpp similarity index 100% rename from rosen/modules/render_service/core/pipeline/main_thread/rs_render_service.cpp rename to rosen/modules/render_service/main/server/rs_render_service.cpp diff --git a/rosen/modules/render_service/core/pipeline/main_thread/rs_render_service.h b/rosen/modules/render_service/main/server/rs_render_service.h similarity index 100% rename from rosen/modules/render_service/core/pipeline/main_thread/rs_render_service.h rename to rosen/modules/render_service/main/server/rs_render_service.h diff --git a/rosen/modules/render_service/main/server/rs_render_service_agent.h b/rosen/modules/render_service/main/server/rs_render_service_agent.h new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/rosen/modules/render_service/screen_manager/callback/rs_screen_callback_manager.h b/rosen/modules/render_service/screen_manager/callback/rs_screen_callback_manager.h new file mode 100644 index 0000000000000000000000000000000000000000..6948dcf38e319dcb1ae45e9a6f1f8cbef7d5b0ff --- /dev/null +++ b/rosen/modules/render_service/screen_manager/callback/rs_screen_callback_manager.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * 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 RS_SCREEN_CALLBACK_MANAGER +#define RS_SCREEN_CALLBACK_MANAGER + +namespace OHOS { +namespace Rosen { + +class RSScreenCallbackManager { +public: + +private: + +}; +} // namespace Rosen +} // namespace OHOS + +#endif // RS_SCREEN_CALLBACK_MANAGER diff --git a/rosen/modules/render_service/core/screen_manager/rs_screen.cpp b/rosen/modules/render_service/screen_manager/rs_screen.cpp similarity index 100% rename from rosen/modules/render_service/core/screen_manager/rs_screen.cpp rename to rosen/modules/render_service/screen_manager/rs_screen.cpp diff --git a/rosen/modules/render_service/core/screen_manager/rs_screen.h b/rosen/modules/render_service/screen_manager/rs_screen.h similarity index 100% rename from rosen/modules/render_service/core/screen_manager/rs_screen.h rename to rosen/modules/render_service/screen_manager/rs_screen.h diff --git a/rosen/modules/render_service/core/screen_manager/rs_screen_manager.cpp b/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp similarity index 96% rename from rosen/modules/render_service/core/screen_manager/rs_screen_manager.cpp rename to rosen/modules/render_service/screen_manager/rs_screen_manager.cpp index 67dc17976001863b318ea92ddc4e01091e462939..c00985837f515a09cd47be771403a800614ecc9f 100644 --- a/rosen/modules/render_service/core/screen_manager/rs_screen_manager.cpp +++ b/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp @@ -42,20 +42,6 @@ namespace OHOS { namespace Rosen { #ifdef RS_SUBSCRIBE_SENSOR_ENABLE namespace { -constexpr float ANGLE_MIN_VAL = 0.0F; -constexpr float ANGLE_MAX_VAL = 180.0F; -constexpr int32_t SENSOR_SUCCESS = 0; -constexpr int32_t POSTURE_INTERVAL = 4000000; -constexpr uint16_t SENSOR_EVENT_FIRST_DATA = 0; -constexpr float HALF_FOLDED_MAX_THRESHOLD = 140.0F; -constexpr float OPEN_HALF_FOLDED_MIN_THRESHOLD = 25.0F; -constexpr uint32_t WAIT_FOR_ACTIVE_SCREEN_ID_TIMEOUT = 1000; -constexpr uint32_t WAIT_FOR_STATUS_TASK_TIMEOUT = 1000; // 1000ms -constexpr uint32_t MAX_VIRTUAL_SCREEN_NUM = 64; -constexpr uint32_t MAX_VIRTUAL_SCREEN_WIDTH = 65536; -constexpr uint32_t MAX_VIRTUAL_SCREEN_HEIGHT = 65536; -constexpr uint32_t MAX_VIRTUAL_SCREEN_REFRESH_RATE = 120; -constexpr uint32_t ORIGINAL_FOLD_SCREEN_AMOUNT = 2; const std::string FORCE_REFRESH_ONE_FRAME_TASK_NAME = "ForceRefreshOneFrameIfNoRNV"; void SensorPostureDataCallback(SensorEvent* event) { diff --git a/rosen/modules/render_service/core/screen_manager/rs_screen_manager.h b/rosen/modules/render_service/screen_manager/rs_screen_manager.h similarity index 43% rename from rosen/modules/render_service/core/screen_manager/rs_screen_manager.h rename to rosen/modules/render_service/screen_manager/rs_screen_manager.h index 06608eff3da9dd2ab38b42a9263a9be6b38bac72..9a26b33e02b5421ecd2cb11cbc55884109ced803 100644 --- a/rosen/modules/render_service/core/screen_manager/rs_screen_manager.h +++ b/rosen/modules/render_service/screen_manager/rs_screen_manager.h @@ -44,6 +44,7 @@ #include #include #include +#include "callback/rs_screen_callback_manager.h" namespace OHOS { namespace Rosen { @@ -53,178 +54,9 @@ struct LoadOptParamsForScreen { class RSScreen; class RSIScreenNodeListener; -class RSScreenManager : public RefBase { -public: - RSScreenManager() = default; - virtual ~RSScreenManager() noexcept = default; - - virtual bool Init() noexcept = 0; - virtual void ProcessScreenHotPlugEvents() = 0; - virtual bool TrySimpleProcessHotPlugEvents() = 0; -#ifdef RS_SUBSCRIBE_SENSOR_ENABLE - virtual void HandlePostureData(const SensorEvent* const event) = 0; -#endif - - virtual void SetDefaultScreenId(ScreenId id) = 0; - virtual ScreenId GetDefaultScreenId() const = 0; - virtual ScreenId GetActiveScreenId() = 0; - virtual std::vector GetAllScreenIds() const = 0; - - virtual ScreenInfo QueryScreenInfo(ScreenId id) const = 0; - virtual ScreenInfo QueryDefaultScreenInfo() const = 0; - - virtual int32_t GetScreenType(ScreenId id, RSScreenType& type) const = 0; - virtual ScreenInfo GetActualScreenMaxResolution() const = 0; - - virtual int32_t AddScreenChangeCallback(const sptr& callback) = 0; - virtual void RemoveScreenChangeCallback(const sptr& callback) = 0; - virtual void RegisterScreenNodeListener(std::shared_ptr listener) = 0; - - virtual void DisplayDump(std::string& dumpString) = 0; - virtual void SurfaceDump(std::string& dumpString) = 0; - virtual void DumpCurrentFrameLayers() = 0; - virtual void FpsDump(std::string& dumpString, std::string& arg) = 0; - virtual void ClearFpsDump(std::string& dumpString, std::string& arg) = 0; - virtual void HitchsDump(std::string& dumpString, std::string& arg) = 0; - - virtual int32_t SetScreenSkipFrameInterval(ScreenId id, uint32_t skipFrameInterval) = 0; - virtual void SetEqualVsyncPeriod(ScreenId id, bool isEqualVsyncPeriod) = 0; - virtual void PostForceRefreshTask() = 0; - virtual void RemoveForceRefreshTask() = 0; - - virtual void ClearFrameBufferIfNeed() = 0; - virtual void ReleaseScreenDmaBuffer(ScreenId id) = 0; - - /* only used for mock tests */ - virtual void MockHdiScreenConnected(std::shared_ptr rsScreen) = 0; - - // physical screen - virtual std::shared_ptr GetOutput(ScreenId id) const = 0; - - virtual uint32_t SetScreenActiveMode(ScreenId id, uint32_t modeId) = 0; - virtual void GetScreenActiveMode(ScreenId id, RSScreenModeInfo& screenModeInfo) const = 0; - virtual void GetDefaultScreenActiveMode(RSScreenModeInfo& screenModeInfo) const = 0; - virtual std::vector GetScreenSupportedModes(ScreenId id) const = 0; - - virtual RSScreenCapability GetScreenCapability(ScreenId id) const = 0; - virtual RSScreenData GetScreenData(ScreenId id) const = 0; - virtual int32_t GetDisplayIdentificationData( - ScreenId id, uint8_t& outPort, std::vector& edidData) const = 0; - - virtual int32_t SetScreenCorrection(ScreenId id, ScreenRotation screenRotation) = 0; - virtual ScreenRotation GetScreenCorrection(ScreenId id) const = 0; - - virtual int32_t SetRogScreenResolution(ScreenId id, uint32_t width, uint32_t height) = 0; - virtual int32_t SetPhysicalScreenResolution(ScreenId id, uint32_t width, uint32_t height) = 0; - - virtual void SetScreenPowerStatus(ScreenId id, ScreenPowerStatus status) = 0; - virtual ScreenPowerStatus GetScreenPowerStatus(ScreenId id) const = 0; - virtual void WaitScreenPowerStatusTask() = 0; - virtual bool IsScreenPoweringOn() const = 0; - virtual bool IsScreenPoweringOff(ScreenId id) const = 0; - virtual bool IsScreenPowerOff(ScreenId id) const = 0; - virtual bool IsAllScreensPowerOff() const = 0; - virtual void DisablePowerOffRenderControl(ScreenId id) = 0; - virtual int GetDisableRenderControlScreensCount() const = 0; - // used to skip render frame or render only one frame when screen power is off. - virtual void MarkPowerOffNeedProcessOneFrame() = 0; - virtual void ResetPowerOffNeedProcessOneFrame() = 0; - virtual bool GetPowerOffNeedProcessOneFrame() const = 0; - - virtual void SetScreenBacklight(ScreenId id, uint32_t level) = 0; - virtual int32_t GetScreenBacklight(ScreenId id) const = 0; - virtual int32_t SetScreenConstraint(ScreenId id, uint64_t timestamp, ScreenConstraintType type) = 0; - - virtual int32_t SetPixelFormat(ScreenId id, GraphicPixelFormat pixelFormat) = 0; - virtual int32_t GetPixelFormat(ScreenId id, GraphicPixelFormat& pixelFormat) const = 0; - - virtual int32_t SetScreenColorGamut(ScreenId id, int32_t modeIdx) = 0; - virtual int32_t GetScreenColorGamut(ScreenId id, ScreenColorGamut& mode) const = 0; - virtual int32_t GetScreenSupportedColorGamuts(ScreenId id, std::vector& mode) const = 0; - virtual int32_t SetScreenGamutMap(ScreenId id, ScreenGamutMap mode) = 0; - virtual int32_t GetScreenGamutMap(ScreenId id, ScreenGamutMap& mode) const = 0; - - virtual int32_t SetScreenHDRFormat(ScreenId id, int32_t modeIdx) = 0; - virtual int32_t GetScreenHDRFormat(ScreenId id, ScreenHDRFormat& hdrFormat) const = 0; - virtual int32_t GetScreenSupportedHDRFormats(ScreenId id, std::vector& hdrFormats) const = 0; - virtual int32_t GetScreenHDRCapability(ScreenId id, RSScreenHDRCapability& screenHdrCapability) const = 0; - virtual int32_t GetScreenSupportedMetaDataKeys(ScreenId id, std::vector& keys) const = 0; - - virtual int32_t SetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType colorSpace) = 0; - virtual int32_t GetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType& colorSpace) const = 0; - virtual int32_t GetScreenSupportedColorSpaces( - ScreenId id, std::vector& colorSpaces) const = 0; - - virtual void SetScreenSwitchStatus(bool flag) = 0; - virtual bool IsScreenSwitching() const = 0; - - virtual uint32_t SetScreenActiveRect(ScreenId id, const GraphicIRect& activeRect) = 0; - virtual void SetScreenHasProtectedLayer(ScreenId id, bool hasProtectedLayer) = 0; - virtual int32_t SetScreenLinearMatrix(ScreenId id, const std::vector& matrix) = 0; - virtual bool GetDisplayPropertyForHardCursor(uint32_t screenId) = 0; - - // virtual screen - virtual ScreenId CreateVirtualScreen(const std::string& name, uint32_t width, uint32_t height, - sptr surface, ScreenId mirrorId = 0, int32_t flags = 0, std::vector whiteList = {}) = 0; - virtual void RemoveVirtualScreen(ScreenId id) = 0; - virtual uint32_t GetCurrentVirtualScreenNum() = 0; - - virtual int32_t SetVirtualScreenSurface(ScreenId id, sptr surface) = 0; - virtual sptr GetProducerSurface(ScreenId id) const = 0; - virtual bool GetAndResetVirtualSurfaceUpdateFlag(ScreenId id) const = 0; - - virtual int32_t ResizeVirtualScreen(ScreenId id, uint32_t width, uint32_t height) = 0; - virtual int32_t SetVirtualScreenResolution(ScreenId id, uint32_t width, uint32_t height) = 0; - virtual void GetVirtualScreenResolution(ScreenId id, RSVirtualScreenResolution& virtualScreenResolution) const = 0; - - virtual bool SetVirtualMirrorScreenCanvasRotation(ScreenId id, bool canvasRotation) = 0; - virtual bool GetCanvasRotation(ScreenId id) const = 0; - - virtual int32_t SetVirtualScreenAutoRotation(ScreenId id, bool isAutoRotation) = 0; - virtual bool GetVirtualScreenAutoRotation(ScreenId id) const = 0; - - virtual bool SetVirtualMirrorScreenScaleMode(ScreenId id, ScreenScaleMode ScaleMode) = 0; - virtual ScreenScaleMode GetScaleMode(ScreenId id) const = 0; - - virtual bool SetVirtualScreenStatus(ScreenId id, VirtualScreenStatus screenStatus) = 0; - virtual VirtualScreenStatus GetVirtualScreenStatus(ScreenId id) const = 0; - - virtual int32_t SetCastScreenEnableSkipWindow(ScreenId id, bool enable) = 0; - virtual int32_t SetVirtualScreenBlackList(ScreenId id, const std::vector& blackList) = 0; - virtual int32_t SetVirtualScreenTypeBlackList(ScreenId id, const std::vector& typeBlackList) = 0; - virtual int32_t AddVirtualScreenBlackList(ScreenId id, const std::vector& blackList) = 0; - virtual int32_t RemoveVirtualScreenBlackList(ScreenId id, const std::vector& blackList) = 0; - virtual const std::unordered_set GetVirtualScreenBlackList(ScreenId id) const = 0; - virtual const std::unordered_set GetVirtualScreenTypeBlackList(ScreenId id) const = 0; - virtual std::unordered_set GetAllBlackList() const = 0; - virtual std::unordered_set GetAllWhiteList() = 0; - virtual std::unordered_set GetBlackListVirtualScreenByNode(uint64_t nodeId) = 0; - - virtual int32_t SetVirtualScreenSecurityExemptionList( - ScreenId id, const std::vector& securityExemptionList) = 0; - virtual const std::vector GetVirtualScreenSecurityExemptionList(ScreenId id) const = 0; - - virtual int32_t SetScreenSecurityMask(ScreenId id, std::shared_ptr securityMask) = 0; - virtual std::shared_ptr GetScreenSecurityMask(ScreenId id) const = 0; - - virtual int32_t SetMirrorScreenVisibleRect( - ScreenId id, const Rect& mainScreenRect, bool supportRotation = false) = 0; - virtual Rect GetMirrorScreenVisibleRect(ScreenId id) const = 0; - virtual bool IsVisibleRectSupportRotation(ScreenId id) = 0; - virtual int32_t GetVirtualScreenSecLayerOption(ScreenId id) const = 0; - - virtual int32_t SetVirtualScreenRefreshRate(ScreenId id, uint32_t maxRefreshRate, uint32_t& actualRefreshRate) = 0; - - virtual void SetScreenOffset(ScreenId id, int32_t offsetX, int32_t offsetY) = 0; - - virtual std::unordered_map> GetScreenWhiteList() const = 0; - - virtual void InitLoadOptParams(LoadOptParamsForScreen& loadOptParamsForScreen) = 0; -}; sptr CreateOrGetScreenManager(); -namespace impl { struct ScreenHotPlugEvent { std::shared_ptr output; bool connected = false; @@ -236,174 +68,176 @@ enum class FoldState : uint32_t { EXPAND }; -class RSScreenManager : public OHOS::Rosen::RSScreenManager { +class RSScreenManager { public: - static sptr GetInstance() noexcept; - - bool Init() noexcept override; - void ProcessScreenHotPlugEvents() override; - bool TrySimpleProcessHotPlugEvents() override; + bool Init() noexcept ; + RegisterHotPlugListener(); + RegisterRefreshListener(); + RegisterHwcDeadListener(); + RegisterScreenVBlankIdleListener(); + void ProcessScreenHotPlugEvents() ; + bool TrySimpleProcessHotPlugEvents() ; #ifdef RS_SUBSCRIBE_SENSOR_ENABLE - void HandlePostureData(const SensorEvent* const event) override; + void HandlePostureData(const SensorEvent* const event) ; #endif - void SetDefaultScreenId(ScreenId id) override; - ScreenId GetDefaultScreenId() const override; - ScreenId GetActiveScreenId() override; - std::vector GetAllScreenIds() const override; + void SetDefaultScreenId(ScreenId id) ; + ScreenId GetDefaultScreenId() const ; + ScreenId GetActiveScreenId() ; + std::vector GetAllScreenIds() const ; - ScreenInfo QueryScreenInfo(ScreenId id) const override; - ScreenInfo QueryDefaultScreenInfo() const override; + ScreenInfo QueryScreenInfo(ScreenId id) const ; + ScreenInfo QueryDefaultScreenInfo() const ; - int32_t GetScreenType(ScreenId id, RSScreenType& type) const override; - ScreenInfo GetActualScreenMaxResolution() const override; + int32_t GetScreenType(ScreenId id, RSScreenType& type) const ; + ScreenInfo GetActualScreenMaxResolution() const ; - int32_t AddScreenChangeCallback(const sptr& callback) override; - void RemoveScreenChangeCallback(const sptr& callback) override; - void RegisterScreenNodeListener(std::shared_ptr listener) override; + int32_t AddScreenChangeCallback(const sptr& callback) ; + void RemoveScreenChangeCallback(const sptr& callback) ; + void RegisterScreenNodeListener(std::shared_ptr listener) ; - void DisplayDump(std::string& dumpString) override; - void SurfaceDump(std::string& dumpString) override; - void DumpCurrentFrameLayers() override; - void FpsDump(std::string& dumpString, std::string& arg) override; - void ClearFpsDump(std::string& dumpString, std::string& arg) override; - void HitchsDump(std::string& dumpString, std::string& arg) override; + void DisplayDump(std::string& dumpString) ; + void SurfaceDump(std::string& dumpString) ; + void DumpCurrentFrameLayers() ; + void FpsDump(std::string& dumpString, std::string& arg) ; + void ClearFpsDump(std::string& dumpString, std::string& arg) ; + void HitchsDump(std::string& dumpString, std::string& arg) ; - int32_t SetScreenSkipFrameInterval(ScreenId id, uint32_t skipFrameInterval) override; - void SetEqualVsyncPeriod(ScreenId id, bool isEqualVsyncPeriod) override; - void PostForceRefreshTask() override; - void RemoveForceRefreshTask() override; + int32_t SetScreenSkipFrameInterval(ScreenId id, uint32_t skipFrameInterval) ; + void SetEqualVsyncPeriod(ScreenId id, bool isEqualVsyncPeriod) ; + void PostForceRefreshTask() ; + void RemoveForceRefreshTask() ; - void ClearFrameBufferIfNeed() override; - void ReleaseScreenDmaBuffer(ScreenId screenId) override; + void ClearFrameBufferIfNeed() ; + void ReleaseScreenDmaBuffer(ScreenId screenId) ; /* only used for mock tests */ - void MockHdiScreenConnected(std::shared_ptr rsScreen) override; + void MockHdiScreenConnected(std::shared_ptr rsScreen) ; // physical screen - std::shared_ptr GetOutput(ScreenId id) const override; - - uint32_t SetScreenActiveMode(ScreenId id, uint32_t modeId) override; - void GetScreenActiveMode(ScreenId id, RSScreenModeInfo& screenModeInfo) const override; - void GetDefaultScreenActiveMode(RSScreenModeInfo& screenModeInfo) const override; - std::vector GetScreenSupportedModes(ScreenId id) const override; - - RSScreenCapability GetScreenCapability(ScreenId id) const override; - RSScreenData GetScreenData(ScreenId id) const override; - int32_t GetDisplayIdentificationData(ScreenId id, uint8_t& outPort, std::vector& edidData) const override; - - int32_t SetScreenCorrection(ScreenId id, ScreenRotation screenRotation) override; - ScreenRotation GetScreenCorrection(ScreenId id) const override; - - int32_t SetRogScreenResolution(ScreenId id, uint32_t width, uint32_t height) override; - int32_t SetPhysicalScreenResolution(ScreenId id, uint32_t width, uint32_t height) override; - - void SetScreenPowerStatus(ScreenId id, ScreenPowerStatus status) override; - ScreenPowerStatus GetScreenPowerStatus(ScreenId id) const override; - void WaitScreenPowerStatusTask() override; - bool IsScreenPoweringOn() const override; - bool IsScreenPoweringOff(ScreenId id) const override; - bool IsScreenPowerOff(ScreenId id) const override; - bool IsAllScreensPowerOff() const override; - void DisablePowerOffRenderControl(ScreenId id) override; - int GetDisableRenderControlScreensCount() const override; + std::shared_ptr GetOutput(ScreenId id) const ; + + uint32_t SetScreenActiveMode(ScreenId id, uint32_t modeId) ; + void GetScreenActiveMode(ScreenId id, RSScreenModeInfo& screenModeInfo) const ; + void GetDefaultScreenActiveMode(RSScreenModeInfo& screenModeInfo) const ; + std::vector GetScreenSupportedModes(ScreenId id) const ; + + RSScreenCapability GetScreenCapability(ScreenId id) const ; + RSScreenData GetScreenData(ScreenId id) const ; + int32_t GetDisplayIdentificationData(ScreenId id, uint8_t& outPort, std::vector& edidData) const ; + + int32_t SetScreenCorrection(ScreenId id, ScreenRotation screenRotation) ; + ScreenRotation GetScreenCorrection(ScreenId id) const ; + + int32_t SetRogScreenResolution(ScreenId id, uint32_t width, uint32_t height) ; + int32_t SetPhysicalScreenResolution(ScreenId id, uint32_t width, uint32_t height) ; + + void SetScreenPowerStatus(ScreenId id, ScreenPowerStatus status) ; + ScreenPowerStatus GetScreenPowerStatus(ScreenId id) const ; + void WaitScreenPowerStatusTask() ; + bool IsScreenPoweringOn() const ; + bool IsScreenPoweringOff(ScreenId id) const ; + bool IsScreenPowerOff(ScreenId id) const ; + bool IsAllScreensPowerOff() const ; + void DisablePowerOffRenderControl(ScreenId id) ; + int GetDisableRenderControlScreensCount() const ; // used to skip render frame or render only one frame when screen power is off. - void MarkPowerOffNeedProcessOneFrame() override; - void ResetPowerOffNeedProcessOneFrame() override; - bool GetPowerOffNeedProcessOneFrame() const override; - - void SetScreenBacklight(ScreenId id, uint32_t level) override; - int32_t GetScreenBacklight(ScreenId id) const override; - int32_t SetScreenConstraint(ScreenId id, uint64_t timestamp, ScreenConstraintType type) override; - - int32_t SetPixelFormat(ScreenId id, GraphicPixelFormat pixelFormat) override; - int32_t GetPixelFormat(ScreenId id, GraphicPixelFormat& pixelFormat) const override; - - int32_t SetScreenColorGamut(ScreenId id, int32_t modeIdx) override; - int32_t GetScreenColorGamut(ScreenId id, ScreenColorGamut& mode) const override; - int32_t GetScreenSupportedColorGamuts(ScreenId id, std::vector& mode) const override; - int32_t SetScreenGamutMap(ScreenId id, ScreenGamutMap mode) override; - int32_t GetScreenGamutMap(ScreenId id, ScreenGamutMap& mode) const override; - - int32_t SetScreenHDRFormat(ScreenId id, int32_t modeIdx) override; - int32_t GetScreenHDRFormat(ScreenId id, ScreenHDRFormat& hdrFormat) const override; - int32_t GetScreenSupportedHDRFormats(ScreenId id, std::vector& hdrFormats) const override; - int32_t GetScreenHDRCapability(ScreenId id, RSScreenHDRCapability& screenHdrCapability) const override; - int32_t GetScreenSupportedMetaDataKeys(ScreenId id, std::vector& keys) const override; - - int32_t SetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType colorSpace) override; - int32_t GetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType& colorSpace) const override; + void MarkPowerOffNeedProcessOneFrame() ; + void ResetPowerOffNeedProcessOneFrame() ; + bool GetPowerOffNeedProcessOneFrame() const ; + + void SetScreenBacklight(ScreenId id, uint32_t level) ; + int32_t GetScreenBacklight(ScreenId id) const ; + int32_t SetScreenConstraint(ScreenId id, uint64_t timestamp, ScreenConstraintType type) ; + + int32_t SetPixelFormat(ScreenId id, GraphicPixelFormat pixelFormat) ; + int32_t GetPixelFormat(ScreenId id, GraphicPixelFormat& pixelFormat) const ; + + int32_t SetScreenColorGamut(ScreenId id, int32_t modeIdx) ; + int32_t GetScreenColorGamut(ScreenId id, ScreenColorGamut& mode) const ; + int32_t GetScreenSupportedColorGamuts(ScreenId id, std::vector& mode) const ; + int32_t SetScreenGamutMap(ScreenId id, ScreenGamutMap mode) ; + int32_t GetScreenGamutMap(ScreenId id, ScreenGamutMap& mode) const ; + + int32_t SetScreenHDRFormat(ScreenId id, int32_t modeIdx) ; + int32_t GetScreenHDRFormat(ScreenId id, ScreenHDRFormat& hdrFormat) const ; + int32_t GetScreenSupportedHDRFormats(ScreenId id, std::vector& hdrFormats) const ; + int32_t GetScreenHDRCapability(ScreenId id, RSScreenHDRCapability& screenHdrCapability) const ; + int32_t GetScreenSupportedMetaDataKeys(ScreenId id, std::vector& keys) const ; + + int32_t SetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType colorSpace) ; + int32_t GetScreenColorSpace(ScreenId id, GraphicCM_ColorSpaceType& colorSpace) const ; int32_t GetScreenSupportedColorSpaces( - ScreenId id, std::vector& colorSpaces) const override; + ScreenId id, std::vector& colorSpaces) const ; - void SetScreenSwitchStatus(bool flag) override; - bool IsScreenSwitching() const override; + void SetScreenSwitchStatus(bool flag) ; + bool IsScreenSwitching() const ; - uint32_t SetScreenActiveRect(ScreenId id, const GraphicIRect& activeRect) override; - void SetScreenHasProtectedLayer(ScreenId id, bool hasProtectedLayer) override; - int32_t SetScreenLinearMatrix(ScreenId id, const std::vector& matrix) override; - bool GetDisplayPropertyForHardCursor(uint32_t screenId) override; + uint32_t SetScreenActiveRect(ScreenId id, const GraphicIRect& activeRect) ; + void SetScreenHasProtectedLayer(ScreenId id, bool hasProtectedLayer) ; + int32_t SetScreenLinearMatrix(ScreenId id, const std::vector& matrix) ; + bool GetDisplayPropertyForHardCursor(uint32_t screenId) ; // virtual screen ScreenId CreateVirtualScreen(const std::string& name, uint32_t width, uint32_t height, sptr surface, - ScreenId mirrorId, int32_t flags, std::vector whiteList) override; - void RemoveVirtualScreen(ScreenId id) override; - uint32_t GetCurrentVirtualScreenNum() override; + ScreenId mirrorId, int32_t flags, std::vector whiteList) ; + void RemoveVirtualScreen(ScreenId id) ; + uint32_t GetCurrentVirtualScreenNum() ; - int32_t SetVirtualScreenSurface(ScreenId id, sptr surface) override; - sptr GetProducerSurface(ScreenId id) const override; - bool GetAndResetVirtualSurfaceUpdateFlag(ScreenId id) const override; + int32_t SetVirtualScreenSurface(ScreenId id, sptr surface) ; + sptr GetProducerSurface(ScreenId id) const ; + bool GetAndResetVirtualSurfaceUpdateFlag(ScreenId id) const ; - int32_t ResizeVirtualScreen(ScreenId id, uint32_t width, uint32_t height) override; - int32_t SetVirtualScreenResolution(ScreenId id, uint32_t width, uint32_t height) override; - void GetVirtualScreenResolution(ScreenId id, RSVirtualScreenResolution& virtualScreenResolution) const override; + int32_t ResizeVirtualScreen(ScreenId id, uint32_t width, uint32_t height) ; + int32_t SetVirtualScreenResolution(ScreenId id, uint32_t width, uint32_t height) ; + void GetVirtualScreenResolution(ScreenId id, RSVirtualScreenResolution& virtualScreenResolution) const ; - bool SetVirtualMirrorScreenCanvasRotation(ScreenId id, bool canvasRotation) override; - bool GetCanvasRotation(ScreenId id) const override; + bool SetVirtualMirrorScreenCanvasRotation(ScreenId id, bool canvasRotation) ; + bool GetCanvasRotation(ScreenId id) const ; - int32_t SetVirtualScreenAutoRotation(ScreenId id, bool isAutoRotation) override; - bool GetVirtualScreenAutoRotation(ScreenId id) const override; + int32_t SetVirtualScreenAutoRotation(ScreenId id, bool isAutoRotation) ; + bool GetVirtualScreenAutoRotation(ScreenId id) const ; - bool SetVirtualMirrorScreenScaleMode(ScreenId id, ScreenScaleMode ScaleMode) override; - ScreenScaleMode GetScaleMode(ScreenId id) const override; + bool SetVirtualMirrorScreenScaleMode(ScreenId id, ScreenScaleMode ScaleMode) ; + ScreenScaleMode GetScaleMode(ScreenId id) const ; - bool SetVirtualScreenStatus(ScreenId id, VirtualScreenStatus screenStatus) override; - VirtualScreenStatus GetVirtualScreenStatus(ScreenId id) const override; + bool SetVirtualScreenStatus(ScreenId id, VirtualScreenStatus screenStatus) ; + VirtualScreenStatus GetVirtualScreenStatus(ScreenId id) const ; - int32_t SetCastScreenEnableSkipWindow(ScreenId id, bool enable) override; - int32_t SetVirtualScreenBlackList(ScreenId id, const std::vector& blackList) override; - int32_t SetVirtualScreenTypeBlackList(ScreenId id, const std::vector& typeBlackList) override; - int32_t AddVirtualScreenBlackList(ScreenId id, const std::vector& blackList) override; - int32_t RemoveVirtualScreenBlackList(ScreenId id, const std::vector& blackList) override; - const std::unordered_set GetVirtualScreenBlackList(ScreenId id) const override; - const std::unordered_set GetVirtualScreenTypeBlackList(ScreenId id) const override; - std::unordered_set GetAllBlackList() const override; - std::unordered_set GetAllWhiteList() override; - std::unordered_set GetBlackListVirtualScreenByNode(uint64_t nodeId) override; + int32_t SetCastScreenEnableSkipWindow(ScreenId id, bool enable) ; + int32_t SetVirtualScreenBlackList(ScreenId id, const std::vector& blackList) ; + int32_t SetVirtualScreenTypeBlackList(ScreenId id, const std::vector& typeBlackList) ; + int32_t AddVirtualScreenBlackList(ScreenId id, const std::vector& blackList) ; + int32_t RemoveVirtualScreenBlackList(ScreenId id, const std::vector& blackList) ; + const std::unordered_set GetVirtualScreenBlackList(ScreenId id) const ; + const std::unordered_set GetVirtualScreenTypeBlackList(ScreenId id) const ; + std::unordered_set GetAllBlackList() const ; + std::unordered_set GetAllWhiteList() ; + std::unordered_set GetBlackListVirtualScreenByNode(uint64_t nodeId) ; int32_t SetVirtualScreenSecurityExemptionList( - ScreenId id, const std::vector& securityExemptionList) override; - const std::vector GetVirtualScreenSecurityExemptionList(ScreenId id) const override; + ScreenId id, const std::vector& securityExemptionList) ; + const std::vector GetVirtualScreenSecurityExemptionList(ScreenId id) const ; - int32_t SetScreenSecurityMask(ScreenId id, std::shared_ptr securityMask) override; - std::shared_ptr GetScreenSecurityMask(ScreenId id) const override; + int32_t SetScreenSecurityMask(ScreenId id, std::shared_ptr securityMask) ; + std::shared_ptr GetScreenSecurityMask(ScreenId id) const ; - int32_t SetMirrorScreenVisibleRect(ScreenId id, const Rect& mainScreenRect, bool supportRotation = false) override; - Rect GetMirrorScreenVisibleRect(ScreenId id) const override; - bool IsVisibleRectSupportRotation(ScreenId id) override; - int32_t GetVirtualScreenSecLayerOption(ScreenId id) const override; + int32_t SetMirrorScreenVisibleRect(ScreenId id, const Rect& mainScreenRect, bool supportRotation = false) ; + Rect GetMirrorScreenVisibleRect(ScreenId id) const ; + bool IsVisibleRectSupportRotation(ScreenId id) ; + int32_t GetVirtualScreenSecLayerOption(ScreenId id) const ; - int32_t SetVirtualScreenRefreshRate(ScreenId id, uint32_t maxRefreshRate, uint32_t& actualRefreshRate) override; - void SetScreenOffset(ScreenId id, int32_t offsetX, int32_t offsetY) override; + int32_t SetVirtualScreenRefreshRate(ScreenId id, uint32_t maxRefreshRate, uint32_t& actualRefreshRate) ; + void SetScreenOffset(ScreenId id, int32_t offsetX, int32_t offsetY) ; // Get all whiteList and their screenId - std::unordered_map> GetScreenWhiteList() const override; + std::unordered_map> GetScreenWhiteList() const ; - void InitLoadOptParams(LoadOptParamsForScreen& loadOptParamsForScreen) override; + void InitLoadOptParams(LoadOptParamsForScreen& loadOptParamsForScreen) ; private: - RSScreenManager() = default; - ~RSScreenManager() override = default; + RSScreenManager(); + ~RSScreenManager() = default; RSScreenManager(const RSScreenManager&) = delete; RSScreenManager& operator=(const RSScreenManager&) = delete; @@ -503,7 +337,6 @@ private: uint64_t frameId_ = 0; // only used by SetScreenConstraint, called in hardware thread per frame static std::once_flag createFlag_; - static sptr instance_; std::atomic powerOffNeedProcessOneFrame_ = false; @@ -534,8 +367,8 @@ private: std::unordered_map> screenWhiteList_; LoadOptParamsForScreen loadOptParamsForScreen_ = {}; + std::unique_ptr rsScreenCallbackManager_ = nullptr; }; -} // namespace impl } // namespace Rosen } // namespace OHOS diff --git a/rosen/modules/render_service/core/screen_manager/touch_screen.cpp b/rosen/modules/render_service/screen_manager/touch_screen.cpp similarity index 100% rename from rosen/modules/render_service/core/screen_manager/touch_screen.cpp rename to rosen/modules/render_service/screen_manager/touch_screen.cpp diff --git a/rosen/modules/render_service/core/screen_manager/touch_screen.h b/rosen/modules/render_service/screen_manager/touch_screen.h similarity index 100% rename from rosen/modules/render_service/core/screen_manager/touch_screen.h rename to rosen/modules/render_service/screen_manager/touch_screen.h diff --git a/rosen/modules/render_service_base/include/pipeline/rs_screen_render_info.h b/rosen/modules/render_service_base/include/pipeline/rs_screen_render_info.h new file mode 100644 index 0000000000000000000000000000000000000000..ce8c99d708ae54687321e9c6967b28e2c1de7fdf --- /dev/null +++ b/rosen/modules/render_service_base/include/pipeline/rs_screen_render_info.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025-2025 Huawei Device Co., Ltd. + * 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 RENDER_SERVICE_BASE_CORE_PIPELINE_RS_SCREEN_RENDER_INFO_H +#define RENDER_SERVICE_BASE_CORE_PIPELINE_RS_SCREEN_RENDER_INFO_H +namespace OHOS { +namespace Rosen { +class RSScreenRenderInfo { + +}; +} +} +#endif // RENDER_SERVICE_BASE_CORE_PIPELINE_RS_SCREEN_RENDER_INFO_H \ No newline at end of file