aboutsummaryrefslogtreecommitdiff
path: root/src/common/virtual_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/virtual_buffer.h')
-rw-r--r--src/common/virtual_buffer.h84
1 files changed, 0 insertions, 84 deletions
diff --git a/src/common/virtual_buffer.h b/src/common/virtual_buffer.h
deleted file mode 100644
index d6386e2a4d..0000000000
--- a/src/common/virtual_buffer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <utility>
-
-namespace Common {
-
-void* AllocateMemoryPages(std::size_t size) noexcept;
-void FreeMemoryPages(void* base, std::size_t size) noexcept;
-
-template <typename T>
-class VirtualBuffer final {
-public:
- // TODO: Uncomment this and change Common::PageTable::PageInfo to be trivially constructible
- // using std::atomic_ref once libc++ has support for it
- // static_assert(
- // std::is_trivially_constructible_v<T>,
- // "T must be trivially constructible, as non-trivial constructors will not be executed "
- // "with the current allocator");
-
- constexpr VirtualBuffer() = default;
- explicit VirtualBuffer(std::size_t count) noexcept
- : alloc_size{count * sizeof(T)}
- {
- base_ptr = reinterpret_cast<T*>(AllocateMemoryPages(alloc_size));
- }
-
- ~VirtualBuffer() noexcept {
- FreeMemoryPages(base_ptr, alloc_size);
- }
-
- VirtualBuffer(const VirtualBuffer&) = delete;
- VirtualBuffer& operator=(const VirtualBuffer&) = delete;
-
- VirtualBuffer(VirtualBuffer&& other) noexcept
- : alloc_size{std::exchange(other.alloc_size, 0)}
- , base_ptr{std::exchange(other.base_ptr, nullptr)}
- {}
-
- VirtualBuffer& operator=(VirtualBuffer&& other) noexcept {
- alloc_size = std::exchange(other.alloc_size, 0);
- base_ptr = std::exchange(other.base_ptr, nullptr);
- return *this;
- }
-
- void resize(std::size_t count) noexcept {
- if (auto const new_size = count * sizeof(T); new_size != alloc_size) {
- FreeMemoryPages(base_ptr, alloc_size);
- alloc_size = new_size;
- base_ptr = reinterpret_cast<T*>(AllocateMemoryPages(alloc_size));
- }
- }
-
- [[nodiscard]] constexpr const T& operator[](std::size_t index) const noexcept {
- return base_ptr[index];
- }
-
- [[nodiscard]] constexpr T& operator[](std::size_t index) noexcept {
- return base_ptr[index];
- }
-
- [[nodiscard]] constexpr T* data() noexcept {
- return base_ptr;
- }
-
- [[nodiscard]] constexpr const T* data() const noexcept {
- return base_ptr;
- }
-
- [[nodiscard]] constexpr std::size_t size() const noexcept {
- return alloc_size / sizeof(T);
- }
-
-private:
- std::size_t alloc_size{};
- T* base_ptr{};
-};
-
-} // namespace Common