Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Apple A12 / A12X での Metal Feature Set Tables 更新内容

iOS 12 や 12.1 での Metal の変更は機械学習用の Metal Performance Shaders がほとんどだが、Metal Feature Set Tables の方が更新されていたので調べてみた。

https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf

 

変更内容

基本的には A12 系は A11 系と変わらないが、以下の4つ機能が増えている。

  • Layered rendering
  • Multiple viewports
  • Stencil feedback
  • Stencil resolve

 

Layered rendering は Apple がサンプルを用意しているのでそちらを参照
背景と空間にあるジオメトリを環境テクスチャとして作成して、中央にあるたまに適応、60fps を保ちつつリアルタイムで周囲の反射表示を行なっている。

f:id:x67x6fx74x6f:20181105165342p:plain

現状、iOS では iPhone XR, XS, XS Max と3世代目の iPad Pro でしか動作しないので注意。

 

Multiple viewports は文字通り複数のビューポートへ描画を行う。

Stencil feedback と Stencil resolve は不明。
macOS でも今回の macOS_GPUFamily2_v1 で追加されている。

 

他に機能制限の変更が2つ。

「Maximum number of viewports and scissor rectangles, per vertex function」が 1 から 16 に変更され 16 個まで異なるレンダリングをビューポートが表示できると予想される。

もう1つは、A9系で追加されたジオメトリテッセレーションの係数である「Maximum tessellation factor」16 から 64 に変更されている。
OpenSubdiv によるジオメトリ形状滑らかさや Hight Map テクスチャ使用時の隆起の滑らかさが増すと思われる。

 

現行 OS での GPUFamily と バージョン

OS Chip GPUFamily / Version
iOS 12 A7 iOS_GPUFamily1_v5
iOS 12 A8/A8X iOS_GPUFamily2_v5
iOS 12 A9/A9X/A10/A10X iOS_GPUFamily3_v4
iOS 12 A11 iOS_GPUFamily4_v2
iOS 12 A12/A12X iOS_GPUFamily5_v1
tvOS 12 A8 tvOS_GPUFamily1_v4
tvOS 12 A10X tvOS_GPUFamily2_v2
macOS 10.14 macOS_GPUFamily1_v4
macOS 10.14 macOS_GPUFamily2_v1

 

macOS で謎の GPUFamily が増えているおり、Aチップにある以下のものが使用可能となっている。

  • Indirect command buffers
  • MSAA depth resolve
  • Stencil feedback
  • Stencil resolve

 

まとめ

今回の A12 系 のチップで Metal の機能がほぼ macOS の機能制限と同じような状態になった。残っているのはテクスチャ等の制限での Resources の項目と一部だけになっている。

予想では Layered rendering は ARKit / SceneKit での反射や屈折のリアルさを増し、
Multiple viewports は VR のような複数のカメラでのレンダリングを想定しているように思える。

また、macOS で謎の GPUFamily が増えており、NVIDIA などの新しい Mac 向けの GPU なのか、Apple A 系のチップなのかと期待したが、どうやら今まで端末ベースで管理していたものを対応 GPU で分けるように変更したものらしい。残念。