1 /* 2 * Copyright (c) 2021-2022 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 RS_SCREEN 17 #define RS_SCREEN 18 19 #include <memory> 20 #include <mutex> 21 #include <optional> 22 #include <shared_mutex> 23 #include <unordered_set> 24 25 #include <hdi_display_type.h> 26 #include <hdi_output.h> 27 #include <hdi_screen.h> 28 #include <surface_type.h> 29 30 #include <common/rs_rect.h> 31 #include <screen_manager/screen_types.h> 32 33 namespace OHOS { 34 namespace Rosen { 35 struct VirtualScreenConfigs { 36 ScreenId id = INVALID_SCREEN_ID; 37 ScreenId mirrorId = INVALID_SCREEN_ID; 38 std::string name; 39 uint32_t width = 0; 40 uint32_t height = 0; 41 sptr<Surface> surface = nullptr; 42 GraphicPixelFormat pixelFormat = GRAPHIC_PIXEL_FMT_RGBA_8888; 43 int32_t flags = 0; // reserve flag. 44 std::unordered_set<uint64_t> whiteList = {}; 45 }; 46 47 class RSScreen { 48 public: 49 RSScreen() = default; 50 virtual ~RSScreen() noexcept = default; 51 52 virtual ScreenId Id() const = 0; 53 virtual const std::string& Name() const = 0; 54 virtual void SetMirror(ScreenId mirroredId) = 0; 55 virtual ScreenId MirroredId() const = 0; 56 57 virtual bool IsEnable() const = 0; 58 virtual bool IsVirtual() const = 0; 59 virtual const RSScreenType& GetScreenType() const = 0; 60 61 virtual int32_t SetResolution(uint32_t width, uint32_t height) = 0; 62 virtual void SetRogResolution(uint32_t width, uint32_t height) = 0; 63 // render resolution 64 virtual uint32_t Width() const = 0; 65 virtual uint32_t Height() const = 0; 66 // physical screen resolution 67 virtual uint32_t PhyWidth() const = 0; 68 virtual uint32_t PhyHeight() const = 0; 69 virtual bool IsSamplingOn() const = 0; 70 virtual float GetSamplingTranslateX() const = 0; 71 virtual float GetSamplingTranslateY() const = 0; 72 virtual float GetSamplingScale() const = 0; 73 74 virtual void DisplayDump(int32_t screenIndex, std::string& dumpString) = 0; 75 virtual void SurfaceDump(int32_t screenIndex, std::string& dumpString) = 0; 76 virtual void DumpCurrentFrameLayers() = 0; 77 virtual void FpsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) = 0; 78 virtual void ClearFpsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) = 0; 79 virtual void HitchsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) = 0; 80 81 virtual void SetScreenSkipFrameInterval(uint32_t skipFrameInterval) = 0; 82 virtual uint32_t GetScreenSkipFrameInterval() const = 0; 83 virtual void SetScreenExpectedRefreshRate(uint32_t expectedRefreshRate) = 0; 84 virtual uint32_t GetScreenExpectedRefreshRate() const = 0; 85 virtual SkipFrameStrategy GetScreenSkipFrameStrategy() const = 0; 86 virtual void SetEqualVsyncPeriod(bool isEqualVsyncPeriod) = 0; 87 virtual bool GetEqualVsyncPeriod() const = 0; 88 virtual void SetScreenVsyncEnabled(bool enabled) const = 0; 89 90 // physical screen 91 virtual std::shared_ptr<HdiOutput> GetOutput() const = 0; 92 93 virtual uint32_t SetActiveMode(uint32_t modeId) = 0; 94 virtual std::optional<GraphicDisplayModeInfo> GetActiveMode() const = 0; 95 virtual int32_t GetActiveModePosByModeId(int32_t modeId) const = 0; 96 virtual const std::vector<GraphicDisplayModeInfo>& GetSupportedModes() const = 0; 97 98 virtual const GraphicDisplayCapability& GetCapability() const = 0; 99 virtual int32_t GetDisplayIdentificationData(uint8_t& outPort, std::vector<uint8_t>& edidData) const = 0; 100 101 virtual void SetScreenCorrection(ScreenRotation screenRotation) = 0; 102 virtual ScreenRotation GetScreenCorrection() const = 0; 103 104 virtual int32_t SetPowerStatus(uint32_t powerStatus) = 0; 105 virtual uint32_t GetPowerStatus() = 0; 106 107 virtual void SetScreenBacklight(uint32_t level) = 0; 108 virtual int32_t GetScreenBacklight() const = 0; 109 virtual int32_t SetScreenConstraint(uint64_t frameId, uint64_t timestamp, ScreenConstraintType type) = 0; 110 111 virtual int32_t SetPixelFormat(GraphicPixelFormat pixelFormat) = 0; 112 virtual int32_t GetPixelFormat(GraphicPixelFormat& pixelFormat) const = 0; 113 114 virtual int32_t SetScreenColorGamut(int32_t modeIdx) = 0; 115 virtual int32_t GetScreenColorGamut(ScreenColorGamut& mode) const = 0; 116 virtual int32_t GetScreenSupportedColorGamuts(std::vector<ScreenColorGamut>& mode) const = 0; 117 virtual int32_t SetScreenGamutMap(ScreenGamutMap mode) = 0; 118 virtual int32_t GetScreenGamutMap(ScreenGamutMap& mode) const = 0; 119 120 virtual int32_t SetScreenHDRFormat(int32_t modeIdx) = 0; 121 virtual int32_t GetScreenHDRFormat(ScreenHDRFormat& hdrFormat) const = 0; 122 virtual int32_t GetScreenSupportedHDRFormats(std::vector<ScreenHDRFormat>& hdrFormats) const = 0; 123 virtual const GraphicHDRCapability& GetHDRCapability() = 0; 124 virtual int32_t GetScreenSupportedMetaDataKeys(std::vector<ScreenHDRMetadataKey>& keys) const = 0; 125 126 virtual int32_t SetScreenColorSpace(GraphicCM_ColorSpaceType colorSpace) = 0; 127 virtual int32_t GetScreenColorSpace(GraphicCM_ColorSpaceType& colorSpace) const = 0; 128 virtual int32_t GetScreenSupportedColorSpaces(std::vector<GraphicCM_ColorSpaceType>& colorSpaces) const = 0; 129 130 virtual uint32_t SetScreenActiveRect(const GraphicIRect& activeRect) = 0; 131 virtual RectI GetActiveRect() const = 0; 132 virtual RectI GetMaskRect() const = 0; 133 virtual RectI GetReviseRect() const = 0; 134 virtual void SetHasProtectedLayer(bool hasProtectedLayer) = 0; 135 virtual bool GetHasProtectedLayer() = 0; 136 virtual int32_t SetScreenLinearMatrix(const std::vector<float>& matrix) = 0; 137 virtual bool GetDisplayPropertyForHardCursor() = 0; 138 139 // virtual screen 140 virtual void SetProducerSurface(sptr<Surface> producerSurface) = 0; 141 virtual sptr<Surface> GetProducerSurface() const = 0; 142 virtual bool GetAndResetVirtualSurfaceUpdateFlag() = 0; 143 144 virtual void ResizeVirtualScreen(uint32_t width, uint32_t height) = 0; 145 146 virtual bool SetVirtualMirrorScreenCanvasRotation(bool canvasRotation) = 0; 147 virtual bool GetCanvasRotation() const = 0; 148 149 virtual int32_t SetVirtualScreenAutoRotation(bool isAutoRotation) = 0; 150 virtual bool GetVirtualScreenAutoRotation() const = 0; 151 152 virtual bool SetVirtualMirrorScreenScaleMode(ScreenScaleMode scaleMode) = 0; 153 virtual ScreenScaleMode GetScaleMode() const = 0; 154 155 virtual bool SetVirtualScreenStatus(VirtualScreenStatus screenStatus) = 0; 156 virtual VirtualScreenStatus GetVirtualScreenStatus() const = 0; 157 158 virtual void SetCastScreenEnableSkipWindow(bool enable) = 0; 159 virtual bool GetCastScreenEnableSkipWindow() = 0; 160 virtual void SetBlackList(const std::unordered_set<uint64_t>& blackList) = 0; 161 virtual void SetTypeBlackList(const std::unordered_set<uint8_t>& typeBlackList) = 0; 162 virtual void AddBlackList(const std::vector<uint64_t>& blackList) = 0; 163 virtual void RemoveBlackList(const std::vector<uint64_t>& blackList) = 0; 164 virtual const std::unordered_set<uint64_t> GetBlackList() const = 0; 165 virtual const std::unordered_set<uint8_t> GetTypeBlackList() const = 0; 166 virtual const std::unordered_set<uint64_t>& GetWhiteList() const = 0; 167 168 virtual void SetSecurityExemptionList(const std::vector<uint64_t>& securityExemptionList) = 0; 169 virtual const std::vector<uint64_t> GetSecurityExemptionList() const = 0; 170 171 virtual int32_t SetSecurityMask(std::shared_ptr<Media::PixelMap> securityMask) = 0; 172 virtual std::shared_ptr<Media::PixelMap> GetSecurityMask() const = 0; 173 174 virtual void SetEnableVisibleRect(bool enable) = 0; 175 virtual bool GetEnableVisibleRect() const = 0; 176 virtual void SetMainScreenVisibleRect(const Rect& mainScreenRect) = 0; 177 virtual Rect GetMainScreenVisibleRect() const = 0; 178 virtual bool GetVisibleRectSupportRotation() const = 0; 179 virtual void SetVisibleRectSupportRotation(bool supportRotation) = 0; 180 virtual int32_t GetVirtualSecLayerOption() const = 0; 181 182 virtual void SetScreenOffset(int32_t offsetX, int32_t offsetY) = 0; 183 virtual int32_t GetOffsetX() const = 0; 184 virtual int32_t GetOffsetY() const = 0; 185 virtual bool GetAndResetPSurfaceChange() = 0; 186 virtual void SetPSurfaceChange(bool pSurfaceChange) = 0; 187 }; 188 189 namespace impl { 190 class RSScreen : public OHOS::Rosen::RSScreen { 191 public: 192 RSScreen(ScreenId id, bool isVirtual, std::shared_ptr<HdiOutput> output, sptr<Surface> surface); 193 RSScreen(const VirtualScreenConfigs& configs); 194 ~RSScreen() override = default; 195 196 RSScreen(const RSScreen&) = delete; 197 RSScreen& operator=(const RSScreen&) = delete; 198 199 ScreenId Id() const override; 200 const std::string& Name() const override; 201 void SetMirror(ScreenId mirroredId) override; 202 ScreenId MirroredId() const override; 203 204 bool IsEnable() const override; 205 bool IsVirtual() const override; 206 const RSScreenType& GetScreenType() const override; 207 208 int32_t SetResolution(uint32_t width, uint32_t height) override; 209 void SetRogResolution(uint32_t width, uint32_t height) override; 210 // render resolution 211 uint32_t Width() const override; 212 uint32_t Height() const override; 213 // physical screen resolution 214 uint32_t PhyWidth() const override; 215 uint32_t PhyHeight() const override; 216 bool IsSamplingOn() const override; 217 float GetSamplingTranslateX() const override; 218 float GetSamplingTranslateY() const override; 219 float GetSamplingScale() const override; 220 221 void DisplayDump(int32_t screenIndex, std::string& dumpString) override; 222 void SurfaceDump(int32_t screenIndex, std::string& dumpString) override; 223 void DumpCurrentFrameLayers() override; 224 void FpsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) override; 225 void ClearFpsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) override; 226 void HitchsDump(int32_t screenIndex, std::string& dumpString, std::string& arg) override; 227 228 void SetScreenSkipFrameInterval(uint32_t skipFrameInterval) override; 229 uint32_t GetScreenSkipFrameInterval() const override; 230 void SetScreenExpectedRefreshRate(uint32_t expectedRefreshRate) override; 231 uint32_t GetScreenExpectedRefreshRate() const override; 232 SkipFrameStrategy GetScreenSkipFrameStrategy() const override; 233 void SetEqualVsyncPeriod(bool isEqualVsyncPeriod) override; 234 bool GetEqualVsyncPeriod() const override; 235 void SetScreenVsyncEnabled(bool enabled) const override; 236 237 // physical screen 238 std::shared_ptr<HdiOutput> GetOutput() const override; 239 240 uint32_t SetActiveMode(uint32_t modeId) override; 241 std::optional<GraphicDisplayModeInfo> GetActiveMode() const override; 242 int32_t GetActiveModePosByModeId(int32_t modeId) const override; 243 const std::vector<GraphicDisplayModeInfo>& GetSupportedModes() const override; 244 245 const GraphicDisplayCapability& GetCapability() const override; 246 int32_t GetDisplayIdentificationData(uint8_t& outPort, std::vector<uint8_t>& edidData) const override; 247 248 void SetScreenCorrection(ScreenRotation screenRotation) override; 249 ScreenRotation GetScreenCorrection() const override; 250 251 int32_t SetPowerStatus(uint32_t powerStatus) override; 252 uint32_t GetPowerStatus() override; 253 254 void SetScreenBacklight(uint32_t level) override; 255 int32_t GetScreenBacklight() const override; 256 int32_t SetScreenConstraint(uint64_t frameId, uint64_t timestamp, ScreenConstraintType type) override; 257 258 int32_t SetPixelFormat(GraphicPixelFormat pixelFormat) override; 259 int32_t GetPixelFormat(GraphicPixelFormat& pixelFormat) const override; 260 261 int32_t SetScreenColorGamut(int32_t modeIdx) override; 262 int32_t GetScreenColorGamut(ScreenColorGamut& mode) const override; 263 int32_t GetScreenSupportedColorGamuts(std::vector<ScreenColorGamut>& mode) const override; 264 int32_t SetScreenGamutMap(ScreenGamutMap mode) override; 265 int32_t GetScreenGamutMap(ScreenGamutMap& mode) const override; 266 267 int32_t SetScreenHDRFormat(int32_t modeIdx) override; 268 int32_t GetScreenHDRFormat(ScreenHDRFormat& hdrFormat) const override; 269 int32_t GetScreenSupportedHDRFormats(std::vector<ScreenHDRFormat>& hdrFormats) const override; 270 const GraphicHDRCapability& GetHDRCapability() override; 271 int32_t GetScreenSupportedMetaDataKeys(std::vector<ScreenHDRMetadataKey>& keys) const override; 272 273 int32_t SetScreenColorSpace(GraphicCM_ColorSpaceType colorSpace) override; 274 int32_t GetScreenColorSpace(GraphicCM_ColorSpaceType& colorSpace) const override; 275 int32_t GetScreenSupportedColorSpaces(std::vector<GraphicCM_ColorSpaceType>& colorSpaces) const override; 276 277 uint32_t SetScreenActiveRect(const GraphicIRect& activeRect) override; 278 RectI GetActiveRect() const override; 279 RectI GetMaskRect() const override; 280 RectI GetReviseRect() const override; 281 void SetHasProtectedLayer(bool hasProtectedLayer) override; 282 bool GetHasProtectedLayer() override; 283 int32_t SetScreenLinearMatrix(const std::vector<float>& matrix) override; 284 bool GetDisplayPropertyForHardCursor() override; 285 286 // virtual screen 287 void SetProducerSurface(sptr<Surface> producerSurface) override; 288 sptr<Surface> GetProducerSurface() const override; 289 bool GetAndResetVirtualSurfaceUpdateFlag() override; 290 291 void ResizeVirtualScreen(uint32_t width, uint32_t height) override; 292 293 bool SetVirtualMirrorScreenCanvasRotation(bool canvasRotation) override; 294 bool GetCanvasRotation() const override; 295 296 int32_t SetVirtualScreenAutoRotation(bool isAutoRotation) override; 297 bool GetVirtualScreenAutoRotation() const override; 298 299 bool SetVirtualMirrorScreenScaleMode(ScreenScaleMode scaleMode) override; 300 ScreenScaleMode GetScaleMode() const override; 301 302 bool SetVirtualScreenStatus(VirtualScreenStatus screenStatus) override; 303 VirtualScreenStatus GetVirtualScreenStatus() const override; 304 305 void SetCastScreenEnableSkipWindow(bool enable) override; 306 bool GetCastScreenEnableSkipWindow() override; 307 void SetBlackList(const std::unordered_set<uint64_t>& blackList) override; 308 void SetTypeBlackList(const std::unordered_set<uint8_t>& typeBlackList) override; 309 void AddBlackList(const std::vector<uint64_t>& blackList) override; 310 void RemoveBlackList(const std::vector<uint64_t>& blackList) override; 311 const std::unordered_set<uint64_t> GetBlackList() const override; 312 const std::unordered_set<uint8_t> GetTypeBlackList() const override; 313 const std::unordered_set<uint64_t>& GetWhiteList() const override; 314 315 void SetSecurityExemptionList(const std::vector<uint64_t>& securityExemptionList) override; 316 const std::vector<uint64_t> GetSecurityExemptionList() const override; 317 318 int32_t SetSecurityMask(std::shared_ptr<Media::PixelMap> securityMask) override; 319 std::shared_ptr<Media::PixelMap> GetSecurityMask() const override; 320 321 void SetEnableVisibleRect(bool enable) override; 322 bool GetEnableVisibleRect() const override; 323 void SetMainScreenVisibleRect(const Rect& mainScreenRect) override; 324 Rect GetMainScreenVisibleRect() const override; 325 bool GetVisibleRectSupportRotation() const override; 326 void SetVisibleRectSupportRotation(bool supportRotation) override; 327 328 int32_t GetVirtualSecLayerOption() const override; 329 void SetScreenOffset(int32_t offsetX, int32_t offsetY) override; 330 int32_t GetOffsetX() const override; 331 int32_t GetOffsetY() const override; 332 333 bool GetAndResetPSurfaceChange() override; 334 void SetPSurfaceChange(bool pSurfaceChange) override; 335 private: 336 // create hdiScreen and get some information from drivers. 337 void PhysicalScreenInit() noexcept; 338 void ScreenCapabilityInit() noexcept; 339 void VirtualScreenInit() noexcept; 340 void WriteHisyseventEpsLcdInfo(GraphicDisplayModeInfo& activeMode); 341 bool CalculateMaskRectAndReviseRect(const GraphicIRect& activeRect, GraphicIRect& reviseRect); 342 343 void ModeInfoDump(std::string& dumpString); 344 void CapabilityDump(std::string& dumpString); 345 void PropDump(std::string& dumpString); 346 void PowerStatusDump(std::string& dumpString); 347 void CapabilityTypeDump(GraphicInterfaceType capabilityType, std::string& dumpString); 348 void ScreenTypeDump(std::string& dumpString); 349 350 // ScreenId for this screen. 351 ScreenId id_ = INVALID_SCREEN_ID; 352 // If this screen is the mirror of other screen, this member would be a valid id. 353 ScreenId mirroredId_ = INVALID_SCREEN_ID; 354 355 std::string name_; 356 357 mutable std::shared_mutex screenMutex_; 358 uint32_t width_ = 0; 359 uint32_t height_ = 0; 360 uint32_t phyWidth_ = 0; 361 uint32_t phyHeight_ = 0; 362 bool isSamplingOn_ = false; 363 float samplingTranslateX_ = 0.f; 364 float samplingTranslateY_ = 0.f; 365 float samplingScale_ = 1.f; 366 int32_t screenBacklightLevel_ = INVALID_BACKLIGHT_VALUE; 367 RectI activeRect_ = {}; 368 RectI maskRect_ = {}; 369 RectI reviseRect_ = {}; 370 371 std::atomic<VirtualScreenStatus> screenStatus_ = VIRTUAL_SCREEN_PLAY; 372 373 bool isVirtual_ = true; 374 std::atomic<bool> isVirtualSurfaceUpdateFlag_ = false; 375 int32_t virtualSecLayerOption_ = 0; 376 std::shared_ptr<HdiOutput> hdiOutput_ = nullptr; // has value if the screen is physical 377 std::unique_ptr<HdiScreen> hdiScreen_ = nullptr; // has value if the screen is physical 378 std::vector<GraphicDisplayModeInfo> supportedModes_; 379 GraphicDisplayCapability capability_ = {"test1", GRAPHIC_DISP_INTF_HDMI, 1921, 1081, 0, 0, true, 0}; 380 GraphicHDRCapability hdrCapability_; 381 382 int32_t offsetX_ = 0; 383 int32_t offsetY_ = 0; 384 385 mutable std::mutex producerSurfaceMutex_; 386 sptr<Surface> producerSurface_ = nullptr; // has value if the screen is virtual 387 ScreenPowerStatus powerStatus_ = ScreenPowerStatus::INVALID_POWER_STATUS; 388 std::atomic<GraphicPixelFormat> pixelFormat_; 389 390 std::vector<ScreenColorGamut> supportedVirtualColorGamuts_ = { 391 COLOR_GAMUT_SRGB, 392 COLOR_GAMUT_DCI_P3, 393 COLOR_GAMUT_ADOBE_RGB, 394 COLOR_GAMUT_DISPLAY_P3, 395 COLOR_GAMUT_BT2100_HLG }; 396 std::vector<ScreenColorGamut> supportedPhysicalColorGamuts_; 397 std::atomic<int32_t> currentVirtualColorGamutIdx_ = 0; 398 std::atomic<int32_t> currentPhysicalColorGamutIdx_ = 0; 399 std::atomic<ScreenGamutMap> currentVirtualGamutMap_ = GAMUT_MAP_CONSTANT; 400 std::atomic<int32_t> currentVirtualHDRFormatIdx_ = 0; 401 std::atomic<int32_t> currentPhysicalHDRFormatIdx_ = 0; 402 std::vector<ScreenHDRFormat> supportedVirtualHDRFormats_ = { 403 NOT_SUPPORT_HDR }; 404 std::vector<ScreenHDRFormat> supportedPhysicalHDRFormats_; 405 RSScreenType screenType_ = RSScreenType::UNKNOWN_TYPE_SCREEN; 406 407 mutable std::shared_mutex skipFrameMutex_; 408 uint32_t skipFrameInterval_ = DEFAULT_SKIP_FRAME_INTERVAL; 409 uint32_t expectedRefreshRate_ = INVALID_EXPECTED_REFRESH_RATE; 410 SkipFrameStrategy skipFrameStrategy_ = SKIP_FRAME_BY_INTERVAL; 411 bool isEqualVsyncPeriod_ = true; 412 413 std::atomic<ScreenRotation> screenRotation_ = ScreenRotation::ROTATION_0; 414 std::atomic<bool> canvasRotation_ = false; // just for virtual screen to use 415 std::atomic<bool> autoBufferRotation_ = false; // whether automatically adjust buffer rotation, virtual screen only 416 std::atomic<ScreenScaleMode> scaleMode_ = ScreenScaleMode::UNISCALE_MODE; // just for virtual screen to use 417 static std::map<GraphicColorGamut, GraphicCM_ColorSpaceType> RS_TO_COMMON_COLOR_SPACE_TYPE_MAP; 418 static std::map<GraphicCM_ColorSpaceType, GraphicColorGamut> COMMON_COLOR_SPACE_TYPE_TO_RS_MAP; 419 static std::map<GraphicHDRFormat, ScreenHDRFormat> HDI_HDR_FORMAT_TO_RS_MAP; 420 static std::map<ScreenHDRFormat, GraphicHDRFormat> RS_TO_HDI_HDR_FORMAT_MAP; 421 std::unordered_set<uint64_t> whiteList_ = {}; 422 423 mutable std::mutex blackListMutex_; 424 std::unordered_set<uint64_t> blackList_ = {}; 425 426 mutable std::mutex typeBlackListMutex_; 427 std::unordered_set<uint8_t> typeBlackList_ = {}; 428 429 mutable std::mutex securityExemptionMutex_; 430 std::vector<uint64_t> securityExemptionList_ = {}; 431 432 mutable std::mutex securityMaskMutex_; 433 std::shared_ptr<Media::PixelMap> securityMask_ = nullptr; 434 435 mutable std::mutex visibleRectMutex_; 436 Rect mainScreenVisibleRect_ = {}; 437 438 std::atomic<bool> enableVisibleRect_ = false; 439 std::atomic<bool> skipWindow_ = false; 440 441 std::once_flag hardCursorSupportedFlag_; 442 bool isHardCursorSupport_ = false; 443 444 std::atomic<bool> isSupportRotation_ = false; 445 std::atomic<bool> hasProtectedLayer_ = false; 446 447 std::vector<float> linearMatrix_ = {1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f}; 448 449 std::atomic<bool> hasLogBackLightAfterPowerStatusChanged_ = false; 450 451 std::atomic<bool> pSurfaceChange_ = false; // just for dirty region to use 452 }; 453 } // namespace impl 454 } // namespace Rosen 455 } // namespace OHOS 456 457 #endif // RS_SCREEN 458