metal
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
metal [2015/09/17 01:52] – [Metal (iOS/OS X)] oga | metal [2016/08/26 18:35] (現在) – [Metal (iOS/tvOS/macOS)] oga | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Metal (iOS/OS X) ====== | + | ====== Metal (iOS/tvOS/macOS) ====== |
行 13: | 行 13: | ||
iOS9 では新たに GPUFamily3 が追加されています。 | iOS9 では新たに GPUFamily3 が追加されています。 | ||
- | ^ Family | + | ^ Family |
- | | iOS GPUFamily1 | + | | iOS GPUFamily1 |
- | | iOS GPUFamily2 | + | | iOS GPUFamily2 |
- | | iOS GPUFamily3 | + | | iOS GPUFamily3 |
- | | OSX GPUFamily1 | + | | OSX GPUFamily1 |
- | Metal は Mac OS X 10.11 El Capitan 以降で対応します。 | + | Metal は Mac OS X 10.11 El Capitan 以降で対応します。Metal に対応している |
- | ただし D3D10 世代の | + | |
+ | * 対応している Mac | ||
+ | * MacBook/ | ||
+ | * MacPro : 2013以降 | ||
+ | * 上記に含まれる GPU | ||
+ | * Intel HD Graphics Gen7 以降 (IvyBridge以降) | ||
+ | * GeForce Kepler 以降 | ||
+ | * RADEON GCN 以降 | ||
GPU ごとの違い | GPU ごとの違い | ||
行 50: | 行 58: | ||
===== iOS と OS X の違い ===== | ===== iOS と OS X の違い ===== | ||
- | iOS 版 Metal はハードウエアが PowerVR Series 6/6XT のみなので、API 構造が PowerVR の仕様に従っています。 | + | iOS 版 Metal はハードウエアが PowerVR Series 6/6XT/7XT のみなので、API 構造が PowerVR の仕様に従っています。 |
OS X 版も基本的に iOS 版を踏襲しているものの、 Intel HD Graphcis / GeForce / RADEON 等多くの GPU で動作させるためか、一部汎用的な仕様に改められています。 | OS X 版も基本的に iOS 版を踏襲しているものの、 Intel HD Graphcis / GeForce / RADEON 等多くの GPU で動作させるためか、一部汎用的な仕様に改められています。 | ||
行 71: | 行 79: | ||
- | ===== OS X 版の OpenGL 4.x との違い ===== | + | ===== OS X 版の OpenGL 4.1 との違い ===== |
+ | |||
+ | === OS X 10.10 / iOS 9 / tvOS 9 まで | ||
Mobile 向け API 、しかも特定の PowerVR 向けに設計された API なので若干仕様に偏りがあります。 | Mobile 向け API 、しかも特定の PowerVR 向けに設計された API なので若干仕様に偏りがあります。 | ||
行 77: | 行 87: | ||
OpenGL 4.x の完全な代わりとしては物足りない部分がいろいろ出てくる可能性があります。 | OpenGL 4.x の完全な代わりとしては物足りない部分がいろいろ出てくる可能性があります。 | ||
iOS 向け Application の移植が当面の用途になるかもしれません。 | iOS 向け Application の移植が当面の用途になるかもしれません。 | ||
+ | |||
+ | |||
+ | |||
+ | === macOS 10.11 / iOS 10 以降 === | ||
+ | |||
+ | macOS 10.11, iOS 10 以降で大幅な機能拡張が行われています。 | ||
+ | macOS 及び iOS の A9/A9X (PowerVR GT7xxx) で Tessellator が導入されました。 | ||
+ | Pipeline 構造は DirectX11/ | ||
+ | |||
行 92: | 行 111: | ||
他の低レベル API の Copy に相当するのが Blt API です。これらを用いて自分でリソースを転送することもできます。 | 他の低レベル API の Copy に相当するのが Blt API です。これらを用いて自分でリソースを転送することもできます。 | ||
+ | |||
+ | ===== Thread 並列化 ===== | ||
+ | |||
+ | CommandBuffer の生成は Thread 並列化が可能です。CPU 負荷を大きく減らすことができます。 | ||
+ | |||
+ | ただし CommandBuffer の生成には CommandEncoder が必要で、PowerVR の TBDR アーキテクチャに従い CommandEncoder は RenderTarget (FrameBuffer) と結びついています。 | ||
+ | CommandEncoder は Thread 間で共有することができないため、同じ RenderTarget へ書き込む描画命令を複数の CommandBuffer に分けることができません。 | ||
+ | |||
+ | この問題に対応するため、ParallelRenderCommandEncoder という専用の仕組みが用意されています。 | ||
+ | ParallelRenderCommandEncoder は、スレッド毎に使用できる複数の RenderCommandEncoder を作成することができます。 | ||
+ | これを用いると単一の CommandBuffer の生成を複数のスレッドに分解することができます。 | ||
metal.1442422346.txt.gz · 最終更新: 2015/09/17 01:52 by oga