「SPIRV-Reflect」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''SPIRV-Reflect'''(コマンドはすべて小文字:spirv-reflect)とは、Vulkan SDKに含まれるツールのひとつで、SPIR-Vのバイトコー…」)
 
8行目: 8行目:
 
間違いなく[[バグ]]の温床になる。
 
間違いなく[[バグ]]の温床になる。
  
そこで一度[[SPIRV]]に[[コンパイル]]した後に、そこから整頓されたデータ構造を抽出しようというもの。
+
そこで一度[[SPIRV]]に[[コンパイル]]した後に、そこから整形・整頓されたデータ構造を抽出しようというのがspirv-reflectである。。[[プログラマー]]が自由に書いたソースコードから抽出するよりマシ、「データを送る処理の書き換えも楽になる」だろうという代物である。
[[プログラマー]]が自由に書いたソースコードから抽出するよりマシ、
 
「データを送る処理の書き換えも楽になる」だろうという代物である。
 
  
 
== 備考 ==
 
== 備考 ==

2022年11月4日 (金) 01:58時点における版

SPIRV-Reflect(コマンドはすべて小文字:spirv-reflect)とは、Vulkan SDKに含まれるツールのひとつで、SPIR-Vバイトコードに含まれるデータ構造を表示するもの。

概要

GPUシェーダーを実行する際にはシェーダー本体(プログラム)とデータ変数)をCPUからGPUへ送る必要がある。 この際に「CPUから送り込まれた変数」と「シェーダーで使っている変数」のデータ構造が一致しないと当然ながら暴走する。

ただ、このデータ構造をプログラマーが自由に書いたソースコードから目視で取得するは大変な作業である。当然ながらシェーダーソースコードを書き換えたら「データを送る処理」も書き換えなければならない。 間違いなくバグの温床になる。

そこで一度SPIRVコンパイルした後に、そこから整形・整頓されたデータ構造を抽出しようというのがspirv-reflectである。。プログラマーが自由に書いたソースコードから抽出するよりマシ、「データを送る処理の書き換えも楽になる」だろうという代物である。

備考

spirv-reflectはyaml形式でのデータ構造の出力もできる。その情報から自前で「データベースでいうORMみたいなもの」を作り「データを送る処理」を全自動化するのが現実的な解決策であろう。たぶんこれが一番バグを減らせると思う。

$ spirv-reflect --yaml  render_vs.spv

外部リンク