dx12的resource barrier

resource barrier存在的意义,就是通过标明资源的状态转换,来让GPU
这里有两个非常重要的点,需要resource barrier来完成:

  • 资源的同步
  • 资源的表达/存储方式

资源同步

比如上一个是compute shader里写的uav,下一个pxiel shader里面读的srv;
那么就是一个uav to srv的转换。
由于gpu中可能多个执行之间可能有并行,所以这里插一个uav2srv的barrier就能起到一个等待同步的作用。

资源存储方式
包括layout等等,根据不同的用途会有不同的优化方式,这个一般都不太透明。
各家gpu的各个架构可能都不一样。
简言之一个原则就是resource state尽可能贴近资源的状态就好,正确准确的表达。

三种barrier:

  • transition barrier这个就是最常见的,不同资源state之间转换
  • uav barrier:这个就是多个cmd之间,可能资源一直是uav,但是需要同步,这个时候由于都是uav,所以不能transition barrier,所以dx12专门提供uav barrier;其实可以理解就是transition barrier的一种特殊形式。
  • aliasing barrier

reference
Using Resource Barriers to Synchronize Resource States in Direct3D 12

发布了787 篇原创文章 · 获赞 465 · 访问量 167万+

猜你喜欢

转载自blog.csdn.net/ccanan/article/details/105086046