We’ve updated our guide on Vulkan on Apple platforms.
The main reason for the update: KosmicKrisp (LunarG’s Mesa-based Vulkan-on-Metal driver) has passed the Vulkan 1.4 Conformance Test Suite and is now a Khronos-conformant implementation. It targets Apple Silicon on macOS 26+ (requires Metal 4).
The post walks through why you’d target Apple with Vulkan and how to actually do it (SDK, bundling the loader + ICDs, layers, etc.).
Really love the results! finally after all this year, my render engine will be finished! look at those realtime caustic! unbelieveble fast! all this render on 4K 256 Sample with oidn less then 30 second on RTX 3080 Mobile.
this is spectral render engine so the color and everything will calculate by color wave lenght not RGB simulated, it's real color!
So! the Blender Addon! is on the way, if you like to be our Test Driver, please comment! I contact you when it's Ready!
A demonstration of ListControl in LotUI, a C++17 GUI library rendered with Vulkan. Its public C++ API lets applications manage columns, rows, and selection events. The example includes row addition and deletion, search, and column filtering. LotUI is being developed as a standalone library for use in C++ applications and engines.
C++17 기반 GUI 라이브러리 LotUI의 ListControl 시연입니다. Vulkan으로 렌더링하며, 공개 C++ API로 컬럼·행 데이터와 선택 이벤트를 다룰 수 있습니다. 예제에는 행 추가·삭제, 검색, 컬럼 필터 기능을 구현했습니다. LotUI는 독립 라이브러리로 개발 중이며, 외부 C++ 애플리케이션과 엔진에서 재사용하는 것을 목표로 합니다.
This is for anybody who might have crashes when trying to launch a game in Vulkan.
Ever since I got an Intel Arc B580, I haven't been able to run Vulkan with certain games like Baldur's Gate 3. When running 'vulkaninfo' in Command Prompt, it gave me two errors about Twitch and GOG. After I uninstalled Twitch Studio, and disabled GOG's overlay, Vulkan runs fine when I try 'vulkaninfo.' I tested it with the games I was having issues with and they all work now.
ICYMI — the slides and write-up from Aitor Camacho Larrondo’s XDC 2026 talk on KosmicKrisp are now available.
KosmicKrisp is LunarG’s Mesa-based Vulkan-to-Metal driver for macOS 26+ on Apple silicon (M1–M5 and A18 Pro). The talk focused on what “production-ready” actually means here: conformance, performance, and CI.
Highlights:
Vulkan 1.4 conformant ICD
Added tessellation, robustness2, multi-draw, and more Metal/MSL workarounds
Performance optimizations that have closed the gap with (and in some cases surpassed) MoltenVK on benchmarks such as GFXBench Aztec Ruins
Dedicated CI on real M1/M2/M4 hardware
Developers are encouraged to start trying it on real apps. Full post + slides link:
Windows 11, RTX 5060 (617.14), Vulkan SDK 1.4.335.0
Layers in effect = VK_LAYER_KHRONOS_synchronization2, VK_LAYER_KHRONOS_validation,
VK_LAYER_LUNARG_monitor
Application shares a storage image, created as VK_SHARING_MODE_EXCLUSIVE, between Graphics and Compute pipelines using queues from their respective Queue Families.
Graphics Queue Family (index = 0) is different than Compute Queue Family(index = 2).
I am NOT using a vkCmdPipelineBarrier() with VkImageMemoryBarrier (or VkMemoryBarrier) in between compute and graphics pipeline commands which is not the correct way, but I am not getting any validation messages for this critical omission.
Implemented SUBD-based 3D modeling in my custom Vulkan CAD engine. Continuously expanding the modeling capabilities to support creating and editing various 3D shapes.
직접 개발 중인 Vulkan 기반 CAD 엔진에서 SUBD 방식의 3D 모델링 기능을 구현했습니다. 다양한 형상을 생성하고 편집할 수 있도록 모델링 기능을 지속적으로 확장하고 있습니다.
FIX: I installed the newest driver and restarted. Fixed the issue
I have this really weird error: When I first call vkBeginCommandBuffer on my root graphics commandbuffer for the first frame in flight, the NVIDIA driver encounters a error when trying to free memory. It throws a EmbeddedBreakpointException a.k.a. a __debugbreak exactly twice: once in ntdll.dll!RtlReportCriticalFailure and the second time in ntdll.dll!RtlReportFatalFailure. When I skip the breakpoints with Visual Studio attached it continues execution without any validation errors (regarding that, there are some other validation errors but not every frame and they are probably not associated with this weird occurance).
Calling GetLastError() directly after this returns 6 (ERROR_INVALID_HANDLE) but in the next frames it returns 0 (ERROR_SUCCESS).
It also doesn't render anything and shows a black image (probably my fault, but I can't attach a graphics debugger due to this weird error).
I validate the heap, using HeapValidate, after every step of initialization and it doesn't fail once, even after this error.
I used own allocation callbacks but regardless if I use them or not it throws this error.
The engine (right now) is single threaded so race conditions or similair are not the problem.
I attached my callstack and code section, where this error happens, maybe you guys can make something of it.
Call stack
auto cmdbuf = m_RootFrameData[frameIndex].GraphicsCommandBuffer;
I released the demo of my puzzle game about a month ago, and it's been interesting seeing it run on hardware I've never tested on. I've already had a few bug reports about compatibility issues, so this week I spent some time looking into what else I could catch with Vulkan's validation layers.
Until now I'd only been running the default checks. This week I enabled synchronization validation and the NVIDIA, AMD and ARM best practice checks.
They caught quite a few things. Too many command buffers per frame, redundant pipeline binds, unnecessary barriers and layout transitions, potential upload races and images being accessed at the wrong time during screenshots and resizes.
Some of the changes I've made:
Switched to VK_KHR_dynamic_rendering and removed render passes and framebuffers. This also let me get rid of the subpass dependencies that were causing synchronization warnings.
Added VK_KHR_load_store_op_none to skip unnecessary attachment clears.
Switched sampled images to READ_ONLY_OPTIMAL with VK_KHR_unified_image_layouts, allowing shader reads and transfers to share the same layout.
Added VK_EXT_memory_priority and NVIDIA's VK_EXT_pageable_device_local_memory when supported.
Texture uploads now go through a single submission. I also changed uniform updates to use vkCmdUpdateBuffer to avoid the GPU reading memory that the CPU is already overwriting.
I've tested everything on a macbook through MoltenVK, an Intel i5 iGPU, an NVIDIA RTX 3060 Ti and a Steam Deck. But there are plenty of GPUs and drivers I haven't been able to test on.
I'd like to catch as many hardware specific issues as possible before release, so if you're running a different setup, I'd really appreciate you giving the demo a try and letting me know how it runs.
Satelital is a peaceful puzzle game where you explore a small solar system and figure out the rules of puzzles on different planets.
Shader compilation hitches are one of the most visible performance problems in real-time apps. This sample shows how VK_KHR_pipeline_binary lets you capture the binaries the driver produces for your pipelines, save them to disk and reload them in later sessions, so pipelines don't have to be compiled from scratch again.
The sample walks through:
Generating a deterministic pipeline key with vkGetPipelineKeyKHR
Capturing binaries with vkCreatePipelineBinariesKHR
Storing binaries with vendor and driver metadata, then recreating pipelines from them
Unlike traditional pipeline caches, which are opaque, pipeline binaries give you explicit control over what's stored and when. A built-in UI compares creation times from scratch and from binaries, so you can see the speedup yourself.
I developed webgpu because I felt that the web was also necessary. We are going to develop it in parallel. I‘m excited.
웹도 필요하다 느껴서 webgpu를 개발하게 되었습니다. 병행 개발할 예정입니다. 설레네요.
Implemented ViewBase drawing and Feature Dimensions in my own CAD engine.
It generates top, front, right, and isometric views from a 3D model, with key dimensions that can be displayed and adjusted based on a reference.
직접 개발 중인 CAD 엔진에 ViewBase 도면 생성과 피처 치수 기능을 구현했습니다.
3D 모델에서 평면도·정면도·우측면도·등각뷰를 생성하고, 주요 치수를 표시하거나 기준에 따라 조절할 수 있습니다.
Every rabbit hole of information for every setting I went through for that tutorial was a lot, how do people become expert at this sort of thing in the industry? (Also first time posting so be kind guys)
Improved the assembly/disassembly and feature dimension features of my Vulkan-based CAD engine.
Parts can be disassembled and reassembled step by step, while key feature dimensions can be viewed and edited directly in the viewport.
직접 개발 중인 Vulkan CAD 엔진의 분해·조립 및 피처 치수 기능을 개선했습니다.
부품의 분해와 조립 과정을 단계별로 확인할 수 있으며, 모델의 주요 피처 치수를 화면에서 확인하고 수정할 수 있도록 기능을 보완했습니다.
So that the driver could simply mask off the extra unused lanes, instead of the way it is right now where we manually place bounds checks in shader code.
Some background: I've been working at a mid-sized tech company as a junior systems programmer specializing in file systems & operating systems, mainly using C. Been at my current company for ~9-10 months now and it's my first dev job out of college.
I've always had an interest in graphics programming, learned basic graphics fundamentals (linear algebra + basic concepts like sampling and rasterization) in college and dabbled in learning OpenGL before for some small projects, and Unity for game dev (just as a hobby). Now I'm looking to upskill and learn vulkan as I feel it'd be a good way to improve my C++ and low-level knowledge further and maybe even get a dev job dealing with graphics, and have fun with it at the same time.
When I started my current job, and before when I was just focused on learning during college and with personal projects, I pretty much never used AI to code. Especially for low level stuff it wasn't very good. Lately though, especially with newer models like Opus 5.5, i've noticed it become more and more reliable and capable for what I do for work, to the point where I no longer write code anymore — I come up with the architecture and design, let the AI implement the code, and then I audit/review the code and let the AI revise it if there are issues. I've spent more time analyzing performance tests in the past month than I have been "writing" code. But I don't know if I would be able to do that effectively if I hadn't spent those years before learning manually and the first few months on the job learning things the hard way.
So now here I am planning to learn Vulkan, but I don't know anymore on what I should focus on learning specifically when all these AI tools are available.... so some questions:
I have very little experience with C++, I write everything in C for what I do currently. Should I even bother learning C++ well before learning Vulkan, or could I just get away with learning the language at a "surface level" (i.e. just knowing basic concepts like how RAII or OOP is applied in this field, without implementation details) and let the LLM write it for me.
extension of question 1: how proficient should I actually get with the vulkan API before I start relying on AI (and what topics specifically should I focus on)? Would it be a better use of my time to instead study up on the math/theory of graphics and CS fundamentals in general and let AI write all the vulkan code?
Generally, how effective has AI been for you in writing Vulkan code? Are you still writing Vulkan code by hand? How much auditing of the generated code do have to do to get it right? What do you see as being valuable skills/knowledge for someone in this field right now, and in the future?
Any input is appreciated. I've been procrastinating learning Vulkan out of worry that I'd end up focusing on obsolete skills. Thanks.
I’ve been keeping going to evolve vkTracer. Now I’ve finished the next week part, and this part was harder than I guessed. In the first week, It was only a translation from C++ code to slang, setting up Vulkan infrastructure too. But this week I had to figure out how to represent a cpu-side bvh on gpu, I handled using BDA. Learnt quad and volume intersection, handling different texture types. I still don’t understand in the tutorial why he rotates rays to rotate box instead of rotating box itself :D
Anyway this was a good journey to learn and practice slang and vulkan.
The scene was rendered by 500 rays per pixel and 40 depth bounce.
My pull request was just merged into google/shaderc. The change adds two options, -gV and -gVS, that expose glslang's NonSemantic.Shader.DebugInfo.100 emission through shaderc. That debug info is a requirement for NVIDIA Nsight Graphics to produce flame graphs, so it lets you profile and debug shader performance by call stack and time spent per function.