chromium/third_party/angle/src/libANGLE/FramebufferAttachment.h

//
// Copyright 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

// FramebufferAttachment.h: Defines the wrapper class gl::FramebufferAttachment, as well as the
// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.

#ifndef LIBANGLE_FRAMEBUFFERATTACHMENT_H_
#define LIBANGLE_FRAMEBUFFERATTACHMENT_H_

#include "angle_gl.h"
#include "common/angleutils.h"
#include "libANGLE/Error.h"
#include "libANGLE/ImageIndex.h"
#include "libANGLE/Observer.h"
#include "libANGLE/angletypes.h"
#include "libANGLE/formatutils.h"
#include "libANGLE/renderer/FramebufferAttachmentObjectImpl.h"

namespace egl
{
class Surface;
}

namespace rx
{
// An implementation-specific object associated with an attachment.

class FramebufferAttachmentRenderTarget : angle::NonCopyable
{};

class FramebufferAttachmentObjectImpl;
}  // namespace rx

namespace gl
{
class FramebufferAttachmentObject;
class Renderbuffer;
class Texture;

// FramebufferAttachment implements a GL framebuffer attachment.
// Attachments are "light" containers, which store pointers to ref-counted GL objects.
// We support GL texture (2D/3D/Cube/2D array) and renderbuffer object attachments.
// Note: Our old naming scheme used the term "Renderbuffer" for both GL renderbuffers and for
// framebuffer attachments, which confused their usage.

class FramebufferAttachment final
{};

// A base class for objects that FBO Attachments may point to.
class FramebufferAttachmentObject : public angle::Subject, public angle::ObserverInterface
{};

inline const ImageIndex &FramebufferAttachment::getTextureImageIndex() const
{}

inline Extents FramebufferAttachment::getSize() const
{}

inline Format FramebufferAttachment::getFormat() const
{}

inline GLsizei FramebufferAttachment::getSamples() const
{}

inline GLsizei FramebufferAttachment::getResourceSamples() const
{}

inline angle::Result FramebufferAttachment::getRenderTargetImpl(
    const Context *context,
    GLsizei samples,
    rx::FramebufferAttachmentRenderTarget **rtOut) const
{}

inline bool FramebufferAttachment::isRenderable(const Context *context) const
{}

inline bool FramebufferAttachment::isYUV() const
{}

inline bool FramebufferAttachment::isExternalImageWithoutIndividualSync() const
{}

inline bool FramebufferAttachment::hasFrontBufferUsage() const
{}

inline bool FramebufferAttachment::hasFoveatedRendering() const
{}

inline const gl::FoveationState *FramebufferAttachment::getFoveationState() const
{}
}  // namespace gl

#endif  // LIBANGLE_FRAMEBUFFERATTACHMENT_H_