macOS版 アンチエイリアス設定不備によりアプリ起動時にMetal初期化処理でクラッシュする
OpenGLからMetalに移行したときの、ユーザ設定値引き継ぎの検討漏れ。
メインビュー初期化処理(MTMainView:initWithFram:rendaerParam)で、 アンチエイリアスのサンプル数に、Mac(Metal)が対応していないサンプル数を設定した場合に、 レンダーパイプラインの生成処理が失敗して、当該エラーが発生する。
エラー発生箇所 OGLPrimitive::_CreateRenderPipelineState_V3N3CT2 ---- //レンダーパイプライン状態生成 m_MTLRenderPipelineState = [mtlDevice newRenderPipelineStateWithDescriptor:m_pRenderPipelineDescriptor error:&pError]; ---- デバッガによるエラーメッセージ出力 --- 2022-10-29 23:08:37.782222+0900 MIDITrail[5720:206089] Failed to created pipeline state, error rasterSampleCount (6) is not supported by device. ---
OpenGLとMetalでは、サポートしているサンプル数が異なる場合がある。 ユーザがMIDITrail Ver.1.x.xを利用していたときに、グラフィック設定ダイアログでユーザが選択したサンプル数が、 Metal側でサポートされていなかった場合、MIDITrail 2.x.xにアップデートするとアプリ起動時に当該エラーが発生してしまう。
それぞれで表示するアンチエイリアス設定の選択肢には、次のような差異が生じる。
Mac mini (Late 2014) / MIDITrail Ver.1.3.6 (OpenGL) * Multi-Sample 2x * Multi-Sample 4x * Multi-Sample 6x * Multi-Sample 8x Mac mini (Late 2014) / MIDITrail Ver.2.0.1 (Metal) * Multi-Sample 4x * Multi-Sample 8x
Mac Book Air (M1, 2020) / MIDITrail Ver.1.3.6 (OpenGL) * SUper-Sample 2x * SUper-Sample 4x * Multi-Sample 2x * Multi-Sample 4x Mac Book Air (M1, 2020) / MIDITrail Ver.2.0.1 (Metal) * Multi-Sample 2x * Multi-Sample 4x
ユーザ設定値のサンプル数をそのままメインビューに設定せず、Metalがサポートしているサンプル数であるかを事前にチェックする。 Metalがサポートしていないサンプル数だった場合は、アンチエイリアス無効(サンプル数1)で処理を進める。
MIDITrailをVer.1.x.xからVer.2.0.xにバージョンアップした後でアプリを起動すると、 以下のエラーメッセージが繰り返し表示され、アプリを利用できない。