
书: https://pan.baidu.com/s/1XqKbodMZYD_Bu2f_E1ghxw?pwd=y5p9
笔记如下:
- “Vulkan的设计哲学是‘显式控制’:开发者必须手动管理内存、同步和管线状态,换取极致性能。”
- “
VkInstance
是Vulkan的入口点,VkPhysicalDevice
枚举GPU硬件,VkDevice
创建逻辑设备。” - “命令缓冲区(
VkCommandBuffer
)记录渲染指令,提交到队列(VkQueue
)异步执行。” - “渲染管线(
VkPipeline
)需显式定义:着色器阶段、顶点输入、光栅化、混合等固定功能状态。” - “SPIR-V是Vulkan的着色器中间语言,
glslangValidator
将GLSL编译为SPIR-V字节码。” - “描述符集(
VkDescriptorSet
)绑定资源(如UBO、纹理)到着色器,VkDescriptorSetLayout
定义绑定布局。” - “内存管理:
VkBuffer
/VkImage
申请资源,VkMemoryAllocateInfo
分配设备内存,需手动处理对齐(如VkDeviceSize
)。” - “交换链(
VkSwapchainKHR
)管理屏幕图像队列,vkAcquireNextImageKHR
获取下一帧渲染目标。” - “同步原语:
VkSemaphore
控制队列间依赖,VkFence
同步CPU-GPU,VkEvent
精细化管线屏障。” - “
VkRenderPass
定义渲染目标(附件)和子流程(Subpass),支持延迟渲染等高级技术。” - “动态状态(
VkDynamicState
)允许运行时修改视口、裁剪等参数,减少管线重建开销。” - “多线程优化:主线程准备资源,工作线程并行记录命令缓冲区(
vkAllocateCommandBuffers
)。” - “计算管线(
VkComputePipeline
)执行GPGPU任务,vkCmdDispatch
启动计算着色器。” - “
Vulkan-Hpp
是官方C++封装层,简化VkResult
错误处理,支持RAII自动资源管理。” - “调试工具链:
VK_LAYER_KHRONOS_validation
验证层捕获API误用,RenderDoc
抓帧分析。” - “
VK_EXT_debug_utils
扩展添加调试标签(vkCmdBeginDebugUtilsLabel
),可视化GPU性能分析。” - “间接绘制(
vkCmdDrawIndirect
)通过GPU缓冲区批量提交绘制命令,减少CPU开销。” - “管线缓存(
VkPipelineCache
)加速管线创建,支持序列化到磁盘复用。” - “
VK_KHR_ray_tracing
扩展实现硬件光线追踪,VkAccelerationStructure
管理加速结构。” - “Vulkan的终极法则:‘理解GPU工作负载——并行化、最小化同步、避免管线停滞’。”