go wide on msf stream extraction

This commit is contained in:
Ryan Fleury
2025-08-18 11:36:33 -07:00
parent d0ece7bc57
commit d52b6d7bca
3 changed files with 32 additions and 6 deletions
+2
View File
@@ -230,6 +230,7 @@ msf_raw_stream_table_from_data(Arena *arena, String8 msf_data)
internal String8
msf_data_from_stream_number(Arena *arena, String8 msf_data, MSF_RawStreamTable *st, MSF_StreamNumber sn)
{
ProfBeginFunction();
String8 result = {0};
if(sn < st->stream_count)
{
@@ -268,6 +269,7 @@ msf_data_from_stream_number(Arena *arena, String8 msf_data, MSF_RawStreamTable *
result = str8(stream_buf, copy_size);
}
ProfEnd();
return result;
}
+29 -6
View File
@@ -9,16 +9,40 @@ p2r2_convert_thread_entry_point(void *p)
lane_ctx(params->lane_ctx);
ThreadNameF("p2r2_convert_thread_%I64u", lane_idx());
//////////////////////////////////////////////////////////////
//- rjf: do base MSF parse
//
{
// rjf: setup output buckets
if(lane_idx() == 0)
{
p2r2_shared = push_array(arena, P2R2_Shared, 1);
p2r2_shared->msf_raw_stream_table = msf_raw_stream_table_from_data(arena, params->input_pdb_data);
p2r2_shared->msf = push_array(arena, MSF_Parsed, 1);
p2r2_shared->msf->page_size = p2r2_shared->msf_raw_stream_table->page_size;
p2r2_shared->msf->page_count = p2r2_shared->msf_raw_stream_table->total_page_count;
p2r2_shared->msf->stream_count = p2r2_shared->msf_raw_stream_table->stream_count;
p2r2_shared->msf->streams = push_array(arena, String8, p2r2_shared->msf->stream_count);
}
lane_sync();
// rjf: do wide fill
{
Rng1U64 range = lane_range(p2r2_shared->msf->stream_count);
for EachInRange(idx, range)
{
p2r2_shared->msf->streams[idx] = msf_data_from_stream_number(arena, params->input_pdb_data, p2r2_shared->msf_raw_stream_table, idx);
}
}
}
lane_sync();
MSF_Parsed *msf = p2r2_shared->msf;
//////////////////////////////////////////////////////////////
//- rjf: do top-level MSF/PDB extraction
//
if(lane_idx() == 0) ProfScope("do top-level MSF/PDB extraction")
{
ProfScope("parse MSF")
{
p2r2_shared = push_array(arena, P2R2_Shared, 1);
p2r2_shared->msf = msf_parsed_from_data(arena, params->input_pdb_data);
}
ProfScope("parse PDB info")
{
String8 info_data = msf_data_from_stream(p2r2_shared->msf, PDB_FixedStream_Info);
@@ -34,7 +58,6 @@ p2r2_convert_thread_entry_point(void *p)
}
}
lane_sync();
MSF_Parsed *msf = p2r2_shared->msf;
PDB_Info *pdb_info = p2r2_shared->pdb_info;
PDB_NamedStreamTable *named_streams = p2r2_shared->named_streams;
+1
View File
@@ -19,6 +19,7 @@ struct P2R2_ConvertThreadParams
typedef struct P2R2_Shared P2R2_Shared;
struct P2R2_Shared
{
MSF_RawStreamTable *msf_raw_stream_table;
MSF_Parsed *msf;
PDB_Info *pdb_info;
PDB_NamedStreamTable *named_streams;