| // Copyright 2016 The Fuchsia 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 SRC_UI_LIB_ESCHER_FORWARD_DECLARATIONS_H_ |
| #define SRC_UI_LIB_ESCHER_FORWARD_DECLARATIONS_H_ |
| |
| #include "src/lib/fxl/memory/ref_ptr.h" |
| #include "src/lib/fxl/memory/weak_ptr.h" |
| |
| namespace escher { |
| |
| class BatchGpuDownloader; |
| class BatchGpuUploader; |
| class BlockAllocator; |
| class Buffer; |
| class BufferCache; |
| class Camera; |
| class ChainedSemaphoreGenerator; |
| class CommandBuffer; |
| class DebugFont; |
| class DefaultShaderProgramFactory; |
| class Escher; |
| class Frame; |
| class Framebuffer; |
| class GpuAllocator; |
| class GpuMem; |
| class HackFilesystem; |
| class Image; |
| class ImageFactory; |
| class ImageLayoutUpdater; |
| class ImageView; |
| class MeshBuilder; |
| class MeshBuilderFactory; |
| struct MeshSpec; |
| class Material; |
| class Mesh; |
| class Model; |
| class Object; |
| class PipelineBuilder; |
| // TODO(https://fxbug.dev/42151125): move to vk/impl. Cannot do this yet because there is already |
| // a PipelineLayout in impl/vk. |
| class PipelineLayout; |
| class PaperRenderer; |
| class PaperRenderQueue; |
| class PaperShapeCache; |
| class Resource; |
| class ResourceRecycler; |
| class Renderer; |
| class RenderPass; |
| struct RenderPassInfo; |
| struct RenderQueueItem; |
| class Sampler; |
| class SamplerCache; |
| class Semaphore; |
| class ShaderProgram; |
| class Shape; |
| class Stage; |
| class Texture; |
| class TimestampProfiler; |
| struct UniformAllocation; |
| class ViewingVolume; |
| struct VulkanContext; |
| struct VulkanSwapchain; |
| |
| using BatchGpuUploaderPtr = fxl::RefPtr<BatchGpuUploader>; |
| using BufferPtr = fxl::RefPtr<Buffer>; |
| using CommandBufferPtr = fxl::RefPtr<CommandBuffer>; |
| using EscherWeakPtr = fxl::WeakPtr<Escher>; |
| using FramePtr = fxl::RefPtr<Frame>; |
| using FramebufferPtr = fxl::RefPtr<Framebuffer>; |
| using GpuMemPtr = fxl::RefPtr<GpuMem>; |
| using HackFilesystemPtr = fxl::RefPtr<HackFilesystem>; |
| using ImagePtr = fxl::RefPtr<Image>; |
| using ImageViewPtr = fxl::RefPtr<ImageView>; |
| using MaterialPtr = fxl::RefPtr<Material>; |
| using MeshPtr = fxl::RefPtr<Mesh>; |
| using MeshBuilderPtr = fxl::RefPtr<MeshBuilder>; |
| using PaperRendererPtr = fxl::RefPtr<PaperRenderer>; |
| // TODO(https://fxbug.dev/42151125): move to vk/impl. Cannot do this yet because there is already |
| // a PipelineLayout in impl/vk. |
| using PipelineLayoutPtr = fxl::RefPtr<PipelineLayout>; |
| using ResourcePtr = fxl::RefPtr<Resource>; |
| using RendererPtr = fxl::RefPtr<Renderer>; |
| using RenderPassPtr = fxl::RefPtr<RenderPass>; |
| using SamplerPtr = fxl::RefPtr<Sampler>; |
| using SemaphorePtr = fxl::RefPtr<Semaphore>; |
| using ShaderProgramPtr = fxl::RefPtr<ShaderProgram>; |
| using TexturePtr = fxl::RefPtr<Texture>; |
| using TimestampProfilerPtr = fxl::RefPtr<TimestampProfiler>; |
| |
| namespace hmd { |
| class PoseBufferLatchingShader; |
| } // namespace hmd |
| |
| namespace impl { |
| // From deprecated escher/impl directory. |
| class CommandBuffer; |
| class CommandBufferPool; |
| class CommandBufferSequencer; |
| class ComputeShader; |
| class FrameManager; |
| class ImageCache; |
| class MeshManager; |
| class MeshShaderBinding; |
| class ModelData; |
| class Pipeline; |
| class UniformBufferPool; |
| |
| using ModelDataPtr = fxl::RefPtr<ModelData>; |
| using PipelinePtr = fxl::RefPtr<Pipeline>; |
| using UniformBufferPoolWeakPtr = fxl::WeakPtr<UniformBufferPool>; |
| |
| // From escher/vk/impl |
| class DescriptorSetAllocator; |
| class DescriptorSetAllocatorCache; |
| class Framebuffer; |
| class FramebufferAllocator; |
| class PipelineLayoutCache; |
| class RenderPass; |
| class RenderPassCache; |
| |
| using FramebufferPtr = fxl::RefPtr<Framebuffer>; |
| using RenderPassPtr = fxl::RefPtr<RenderPass>; |
| |
| // From escher/third_party/granite |
| struct DescriptorSetLayout; |
| struct ShaderModuleResourceLayout; |
| |
| } // namespace impl |
| } // namespace escher |
| |
| namespace shaderc { |
| class Compiler; |
| } |
| |
| #endif // SRC_UI_LIB_ESCHER_FORWARD_DECLARATIONS_H_ |