GPU上下文切换

时间:2012-10-06 11:28:11

标签: gpgpu gpu-programming directx-11 compute-shader

我有一个程序首先渲染一个纹理,然后将纹理传递给计算着色器进行处理,然后通过纹理全屏四边形将输出结果渲染到屏幕上。

我已经在nVidia的计算着色器编程指南中读到,每次调度计算着色器时,它都会启动GPU设备上下文切换,这不应该经常进行。

我现在很困惑。我看到它的方式,在我的渲染管道中,GPU切换两次上下文。对?在第一次调度呼叫期间,下次正常渲染全屏四边形时。

如果这是正确的,那么我可以通过重新组织这样的代码来避免一次切换。首先,渲染到纹理。其次,在计算着色器上进行处理。然后,在下一个帧中,渲染结果,然后(仍然在下一帧中)渲染纹理的所有更新,在计算着色器上进行处理...所以基本上每帧的每个开始我渲染最后一帧的结果(第一帧将是一个例外)。那么只有一个上下文切换,对吧?

但是GPU仍然需要在帧之间进行上下文切换,对吗?所以我的渲染管道的两个版本都有两个上下文切换。表现没有差别。我是对的吗?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

上下文切换引入了一个小命中,但在你的情况下,它可以忽略不计,因此你可以安全地在同一帧中多次在计算和渲染管道之间切换,而不必担心它。

在很多现代游戏中,同一个管道中有两个以上的开关(用于渲染的图形管道,用于光的计算着色器,用于fxaa的像素着色器......)并且它们仍能正常运行。