ユーザ用ツール

サイト用ツール


metal

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
metal [2015/09/17 01:44] – [Metal (iOS/OS X)] ogametal [2016/08/26 18:35] (現在) – [Metal (iOS/tvOS/macOS)] oga
行 1: 行 1:
-====== Metal (iOS/OS X) ======+====== Metal (iOS/tvOS/macOS) ======
  
  
行 11: 行 11:
 対応 GPU の機能グループは 4 種類 対応 GPU の機能グループは 4 種類
  
-^ Family            ^ Group                     ^ Platform          ^ PVRTCv1/ETC2 ^ ASTC  ^ DXT(BC)  ^ CubeArray   ^ GPU                    ^ +iOS9 では新たに GPUFamily3 が追加されています。 
-| iOS GPUFamily1    | PowerVR Series 6 (Rogue)  | iOS Apple A7      |  Y            N    |  N        N          | PowerVR G6430          | + 
-| iOS GPUFamily2    | PowerVR Series 6XT        | iOS Apple A8/A8X  |  Y            Y    |  N        N          | PowerVR GX6450/GX6850 +^ Family            ^ Group                     ^ Platform          ^ PVRTCv1/ETC2 ^ ASTC  ^ DXT(BC)  ^ CubeArray   TexSize ^ Indirect Draw ^ Tessellation  ^  GPU                    ^ 
-| iOS GPUFamily3    |                           | iOS Apple A9/A9X              |                |                                    +| iOS GPUFamily1    | PowerVR Series 6 (Rogue)  | iOS Apple A7      |  Y            N    |  N        N          | 8192    |  N            |  N            | PowerVR G6430          | 
-| OSX GPUFamily1    | Desktop GPUs              | Mac OS X          |  N            N    |  Y        Y          | GeForce/RADEON/Intel HD Grahics |+| iOS GPUFamily2    | PowerVR Series 6XT        | iOS Apple A8/A8X  |  Y            Y    |  N        N          | 8192    |  N            |  N            | PowerVR GX6450/GX6850 
 +| iOS GPUFamily3    | PowerVR Series 7XT        | iOS Apple A9/A9X                |  N       |           16384               |  Y            | PowerVR GT7600/GT7(12)  
 +| OSX GPUFamily1    | Desktop GPUs              | Mac OS X (macOS)  |  N            N    |  Y        Y          | 16384    Y            |  Y            | GeForce/RADEON GCN/Intel HD Grahics |
    
  
-Mac OS X 10.11 El Capitan 以降で対応します。 +Metal は Mac OS X 10.11 El Capitan 以降で対応します。Metal に対応ている GPU は下記の通り 
-ただし D3D10 世代の GPU 搭載機種で動きませんでした+ 
 +  * 対応している Mac 
 +    * MacBook/MacBook Pro/Mac mini/iMac : Mid 2012以降 
 +    * MacPro : 2013以降 
 +  * 上記に含まれる GPU 
 +    * Intel HD Graphics Gen7 以降 (IvyBridge以降) 
 +    * GeForce Kepler 以降 
 +    * RADEON GCN 以降 
  
 GPU ごとの違い GPU ごとの違い
  
-^ GPU                 ^ Family          ^ D32F_S8  ^ D24_S8      ^ ThreadGroup +^ GPU                    ^ Family          ^ D32F_S8  ^ D24_S8      ^ ThreadGroup 
-| PowerVR G6430       | iOS GPUFamily1  |  Y        N          | 512/512      | +| PowerVR G6430          | iOS GPUFamily1  |  Y        N          | 512/512      | 
-| PowerVR G6450       | iOS GPUFamily2  |  Y        N          | 512/512      | +| PowerVR GX6450/GX6850  | iOS GPUFamily2  |  Y        N          | 512/512      | 
-| GeForce Kepler      | OSX GPUFamily1  |  Y        Y          | 1024/1024    | +| GeForce Kepler         | OSX GPUFamily1  |  Y        Y          | 1024/1024    | 
-| Intel HD Graphics   | OSX GPUFamily1  |  Y        N          | 512/512      |+| Intel HD Graphics      | OSX GPUFamily1  |  Y        N          | 512/512      |
  
  
行 48: 行 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 で動作させるためか、一部汎用的な仕様に改められています。
  
行 58: 行 68:
     * Depth Format の種類が多く、Depth と Stencil がパックされた D24Unorm + S8 が追加。     * Depth Format の種類が多く、Depth と Stencil がパックされた D24Unorm + S8 が追加。
       * iOS 側にも Depth と Stencil を同時に設定できる D32Float + S8 が逆輸入されている。       * iOS 側にも Depth と Stencil を同時に設定できる D32Float + S8 が逆輸入されている。
 +  * Memory の Storage Type の違い
 +    * iOS は UMA 前提なので SharedMemory と PrivateMemory (VRAM) に差がありません。
 +      * Buffer はデフォルトで SharedMemory となり直接書き込むことができます。
 +    * OS X は Discrete GPU が搭載されている可能性があるため、SharedMemory と PrivateMemory でアクセス速度が異なる可能性があります。
 +      * Buffer は iOS 互換のためデフォルトで ManagedMemory となります。自動で SystemMemory と PrivateMemory の同期が行われます。
 +  * Alignment の違い
 +    * OS X では ConsntaBuffer (UniformBuffer) は 256byte 単位の alignment 整合が必要。
 +    * なお Direct3D 12 にも全く同様の制限があります。
  
  
  
-ConsntaBuffer (UniformBuffer) は 256byte alignment が必要。(Direct3D 12 にも全く同様制限があります)+===== OS X 版の OpenGL 4.1 との違い =====
  
- +=== OS X 10.10 / iOS 9 / tvOS 9 まで ===
- +
-===== OS X 版の OpenGL 4.x との違い =====+
  
 Mobile 向け API 、しかも特定の PowerVR 向けに設計された API なので若干仕様に偏りがあります。 Mobile 向け API 、しかも特定の PowerVR 向けに設計された API なので若干仕様に偏りがあります。
行 71: 行 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/OpenGL4 とは異なるものの、同等の機能を実装できるようになっています。
 +
  
  
行 86: 行 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.1442421851.txt.gz · 最終更新: 2015/09/17 01:44 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki