12

printコンソール出力 ( Swiftなど) を使用して、メタル シェーディング言語のコードをデバッグできますか?

はいの場合、どのように?

いいえの場合、.metal ファイルから変数を出力する他の方法はありますか? (おそらく、commandEncoder-buffer を使用して .metal ファイルから .swift ファイルにデータを渡すことによって?)

commandEncoder を介して Int 変数 (.swift ファイル内) への参照を .metal ファイルに渡そうとしましたが、失敗しました。.metal ファイルでは、値を int 変数に割り当てますが、swift ファイルで Int を出力すると、割り当てられた値がありません。

.swift ファイル:

...
var myMetalOutput: Int = 0
...
let printBuffer = device.newBufferWithBytes(&myMetalOutput, length: sizeof(Int), options: MTLResourceOptions.CPUCacheModeDefaultCache)
commandEncoder.setBuffer(printBuffer, offset: 0, atIndex: 8)
...
commandBuffer.commit()
drawable.present()
print("myMetalOutput: \(myMetalOutput)")
...

.metal ファイル:

...
kernel void shader(..., device int &printBuffer [[8]], ...) {
...
printBuffer = 123;
...
}

コンソール出力は常にmyMetalOutput: 0

4

2 に答える 2