危险跟踪与磁贴池资源

对于非平铺资源,Direct3D 可以在渲染期间防止某些危险条件,但由于危险跟踪对于平铺资源而言处于平铺级别,因此在渲染平铺资源期间跟踪危险条件可能过于昂贵。

例如,对于非平铺资源,运行时不允许任何给定的子资源同时绑定为输入 ((如 ShaderResourceView) )和输出 ((如 RenderTargetView) )。 如果遇到这种情况,运行时将取消绑定输入。 运行时中的这种跟踪开销很便宜,是在子资源级别完成的。 这种跟踪开销的好处之一是将应用程序意外地取决于硬件着色器执行顺序的几率降至最低。 硬件着色器执行顺序可能会有所不同,如果不是在给定的图形处理单元 (GPU) 上,那么肯定是在不同的 GPU 中。

跟踪资源的绑定方式对于平铺资源来说可能太昂贵,因为跟踪是在磁贴级别进行。 出现新问题,例如,可能会验证尝试渲染到 RenderTargetView,其中一个磁贴同时映射到图面中的多个区域。 即便事实证明这种按每个磁贴进行的危险跟踪对于运行时而言成本过高,至少这在理想情况下是调试层中的一个选择。

当应用程序向磁贴资源发出写入或读取操作时,必须通知显示驱动程序,该操作引用磁贴池内存,这些内存也将在即将执行的读取或写入操作中由单独的平铺资源引用,它期望第一个操作完成,然后才能开始以下操作。 有关此条件的详细信息,请参阅 ID3D11DeviceContext2::TiledResourceBarrier 备注。

映射到磁贴池