@@ -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
4343Tickers : 1024
4444Viewport : 1280x720
4545Target : 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