1 /* 2 * Copyright (c) 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 RENDER_SERVICE_CORE_PIPELINE_PARALLEL_RENDER_RS_PARALLEL_PACK_VISITOR_H 17 #define RENDER_SERVICE_CORE_PIPELINE_PARALLEL_RENDER_RS_PARALLEL_PACK_VISITOR_H 18 19 #include <vector> 20 #include <string> 21 #include "platform/common/rs_system_properties.h" 22 #include "visitor/rs_node_visitor.h" 23 namespace OHOS { 24 namespace Rosen { 25 class RSUniRenderVisitor; 26 class RSParallelPackVisitor : public RSNodeVisitor { 27 public: RSParallelPackVisitor()28 RSParallelPackVisitor() {} 29 explicit RSParallelPackVisitor(RSUniRenderVisitor &visitor); ~RSParallelPackVisitor()30 ~RSParallelPackVisitor() override {} 31 32 void PrepareChildren(RSRenderNode& node) override; PrepareCanvasRenderNode(RSCanvasRenderNode & node)33 void PrepareCanvasRenderNode(RSCanvasRenderNode& node) override {} 34 void PrepareDisplayRenderNode(RSDisplayRenderNode& node) override; PrepareProxyRenderNode(RSProxyRenderNode & node)35 void PrepareProxyRenderNode(RSProxyRenderNode& node) override {} PrepareRootRenderNode(RSRootRenderNode & node)36 void PrepareRootRenderNode(RSRootRenderNode& node) override {} 37 void PrepareSurfaceRenderNode(RSSurfaceRenderNode& node) override; PrepareEffectRenderNode(RSEffectRenderNode & node)38 void PrepareEffectRenderNode(RSEffectRenderNode& node) override {} 39 40 void ProcessChildren(RSRenderNode& node) override; ProcessCanvasRenderNode(RSCanvasRenderNode & node)41 void ProcessCanvasRenderNode(RSCanvasRenderNode& node) override {} 42 void ProcessDisplayRenderNode(RSDisplayRenderNode& node) override; ProcessProxyRenderNode(RSProxyRenderNode & node)43 void ProcessProxyRenderNode(RSProxyRenderNode& node) override {} ProcessRootRenderNode(RSRootRenderNode & node)44 void ProcessRootRenderNode(RSRootRenderNode& node) override {} 45 void ProcessSurfaceRenderNode(RSSurfaceRenderNode& node) override; ProcessEffectRenderNode(RSEffectRenderNode & node)46 void ProcessEffectRenderNode(RSEffectRenderNode& node) override {} 47 48 void CalcDisplayRenderNodeCost(RSDisplayRenderNode& node) const; 49 private: 50 void CalcSurfaceRenderNodeCost(RSSurfaceRenderNode& node) const; 51 bool IsSkipProcessing(RSSurfaceRenderNode& node) const; 52 bool isOpDropped_ = false; 53 bool isPartialRenderEnabled_ = false; 54 bool isSecurityDisplay_ = false; 55 bool doAnimate_ = false; 56 PartialRenderType partialRenderType_ = PartialRenderType::DISABLED; 57 bool isFirstSurfaceNode_ = false; 58 }; 59 } // namespace Rosen 60 } // namespace OHOS 61 #endif // RENDER_SERVICE_CORE_PIPELINE_PARALLEL_RENDER_RS_PARALLEL_PACK_VISITOR_H 62