4

SPIR-V 仕様では、適切な命令の制御装飾を使用して、モジュールが分岐をフラットにするか、ループを展開するように要求できます。これは、シェーダーの最終的なパフォーマンス プロファイルに大きな影響を与えます。ただし、HLSL とは異なり、標準の GLSL にはこれを表現する方法がありません。その意図は、ドライバーがあなたに代わってこれらの決定を下せるようにすることですが、そうするのに十分な情報を持っているのはおそらく開発者だけです.

glslang を使用するときに制御操作を GLSL からコンパイルする方法を指定する方法はありますか、またはこれらの決定を行うのはドライバーに任されていますか? ループが分岐しないことを確認するために、手動でループを展開する必要がありますか?

4

1 に答える 1

3

glslang を使用するときに、制御操作を GLSL からコンパイルする方法を指定する方法はありますか

GLSL には、そのようなことを要求する明示的な手段はありません。それを制御できるスイッチがあるかもしれませんがglslangValidator、それでも、それはループごとの設定ではなく、グローバル設定になります。

ループが分岐しないことを確認するために、手動でループを展開する必要がありますか?

それが「分岐しないことを確認する」唯一の方法です。SPIR-Vのアンロール装飾であっても、それはお願いであり、保証するものではありません。内部の SPIR-V コンパイラがそのループを展開したくない場合は、何を伝えても展開しません。

于 2016-08-24T16:22:09.407 に答える