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

//
// Copyright 2002 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.
//

// Surface.h: Defines the egl::Surface class, representing a drawing surface
// such as the client area of a window, including any back buffers.
// Implements EGLSurface and related functionality. [EGL 1.4] section 2.2 page 3.

#ifndef LIBANGLE_SURFACE_H_
#define LIBANGLE_SURFACE_H_

#include <memory>

#include <EGL/egl.h>

#include "common/PackedEnums.h"
#include "common/angleutils.h"
#include "libANGLE/AttributeMap.h"
#include "libANGLE/Debug.h"
#include "libANGLE/Error.h"
#include "libANGLE/FramebufferAttachment.h"
#include "libANGLE/RefCountObject.h"
#include "libANGLE/formatutils.h"
#include "libANGLE/renderer/SurfaceImpl.h"

namespace gl
{
class Context;
class Framebuffer;
class Texture;
}  // namespace gl

namespace rx
{
class EGLImplFactory;
}

namespace egl
{
class Display;
struct Config;

SupportedCompositorTiming;
SupportedTimestamps;

struct SurfaceState final : private angle::NonCopyable
{};

class Surface : public LabeledObject, public gl::FramebufferAttachmentObject
{};

class WindowSurface final : public Surface
{};

class PbufferSurface final : public Surface
{};

class PixmapSurface final : public Surface
{};

class [[nodiscard]] ScopedSurfaceRef
{};

class SurfaceDeleter final
{};

SurfacePointer;

}  // namespace egl

#endif  // LIBANGLE_SURFACE_H_