18bf80f4bSopenharmony_ci/* 28bf80f4bSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License. 58bf80f4bSopenharmony_ci * You may obtain a copy of the License at 68bf80f4bSopenharmony_ci * 78bf80f4bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88bf80f4bSopenharmony_ci * 98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and 138bf80f4bSopenharmony_ci * limitations under the License. 148bf80f4bSopenharmony_ci */ 158bf80f4bSopenharmony_ci 168bf80f4bSopenharmony_ci#ifndef RENDER_RENDER__NODE__RENDER_COPY_H 178bf80f4bSopenharmony_ci#define RENDER_RENDER__NODE__RENDER_COPY_H 188bf80f4bSopenharmony_ci 198bf80f4bSopenharmony_ci#include <render/namespace.h> 208bf80f4bSopenharmony_ci#include <render/nodecontext/intf_pipeline_descriptor_set_binder.h> 218bf80f4bSopenharmony_ci#include <render/nodecontext/intf_render_node.h> 228bf80f4bSopenharmony_ci#include <render/render_data_structures.h> 238bf80f4bSopenharmony_ci#include <render/resource_handle.h> 248bf80f4bSopenharmony_ci 258bf80f4bSopenharmony_ciRENDER_BEGIN_NAMESPACE() 268bf80f4bSopenharmony_ciclass IRenderCommandList; 278bf80f4bSopenharmony_ci 288bf80f4bSopenharmony_ciclass RenderCopy final { 298bf80f4bSopenharmony_cipublic: 308bf80f4bSopenharmony_ci RenderCopy() = default; 318bf80f4bSopenharmony_ci ~RenderCopy() = default; 328bf80f4bSopenharmony_ci 338bf80f4bSopenharmony_ci enum class CopyType : uint32_t { 348bf80f4bSopenharmony_ci BASIC_COPY = 0, 358bf80f4bSopenharmony_ci LAYER_COPY = 1, 368bf80f4bSopenharmony_ci }; 378bf80f4bSopenharmony_ci 388bf80f4bSopenharmony_ci struct CopyInfo { 398bf80f4bSopenharmony_ci BindableImage input; 408bf80f4bSopenharmony_ci BindableImage output; 418bf80f4bSopenharmony_ci RenderHandle sampler; // if not given linear clamp is used 428bf80f4bSopenharmony_ci CopyType copyType { CopyType::BASIC_COPY }; 438bf80f4bSopenharmony_ci }; 448bf80f4bSopenharmony_ci void Init(IRenderNodeContextManager& renderNodeContextMgr, const CopyInfo& copyInfo); 458bf80f4bSopenharmony_ci void PreExecute(IRenderNodeContextManager& renderNodeContextMgr, const CopyInfo& copyInfo); 468bf80f4bSopenharmony_ci void Execute(IRenderNodeContextManager& renderNodeContextMgr, IRenderCommandList& cmdList); 478bf80f4bSopenharmony_ci 488bf80f4bSopenharmony_ci DescriptorCounts GetDescriptorCounts() const; 498bf80f4bSopenharmony_ci 508bf80f4bSopenharmony_ciprivate: 518bf80f4bSopenharmony_ci CopyInfo copyInfo_; 528bf80f4bSopenharmony_ci struct RenderDataHandles { 538bf80f4bSopenharmony_ci RenderHandle shader; 548bf80f4bSopenharmony_ci PipelineLayout pipelineLayout; 558bf80f4bSopenharmony_ci RenderHandle pso; 568bf80f4bSopenharmony_ci RenderHandle sampler; 578bf80f4bSopenharmony_ci 588bf80f4bSopenharmony_ci RenderHandle shaderLayer; 598bf80f4bSopenharmony_ci PipelineLayout pipelineLayoutLayer; 608bf80f4bSopenharmony_ci RenderHandle psoLayer; 618bf80f4bSopenharmony_ci }; 628bf80f4bSopenharmony_ci RenderDataHandles renderData_; 638bf80f4bSopenharmony_ci 648bf80f4bSopenharmony_ci IDescriptorSetBinder::Ptr binder_; 658bf80f4bSopenharmony_ci}; 668bf80f4bSopenharmony_ciRENDER_END_NAMESPACE() 678bf80f4bSopenharmony_ci 688bf80f4bSopenharmony_ci#endif // CORE__RENDER__NODE__RENDER_COPY_H 69