blob: 30308047600390486cdf296bfc203fd349b4dfdc [file] [log] [blame]
// 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_