render3d: 671 frame-reachable allocation sites to 161 - declared, split, or made nothing

@alloc_ok with its reason on what is made once per resource and kept (textures, programs, samplers,
views, layouts, memory blocks, the pipeline cache in gvk_pipe_build), on resize and swapchain
remakes, on screenshots and dumps, on a world being set up (streams, layers, water, post, bakes), on
loads (gltf_load, skin_load, tex_load*, png_decode, fonts) and on R3D_PROF / drawstats.
gltf_cached's hit path is its own and makes nothing; the miss (gltf_cached_load) is declared.
m4_look_at (now over m4_look_at_xyz) and m4_inverse work on scalars, and cam_update makes no scratch.
Left: lazy first-use starts, error and debug prints, and scratch made and freed each call (churn,
plan 25.3). Compiled (steady, and ludic deps over the game).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 15:58:18 +03:00
parent f2dd27f443
commit 5d0f83b81c
21 changed files with 118 additions and 42 deletions

View file

@ -31,6 +31,7 @@ const DS_KINDS: int = 5
# rows: (pass, program, kind)
@alloc_ok("profiling and statistics, only under R3D_PROF / R3D_DRAWSTATS")
function ds_enabled(render3d_st: mut Render3dState) -> bool {
if render3d_st.ds_on < 0 {
render3d_st.ds_on = 0
@ -49,6 +50,7 @@ function ds_enabled(render3d_st: mut Render3dState) -> bool {
}
# the profiler's pass boundaries (prof_begin / prof_end), whether or not R3D_PROF is on
@alloc_ok("profiling and statistics, only under R3D_PROF / R3D_DRAWSTATS")
function ds_set_pass(render3d_st: mut Render3dState, name: pointer) -> void {
if render3d_st.ds_on != 1 { return }
render3d_st.ds_last = -1
@ -76,6 +78,7 @@ function ds_frame(render3d_st: mut Render3dState) -> void {
}
}
@alloc_ok("profiling and statistics, only under R3D_PROF / R3D_DRAWSTATS")
function ds_draw(render3d_st: mut Render3dState, kind: int, instances: int, indices: int) -> void {
if render3d_st.ds_on != 1 or not render3d_st.ds_counting { return }
let p = render3d_st.gpu_prog_cur
@ -125,6 +128,7 @@ function ds_backend(render3d_st: Render3dState) -> pointer {
return "opengl"
}
@alloc_ok("profiling and statistics, only under R3D_PROF / R3D_DRAWSTATS")
function ds_report(render3d_st: mut Render3dState) -> void {
let n_rows = len(render3d_st.ds_row_pass)
let n_pass = len(render3d_st.ds_pass_names)