私はOpenGL/GLSLからVulkan/SPIR-Vまでのコードを移植することを検討していますが、そのコードの一部は実行時にGLSLを生成するので、代わりにSPIR-Vを生成する必要があります。私が疑問に思っているのは、生成されたSPIR-Vの最適化にどのように関連付けるべきかということです。生成されたSPIR-Vコードを最適化する必要がありますか?
特に、ドライバーのコンパイラーにどのような期待を払うべきかに関する情報を見つけることができません。私はそれが積極的な最適化を単独で行うことを期待し、それでSPIR-Vコードをきれいに保ち、できるだけ多くの「オリジナルの意図」をコンパイラが見るように保つことを試みるべきですか?あるいは、私はそれがかなり単純なコード生成を行うと期待し、SPIR-Vを生成するときに可能な限り積極的な最適化を行うことを試みるべきですか?
SPIR-Vを生成するときに、これらの種類のうちのどれを実行すればよいでしょうか?
コンパイラは最適化パスをハードウェアの仕様に合わせたいと思っています。そのため、私のSPIR-Vコードをきれいで高レベルに保つようにしてください。ループアンローリングは情報を破壊し、ドライバが自分自身のアンローリングを決断するのを防ぎますが、実際の情報なしでは私は本当に推測しています。
"だから、代わりにSPIR-Vを生成する必要があります。*"既存のGLSL-to-SPIR-Vコンパイラの使用には問題がありますか? –
@NicolBolas:はい、実行時にコードを生成しているので、外部ツールを使用したくないということです。 – Dolda2000
実行時にコードにコンパイラを含めることができませんか?なぜなら、これは図書館の形にもなっているからです。 –