mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 05:49:19 +02:00
Add EU7 PACK v11 UTEX, section unload, and LRU streaming caches
Bake deduplicated section texture lists (UTEX) and read them at runtime so texture warm/prefetch no longer scans every instance. Evict PACK sections outside a 16 km keep ring and cap mesh/nodedata/texture warm caches to stop RAM and apply cost from growing without bound during long fast camera flight. - Bake v11 (format=4): UMES + UTEX + CHNK; mesh/texture ordering by frequency - Runtime: incremental UTEX warm, adaptive apply slices, preempt/catchup tuning - Unload: track instances per section, Region erase, pack pool release - LRU: mesh/nodedata (2000, ref-counted), warmed textures (2048) - Bench/diagnostics: unload and cache eviction counters - Fix pack instance erase in Region; resolve duplicate helper symbols
This commit is contained in:
@@ -13,9 +13,12 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
class TModel3d;
|
||||
|
||||
namespace scene::eu7 {
|
||||
|
||||
// Tylko warm_instanceable_cache dla juz zcache'owanych meshy (bez cold GetModel na workerze).
|
||||
@@ -30,10 +33,23 @@ preload_pack_models(
|
||||
|
||||
// Main thread: Fetch_Material dla unikalnych texture_file z chunka przed apply.
|
||||
// Zwraca liczbe unikalnych Fetch_Material w tym slice.
|
||||
std::size_t
|
||||
warm_pack_texture_paths_main(
|
||||
std::string const *paths,
|
||||
std::size_t count,
|
||||
double budget_ms = 0.0,
|
||||
std::size_t *processed_out = nullptr );
|
||||
|
||||
std::size_t
|
||||
warm_pack_textures_main( Eu7Model const *models, std::size_t count );
|
||||
|
||||
void
|
||||
reset_pack_texture_warm_cache();
|
||||
|
||||
// Thread-safe cold mesh load: session cache, then GetModel under g_pack_mesh_load_mutex.
|
||||
[[nodiscard]] bool
|
||||
ensure_pack_mesh_in_session_cache(
|
||||
std::string model_file,
|
||||
std::unordered_map<std::string, TModel3d *> &session_cache );
|
||||
|
||||
} // namespace scene::eu7
|
||||
|
||||
Reference in New Issue
Block a user