知识卡片

指令池而非直接创建指令缓存

专业/工作 · 146.a

内容

Vulkan不允许应用程序直接创建指令缓存对象,必须先创建一个指令池,指令缓存只能从池中分配。这是为了避免成百上千个指令缓存各自独立申请资源带来的开销,尤其在多线程环境下,只要给每个线程分配一个专属指令池,各线程分配指令缓存时天然不互相竞争,无需加锁,参见[[Vulkan的显式API哲学]]。这是对象池模式在GPU编程里的体现:把频繁创建/销毁的小对象集中到预先分配好的池子里管理,用空间换时间。

参考来源

《Vulkan学习指南》第5章《Vulkan中的指令缓存和内存管理》