chromium/third_party/angle/src/common/RingBufferAllocator.h

//
// Copyright 2022 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.
//
// RingBufferAllocator.h:
//    Classes used to implement ring buffer allocators.
//

#ifndef COMMON_RING_BUFFER_ALLOCATOR_H_
#define COMMON_RING_BUFFER_ALLOCATOR_H_

#include "angleutils.h"
#include "common/SimpleMutex.h"
#include "common/debug.h"

#include <atomic>

namespace angle
{

static constexpr uint32_t kMinRingBufferAllocationCapacity =;
static constexpr uint32_t kDefaultDecaySpeedFactor         =;

// Only called from RingBufferAllocator::allocate(). Other function may also change the fragment.
class RingBufferAllocateListener
{};

class RingBufferAllocatorCheckPoint final
{};

class RingBufferAllocatorBuffer final
{};

class RingBufferAllocator final : angle::NonCopyable
{};

class SharedRingBufferAllocatorCheckPoint final : angle::NonCopyable
{};

class SharedRingBufferAllocator final : angle::NonCopyable
{};

}  // namespace angle

#endif  // COMMON_RING_BUFFER_ALLOCATOR_H_