2016-09-19 17 views
0

Xcode 8とiOS10に移行して以来、私のメタルベースのアプリケーションはまったく動作しません。打ち上げに私はエラーを取得する:これが原因正常に作成されていないMTLComputePipelineStateにクラッシュし、MTLDevice機能makeComputePipelineState(function:)を呼び出すときにエラーを投げる前に、コンソールに2〜3回表示されますメタル関数はXcode 8でコンパイルできません

を「コンパイラはXPC_ERROR_CONNECTION_INTERRUPTEDで失敗しました」。私がプロジェクトに行った唯一の変更は、Swift 3.0にアップデートすることですが、コンソールはコンパイルエラーを暗示しているようです。クラッシュのために、正しくコンパイルされないメタルコードがあると想定しています。

ご迷惑をおかけして申し訳ございませんが、これは時期尚早に老化しています。

UPDATE:パーマも同様である

static constant int permMod12 [512] = {7,4,5,7...} 

:として

int gi1 = permMod12[ii+i1+perm[jj+j1+perm[kk+k1]]]; 

permMod12は静的定数配列が宣言されている:私は.metalファイルでトラブルを起こしラインを設置しました

静的で定数:

static constant int perm [512] = {151,160...} 
個の

変数iii1jjj1kkと​​は同じカーネルで計算され、すべての整数です。

カーネルがかなり大きいので、linkをGitHubの場所に投稿します。問題を引き起こしているのはsimplex3Dsimplex4Dという関数です。これらは非常に似ているので、それらのうちの1つにのみ焦点を当てます。カーボンコピーですが、4Dには変数の別のストレッチがあります(lll1lなど)。

問題は、変数を単純なリテラルに変更したときにエラーがないように、計算された変数を使用してこれらの配列を検索しているように見えます。

エラーを発生させるには、カーネルを実行する必要があります。

この新しい情報をお寄せいただきありがとうございます。

+1

これはほぼ確実にコンパイラのバグです。 MTLCompilerServiceのクラッシュについては、Xcodeのデバイスログをチェックして、提供可能な他の多くの情報を含むレーダーにログを添付してください。 – warrenm

+0

チェック後、MTLCompilerServiceにクラッシュはありません。 –

+0

他の関数呼び出しがないカーネルを実行しようとするとうまく動作します。カーネル内から別の関数を呼び出そうとすると、エラーがポップアップします。今は私のPCではありませんが、私がいるときには例をアップロードします –

答えて

0

私はこの状況に遭遇しました。この問題を解決する唯一の解決策はないようです。私の場合、正規化された座標サンプラーを使用するテクスチャーでもread()関数を使用すると問題が発生しました。 read()機能をsample()に切り替えると、この奇妙なエラーは削除されました。私はあなたの問題がすでに解決されたことを願っています。

関連する問題