|  | // Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #include "fml/macros.h" | 
|  | #include "impeller/renderer/render_target.h" | 
|  |  | 
|  | namespace impeller { | 
|  |  | 
|  | class InlinePassContext; | 
|  |  | 
|  | class EntityPassTarget { | 
|  | public: | 
|  | explicit EntityPassTarget(const RenderTarget& render_target, | 
|  | bool supports_read_from_resolve); | 
|  |  | 
|  | /// @brief  Flips the backdrop and returns a readable texture that can be | 
|  | ///         bound/sampled to restore the previous pass. | 
|  | /// | 
|  | ///         After this method is called, a new `RenderPass` that attaches the | 
|  | ///         result of `GetRenderTarget` is guaranteed to be able to read the | 
|  | ///         previous pass's backdrop texture (which is returned by this | 
|  | ///         method). | 
|  | std::shared_ptr<Texture> Flip(Allocator& allocator); | 
|  |  | 
|  | const RenderTarget& GetRenderTarget() const; | 
|  |  | 
|  | bool IsValid() const; | 
|  |  | 
|  | private: | 
|  | RenderTarget target_; | 
|  | std::shared_ptr<Texture> secondary_color_texture_; | 
|  |  | 
|  | bool supports_read_from_resolve_; | 
|  |  | 
|  | friend InlinePassContext; | 
|  |  | 
|  | FML_DISALLOW_ASSIGN(EntityPassTarget); | 
|  | }; | 
|  |  | 
|  | }  // namespace impeller |