
书: 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工作负载——并行化、最小化同步、避免管线停滞’。”