diff options
author | Perttu Ahola <celeron55@gmail.com> | 2017-04-15 10:55:52 +0300 |
---|---|---|
committer | celeron55 <celeron55@gmail.com> | 2017-04-17 14:58:29 +0300 |
commit | 04cc9de8f2fbcb11f133c88f02fc11504b3ea6f3 (patch) | |
tree | ed13d87b714cb58e1e318458bdfcb5ed9e827819 /src/mapblock_mesh.h | |
parent | 4323ad163f8d8217cbfc926cf212d02386ae0646 (diff) | |
download | minetest-04cc9de8f2fbcb11f133c88f02fc11504b3ea6f3.tar.gz minetest-04cc9de8f2fbcb11f133c88f02fc11504b3ea6f3.tar.bz2 minetest-04cc9de8f2fbcb11f133c88f02fc11504b3ea6f3.zip |
MeshUpdateQueue: Add a MapBlock cache that minimizes the amount of MapBlock copying done in the main thread
Cache size is configurable by the meshgen_block_cache_size (default 20 MB).
New profiler stats:
- MeshUpdateQueue MapBlock cache hit %
- MeshUpdateQueue MapBlock cache size kB
Removes one type of stutter that was seen on the client when received MapBlocks
were being handled. (the "MeshMakeData::fill" stutter)
Kind of related to at least #5239
Originally preceded by these commits, now includes them:
- Move the mesh generator thread into src/mesh_generator_thread.{cpp,h}
- mesh_generator_thread.cpp: Update code style
- MeshUpdateThread: Modify interface to house a different implementation: Actual functionality will be changed by next commits.
- MeshMakeData: Add fillBlockData() interface (so that caller can fill in stuff from eg. a MapBlock cache)
Diffstat (limited to 'src/mapblock_mesh.h')
-rw-r--r-- | src/mapblock_mesh.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mapblock_mesh.h b/src/mapblock_mesh.h index 916703f3e..25c699e1c 100644 --- a/src/mapblock_mesh.h +++ b/src/mapblock_mesh.h @@ -53,6 +53,12 @@ struct MeshMakeData bool use_tangent_vertices = false); /* + Copy block data manually (to allow optimizations by the caller) + */ + void fillBlockDataBegin(const v3s16 &blockpos); + void fillBlockData(const v3s16 &block_offset, MapNode *data); + + /* Copy central data directly from block, and other data from parent of block. */ |