MeshUpdateQueue: Add a MapBlock cache that minimizes the amount of MapBlock copying...
authorPerttu Ahola <celeron55@gmail.com>
Sat, 15 Apr 2017 07:55:52 +0000 (10:55 +0300)
committerceleron55 <celeron55@gmail.com>
Mon, 17 Apr 2017 11:58:29 +0000 (14:58 +0300)
commit04cc9de8f2fbcb11f133c88f02fc11504b3ea6f3
treeed13d87b714cb58e1e318458bdfcb5ed9e827819
parent4323ad163f8d8217cbfc926cf212d02386ae0646
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)
12 files changed:
build/android/jni/Android.mk
builtin/settingtypes.txt
minetest.conf.example
src/CMakeLists.txt
src/client.cpp
src/client.h
src/defaultsettings.cpp
src/mapblock.h
src/mapblock_mesh.cpp
src/mapblock_mesh.h
src/mesh_generator_thread.cpp [new file with mode: 0644]
src/mesh_generator_thread.h [new file with mode: 0644]