r3d/runtime: allocs, keeps and births at 0 on this side

render3d: shadow_fit, water_reflection_pass, layer_partition_lods and the
GPU cull's scratch are made with the state; v3_dist is scalar; the pushes
into lists sized at start-up, the caps probe, the table growth, the loads
and the constructors declared with their bounds (one statement a line);
the renderer's name made once with the device; the two error messages
given back; the dead lupine models removed.

runtime: a component's text is held interned in its value cell (one copy
per distinct text), so the getter's own text goes with its frame instead
of being kept by ludic.ui's model - 80 of the 83 keeps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 20:10:59 +03:00
parent 5be2422c84
commit f993c4a36a
18 changed files with 105 additions and 177 deletions

View file

@ -166,6 +166,7 @@ export state Render3dState {
gvk_family: int = -1
gvk_mp: bytes = null # VkPhysicalDeviceMemoryProperties
gvk_device_name: string = ""
gvk_renderer_name: string = "" # "<device> (Vulkan)", made once with the device
gvk_why: string = "" # why the device did not come up, for the fallback notice
gvk_max_aniso: int = 0x3F800000 # the device's anisotropy limit as float bits; 1.0 when it has none
gvk_want_surface: bool = false # set before gvk_init when the renderer will present to a window
@ -692,7 +693,23 @@ export state Render3dState {
stream_debug_n: int = 0
stream_scratch: floats = null
gvk_pipe_bufs: words = null # a pipeline's vertex buffers, while it is made
gsl_up: floats = floats(3) # the camera's up for DLSS's constants
gsl_up: floats = floats(3)
sh_fit_cview: floats = floats(3) # shadow_fit's scratch
sh_fit_corners: floats = floats(24)
sh_fit_center: floats = floats(3)
sh_fit_eye: floats = floats(3)
sh_fit_up: floats = floats(3)
sh_fit_out: floats = floats(16)
water_eye: floats = floats(3) # water_reflection_pass's scratch
water_mirror: floats = floats(16)
water_mv: floats = floats(16)
sc_lod_counts: words = words(64) # layer_partition_lods' scratch (SC_LOD_ROOM)
sc_lod_start: words = words(64)
sc_lod_fill: words = words(64)
sc_gpu_rec: words = words(29 * 5) # layer_gpu_prepare's (SC_RECS * 5) and layer_gpu_cull's
sc_gpu_zeros: words = words(5)
sc_gpu_pr: words = words(36)
sc_gpu_bufs: words = words(4) # the camera's up for DLSS's constants
ov_nine_buf: floats = floats(16) # ov_nine's corners and uvs
gvk_ac: pointer = null # the VkAllocationCallbacks every create and destroy is given (R3D_ALLOC_VK=1)
gvk_prime_b: words = null # buffers made since the frame began, read once so MoltenVK makes their