20#include <unordered_map>
53 return (
static_cast<size_t>(k.
tx) << 32) ^
static_cast<size_t>(k.
ty);
68 virtual std::unique_ptr<TileStorage>
clone()
const = 0;
88 std::unique_ptr<TileStorage>
clone()
const override;
101 std::unordered_map<TileKey, Array, TileKeyHash> tiles;
119 std::unique_ptr<TileStorage>
clone()
const override;
131 std::unordered_map<TileKey, LruTileEntry, TileKeyHash>
tiles;
148 std::unique_ptr<TileStorage>
clone()
const override;
152 void trim()
override;
158 std::filesystem::path root_dir;
160 std::filesystem::path tile_path(
const TileKey &key)
const;
174 std::unique_ptr<TileStorage>
clone()
const override;
181 void trim()
override;
184 return "DiskSequential";
188 std::filesystem::path root_dir;
190 std::optional<Array> current_tile;
192 Array load_or_create(
const TileRegion ®ion);
193 void save_tile(
const TileKey &key,
const Array &tile);
194 std::filesystem::path tile_path(
const TileKey &key)
const;
201std::unique_ptr<TileStorage>
make_storage(glm::ivec2 shape,
202 glm::ivec2 tile_shape,
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Array class, helper to manipulate 2D float array with "(i, j)" indexing.
Definition array.hpp:32
Definition tile_storage.hpp:143
void on_evict(const TileKey &key, Array &tile) override
Definition disk_lru_storage.cpp:105
~DiskLruTileStorage()
Definition disk_lru_storage.cpp:32
void trim() override
Definition disk_lru_storage.cpp:123
size_t max_live_tiles() const override
Definition disk_lru_storage.cpp:100
Array & get_tile(const TileRegion ®ion) override
Definition disk_lru_storage.cpp:43
std::unique_ptr< TileStorage > clone() const override
Definition disk_lru_storage.cpp:38
Definition tile_storage.hpp:169
size_t live_memory_bytes() const override
Definition disk_sequential_storage.cpp:80
~DiskSequentialTileStorage() override
Definition disk_sequential_storage.cpp:28
void trim() override
Definition disk_sequential_storage.cpp:119
std::unique_ptr< TileStorage > clone() const override
Definition disk_sequential_storage.cpp:34
Array & get_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:39
size_t live_tile_count() const override
Definition disk_sequential_storage.cpp:75
void release_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:87
size_t max_live_tiles() const override
Definition disk_sequential_storage.cpp:70
DiskSequentialTileStorage()
Definition disk_sequential_storage.cpp:23
std::string info_string() const override
Definition tile_storage.hpp:182
Definition tile_storage.hpp:115
size_t live_tile_count() const override
Definition lru_tile_storage.cpp:86
std::list< TileKey > lru
Definition tile_storage.hpp:130
size_t max_live_tiles() const override
Definition lru_tile_storage.cpp:81
std::string info_string() const override
Definition lru_tile_storage.cpp:76
std::unique_ptr< TileStorage > clone() const override
Definition lru_tile_storage.cpp:24
size_t max_tiles
Definition tile_storage.hpp:129
Array & get_tile_no_mutex_lock(const TileRegion ®ion)
Definition lru_tile_storage.cpp:35
void release_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:104
std::mutex mutex
Definition tile_storage.hpp:132
virtual void on_evict(const TileKey &key, Array &tile)
Definition lru_tile_storage.cpp:109
Array & get_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:29
size_t live_memory_bytes() const override
Definition lru_tile_storage.cpp:92
std::unordered_map< TileKey, LruTileEntry, TileKeyHash > tiles
Definition tile_storage.hpp:131
Definition tile_storage.hpp:86
size_t max_live_tiles() const override
Definition ram_tile_storage.cpp:34
size_t live_memory_bytes() const override
Definition ram_tile_storage.cpp:49
size_t live_tile_count() const override
Definition ram_tile_storage.cpp:44
void release_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:39
std::string info_string() const override
Definition tile_storage.hpp:95
Array & get_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:23
std::unique_ptr< TileStorage > clone() const override
Definition ram_tile_storage.cpp:18
Definition tile_storage.hpp:62
virtual void trim()
Definition tile_storage.hpp:76
virtual ~TileStorage()=default
virtual std::string info_string() const =0
virtual void release_tile(const TileRegion ®ion)=0
virtual std::unique_ptr< TileStorage > clone() const =0
virtual size_t live_memory_bytes() const =0
virtual size_t max_live_tiles() const =0
virtual size_t live_tile_count() const =0
virtual Array & get_tile(const TileRegion ®ion)=0
Definition algebra.hpp:23
std::string to_string(StorageMode m)
Definition tile_storage.hpp:37
std::unique_ptr< TileStorage > make_storage(glm::ivec2 shape, glm::ivec2 tile_shape, StorageMode storage_mode)
Definition tile_storage.cpp:13
StorageMode
Definition tile_storage.hpp:30
@ VA_DISK_LRU_MIN
Definition tile_storage.hpp:33
@ VA_DISK_LRU
Definition tile_storage.hpp:32
@ VA_DISK_SEQUENTIAL
Definition tile_storage.hpp:34
@ VA_RAM
Definition tile_storage.hpp:31
Definition tile_storage.hpp:109
std::list< TileKey >::iterator lru_it
Definition tile_storage.hpp:111
Array value
Definition tile_storage.hpp:110
Definition tile_storage.hpp:50
size_t operator()(const TileKey &k) const
Definition tile_storage.hpp:51
Definition tile_region.hpp:22
int ty
Definition tile_region.hpp:24
int tx
Definition tile_region.hpp:23
Definition tile_region.hpp:38