ユーザ用ツール

サイト用ツール


metal

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
metal [2015/09/17 01:52] – [OS X 版の OpenGL 4.x との違い] ogametal [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            ^ Group                     ^ Platform          ^ PVRTCv1/ETC2 ^ ASTC  ^ DXT(BC)  ^ CubeArray   ^ GPU                    ^ +^ Family            ^ Group                     ^ Platform          ^ PVRTCv1/ETC2 ^ ASTC  ^ DXT(BC)  ^ CubeArray   TexSize ^ Indirect Draw ^ Tessellation  ^  GPU                    ^ 
-| iOS GPUFamily1    | PowerVR Series 6 (Rogue)  | iOS Apple A7      |  Y            N    |  N        N          | PowerVR G6430          | +| iOS GPUFamily1    | PowerVR Series 6 (Rogue)  | iOS Apple A7      |  Y            N    |  N        N          | 8192    |  N            |  N            | PowerVR G6430          | 
-| iOS GPUFamily2    | PowerVR Series 6XT        | iOS Apple A8/A8X  |  Y            Y    |  N        N          | PowerVR GX6450/GX6850 +| iOS GPUFamily2    | PowerVR Series 6XT        | iOS Apple A8/A8X  |  Y            Y    |  N        N          | 8192    |  N            |  N            | PowerVR GX6450/GX6850 
-| iOS GPUFamily3    |                           | iOS Apple A9/A9X              |                |                                    +| iOS GPUFamily3    | PowerVR Series 7XT        | iOS Apple A9/A9X                |  N       |           16384               |  Y            | PowerVR GT7600/GT7(12)  
-| OSX GPUFamily1    | Desktop GPUs              | Mac OS X          |  N            N    |  Y        Y          | GeForce/RADEON/Intel HD Grahics |+| OSX GPUFamily1    | Desktop GPUs              | Mac OS X (macOS)  |  N            N    |  Y        Y          | 16384    Y            |  Y            | GeForce/RADEON GCN/Intel HD Grahics |
    
  
-Metal は 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 ごとの違い
行 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 で動作させるためか、一部汎用的な仕様に改められています。
  
行 72: 行 80:
  
 ===== OS X 版の OpenGL 4.1 との違い ===== ===== 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/OpenGL4 とは異なるものの、同等の機能を実装できるようになっています。
 +
  
  
行 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.1442422375.txt.gz · 最終更新: 2015/09/17 01:52 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki