nx_tier_ladder_lib.nx
buildroot/runtime/nx_tier_ladder_lib.nx
about
dependencies 1 imports · 63 importers
diagram shows first 10 each side; +0 more imports, +53 more importers in the complete lists below.
imports: nx_syscalls.nx
imported by: nx_game_page_affine_candidate_t361.nxnx_game_page_authored_material_t54.nxnx_game_page_body_t138.nxnx_game_page_canonical_t135.nxnx_game_page_catwalk_lighting_candidate_t316.nxnx_game_page_emit.nxnx_game_page_emit_sand_review.nxnx_game_page_eye_t138.nxnx_game_page_gait_candidate_t139.nxnx_game_page_garment_t132.nxnx_game_page_gpu_timing_current_candidate.nxnx_game_page_gpu_timing_pool_candidate.nxnx_game_page_hair_attachment_candidate_t263.nxnx_game_page_hair_attachment_t283.nxnx_game_page_hair_guides_candidate_t263.nxnx_game_page_hair_t138.nxnx_game_page_host_candidate_t341.nxnx_game_page_identity_candidate.nxnx_game_page_imported_body_t45.nxnx_game_page_imported_t262.nxnx_game_page_inspection_distance_t235.nxnx_game_page_inspection_t142.nxnx_game_page_integrated_t73.nxnx_game_page_knight_bind_t25.nxnx_game_page_knight_feedback_t28.nxnx_game_page_knight_feedback_t29.nxnx_game_page_knight_support_t31.nxnx_game_page_knight_support_t31_before_t44.nxnx_game_page_length_diag_t140.nxnx_game_page_lit_candidate_t181.nxnx_game_page_material_body_t61.nxnx_game_page_material_candidate_t181.nxnx_game_page_material_compose_t55.nxnx_game_page_material_schema_candidate_t181.nxnx_game_page_metadata_candidate_t220.nxnx_game_page_mip_candidate_t241.nxnx_game_page_motion_candidate_t328.nxnx_game_page_motion_inventory_candidate_t330.nxnx_game_page_move_t72.nxnx_game_page_owned_candidate_t181.nxnx_game_page_pipeline_t64.nxnx_game_page_pre_inspection_t142.nxnx_game_page_pre_toon_region_t143.nxnx_game_page_procedural_review_candidate_t333.nxnx_game_page_recovery_feedback_t28.nxnx_game_page_recovery_t23.nxnx_game_page_rig_comparison_t332.nxnx_game_page_rig_inspection_t230.nxnx_game_page_rig_observation_candidate_t331.nxnx_game_page_scene_light_candidate_t364.nxnx_game_page_search_t53.nxnx_game_page_shared_candidate_t340.nxnx_game_page_skin_t138.nxnx_game_page_static_candidate_t338.nxnx_game_page_toon_region_candidate_t143.nxnx_game_page_visitors_inspection_t142.nxnx_game_page_visitors_t140.nxnx_game_page_workbench_candidate_t342.nxnx_game_page_workspace_body_t49.nxnx_game_page_workspace_body_t59.nxnx_game_page_workspace_t48.nxnx_movement_base_page_t139.nxnx_tier_ladder_gate.nx
structs
| none |
consts
| 40 | const TL_CONF: *u8 = "../knowledge/tier_ladder.conf" |
| 44 | const TL_TBL_CELLS: i64 = 112 |
| 45 | const TL_TBL_BYTES: i64 = 896 |
| 46 | const TL_MAXD: i64 = 8 |
| 47 | const TL_MAXL: i64 = 8 |
| 48 | const TL_H_ND: i64 = 0 |
| 49 | const TL_H_NL: i64 = 1 |
| 50 | const TL_H_ERR: i64 = 2 |
| 51 | const TL_H_BUF: i64 = 3 |
| 52 | const TL_H_N: i64 = 4 |
| 53 | const TL_H_LINE: i64 = 5 |
| 54 | const TL_DOOR0: i64 = 8 |
| 55 | const TL_DW: i64 = 8 |
| 56 | const TL_D_ID: i64 = 0 |
| 57 | const TL_D_ORDER: i64 = 1 |
| 58 | const TL_D_STATE: i64 = 2 |
| 59 | const TL_D_LEVER: i64 = 3 |
| 60 | const TL_D_REQ: i64 = 4 |
| 61 | const TL_D_ANN: i64 = 5 |
| 62 | const TL_D_DRAWS: i64 = 6 // S0: cell 6 of the TL_DW=8 door record (cells 0..5 were in use; 7 stays spare) |
| 63 | const TL_LIM0: i64 = 72 |
| 64 | const TL_LW: i64 = 4 |
| 65 | const TL_L_KEY: i64 = 0 |
| 66 | const TL_L_MIN: i64 = 1 |
| 67 | const TL_L_WHY: i64 = 2 |
| 72 | const TL_H_NB: i64 = 6 |
| 73 | const TL_BOOT0: i64 = 104 |
| 74 | const TL_B_MS: i64 = 0 |
| 75 | const TL_B_LEVER: i64 = 1 |
| 76 | const TL_B_MAX: i64 = 2 |
| 77 | const TL_BOOT_KEYS: i64 = 3 |
| 78 | const TL_K_BOOT: *u8 = "boot" |
| 79 | const TL_BK_MS: *u8 = "gpu_boot_ms" |
| 80 | const TL_BK_LEVER: *u8 = "gpu_boot_lever" |
| 81 | const TL_BK_MAX: *u8 = "gpu_boot_max_ms" |
| 82 | const TL_BOOT_FIELDS: i64 = 4 |
| 93 | const TL_H_NT: i64 = 7 |
| 94 | const TL_THREAD0: i64 = 108 |
| 95 | const TL_T_FLOOR: i64 = 0 |
| 96 | const TL_T_CEIL: i64 = 1 |
| 97 | const TL_T_LEVER: i64 = 2 |
| 98 | const TL_THREAD_KEYS: i64 = 3 |
| 99 | const TL_K_THREAD: *u8 = "thread" |
| 100 | const TL_TK_FLOOR: *u8 = "thread_floor" |
| 101 | const TL_TK_CEIL: *u8 = "thread_ceiling" |
| 102 | const TL_TK_LEVER: *u8 = "thread_lever" |
| 103 | const TL_THREAD_FIELDS: i64 = 4 |
| 104 | const TL_BOOT_DEFAULT_MS: i64 = 4000 // only the ABSENT twin carries it: the page still boots when the conf is gone |
| 107 | const TL_ST_DEFAULT: i64 = 0 |
| 108 | const TL_ST_LEVERED: i64 = 1 |
| 109 | const TL_ST_FALLBACK: i64 = 2 |
| 110 | const TL_S_DEFAULT: *u8 = "default" |
| 111 | const TL_S_LEVERED: *u8 = "levered" |
| 112 | const TL_S_FALLBACK: *u8 = "fallback" |
| 113 | const TL_RQ_WEBGPU: i64 = 0 |
| 114 | const TL_RQ_WEBGL2: i64 = 1 |
| 115 | const TL_RQ_ALWAYS: i64 = 2 |
| 116 | const TL_Q_WEBGPU: *u8 = "webgpu" |
| 117 | const TL_Q_WEBGL2: *u8 = "webgl2" |
| 118 | const TL_Q_ALWAYS: *u8 = "always" |
| 119 | const TL_K_DOOR: *u8 = "door" |
| 120 | const TL_K_LIMIT: *u8 = "limit" |
| 127 | const TL_DR_WORLD: i64 = 0 |
| 128 | const TL_DR_WORLD_CAST: i64 = 1 |
| 129 | const TL_DR_WORLD_MARKERS: i64 = 2 |
| 130 | const TL_W_WORLD: *u8 = "world" |
| 131 | const TL_W_WORLD_CAST: *u8 = "world+cast" |
| 132 | const TL_W_WORLD_MARKERS: *u8 = "world+markers" |
| 135 | const TL_OK: i64 = 0 |
| 136 | const TL_E_UNREADABLE: i64 = 1 |
| 137 | const TL_E_FIELDS: i64 = 2 |
| 138 | const TL_E_STATE: i64 = 3 |
| 139 | const TL_E_REQ: i64 = 4 |
| 140 | const TL_E_FALLBACK: i64 = 6 |
| 141 | const TL_E_ORDER: i64 = 7 |
| 142 | const TL_E_NO_DOORS: i64 = 8 |
| 143 | const TL_E_QUOTE: i64 = 9 |
| 144 | const TL_E_TOO_MANY: i64 = 10 |
| 145 | const TL_E_LIMIT: i64 = 11 |
| 146 | const TL_E_KIND: i64 = 12 |
| 147 | const TL_E_BOOT: i64 = 13 |
| 148 | const TL_E_THREAD: i64 = 14 |
| 149 | const TL_E_DRAWS: i64 = 15 // S0: a door's draws word is outside the vocabulary -- REFUSED, never defaulted |
| 150 | const TL_E_DRAWS_ABSENT: i64 = 16 // S0: a door row carries no draws field (the pre-S0 seven-field shape) -- REFUSED BY NAME |
| 154 | const TL_R_TAKEN: *u8 = "taken" |
| 155 | const TL_R_BELOW: *u8 = "below-taken" |
| 156 | const TL_R_LEVER_OFF: *u8 = "levered-off" |
| 157 | const TL_R_NOCAP: *u8 = "capability-absent" |
| 158 | const TL_R_FAILED: *u8 = "failed" |
| 159 | const TL_R_UNEXPLAINED: *u8 = "not-taken:unexplained" |
| 160 | const TL_R_UNDECIDED: *u8 = "undecided" |
| 161 | const TL_R_ABSENT: *u8 = "ladder-absent" |
| 162 | const TL_R_UNMAPPED: *u8 = "unmapped:" // nxDoorId / nxDoorDraws prefix for a requirement or door the ladder does not carry |
| 166 | const TL_T_R_ABSENT: *u8 = "thread-rows-absent" |
| 167 | const TL_T_R_NOSHARE: *u8 = "no-shared-memory" |
| 168 | const TL_T_R_LEVER: *u8 = "lever" |
| 169 | const TL_T_R_CEIL: *u8 = "clamped-to-ceiling" |
| 170 | const TL_T_R_FLOOR: *u8 = "clamped-to-floor" |
| 171 | const TL_T_R_MEASURED: *u8 = "measured-cores" |
| 173 | const TL_A_NL: i64 = 10 |
| 174 | const TL_A_CR: i64 = 13 |
| 175 | const TL_A_HASH: i64 = 35 |
| 176 | const TL_A_PIPE: i64 = 124 |
| 177 | const TL_A_QUOTE: i64 = 34 |
| 178 | const TL_A_BSLASH: i64 = 92 |
| 179 | const TL_A_0: i64 = 48 |
| 180 | const TL_A_9: i64 = 57 |
| 181 | const TL_B10: i64 = 10 |
| 182 | const TL_JS_CAP: i64 = 32768 // raised with the GE30 thread block; the door twin alone used ~6 KB |
| 183 | const TL_NUM_SCRATCH: i64 = 32 |
| 184 | const TL_LP_BYTES: i64 = 16 |
| 185 | const TL_FIELD_SLOTS: i64 = 8 |
| 186 | const TL_FIELD_BYTES: i64 = 64 |
| 187 | const TL_DOOR_FIELDS: i64 = 8 // S0: door|id|order|state|lever|requires|draws|announce |
| 188 | const TL_DOOR_FIELDS_LEGACY: i64 = 7 // the pre-S0 row shape: refused as TL_E_DRAWS_ABSENT so the verdict names the missing field, not a bare count |
| 189 | const TL_LIMIT_FIELDS: i64 = 4 |
| 190 | const TL_STDERR: i64 = 2 |
| 191 | const TL_COMPOSE_MARK: *u8 = "tl_emit()" |
functions
| 193 | func tl_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 194 | func tl_seq(a: *u8, b: *u8) -> i64 |
| 200 | func tl_cat(d: *u8, o: i64, s: *u8) -> i64 { var i: i64 = 0; var p: i64 = o; while s[i] != (0 as u8) { d[p] = s[i]; p = p + 1; i = i + 1 } return p } |
| 201 | func tl_catn(d: *u8, o: i64, v: i64) -> i64 |
| 213 | func tl_num(s: *u8) -> i64 called by 1: tl_parse |
| 227 | func tl_find(buf: *u8, n: i64, from: i64, needle: *u8) -> i64 |
| 240 | func tl_has_quote_or_bslash(s: *u8) -> i64 called by 1: tl_parse |
| 252 | func tl_str(tbl: *i64, off: i64) -> *u8 { return (tbl[TL_H_BUF] + off) as *u8 } |
| 253 | func tl_doors(tbl: *i64) -> i64 { return tbl[TL_H_ND] } |
| 254 | func tl_limits(tbl: *i64) -> i64 { return tbl[TL_H_NL] } called by 1: main |
| 255 | func tl_dcell(tbl: *i64, i: i64, f: i64) -> i64 { return tbl[TL_DOOR0 + i * TL_DW + f] } |
| 256 | func tl_lcell(tbl: *i64, i: i64, f: i64) -> i64 { return tbl[TL_LIM0 + i * TL_LW + f] } |
| 257 | func tl_door_id(tbl: *i64, i: i64) -> *u8 { return tl_str(tbl, tl_dcell(tbl, i, TL_D_ID)) } |
| 258 | func tl_door_order(tbl: *i64, i: i64) -> i64 { return tl_dcell(tbl, i, TL_D_ORDER) } |
| 259 | func tl_door_state(tbl: *i64, i: i64) -> i64 { return tl_dcell(tbl, i, TL_D_STATE) } |
| 260 | func tl_door_lever(tbl: *i64, i: i64) -> *u8 { return tl_str(tbl, tl_dcell(tbl, i, TL_D_LEVER)) } |
| 261 | func tl_door_req(tbl: *i64, i: i64) -> i64 { return tl_dcell(tbl, i, TL_D_REQ) } |
| 262 | func tl_door_announce(tbl: *i64, i: i64) -> *u8 { return tl_str(tbl, tl_dcell(tbl, i, TL_D_ANN)) } |
| 263 | func tl_door_draws(tbl: *i64, i: i64) -> i64 { return tl_dcell(tbl, i, TL_D_DRAWS) } |
| 264 | func tl_limit_key(tbl: *i64, i: i64) -> *u8 { return tl_str(tbl, tl_lcell(tbl, i, TL_L_KEY)) } |
| 265 | func tl_limit_min(tbl: *i64, i: i64) -> i64 { return tl_lcell(tbl, i, TL_L_MIN) } |
| 266 | func tl_limit_why(tbl: *i64, i: i64) -> *u8 { return tl_str(tbl, tl_lcell(tbl, i, TL_L_WHY)) } |
| 267 | func tl_boot_ms(tbl: *i64) -> i64 { return tbl[TL_BOOT0 + TL_B_MS] } |
| 268 | func tl_boot_lever(tbl: *i64) -> *u8 { return tl_str(tbl, tbl[TL_BOOT0 + TL_B_LEVER]) } |
| 269 | func tl_boot_max(tbl: *i64) -> i64 { return tbl[TL_BOOT0 + TL_B_MAX] } |
| 270 | func tl_state_name(st: i64) -> *u8 called by 1: tl_js |
| 275 | func tl_req_name(rq: i64) -> *u8 called by 1: tl_js |
| 280 | func tl_state_of(s: *u8) -> i64 |
| 286 | func tl_req_of(s: *u8) -> i64 |
| 292 | func tl_draws_name(dr: i64) -> *u8 |
| 298 | func tl_draws_of(s: *u8) -> i64 |
| 309 | func tl_parse(b: *u8, n: i64, tbl: *i64) -> i64 |
| 507 | func tl_load(tbl: *i64) -> i64 |
| 532 | func tl_cap_ok(rq: i64, cap_webgpu: i64, cap_webgl2: i64) -> i64 |
| 537 | func tl_pick(tbl: *i64, cap_webgpu: i64, cap_webgl2: i64, levers: *i64) -> i64 |
| 556 | func tl_reason(tbl: *i64, i: i64, picked: i64, cap_webgpu: i64, cap_webgl2: i64, levers: *i64) -> *u8 |
| 571 | func tl_threads_declared(tbl: *i64) -> i64 { if tbl[TL_H_NT] == TL_THREAD_KEYS { return 1 } return 0 } |
| 572 | func tl_thread_floor(tbl: *i64) -> i64 { return tbl[TL_THREAD0 + TL_T_FLOOR] } |
| 573 | func tl_thread_ceiling(tbl: *i64) -> i64 { return tbl[TL_THREAD0 + TL_T_CEIL] } |
| 574 | func tl_thread_lever(tbl: *i64) -> *u8 { return tl_str(tbl, tbl[TL_THREAD0 + TL_T_LEVER]) } |
| 579 | func tl_thread_pick(tbl: *i64, measured: i64, lever: i64, shared: i64) -> i64 |
| 589 | func tl_thread_why(tbl: *i64, measured: i64, lever: i64, shared: i64) -> *u8 |
| 601 | func tl_js_threads(d: *u8, p0: i64, tbl: *i64) -> i64 called by 1: tl_js calls 6: tl_threads_declaredtl_cattl_catntl_thread_floortl_thread_ceilingtl_thread_lever |
| 639 | func tl_js(tbl: *i64) -> *u8 |
| 720 | func tl_js_absent(rc: i64, line: i64) -> *u8 |
| 762 | func tl_emit() -> *u8 |
| 780 | func tl_composes(buf: *u8, n: i64) -> i64 |