// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40285824): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif // This file contains the definition of the FencedAllocator class. #ifndef GPU_COMMAND_BUFFER_CLIENT_FENCED_ALLOCATOR_H_ #define GPU_COMMAND_BUFFER_CLIENT_FENCED_ALLOCATOR_H_ #include <stddef.h> #include <stdint.h> #include <vector> #include "base/check.h" #include "base/functional/bind.h" #include "base/memory/raw_ptr.h" #include "gpu/gpu_export.h" namespace gpu { class CommandBufferHelper; // FencedAllocator provides a mechanism to manage allocations within a fixed // block of memory (storing the book-keeping externally). Furthermore this // class allows to free data "pending" the passage of a command buffer token, // that is, the memory won't be reused until the command buffer has processed // that token. // // NOTE: Although this class is intended to be used in the command buffer // environment which is multi-process, this class isn't "thread safe", because // it isn't meant to be shared across modules. It is thread-compatible though // (see http://www.corp.google.com/eng/doc/cpp_primer.html#thread_safety). class GPU_EXPORT FencedAllocator { … }; // This class functions just like FencedAllocator, but its API uses pointers // instead of offsets. class FencedAllocatorWrapper { … }; } // namespace gpu #endif // GPU_COMMAND_BUFFER_CLIENT_FENCED_ALLOCATOR_H_