Commit Graph

44 Commits

Author SHA1 Message Date
ed 3769413a50 messing around with testing using keyword in proc args (with new debug support) 2025-07-19 00:07:36 -04:00
ed a617ecc61f took a break and started to figure out worker codenames for fun 2025-07-07 23:32:35 -04:00
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 9229358a16 Updates to general memory defs 2024-03-06 16:46:23 -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 7332644515 Preparing skeleton for proper imgui support.
I originally wanted to reference Ryan's UI series along with the RAD Debugger codebase, but that ended up being too convoluted of a route. Instead, I moved on to just doing a deep dive on imgui content I could find to learn from and associated libraries available. I collected my notes so far in this repo [IMGUI_Notes](https://github.com/Ed94/IMGUI_Notes).

For now I have the base scaffolding datatype wise for the prototype ui.
2024-02-22 21:19:29 -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