我有一个程序,它首先渲染到纹理,然后将纹理传递给计算着色器进行处理,然后通过带纹理的全屏四边形将输出结果渲染到屏幕上。
我在 nVidia 的计算着色器编程指南中读到,每次调度计算着色器时,它都会启动 GPU 设备上下文切换,这不应该经常进行。
我现在很困惑。在我看来,在我的渲染管道中,GPU 两次切换上下文。对?在第一次调度呼叫期间,下一次我正常渲染全屏四边形时。
如果这是正确的,那么我可以通过像这样重新组织我的代码来避免一次切换。首先,渲染到纹理。其次,在计算着色器上进行处理。然后,在下一帧中,渲染结果,然后(仍然在下一帧)渲染纹理的所有更新,在计算着色器上进行处理......所以基本上每一帧的开始我都会渲染最后一帧的结果(第一帧将是一个例外)。那么只会有一个上下文切换,对吧?
但是GPU仍然需要在帧之间进行上下文切换,对吗?所以我的渲染管道的两个版本都有两个上下文切换。性能上不会有任何差异。我对么?
任何帮助,将不胜感激。