//////////////////////////////////////////////////////////// //~ Window types Enum(WND_Flag) { WND_Flag_None = (0), WND_Flag_Fullscreen = (1 << 0), WND_Flag_ForcedTop = (1 << 1), }; Struct(WND_Settings) { WND_Flag flags; Vec2I32 p0; Vec2I32 p1; i32 vsync; }; Struct(WND_Cmd) { WND_Settings settings; GPU_Resource *texture; Vec2I32 backbuffer_dst; }; Struct(WND_Event) { u64 inputs_count; Input *inputs; WND_Settings settings; /* The backbuffer src texture is no longer in use once the direct queue fence reaches this target */ i64 backbuffer_fence_target; }; //////////////////////////////////////////////////////////// //~ @hookdecl Startup hooks void WND_Startup(void); //////////////////////////////////////////////////////////// //~ @hookdecl Window hooks WND_Event WND_BeginUpdate(Arena *arena); void WND_EndUpdate(WND_Cmd cmd);