| // 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. | |
| #ifndef FLUTTER_SHELL_GPU_GPU_SURFACE_NOOP_H_ | |
| #define FLUTTER_SHELL_GPU_GPU_SURFACE_NOOP_H_ | |
| #include <Metal/Metal.h> | |
| #include "flutter/flow/surface.h" | |
| namespace flutter { | |
| /// @brief A rendering surface that accepts rendering intent but does not render | |
| /// anything. | |
| /// | |
| /// This is useful for running on platforms that need an engine instance and | |
| /// don't have the required drivers. | |
| class GPUSurfaceNoop : public Surface { | |
| public: | |
| explicit GPUSurfaceNoop(); | |
| // |Surface| | |
| ~GPUSurfaceNoop(); | |
| // |Surface| | |
| bool IsValid() override; | |
| // |Surface| | |
| Surface::SurfaceData GetSurfaceData() const override; | |
| private: | |
| // |Surface| | |
| std::unique_ptr<SurfaceFrame> AcquireFrame( | |
| const SkISize& frame_size) override; | |
| std::unique_ptr<SurfaceFrame> AcquireFrameFromCAMetalLayer( | |
| const SkISize& frame_size); | |
| std::unique_ptr<SurfaceFrame> AcquireFrameFromMTLTexture( | |
| const SkISize& frame_size); | |
| // |Surface| | |
| SkMatrix GetRootTransformation() const override; | |
| // |Surface| | |
| GrDirectContext* GetContext() override; | |
| // |Surface| | |
| std::unique_ptr<GLContextResult> MakeRenderContextCurrent() override; | |
| // |Surface| | |
| bool AllowsDrawingWhenGpuDisabled() const override; | |
| // |Surface| | |
| bool EnableRasterCache() const override; | |
| // |Surface| | |
| std::shared_ptr<impeller::AiksContext> GetAiksContext() const override; | |
| GPUSurfaceNoop(const GPUSurfaceNoop&) = delete; | |
| GPUSurfaceNoop& operator=(const GPUSurfaceNoop&) = delete; | |
| }; | |
| } // namespace flutter | |
| #endif // FLUTTER_SHELL_GPU_GPU_SURFACE_NOOP_H_ |