知识卡片
资源按变化频率分层,减少状态切换开销
内容
着色器要访问的资源(纹理、uniform块等)被组织成多个”描述符集”,一个管线可以同时绑定多个集合,只要新旧管线共享相同的集合布局,切换管线时就不需要重新绑定这部分资源——直到布局出现差异的那个集合为止都可以复用。这意味着如果把全局共享、极少变化的资源(比如整帧公用的常量、每个着色器都要用的纹理)放进序号靠前的集合,把频繁变化的资源(比如每个物体各自的材质)放进序号靠后的集合,那么在遍历大量物体绘制时,只需要不断替换高序号的小集合,低序号的公共集合可以一直保持绑定不变。这是一种按”变化频率”给状态分层的通用思路:把不变的部分和易变的部分拆开管理,避免因为一小块状态变化就要付出重建/重绑定一大坨状态的代价。
参考来源
《Vulkan 应用开发指南》第6章《着色器和管线》