• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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