remove ui gpu double buffering

This commit is contained in:
jacob 2026-02-26 14:25:06 -06:00
parent 1397c4a7a4
commit 83cecf39f0
2 changed files with 10 additions and 11 deletions

View File

@ -553,13 +553,13 @@ UI_Frame *UI_BeginFrame(UI_FrameFlag frame_flags)
if (!UI.box_arena)
{
UI.box_arena = AcquireArena(Gibi(64));
UI.gpu_frame_arena = G_AcquireArena();
// Init frames
for (u64 i = 0; i < countof(UI.frames); ++i)
{
UI_Frame *frame = &UI.frames[i];
frame->arena = AcquireArena(Gibi(64));
frame->rects_arena = AcquireArena(Gibi(64));
frame->gpu_arena = G_AcquireArena();
}
// Init root box
{
@ -584,17 +584,15 @@ UI_Frame *UI_BeginFrame(UI_FrameFlag frame_flags)
{
Arena *old_arena = frame->arena;
Arena *old_rects_arena = frame->rects_arena;
G_ArenaHandle old_gpu_arena = frame->gpu_arena;
ZeroStruct(frame);
frame->arena = old_arena;
frame->rects_arena = old_rects_arena;
frame->gpu_arena = old_gpu_arena;
}
frame->window_frame = WND_BeginFrame(G_Format_R16G16B16A16_Float, WND_BackbufferSizeMode_MatchMonitor);
frame->cl = G_PrepareCommandList(G_QueueKind_Direct);
ResetArena(frame->arena);
ResetArena(frame->rects_arena);
G_ResetArena(frame->cl, frame->gpu_arena);
G_ResetArena(frame->cl, UI.gpu_frame_arena);
{
i64 now_ns = TimeNs();
@ -1700,23 +1698,23 @@ void UI_EndFrame(UI_Frame *frame, i32 vsync)
// Target
G_ResourceHandle draw_target = G_PushTexture2D(
frame->gpu_arena, frame->cl,
UI.gpu_frame_arena, frame->cl,
G_Format_R16G16B16A16_Float,
monitor_size,
G_Layout_DirectQueue_RenderTarget,
.flags = G_ResourceFlag_AllowRenderTarget,
.name = Lit("UI draw target")
);
G_Texture2DRef draw_target_ro = G_PushTexture2DRef(frame->gpu_arena, draw_target);
G_Texture2DRef draw_target_ro = G_PushTexture2DRef(UI.gpu_frame_arena, draw_target);
// Rects
u64 rects_count = ArenaCount(frame->rects_arena, UI_GpuRect);
G_ResourceHandle rects_buff = G_PushBufferFromCpuCopy(
frame->gpu_arena, frame->cl,
UI.gpu_frame_arena, frame->cl,
StringFromArena(frame->rects_arena),
.name = Lit("UI rects")
);
G_StructuredBufferRef rects_ro = G_PushStructuredBufferRef(frame->gpu_arena, rects_buff, UI_GpuRect);
G_StructuredBufferRef rects_ro = G_PushStructuredBufferRef(UI.gpu_frame_arena, rects_buff, UI_GpuRect);
// Params
UI_GpuParams params = Zi;
@ -1729,11 +1727,11 @@ void UI_EndFrame(UI_Frame *frame, i32 vsync)
params.aa = TweakFloat("UI anti-aliasing", 1, 0, 1);
}
G_ResourceHandle params_buff = G_PushBufferFromCpuCopy(
frame->gpu_arena, frame->cl,
UI.gpu_frame_arena, frame->cl,
StringFromStruct(&params),
.name = Lit("UI gpu params")
);
G_StructuredBufferRef params_ro = G_PushStructuredBufferRef(frame->gpu_arena, params_buff, UI_GpuParams);
G_StructuredBufferRef params_ro = G_PushStructuredBufferRef(UI.gpu_frame_arena, params_buff, UI_GpuParams);
// Initial constants
G_SetConstant(frame->cl, UI_GpuConst_Params, params_ro);

View File

@ -377,7 +377,6 @@ Struct(UI_Frame)
{
Arena *arena;
Arena *rects_arena;
G_ArenaHandle gpu_arena;
WND_Frame window_frame;
G_ResourceHandle backbuffer;
@ -423,6 +422,8 @@ Struct(UI_Ctx)
i64 current_frame_tick;
UI_Frame frames[2];
G_ArenaHandle gpu_frame_arena;
};
extern UI_Ctx UI;