v0.1.0 — Vulkan Core Kit
Pre-release
Pre-release
·
154 commits
to VCK
since this release
The first release under the VCK name. Project was rebranded from VVCS
("Vulkan-VCS") to VCK — Vulkan Core Kit in commit deced77. This
release establishes the public surface (VCK.h amalgam header), the
three-layer architecture (core / expansion / execution), the in-tree
example builder (build.bat + ANSI menu), the structured logger, and
a Windows CI gate. The project is Windows-only at this point;
cross-platform support lands in v0.2.0.
Added
- Project rebrand —
VVCS → VCK (Vulkan Core Kit). README, build
scripts, header guards, and namespaceVCK::finalised. VCK.hamalgam header — single public include surface; per-class
declarations stop being duplicated and the amalgam now#includes
the layer headers directly (rule 21 precursor).- Three-layer architecture —
core/(VulkanContext,
VulkanDevice,VulkanSwapchain,VulkanPipeline,
VulkanCommand,VulkanSync,VulkanBuffer,VulkanImage,
VulkanHelpers), expansion (framebuffers, depth, samplers,
textures, model pipelines, descriptor sets, mipmaps), execution
(FrameScheduler,JobGraph,GpuSubmissionBatcher,
BackpressureGovernor,DebugTimeline,TimelineSemaphore). VCK::Configmaster init-chain control struct —cfg.device,
cfg.swapchain,cfg.pipeline,cfg.scheduler,cfg.aa,cfg.debug
knobs; passed once toVulkanContext::Initialize.VulkanPipeline::Config— cull mode, front-face winding, blend
state, push-constant ranges, descriptor-set layouts.- Mailbox present mode by default with FIFO fallback when the
surface doesn't expose Mailbox. - Six VCKExpansion examples —
HelloExample,ModelExample,
VMMExample,FrameSchedulerExample,TripleBufferExample,
LockstepExample, plus three execution-layer examples
(SubmissionBatchingExample,JobGraphExample,
DebugTimelineExample). example/build.bat— Windows MinGW builder with[1]-[9] / [A] / [0]
ANSI-coloured menu, BUILD_ALL section that compiles every example in
one pass, and CRLF-safe shader compile viaglslangValidator.- VMM (Vulkan Memory Manager) — three-layer allocator
(VmmPersistent/VmmTransient/VmmStaging) wrapping VMA's
pool-aware allocators.VmmBuffer/VmmImageare typed
POD-by-handle wrappers.LogStatsdump every N frames for the
example. VCKLog— coloured[VCK] [Tag] bodylogger withInfo/
Notice/Warn/Errorlevels and an init-time global toggle
for debug-gatedInfolines.docs/at repo root — split out from README into
Build.md,Examples.md,Design.md,Home.md. README slimmed to
badges + 60-second tour + pointers.- GitHub wiki — initial structure;
_Sidebar.md, design rules. - CI: Windows workflow —
.github/workflows/build.ymlruns
build.bat Aonwindows-latestfor every push / PR. SDK installervk_video/*.hsparse-checkout patch (the LunarG installer's
vulkan_videocomponent is optional butvulkan_core.hhard-includes
it).
.gitattributes— forces CRLF on*.batso Windows CMD doesn't
fragment comment lines into garbage tokens.
Changed
build.batredesigned with an ANSI UI;chcp 65001for UTF-8;
em-dashes scrubbed from console-bound strings (CMD prints them as?
on default codepages).AllocConsoleremoved in favour of g++'s default
console-subsystem stdout — no flicker on launch, no leftover console
if the program crashes.VulkanContext::Initializedrops the leftover
BuildRequiredExtensionshelper (Win32-only dead code with no header
declaration).
Fixed
- VMM lifecycle bugs — wrong destruction order between
VmmTransientring slots andVmmStagingwas leaking allocations
onShutdown. Routed VMM logs to a Windows console. FrameSchedulerLockstep + AsyncMax deadlocks — Lockstep was
waiting on the slot fence before signalling the previous frame's
release; AsyncMax could double-acquire the same slot under contention.build.batBUILD_ALL trailing whitespace inset EX=...causing
the all-build pass to skip examples whose name had a trailing space.- MinGW compile —
SubmitInfoandVCK::Configneed explicit
default ctors; gcc 13 wouldn't aggregate-init through inheritance. JobGraph::Add— counted invalid (out-of-range) deps toward the
job's wait count, soExecute()could deadlock waiting for a job that
would never run.VCKExpansion.h— forward-declaredVulkanDepthBufferbefore
VulkanFramebufferSet(compile order fix).HelloExample— quad winding flipped so the embedded "Hello,
World" text isn't back-face culled.