wip
This commit is contained in:
parent
700e76366b
commit
7d44204162
3 changed files with 33 additions and 5 deletions
|
@ -121,6 +121,23 @@ Viewer_Settings make_viewer_settings()
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal
|
||||||
|
void jump_to_page(App_State &app, u64 page_idx)
|
||||||
|
{
|
||||||
|
assert(app.rndata.n_pages > 0);
|
||||||
|
page_idx = (page_idx + app.rndata.n_pages) % app.rndata.n_pages;
|
||||||
|
|
||||||
|
// @Speed
|
||||||
|
Page_Info_Node *page = app.rndata.pages;
|
||||||
|
for (u64 i = 0; i < page_idx; ++i) {
|
||||||
|
page = page->next;
|
||||||
|
assert(page);
|
||||||
|
}
|
||||||
|
|
||||||
|
app.vsettings.base_display_addr = page->range.start;
|
||||||
|
app.vsettings.latest_page_gone_to = page_idx;
|
||||||
|
}
|
||||||
|
|
||||||
internal
|
internal
|
||||||
void update_and_render(Arena *arena, App_State &app, f32 delta_time_ms)
|
void update_and_render(Arena *arena, App_State &app, f32 delta_time_ms)
|
||||||
{
|
{
|
||||||
|
@ -206,11 +223,18 @@ void update_and_render(Arena *arena, App_State &app, f32 delta_time_ms)
|
||||||
|
|
||||||
ImGui::ColorEdit3("_Page Start", app.vsettings.col_page_start, flags);
|
ImGui::ColorEdit3("_Page Start", app.vsettings.col_page_start, flags);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Page Start")) {} // TODO: jump to next page
|
if (ImGui::Button("Page Start")) jump_to_page(app, 0);
|
||||||
|
|
||||||
ImGui::ColorEdit3("_Page", app.vsettings.col_page, flags);
|
ImGui::ColorEdit3("Page", app.vsettings.col_page, ImGuiColorEditFlags_NoInputs);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("Page")) {} // TODO: jump to next page
|
{
|
||||||
|
// TODO: support u64
|
||||||
|
i32 page_to_go_to = static_cast<i32>(app.vsettings.latest_page_gone_to);
|
||||||
|
ImGui::PushItemWidth(100.f);
|
||||||
|
if (ImGui::InputInt("##page_viewed", &page_to_go_to))
|
||||||
|
jump_to_page(app, page_to_go_to);
|
||||||
|
ImGui::PopItemWidth();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
ImGui::Text("Num pages: %lu", app.rndata.n_pages);
|
ImGui::Text("Num pages: %lu", app.rndata.n_pages);
|
||||||
|
|
|
@ -8,6 +8,7 @@ struct Viewer_Settings {
|
||||||
float col_page_start[3];
|
float col_page_start[3];
|
||||||
|
|
||||||
u64 base_display_addr;
|
u64 base_display_addr;
|
||||||
|
u64 latest_page_gone_to;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Edit_Bg_Color_Data {
|
struct Edit_Bg_Color_Data {
|
||||||
|
|
|
@ -77,6 +77,7 @@ void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_
|
||||||
fprintf(stderr, "Loading pages...\n");
|
fprintf(stderr, "Loading pages...\n");
|
||||||
|
|
||||||
chr::time_point start_t = chr::high_resolution_clock::now();
|
chr::time_point start_t = chr::high_resolution_clock::now();
|
||||||
|
u64 n_slow = 0;
|
||||||
|
|
||||||
// for all clusters, gather page metadata
|
// for all clusters, gather page metadata
|
||||||
for (const RClusterDescriptor &cluster_desc : descriptor.GetClusterIterable()) {
|
for (const RClusterDescriptor &cluster_desc : descriptor.GetClusterIterable()) {
|
||||||
|
@ -108,8 +109,10 @@ void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_
|
||||||
last_inserted_pinfo->next = pinfo;
|
last_inserted_pinfo->next = pinfo;
|
||||||
} else for (Page_Info_Node *node = pinfo_head->next, *prev = pinfo_head; node; prev = node, node = node->next) {
|
} else for (Page_Info_Node *node = pinfo_head->next, *prev = pinfo_head; node; prev = node, node = node->next) {
|
||||||
if (pinfo->range.end() <= node->range.start) {
|
if (pinfo->range.end() <= node->range.start) {
|
||||||
|
printf("inserted 0x%lX - 0x%lX (previous was 0x%lX - 0x%lX)\n", pinfo->range.start, pinfo->range.end(), last_inserted_pinfo->range.start, last_inserted_pinfo->range.end());
|
||||||
prev->next = pinfo;
|
prev->next = pinfo;
|
||||||
pinfo->next = node;
|
pinfo->next = node;
|
||||||
|
++n_slow;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,7 +128,7 @@ void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_
|
||||||
chr::time_point end_t = chr::high_resolution_clock::now();
|
chr::time_point end_t = chr::high_resolution_clock::now();
|
||||||
u64 time_spent_ms = chr::duration_cast<chr::milliseconds>(end_t - start_t).count();
|
u64 time_spent_ms = chr::duration_cast<chr::milliseconds>(end_t - start_t).count();
|
||||||
|
|
||||||
fprintf(stderr, "Loaded %lu pages in %lu ms.\nGenerating groups...\n", n_pages, time_spent_ms);
|
fprintf(stderr, "Loaded %lu pages in %lu ms (%lu took the slow path).\nGenerating groups...\n", n_pages, n_slow, time_spent_ms);
|
||||||
|
|
||||||
// Create page groups and chunks.
|
// Create page groups and chunks.
|
||||||
// Each page group is a grouping of GROUP_SIZE page infos whose range is equal to the combined ranges
|
// Each page group is a grouping of GROUP_SIZE page infos whose range is equal to the combined ranges
|
||||||
|
|
Loading…
Reference in a new issue