| // 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_IMPELLER_RENDERER_TESTING_MOCKS_H_ |
| #define FLUTTER_IMPELLER_RENDERER_TESTING_MOCKS_H_ |
| |
| #include "gmock/gmock.h" |
| #include "impeller/core/allocator.h" |
| #include "impeller/core/sampler_descriptor.h" |
| #include "impeller/core/texture.h" |
| #include "impeller/renderer/command_buffer.h" |
| #include "impeller/renderer/command_queue.h" |
| #include "impeller/renderer/context.h" |
| #include "impeller/renderer/render_pass.h" |
| #include "impeller/renderer/render_target.h" |
| #include "impeller/renderer/sampler_library.h" |
| |
| namespace impeller { |
| namespace testing { |
| |
| class MockDeviceBuffer : public DeviceBuffer { |
| public: |
| explicit MockDeviceBuffer(const DeviceBufferDescriptor& desc) |
| : DeviceBuffer(desc) {} |
| |
| MOCK_METHOD(bool, SetLabel, (const std::string& label), (override)); |
| |
| MOCK_METHOD(bool, |
| SetLabel, |
| (const std::string& label, Range range), |
| (override)); |
| |
| MOCK_METHOD(uint8_t*, OnGetContents, (), (const, override)); |
| |
| MOCK_METHOD(bool, |
| OnCopyHostBuffer, |
| (const uint8_t* source, Range source_range, size_t offset), |
| (override)); |
| }; |
| |
| class MockAllocator : public Allocator { |
| public: |
| MOCK_METHOD(ISize, GetMaxTextureSizeSupported, (), (const, override)); |
| MOCK_METHOD(std::shared_ptr<DeviceBuffer>, |
| OnCreateBuffer, |
| (const DeviceBufferDescriptor& desc), |
| (override)); |
| MOCK_METHOD(std::shared_ptr<Texture>, |
| OnCreateTexture, |
| (const TextureDescriptor& desc), |
| (override)); |
| }; |
| |
| class MockBlitPass : public BlitPass { |
| public: |
| MOCK_METHOD(bool, IsValid, (), (const, override)); |
| MOCK_METHOD(bool, |
| EncodeCommands, |
| (const std::shared_ptr<Allocator>& transients_allocator), |
| (const, override)); |
| MOCK_METHOD(void, OnSetLabel, (std::string label), (override)); |
| |
| MOCK_METHOD(bool, |
| OnCopyTextureToTextureCommand, |
| (std::shared_ptr<Texture> source, |
| std::shared_ptr<Texture> destination, |
| IRect source_region, |
| IPoint destination_origin, |
| std::string label), |
| (override)); |
| |
| MOCK_METHOD(bool, |
| OnCopyTextureToBufferCommand, |
| (std::shared_ptr<Texture> source, |
| std::shared_ptr<DeviceBuffer> destination, |
| IRect source_region, |
| size_t destination_offset, |
| std::string label), |
| (override)); |
| MOCK_METHOD(bool, |
| OnCopyBufferToTextureCommand, |
| (BufferView source, |
| std::shared_ptr<Texture> destination, |
| IRect destination_rect, |
| std::string label, |
| uint32_t slice, |
| bool convert_to_read), |
| (override)); |
| MOCK_METHOD(bool, |
| OnGenerateMipmapCommand, |
| (std::shared_ptr<Texture> texture, std::string label), |
| (override)); |
| }; |
| |
| class MockRenderPass : public RenderPass { |
| public: |
| MockRenderPass(std::shared_ptr<const Context> context, |
| const RenderTarget& target) |
| : RenderPass(std::move(context), target) {} |
| MOCK_METHOD(bool, IsValid, (), (const, override)); |
| MOCK_METHOD(bool, |
| OnEncodeCommands, |
| (const Context& context), |
| (const, override)); |
| MOCK_METHOD(void, OnSetLabel, (std::string label), (override)); |
| }; |
| |
| class MockCommandBuffer : public CommandBuffer { |
| public: |
| explicit MockCommandBuffer(std::weak_ptr<const Context> context) |
| : CommandBuffer(std::move(context)) {} |
| MOCK_METHOD(bool, IsValid, (), (const, override)); |
| MOCK_METHOD(void, SetLabel, (const std::string& label), (const, override)); |
| MOCK_METHOD(std::shared_ptr<BlitPass>, OnCreateBlitPass, (), (override)); |
| MOCK_METHOD(bool, |
| OnSubmitCommands, |
| (CompletionCallback callback), |
| (override)); |
| MOCK_METHOD(void, OnWaitUntilScheduled, (), (override)); |
| MOCK_METHOD(std::shared_ptr<ComputePass>, |
| OnCreateComputePass, |
| (), |
| (override)); |
| MOCK_METHOD(std::shared_ptr<RenderPass>, |
| OnCreateRenderPass, |
| (RenderTarget render_target), |
| (override)); |
| }; |
| |
| class MockImpellerContext : public Context { |
| public: |
| MOCK_METHOD(Context::BackendType, GetBackendType, (), (const, override)); |
| |
| MOCK_METHOD(std::string, DescribeGpuModel, (), (const, override)); |
| |
| MOCK_METHOD(bool, IsValid, (), (const, override)); |
| |
| MOCK_METHOD(void, Shutdown, (), (override)); |
| |
| MOCK_METHOD(std::shared_ptr<Allocator>, |
| GetResourceAllocator, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(std::shared_ptr<ShaderLibrary>, |
| GetShaderLibrary, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(std::shared_ptr<SamplerLibrary>, |
| GetSamplerLibrary, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(std::shared_ptr<PipelineLibrary>, |
| GetPipelineLibrary, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(std::shared_ptr<CommandBuffer>, |
| CreateCommandBuffer, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(const std::shared_ptr<const Capabilities>&, |
| GetCapabilities, |
| (), |
| (const, override)); |
| |
| MOCK_METHOD(std::shared_ptr<CommandQueue>, |
| GetCommandQueue, |
| (), |
| (const, override)); |
| }; |
| |
| class MockTexture : public Texture { |
| public: |
| explicit MockTexture(const TextureDescriptor& desc) : Texture(desc) {} |
| MOCK_METHOD(void, SetLabel, (std::string_view label), (override)); |
| MOCK_METHOD(bool, IsValid, (), (const, override)); |
| MOCK_METHOD(ISize, GetSize, (), (const, override)); |
| MOCK_METHOD(bool, |
| OnSetContents, |
| (const uint8_t* contents, size_t length, size_t slice), |
| (override)); |
| MOCK_METHOD(bool, |
| OnSetContents, |
| (std::shared_ptr<const fml::Mapping> mapping, size_t slice), |
| (override)); |
| }; |
| |
| class MockCapabilities : public Capabilities { |
| public: |
| MOCK_METHOD(bool, SupportsOffscreenMSAA, (), (const, override)); |
| MOCK_METHOD(bool, SupportsImplicitResolvingMSAA, (), (const, override)); |
| MOCK_METHOD(bool, SupportsSSBO, (), (const, override)); |
| MOCK_METHOD(bool, SupportsTextureToTextureBlits, (), (const, override)); |
| MOCK_METHOD(bool, SupportsFramebufferFetch, (), (const, override)); |
| MOCK_METHOD(bool, SupportsCompute, (), (const, override)); |
| MOCK_METHOD(bool, SupportsComputeSubgroups, (), (const, override)); |
| MOCK_METHOD(bool, SupportsReadFromResolve, (), (const, override)); |
| MOCK_METHOD(bool, SupportsDecalSamplerAddressMode, (), (const, override)); |
| MOCK_METHOD(bool, SupportsDeviceTransientTextures, (), (const, override)); |
| MOCK_METHOD(PixelFormat, GetDefaultColorFormat, (), (const, override)); |
| MOCK_METHOD(PixelFormat, GetDefaultStencilFormat, (), (const, override)); |
| MOCK_METHOD(PixelFormat, GetDefaultDepthStencilFormat, (), (const, override)); |
| MOCK_METHOD(PixelFormat, GetDefaultGlyphAtlasFormat, (), (const, override)); |
| }; |
| |
| class MockCommandQueue : public CommandQueue { |
| public: |
| MOCK_METHOD(fml::Status, |
| Submit, |
| (const std::vector<std::shared_ptr<CommandBuffer>>& buffers, |
| const CompletionCallback& cb), |
| (override)); |
| }; |
| |
| class MockSamplerLibrary : public SamplerLibrary { |
| public: |
| MOCK_METHOD(const std::unique_ptr<const Sampler>&, |
| GetSampler, |
| (SamplerDescriptor descriptor), |
| (override)); |
| }; |
| |
| class MockSampler : public Sampler { |
| public: |
| explicit MockSampler(const SamplerDescriptor& desc) : Sampler(desc) {} |
| }; |
| |
| } // namespace testing |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_RENDERER_TESTING_MOCKS_H_ |