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