diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h')
-rw-r--r-- | gfx/angle/checkout/src/libANGLE/HandleRangeAllocator.h | 60 |
1 files changed, 60 insertions, 0 deletions
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 <map> + +#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<GLuint, GLuint> mUsed; +}; + +} // namespace gl + +#endif // LIBANGLE_HANDLERANGEALLOCATOR_H_
\ No newline at end of file |