Commit Graph

69 Commits

Author SHA1 Message Date
Ed_
6d780482c7 Mostly still reviewing and planning... (see description)
Anything considered static can be aggregated into a single VArena. We don't have to worry about ever releasing its memory or it growing "too large".  All memory here must be fixed sized.
Conservative persistent memory can grow on demand but we would perfer if it could be trimmed or released when no longer dealing with heavy scenarios. Persistent memory should use a slab allocator that is backed by a virtual address space pool allocator instead of pools allocating from a single varena. Chained Arenas can source thier chunks of vmem from the slab which can be utilized for scratch memory. Fonts should be loaded from VSlab. The string cache should use a dedicated varena with 16-byte alignment. All conservative memory should be trimmable by a wipe command which should free all unused blocks. Each block should be a single OS aware reserve of vmem.

The Frame can possilby stay as a single varena with scratch allocation utilized on demand. Although it may be more viable for chained varenas to be derived from the main varena via a slab or pool interface. Frame memory should be trimmable on command which should release its committed vmem to its initial value. A dedicated transient varena should not exist. It should be removed when possible. File mappings for now can use a dedicated varena made on demand with a capped reserve size of 4 meg. Any file exceeding this needs the host to support virtual memory mapped I/O for files. The codebase db will use sqlite for the file I/O abstraction.

Host might only need to track the first persistent block of vmem, and the rest can be handled by the client (including wrapping that vmem up in a varena). Hot-reload only needs persistent vmem's ref restored on the client module's side. All other references can be resolved from there.
2025-07-07 02:00:57 -04:00
Ed_
87d5cda2c0 more review 2025-07-04 14:40:25 -04:00
Ed_
2e8381b097 Beginning to review progress on prototype codebase bootstrapping. 2025-07-04 14:06:28 -04:00
Ed_
ff91e41da9 convert all region/endregion directives to the comment signature used with editor plugins 2025-06-30 09:26:17 -04:00
Ed_
cf7151a1ce misc changes
not worth comment ing on...
2025-06-28 20:56:49 -04:00
Ed_
85dbaa37b9 updating to latest VEFontCache... tested 10k draw call target (worked) 2025-02-13 19:12:13 -05:00
Ed_
0cd2d84c64 Simplified text rendering code (since its now much of the heavily lifting is all on VEFontCache) 2025-01-13 01:08:02 -05:00
Ed_
08a8b4b823 Insane perfomrance after tuning the batch and caches. 2025-01-09 14:54:59 -05:00
Ed_
b4abde1094 Misc: VFontCache perf and features, exposing config on prototype side... 2025-01-09 13:23:35 -05:00
Ed_
3a245a1e9b WIP (Broken) docs and huge changes 2025-01-07 03:06:12 -05:00
Ed_
0350a0c282 Remove rune tracking for string cache, + vecache changes
Getting ready to de-hardcode vefontcache shaders
2025-01-06 14:12:55 -05:00
Ed_
c0b439bc30 Update readme and build script 2025-01-06 01:20:27 -05:00
Ed_
878c419a1f Oversized streamlined 2025-01-04 20:09:59 -05:00
Ed_
d6e232b3f7 Fixed ui rendering issue with getting vertical metrics unscaled. 2025-01-04 10:13:30 -05:00
Ed_
8c7b3e2058 misc changes 2025-01-03 13:06:05 -05:00
Ed_
b066b0de3a more perf improves for VEFontCache 2025-01-03 01:25:05 -05:00
Ed_
73ba89e7f9 WIP - VEFontCache: Rendering 3k lines of whitespace ast is 16 ms rn... 2025-01-02 17:49:39 -05:00
Ed_
560b2a125b Adjustments to render codepath on sectr side 2025-01-02 13:00:22 -05:00
Ed_
5559d62826 Got render_list proper setup for UI_State rendering...
Still need a spacial indexing method to prevent redundant enqueues to the drawlist (esp for text)

I'm in the process of trying to see if I can keep getting vefontcache even more performant... Making it multi-threaded can help but there might be some single-thread per still possible..
2025-01-01 14:13:30 -05:00
Ed_
c7d465d06e Another bugfix for hashmap_chained 2024-12-31 11:26:21 -05:00
Ed_
9015f4ce3c Converted UI_State box caches to use hmap_chained 2024-12-31 02:39:18 -05:00
Ed_
ddca5e8668 Finished initial window implementation 2024-12-31 00:17:05 -05:00
Ed_
2a89778c0f May have figured out auto-layout for ordering children (horizontally or vertically)
I'm going to leave the manual compute_layout options for now but their going to be disabled by default.
2024-12-30 23:05:15 -05:00
Ed_
d61bd8f161 more misc changes
It seems applying ceil to cache_glyph_to_atlas.dst_glyph_size does generally improve text clarity...
2024-12-30 19:55:16 -05:00
Ed_
c2476ab854 Progress on window widget, minor refactor for layout directions structs 2024-12-30 19:38:22 -05:00
Ed_
68b712acc6 Fix to ui_box_tranverse_next_depth_first not taking into account a parent limit
For non-root traversal
2024-12-30 19:37:36 -05:00
Ed_
495e14194e Began to setup a UI_Window (generalized window widget) 2024-12-30 15:01:37 -05:00
Ed_
841260849e more reduction of direct mutuable state referencing 2024-12-30 13:26:14 -05:00
Ed_
7ed0010761 move app/ui_theme to ui/widget_theme 2024-12-30 12:50:21 -05:00
Ed_
8905105d40 Moved settings menu to its own file, got min_size based on content working (only for the settings menu) 2024-12-30 12:22:58 -05:00
Ed_
57d51fc7b1 Began to reduce direct referencing of mutable state struct 2024-12-30 12:22:26 -05:00
Ed_
7488a6828e Text improvements
* Added clear_atlas_region_caches & clear_shape_cache to VEFontCache (Used on hot-reload by the pototype's font provider)
* Made glyph_draw's over_sample a vec2 for initialization (incase user wants to do some float value multiple of 4x4)
* ADVANCE_SNAP_SMALLFONT_SIZE made a runtime option: Shaper_Context.adv_snap_small_font_threshold
* Large imporvement to text hinting and general rendering of text
2024-12-29 17:30:00 -05:00
Ed_
7eab6f9a7f WIP: attempt to improve text rendering 2024-12-29 10:20:06 -05:00
Ed_
292d1b58b5 finishex exposing cam zoom settings to the wiget menu and the font size canvas scalaar 2024-11-30 04:51:03 -05:00
Ed_
dd2f6e9c71 Finished cam_zoom_mode settings entry, reduced anchor and alignment contraints for ui_layout_children_<> procs 2024-11-30 02:34:11 -05:00
Ed_
7f8a068268 titles for the zoom mode setting menu btns aren't behaving correctly... 2024-11-30 01:04:32 -05:00
Ed_
533da2cdfb made intial impl for UI_TextInputBox, used it with min and max cam zoom settings ui 2024-11-29 23:17:27 -05:00
Ed_
0655ade456 Support for rounded rectangles & borders (not the best implementation...) 2024-06-30 13:37:24 -04:00
Ed_
2698670890 Finally reached parity pre-rendering overhaul 2024-06-29 23:49:12 -04:00
Ed_
597c88c6b7 Misc + made a more controlled digital zoom
Trying to get digital zoom to closer target levels that would match specific even font sizes

Various other changes from iterating on VEFontCache
2024-06-29 22:36:22 -04:00
Ed_
12741a228d mostly formatting/name changes and other misc stuff 2024-06-28 03:27:25 -04:00
Ed_
9d0cc125a9 Misc changes
* Made refactor rende procedures to specify dependencies instead of directly grabbing from state singleton
2024-06-26 06:03:00 -04:00
Ed_
1533a14a1b misc changes
* draw_text_string_pos_extent_zoomed can now oversample text futher (if desired)
* render_ui_via_box_tree has a rudimentary render pass layering optimization

Add support for the slab allocator to accept arbitrary alignments (odin's map container needs it)
Messing around with 64-byte alignment as the default for the allocator...
2024-06-25 19:13:41 -04:00
Ed_
1fe741034d wip : trying to fix the workspace view bounds detection 2024-06-25 02:38:08 -04:00
Ed_
08932c8c99 Fixes to test_whitespace_ast 2024-06-24 23:19:18 -04:00
Ed_
6f722026ce Text rendering is now around parity (if not better) than what was done before with raylib
Performance still sucks since the rendering implementation is subpar
2024-06-24 23:19:08 -04:00
Ed_
c93c0ed567 Minor lifting in the render side, getting ready to just hunker down and take notes on whats next
* VEFontCache needs to get fixed up (possibly bring back ELFHash)
  * Problably going to do conversion early to odin's array and map usage
* Need get the quad tree setup for the ui so that I can do fast and efficient traversal for the layer based rendering.
2024-06-24 16:36:22 -04:00
Ed_
dee8fc7ef9 layer text rendering is working! 2024-06-23 21:32:00 -04:00
Ed_
7d41fcc335 wip : trying to get layered text rendering working 2024-06-23 20:22:36 -04:00
Ed_
ce1d31f0d4 Progress on fleshing out rendering (Getting ui ready to render in "layer batches") 2024-06-23 02:47:13 -04:00