• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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_CORE_SYSTEM_RS_SYSTEM_PARAMETERS_H
17 #define ROSEN_RENDER_SERVICE_CORE_SYSTEM_RS_SYSTEM_PARAMETERS_H
18 
19 #include <atomic>
20 #include <string>
21 #include <vector>
22 #include <surface_type.h>
23 
24 #include "common/rs_macros.h"
25 
26 namespace OHOS {
27 namespace Rosen {
28 
29 enum class QuickSkipPrepareType {
30     DISABLED = 0,           // 0, disable quick skip preparation
31     STATIC_PROCESS,         // 1, skip no-command process's preparation
32     STATIC_APP_INSTANCE,    // 2, in case of dirty process, skip static app instance's preparation
33     STATIC_CACHE,           // 3, in case of dirty instance, simplify static (drawing)cache's preparation
34     STATIC_CACHE_SURFACE,   // 4, in case of dirty instance, simplify surface's static cache's preparation
35     CONTENT_DIRTY_CACHE_SURFACE,  // 5, simplify dirty cache surface's subtree preparation
36 };
37 
38 enum class RsParallelType {
39     RS_PARALLEL_TYPE_ASYNC = 0,         // 0, The main thread and render thread execute asynchronous, default type
40     RS_PARALLEL_TYPE_SYNC = 1,          // 1, The main thread and render thread execute synchronously
41     RS_PARALLEL_TYPE_SINGLE_THREAD = 2, // 2, Render in main thread, execute synchronously
42 };
43 
44 enum class RsSurfaceCaptureType {
45     // 0, Run SurfaceCapture in render thread, default type
46     RS_SURFACE_CAPTURE_TYPE_RENDER_THREAD = 0,
47     // 1, Run SurfaceCapture in main thread
48     RS_SURFACE_CAPTURE_TYPE_MAIN_THREAD = 1,
49     // 2, Run SurfaceCapture in render thread using RSSurfaceCaptureVisitor
50     RS_SURFACE_CAPTURE_TYPE_RENDER_THREAD_VISITOR = 2,
51 };
52 
53 class RSB_EXPORT RSSystemParameters final {
54 public:
55     ~RSSystemParameters() = default;
56     static int GetDumpRSTreeCount();
57     static void SetDumpRSTreeCount(int count);
58     static bool GetCalcCostEnabled();
59     static bool GetDrawingCacheEnabled();
60     static bool GetDrawingCacheEnabledDfx();
61     static bool GetShowRefreshRateEnabled(int *changed = nullptr);
62     static QuickSkipPrepareType GetQuickSkipPrepareType();
63     static RsParallelType GetRsParallelType();
64     static RsSurfaceCaptureType GetRsSurfaceCaptureType();
65     static bool GetVRateControlEnabled();
66     static bool GetVSyncControlEnabled();
67     static bool GetSystemAnimatedScenesEnabled();
68     static bool GetFilterCacheOcculusionEnabled();
69     static bool GetSkipCanvasNodeOutofScreenEnabled();
70     static bool GetDrawingEffectRegionEnabledDfx();
71     static bool GetRenderStop();
72     static bool GetOcclusionCallBackToWMSDebugType();
73     static bool GetPrevalidateHwcNodeEnabled();
74     static bool GetSolidLayerHwcEnabled();
75     static bool GetControlBufferConsumeEnabled();
76     static bool GetHideNotchStatus();
77     static bool GetHpaeBlurEnabled();
78     static bool GetTcacheEnabled();
79     static bool GetDumpCanvasDrawingNodeEnabled();
80     static bool IsNeedScRGBForP3(const GraphicColorGamut& currentGamut);
81     static bool GetWiredScreenOndrawEnabled();
82     static bool GetDebugMirrorOndrawEnabled();
83     static bool GetArsrPreEnabled();
84     static bool GetIsCopybitSupported();
85     static bool GetMultimediaEnableCameraRotationCompensation();
86     static bool GetCanvasDrawingNodeRegionEnabled();
87     static int32_t GetWindowScreenScanType();
88     static int32_t GetPurgeableResourceLimit();
89     static bool GetAnimationOcclusionEnabled();
90     static bool GetUIFirstPurgeEnabled();
91     static bool GetUIFirstOcclusionEnabled();
92     static bool GetUIFirstCaptrueReuseEnabled();
93     static bool GetUIFirstStartingWindowCacheEnabled();
94 };
95 
96 } // namespace Rosen
97 } // namespace OHOS
98 
99 #endif // ROSEN_RENDER_SERVICE_CORE_SYSTEM_RS_SYSTEM_PARAMETERS_H
100