Commit Graph

40 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_
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_
a560222d5d Fixed a long-standing issue with the chained hashmap (finally) 2024-06-21 00:26:29 -04:00
Ed_
c405c47e6c mem tracker updates 2024-06-20 15:36:47 -04:00
Ed_
489faf5515 Misc changes (refactors, notes) 2024-06-20 14:39:50 -04:00
Ed_
6f4a5e215c prevent hot reload failure from lack of transient backing 2024-06-19 05:51:34 -04:00
Ed_
b698f5166b Base input pass updated for sokol possibly done (untested)
Still need to figure out input event consumption, I don't want to do it with the event ring.

I would like to setup input binding layers and then have the push/pop input contextes with a set of bindings.
If the bindings are detected it should "consume" that binding from further use for the buffered time period.

This will be really important with how heavily model this app will be.I
2024-06-18 01:33:50 -04:00
Ed_
3998776f4b Beginning to lift the "grime" files to their own pacakge 2024-05-31 11:26:52 -04:00
Ed_
9cd0692e56 Got it to compile with sokol changes (UNTESTED) 2024-05-22 03:28:22 -04:00
Ed_
ddff1fcae6 typos and buildscript fixes & additions 2024-05-16 18:16:14 -04:00
Ed_
b30f3c3466 Restructured the codebase yet again but this time with compiler support for monlithic packages
So no need to stage generate symbolic links in a flat directory for the compiler
2024-05-16 17:27:48 -04:00
Ed_
1e6e9581c3 Bug fixes to allocators and containers
Still haven't found the main bug with resizing zpl_hashmap on string interning
2024-05-06 23:29:47 -04:00
Ed_
7162c5a14d last state of the prototype.
* Still has memory issue
* Was last using it to learn some PGA from Lengyel's books
2024-04-08 01:35:53 -04:00
Ed_
fb1a6063a7 fixed hot reload
there is still memory issues T-T
2024-03-20 01:23:50 -04:00
Ed_
2d5e308046 misc changes, hot reload is broken 2024-03-20 00:44:43 -04:00
Ed_
bf211a8e14 Fixed bad resize_non_zeroed impl (cannot use default_resize_bytes_align_non_zeroed, its not a resize) 2024-03-19 12:18:39 -04:00
Ed_
180c296556 Updates and fixes to memory 2024-03-14 00:00:44 -04:00
Ed_
159aedb592 Memory fixes, progress towards anchors support in the UI auto-layout
Also support for margins
2024-03-12 20:55:29 -04:00
Ed_
1656dffb67 Setup spall profiling, did first optimizations! 2024-03-11 02:05:18 -04:00
Ed_
c80254adbc Got whitespace parser working + widget generation for basic case! 2024-03-10 10:31:21 -04:00
Ed_
f1edf1c43e Added basic string interning 2024-03-08 23:20:49 -05:00
Ed_
4b026c379a Started to do manual control of the frame timing (no longer using raylib) 2024-03-08 18:45:08 -05:00
Ed_
191d5076ea Dragging! & basic proportional box resize frm cursor distance to box pos
Still need to add resize via 'pulling' to stretch the box out from a side or 2 sides diagonally.

Also some general clenaup of code
2024-03-08 03:34:21 -05:00
Ed_
f2237e7211 Started to overhaul memory setup + runtime fixes 2024-03-07 15:57:17 -05:00
Ed_
5147a53c4d Prepping for new vmem layout 2024-03-05 10:15:44 -05:00
Ed_
035c726a71 got basic ui elmental interaction working, + alignment of anchor 2024-03-02 10:24:09 -05:00
Ed_
4deee942a8 General codebase refactor & cleanup
Renamed HashTable to HMapZPL, with procs having the zpl_ namespace prefix.
(I want to eventually get away from using it)

Started to use the grime pattern for library aliasing better.
2024-02-27 07:50:57 -05:00
Ed_
a00ba8a152 Minor cleanup for formatting, reverse verify condition usage
Verify condition needed to only fire off if false not the other way around.
2024-02-23 09:36:23 -05:00
Ed_
f76ba4e9ba Lots of stuff (Big ones are cam and frame initial features)
There is now a 2D camera in the workspace!
We have a basic 'Frame' definition. It doesn't have any interaction yet...

I started to define spacial math, mostly for doing conversion and getting a grounding on pixel/points/cm reference. The world space is in cm.
2024-02-10 03:40:53 -05:00
Ed_
6819336696 Got logging setup
There is an issue with the tracked allocators made for the host module.
I'll need to see later whats going on, for now it doesn't matter.
2024-02-08 22:33:53 -05:00
Ed_
d205aba15a Set the base address back to 1 tb 2024-02-08 16:05:56 -05:00
Ed_
84d9675a27 Got replay working
Doesn't work across app runs, unlike handmade the crux here is raylib. Even if we did raylibs features ourselves there would still be an issue of restoring the gpu memory state. So in order to have replays work across app runs is proper state serialization.

I'll leave that for later and focus on the next core features.
2024-02-08 16:05:15 -05:00
Ed_
9b4ceeffda Baseline input and replay setup done. Needs testing and fixes 2024-02-08 10:50:36 -05:00
Ed_
2e6ca2d0fd Segregated host/api better. Memory setup is problably solid now. 2024-01-30 01:29:48 -05:00
Ed_
c9a10c3b41 Fix for hot-reload (raylib shared required on odin compiler) 2024-01-25 11:24:52 -05:00
Ed
1755dac070 wip fixes for hot reload 2024-01-25 10:49:57 -05:00
Ed_
761794f594 Hot reload works 2024-01-22 03:47:53 -05:00
Ed_
77a48d7104 Memory setup for hot-reload & save states 2024-01-22 00:22:06 -05:00
Ed_
3b259f2893 Odin is nice. 2024-01-21 23:38:02 -05:00