create ui render target at monitor size

This commit is contained in:
jacob 2025-11-05 18:44:22 -06:00
parent add9650337
commit 7fc083785e
2 changed files with 7 additions and 11 deletions

View File

@ -112,7 +112,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized)
u32 color = colors[log.level][log.level_id % 2]; u32 color = colors[log.level][log.level_id % 2];
UI_Push(BackgroundColor, color); UI_Push(BackgroundColor, color);
UI_Push(Width, UI_FILL(1, 0)); UI_Push(Width, UI_FILL(1, 0));
UI_Push(Height, UI_FNT(2, 1)); UI_Push(Height, UI_FNT(1.5, 1));
UI_Push(BorderColor, Rgba32F(0.25, 0.25, 0.25, 1)); UI_Push(BorderColor, Rgba32F(0.25, 0.25, 0.25, 1));
UI_Push(Rounding, UI_RPIX(0)); UI_Push(Rounding, UI_RPIX(0));
UI_Push(Border, 1); UI_Push(Border, 1);
@ -124,7 +124,6 @@ UI_Box *PP_BuildDebugConsole(b32 minimized)
UI_Push(BackgroundColor, 0); UI_Push(BackgroundColor, 0);
UI_Push(Border, 0); UI_Push(Border, 0);
UI_Push(Text, text); UI_Push(Text, text);
// UI_Push(ChildAlignment, UI_Alignment_Left);
UI_Push(Width, UI_FILL(1, 0)); UI_Push(Width, UI_FILL(1, 0));
UI_Push(Height, UI_FIT(1)); UI_Push(Height, UI_FIT(1));
UI_Push(Flags, UI_BoxFlag_DrawText); UI_Push(Flags, UI_BoxFlag_DrawText);

View File

@ -680,12 +680,13 @@ i64 UI_EndFrame(UI_Frame frame)
TempArena scratch = BeginScratchNoConflict(); TempArena scratch = BeginScratchNoConflict();
UI_SharedState *g = &UI_shared_state; UI_SharedState *g = &UI_shared_state;
Vec2I32 draw_size = frame.window_frame.draw_size; Vec2I32 draw_size = frame.window_frame.draw_size;
Vec2I32 monitor_size = frame.window_frame.monitor_size;
GPU_QueueKind gpu_render_queue = GPU_QueueKind_Direct; GPU_QueueKind gpu_render_queue = GPU_QueueKind_Direct;
Fence *submit_fence = GPU_FenceFromQueue(gpu_render_queue); Fence *submit_fence = GPU_FenceFromQueue(gpu_render_queue);
/* Acquire render target */ /* Acquire render target */
if (g->render_target && !EqVec2I32(draw_size, GPU_GetTextureSize2D(g->render_target))) if (g->render_target && !EqVec2I32(monitor_size, GPU_GetTextureSize2D(g->render_target)))
{ {
__profn("Release ui render target"); __profn("Release ui render target");
YieldOnFence(submit_fence, g->gpu_submit_fence_target); YieldOnFence(submit_fence, g->gpu_submit_fence_target);
@ -699,14 +700,13 @@ i64 UI_EndFrame(UI_Frame frame)
desc.kind = GPU_ResourceKind_Texture2D; desc.kind = GPU_ResourceKind_Texture2D;
desc.flags = GPU_ResourceFlag_Renderable | GPU_ResourceFlag_Writable; desc.flags = GPU_ResourceFlag_Renderable | GPU_ResourceFlag_Writable;
desc.texture.format = GPU_Format_R8G8B8A8_Unorm; desc.texture.format = GPU_Format_R8G8B8A8_Unorm;
desc.texture.size = VEC3I32(draw_size.x, draw_size.y, 1); desc.texture.size = VEC3I32(monitor_size.x, monitor_size.y, 1);
g->render_target = GPU_AcquireResource(desc); g->render_target = GPU_AcquireResource(desc);
} }
Vec2I32 render_target_size = GPU_GetTextureSize2D(g->render_target);
Rect render_viewport = ZI; Rect render_viewport = ZI;
render_viewport.pos = VEC2(0, 0); render_viewport.pos = VEC2(0, 0);
render_viewport.size = VEC2(render_target_size.x, render_target_size.y); render_viewport.size = VEC2(draw_size.x, draw_size.y);
/* TODO: Ensure root is parent */ /* TODO: Ensure root is parent */
@ -1354,16 +1354,13 @@ i64 UI_EndFrame(UI_Frame frame)
{ {
/* FIXME: Real xform */ /* FIXME: Real xform */
Xform ui_to_screen_xf = XformIdentity;
Vec2I32 backbuffer_size = frame.window_frame.monitor_size; Vec2I32 backbuffer_size = monitor_size;
if (!g->swapchain) if (!g->swapchain)
{ {
g->swapchain = GPU_AcquireSwapchain(frame.window_frame.window_handle, GPU_Format_R8G8B8A8_Unorm, backbuffer_size); g->swapchain = GPU_AcquireSwapchain(frame.window_frame.window_handle, GPU_Format_R8G8B8A8_Unorm, backbuffer_size);
} }
Vec2 backbuffer_dst_f = MulXformV2(ui_to_screen_xf, VEC2(0, 0)); g->gpu_submit_fence_target = GPU_PresentSwapchain(g->swapchain, g->render_target, backbuffer_size, VEC2I32(0, 0), VSYNC);
Vec2I32 backbuffer_dst = VEC2I32(RoundF32ToI32(backbuffer_dst_f.x), RoundF32ToI32(backbuffer_dst_f.y));
g->gpu_submit_fence_target = GPU_PresentSwapchain(g->swapchain, g->render_target, backbuffer_size, backbuffer_dst, VSYNC);
} }
WND_EndFrame(frame.window_frame); WND_EndFrame(frame.window_frame);