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