From 2aa4a82499d4becd2284cdb482213d541b8804dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 16:29:10 +0200 Subject: Adding upstream version 86.0.1. Signed-off-by: Daniel Baumann --- .../checkout/src/libANGLE/HandleRangeAllocator.h | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h (limited to 'gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h') diff --git a/gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h b/gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h new file mode 100644 index 0000000000..4d4b6f4f69 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h @@ -0,0 +1,60 @@ +// +// Copyright (c) 2002-2016 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. +// + +// HandleRangeAllocator.h: Defines the gl::HandleRangeAllocator class, which is used to +// allocate contiguous ranges of GL path handles. + +#ifndef LIBANGLE_HANDLERANGEALLOCATOR_H_ +#define LIBANGLE_HANDLERANGEALLOCATOR_H_ + +#include + +#include "angle_gl.h" +#include "common/angleutils.h" + +namespace gl +{ + +// Allocates contiguous ranges of path object handles. +class HandleRangeAllocator final : angle::NonCopyable +{ + public: + static const GLuint kInvalidHandle; + + HandleRangeAllocator(); + ~HandleRangeAllocator(); + + // Allocates a new path handle. + GLuint allocate(); + + // Allocates a handle starting at or above the value of |wanted|. + // Note: may wrap if it starts near limit. + GLuint allocateAtOrAbove(GLuint wanted); + + // Allocates |range| amount of contiguous paths. + // Returns the first id to |first_id| or |kInvalidHandle| if + // allocation failed. + GLuint allocateRange(GLuint range); + + // Marks an id as used. Returns false if handle was already used. + bool markAsUsed(GLuint handle); + + // Release handle. + void release(GLuint handle); + + // Release a |range| amount of contiguous handles, starting from |first| + void releaseRange(GLuint first, GLuint range); + + // Checks whether or not a resource ID is in use. + bool isUsed(GLuint handle) const; + + private: + std::map mUsed; +}; + +} // namespace gl + +#endif // LIBANGLE_HANDLERANGEALLOCATOR_H_ \ No newline at end of file -- cgit v1.2.3