mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-14 08:02:23 -07:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -502,7 +502,6 @@ struct P2R_BakeNameMapIn
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_BakeIdxRunMap *idx_runs;
|
||||
RDIM_BakeNameMap *map;
|
||||
U64 base_node_idx;
|
||||
RDI_NameMapKind kind;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user