标签:Vulkan
-
Vulkan 后端初始化:instance、device 与 queue 的选择逻辑
vulkan_context.cpp 按四层递进初始化 Vulkan:instance 选验证层、physical device 按能力打分挑卡、logical device 凑齐扩展和队列族;读懂选择逻辑能解释大半"启动失败 / 用了核显"的问题。
-
descriptor set 与 UniformSet 的缓存策略:绑定资源时的哈希查表
uniform_set_create 不急着建 Vulkan descriptor set,先对完整绑定内容算哈希查缓存;命中一次查表省下 vkAllocateDescriptorSets,这是高 draw call 场景下绑定期开销的主要来源。
-
RenderingDevice 抽象层设计:RID、命令缓冲与提交模型
RenderingDevice 是 Godot 4 渲染栈里最"干净"的一层:RID 句柄、begin/end 式列表 API、submit/sync 提交模型。基于 4.3 源码拆解它怎么把 Vulkan 的复杂度藏起来,以及 4.3 拆出 RenderingDeviceDriver 的意义。
-
渲染排错实战:Vulkan validation layer 加 RenderDoc 抓帧
黑屏、花屏、自定义 RenderingDevice 代码出了错,标准排查流程是两步:先用 validation layer 把 API 错误排掉,再用 RenderDoc 抓帧定位到具体 pass。这篇给完整流程、典型报错怎么读,以及 Godot 特有的几个坑。
-
RenderingDeviceDriver 的诞生:4.3 拆出驱动层解决了什么问题
4.3 把 RenderingDevice 里"懂 Vulkan"的部分下沉成 RenderingDeviceDriver,让上层只剩资源与命令簿记;这次拆分给 D3D12/Metal 后端铺了路,也让 barrier 推导能在驱动层统一做。
-
屏障与同步:RD 怎么隐藏 Vulkan 的 pipeline barrier
Vulkan 的 pipeline barrier 是手写渲染代码时最容易出错的部分。这篇拆 Godot 4.x 的 RenderingDevice 如何记录每个资源的读写历史、在列表结束时自动推导屏障,以及它保留下来的三个显式同步口(barrier / compute_list_add_barrier / sync)。
-
GPU 内存分配子系统:内存池与 staging buffer 的上传路径
RD 的显存来自 Vulkan Memory Allocator 的池化分配,CPU 到 GPU 的上传统一走 staging buffer 中转;贴图加载慢和 device lost 两类问题,根子常在这两条路径的配额上。