/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_graphite_DrawPass_DEFINED #define skgpu_graphite_DrawPass_DEFINED #include "include/core/SkColor.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" #include "include/private/base/SkTArray.h" #include "src/base/SkEnumBitMask.h" #include "src/gpu/graphite/DrawCommands.h" #include "src/gpu/graphite/DrawTypes.h" #include "src/gpu/graphite/GraphicsPipelineDesc.h" #include "src/gpu/graphite/ResourceTypes.h" #include "src/gpu/graphite/TextureProxy.h" #include <memory> struct SkImageInfo; namespace skgpu::graphite { class BoundsManager; class CommandBuffer; class DrawList; class GraphicsPipeline; class Recorder; struct RenderPassDesc; class ResourceProvider; class RuntimeEffectDictionary; class Sampler; class TextureDataBlock; class Texture; enum class UniformSlot; /** * DrawPass is analogous to a subpass, storing the drawing operations in the order they are stored * in the eventual command buffer, as well as the surface proxy the operations are intended for. * DrawPasses are grouped into a RenderPassTask for execution within a single render pass if the * subpasses are compatible with each other. * * Unlike DrawList, DrawPasses are immutable and represent as closely as possible what will be * stored in the command buffer while being flexible as to how the pass is incorporated. Depending * on the backend, it may even be able to write accumulated vertex and uniform data directly to * mapped GPU memory, although that is the extent of the CPU->GPU work they perform before they are * executed by a RenderPassTask. */ class DrawPass { … }; } // namespace skgpu::graphite #endif // skgpu_graphite_DrawPass_DEFINED