eliminate base node idx from per-node info; nodes can be stored all relative to their name map's base indices, and this is naturally applied on lookup, no need to bake it in

This commit is contained in:
Ryan Fleury
2024-06-07 11:17:11 -07:00
parent b48fcea28a
commit 8f03fb0cc5
4 changed files with 5 additions and 11 deletions
+3 -5
View File
@@ -2187,7 +2187,7 @@ rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params)
//- rjf: partial/joinable baking functions
RDI_PROC RDIM_NameMapBakeResult
rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src, RDI_U64 base_node_idx)
rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src)
{
RDIM_NameMapBakeResult result = {0};
if(src->name_count != 0)
@@ -2232,7 +2232,7 @@ rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_Bak
RDI_NameMapNode *node_ptr = baked_nodes;
for(RDI_U32 i = 0; i < baked_buckets_count; i += 1, bucket_ptr += 1)
{
bucket_ptr->first_node = (RDI_U32)(node_ptr - baked_nodes);
bucket_ptr->first_node = (RDI_U32)((RDI_U64)(node_ptr - baked_nodes));
bucket_ptr->node_count = sbuckets[i].count;
for(RDIM_NameMapSemiNode *snode = sbuckets[i].first;
snode != 0;
@@ -3426,20 +3426,18 @@ rdim_bake_name_maps_top_level(RDIM_Arena *arena, RDIM_BakeStringMapTight *string
{
RDI_NameMap *dst_maps = rdim_push_array(arena, RDI_NameMap, RDI_NameMapKind_COUNT);
{
RDI_U64 dst_map_idx = 0;
RDI_U64 dst_map_bucket_idx = 0;
RDI_U64 dst_map_node_idx = 0;
for(RDI_NameMapKind k = (RDI_NameMapKind)(RDI_NameMapKind_NULL+1);
k < RDI_NameMapKind_COUNT;
k = (RDI_NameMapKind)(k+1))
{
RDI_NameMap *dst_map = &dst_maps[dst_map_idx];
RDI_NameMap *dst_map = &dst_maps[k];
RDIM_BakeNameMap *src_map = name_maps[k];
dst_map->bucket_base_idx = (RDI_U32)dst_map_bucket_idx; // TODO(rjf): @u64_to_u32
dst_map->node_base_idx = (RDI_U32)dst_map_node_idx; // TODO(rjf): @u64_to_u32
dst_map->bucket_count = (RDI_U32)src_map->name_count; // TODO(rjf): @u64_to_u32
dst_map->node_count = (RDI_U32)src_map->name_count; // TODO(rjf): @u64_to_u32
dst_map_idx += 1;
dst_map_bucket_idx += dst_map->bucket_count;
dst_map_node_idx += dst_map->node_count;
}
+1 -1
View File
@@ -1474,7 +1474,7 @@ RDI_PROC RDIM_BakePathTree *rdim_bake_path_tree_from_params(RDIM_Arena *arena, R
//~ rjf: [Baking] Build Artifacts -> Baked Versions
//- rjf: partial/joinable baking functions
RDI_PROC RDIM_NameMapBakeResult rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src, RDI_U64 base_node_idx);
RDI_PROC RDIM_NameMapBakeResult rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src);
//- rjf: partial bakes -> final bake functions
RDI_PROC RDIM_NameMapBakeResult rdim_name_map_bake_results_combine(RDIM_Arena *arena, RDIM_NameMapBakeResult *results, RDI_U64 results_count);
+1 -4
View File
@@ -3812,7 +3812,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_name_map_task__entry_point)
{
P2R_BakeNameMapIn *in = (P2R_BakeNameMapIn *)p;
RDIM_NameMapBakeResult *out = push_array(arena, RDIM_NameMapBakeResult, 1);
ProfScope("bake name map %i", in->kind) *out = rdim_bake_name_map(arena, in->strings, in->idx_runs, in->map, in->base_node_idx);
ProfScope("bake name map %i", in->kind) *out = rdim_bake_name_map(arena, in->strings, in->idx_runs, in->map);
return out;
}
@@ -4195,7 +4195,6 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in)
TS_Ticket bake_type_nodes_ticket = ts_kickoff(p2r_bake_type_nodes_task__entry_point, 0, &bake_type_nodes_in);
TS_Ticket bake_name_maps_tickets[RDI_NameMapKind_COUNT] = {0};
{
U64 base_node_idx = 0;
for(EachNonZeroEnumVal(RDI_NameMapKind, k))
{
if(name_maps[k] == 0 || name_maps[k]->name_count == 0)
@@ -4206,10 +4205,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in)
in->strings = &bake_strings;
in->idx_runs = idx_runs;
in->map = name_maps[k];
in->base_node_idx = base_node_idx;
in->kind = k;
bake_name_maps_tickets[k] = ts_kickoff(p2r_bake_name_map_task__entry_point, 0, in);
base_node_idx += name_maps[k]->name_count;
}
}
P2R_BakeIdxRunsIn bake_idx_runs_in = {idx_runs};
-1
View File
@@ -502,7 +502,6 @@ struct P2R_BakeNameMapIn
RDIM_BakeStringMapTight *strings;
RDIM_BakeIdxRunMap *idx_runs;
RDIM_BakeNameMap *map;
U64 base_node_idx;
RDI_NameMapKind kind;
};