mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-12 14:33:28 +00:00
ifcviewer: size streaming pool to demand instead of probing for the max
The desktop pool walked down from 4 GB looking for the largest single buffer the runtime would grant, then used that as the pool's first sub-buffer and growth increment. On a stack that advertises an effectively unbounded maxBufferSize (1 TB observed on wgpu-native here) the walk lands on 2 GB, so loading even a 1.2 MB model allocated a 2 GB sub-buffer. That plus the depth/MSAA/HiZ/pick attachments exhausted VRAM, and the next tiny allocation — the ~4 KB selection_flags buffer — failed with "Not enough memory left", invalidating its bind group and panicking wgpuQueueSubmit. Drop the probe and size the pool to demand, mirroring the web path: configure a modest initial sub-buffer and let BufferPool::addSubBuffer grow it lazily (halve-retrying to its 64 MB floor on constrained devices). A single chunk is capped at 16 MB, so the initial sub-buffer only has to clear that. Web keeps its 64 MB initial (Chrome contends on large first allocations); desktop uses 256 MB to keep sub-buffer count low for big models. The two platforms now share one createPool() (was probeAndCreatePool — it no longer probes). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -620,7 +620,7 @@ public:
|
||||
mutable std::uint64_t lod1_dbg_tris_saved_ = 0;
|
||||
|
||||
private:
|
||||
bool probeAndCreatePool();
|
||||
bool createPool();
|
||||
|
||||
public:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user