Skip to content

Commit d480b36

Browse files
author
amalxloop
committed
Update README: reflect resource management, index buffers, CI sanitizer jobs
1 parent 316fe11 commit d480b36

1 file changed

Lines changed: 25 additions & 11 deletions

File tree

README.md

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ SilverCore removes the bridge. App logic, layout, animation, and rendering are a
2323
| Memory | `include/sc_arena.h` | Linear bump allocator + typed slab pool — zero `malloc` on the hot path |
2424
| Layout engine | `include/sc_layout.h` | Flexbox subset in C: row/column, flex-grow, flex-wrap, align-self, gap, justify-content, align-items, margin, padding |
2525
| Font system | `include/sc_font.h` | stb_truetype-based font rasterizer with glyph atlas caching and text rendering |
26-
| Graphics layer | `include/sc_gfx.h` | Backend-agnostic 2-D/3-D API (Vulkan / Software), dispatches to active backend |
26+
| Graphics layer | `include/sc_gfx.h` | Backend-agnostic 2-D/3-D API with full resource management: buffers, textures, shaders, pipelines, index buffers, batch 2-D helpers |
2727
| Widget/scene | `include/sc_widget.h` | Retained widget tree with animations, events, and layout sync |
2828
| Runtime | `include/sc_runtime.h` | Cooperative fiber scheduler, MPSC task queue, min-heap timer, 60 Hz loop |
29-
| Vulkan backend | `backends/sc_backend_vulkan.h` | Full Vulkan 1.0 implementation: swapchain, offscreen, shaders via embedded SPIR-V, push constants, batch rendering |
30-
| Metal backend | `backends/sc_backend_metal.h` | Metal surface stub |
31-
| D3D12 backend | `backends/sc_backend_d3d12.h` | D3D12 surface stub |
29+
| Vulkan backend | `backends/sc_backend_vulkan.h` | Full Vulkan 1.0 implementation: swapchain, offscreen, shaders via embedded SPIR-V, push constants, batch rendering, user buffer/shader/pipeline management, indexed draws |
30+
| Metal backend | `backends/sc_backend_metal.h` | Full API surface declared (make_buffer/destroy_buffer/make_texture/make_shader/make_pipeline etc.) |
31+
| D3D12 backend | `backends/sc_backend_d3d12.h` | Full API surface declared with SCD3D12Desc configuration |
3232
| Python bindings | `bindings/python/silvercore.py` | ctypes wrapper + simulation mode (no native lib required) |
3333
| WASM glue | `tools/wasm/silvercore.js` | Emscripten JS bridge, Canvas2D blit, requestAnimationFrame loop |
3434
| PoC app | `apps/stock_dashboard/` | 1 024-ticker stock dashboard, 60 Hz, zero heap allocs per frame |
@@ -43,17 +43,19 @@ The stock dashboard PoC renders **1 024 live-updating ticker cards** (each with
4343
Tickers : 1024
4444
Viewport : 1280x720
4545
Target : 60 Hz
46-
Cell size : 34x18 px
46+
Cell size : 35x16 px
4747
4848
--- Benchmark results (300 frames) ---
49-
Total time : 5.034 s
50-
Actual fps : 59.5
49+
Total time : 5.035 s
50+
Actual fps : 59.6
5151
Draw calls/fr : 4103
5252
Verts/fr : 24618
53-
Scene memory : 5.19 MB
53+
Scene memory : 5.28 MB
5454
Arena used : 0.00 KB / 8192.00 KB ← zero heap allocs per frame
5555
```
5656

57+
The PoC outputs a `silvercore.ppm` image of the final frame for visual inspection.
58+
5759
---
5860

5961
## Architecture at a Glance
@@ -135,6 +137,18 @@ cmake --build build-wasm -j$(nproc)
135137
| `SC_UBSAN` | `OFF` | Enable UndefinedBehaviourSanitizer |
136138
| `WASM` | `OFF` | Emscripten WASM target |
137139

140+
### CI pipeline
141+
142+
The `.github/workflows/ci.yml` runs four jobs on every push and PR:
143+
144+
| Job | What it does |
145+
|---|---|
146+
| `test-software` | Compiles all 6 tests + stock dashboard with `-Wall -Wextra -Wpedantic -Wshadow`, runs suite, produces PPM output |
147+
| `test-vulkan` | Compiles Vulkan backend header + headless test (requires `libvulkan-dev`) |
148+
| `test-asan` | Same tests with AddressSanitizer enabled |
149+
| `test-ubsan` | Same tests with UndefinedBehaviourSanitizer enabled |
150+
| `wasm` | Cross-compiles with Emscripten SDK, verifies `.wasm`/`.js` output |
151+
138152
---
139153

140154
## Python Scripting Layer
@@ -180,9 +194,9 @@ silvercore-kernel/
180194
│ ├── sc_widget.h Widget tree, scene, animations
181195
│ └── sc_runtime.h Fibers, tasks, timers, event loop
182196
├── backends/
183-
│ ├── sc_backend_vulkan.h Full Vulkan 1.0 backend
184-
│ ├── sc_backend_metal.h Metal stub
185-
│ └── sc_backend_d3d12.h D3D12 stub
197+
│ ├── sc_backend_vulkan.h Full Vulkan 1.0 backend (buffers, shaders, pipelines, indexed draws)
198+
│ ├── sc_backend_metal.h Metal stub (full API surface)
199+
│ └── sc_backend_d3d12.h D3D12 stub (full API surface + SCD3D12Desc)
186200
├── bindings/
187201
│ └── python/silvercore.py
188202
├── tools/

0 commit comments

Comments
 (0)