2014/11/24
Android Wear 単体で音楽再生を行うアプリ
10月に Android 4.4W.2 への更新が行われ、Android Wear に音楽再生機能が付きました。
ところが説明通りに行っても、Google Play ミュージック ではアカウントの制限なのか
設定が見当たらずデータを転送することができませんでした。
せっかく Bluetooth ヘッドホンをペアリングしたのに活用できなかったので、
簡単な音楽再生アプリを作ってみました。
・Music Player for Android Wear (Google Play)
・Music Player for Android Wear (詳細説明)
任意のファイルを Android Wear デバイスに転送して音楽を再生することができます。
一度データを転送してしまえば親機 (スマートフォンやタブレット) が無くても
構いません。時計 (Androd Wear) だけでプレイヤーになります。
動作確認は LG G Watch (LG-W100) で行っています。
● 再生するまで
Andorid Wear デバイスにはヘッドホン端子が無いため Bluetooth 接続になります。
Bluetooth スピーカーか Bluetooth ヘッドホンが必要です。
あらかじめペアリングしておいてください。
● 転送方法
アプリをインストールしたら、スマートフォン(タブレット) 側で
「Music Player for Android Wear」を起動します。
端末内の音楽ファイルを選択してアップロードリスト(同期リスト)に加えます。
同期リストに登録するとバックグラウンドで転送が行われます。
Google Play のシステムサービスを利用しているためアプリを閉じても構いません。
Bluetooth なのでデータの転送にはかなり時間がかかります。
大量のファイルを追加せず、最初は 1~2 ファイルでテストしてみることを
おすすめします。
● 再生
Android Wear (Wearable) 側で「Muisc Player for Android Wear」を
立ち上げてください。
機能は最小限です。
常にシャッフル再生となり順番を指定したりデータを選択することができません。
同期リストに加えても、実際の転送が完了するまで再生できないのでご注意ください。
追加のファイルを転送している途中も再生ができなくなります。
もし Play を押しても鳴らないようならしばらく時間を置いてみてください。
新規転送したリストを取得するには、一旦 Stop してから Play し直してください。
関連エントリ
・Android Wear 3D のアナログ時計 (Watch Face)
・Android Wear の 3D 描画 と NDK r10
・Android Wear にゲームを移植
・Android Wear LG G Watch (LG-W100) の速度(実測)
・Android Wear LG G Watch (LG-W100)
・Android Wear LG G Watch の GPU
ところが説明通りに行っても、Google Play ミュージック ではアカウントの制限なのか
設定が見当たらずデータを転送することができませんでした。
せっかく Bluetooth ヘッドホンをペアリングしたのに活用できなかったので、
簡単な音楽再生アプリを作ってみました。
・Music Player for Android Wear (Google Play)
・Music Player for Android Wear (詳細説明)
任意のファイルを Android Wear デバイスに転送して音楽を再生することができます。
一度データを転送してしまえば親機 (スマートフォンやタブレット) が無くても
構いません。時計 (Androd Wear) だけでプレイヤーになります。
動作確認は LG G Watch (LG-W100) で行っています。
● 再生するまで
Andorid Wear デバイスにはヘッドホン端子が無いため Bluetooth 接続になります。
Bluetooth スピーカーか Bluetooth ヘッドホンが必要です。
あらかじめペアリングしておいてください。
● 転送方法
アプリをインストールしたら、スマートフォン(タブレット) 側で
「Music Player for Android Wear」を起動します。
端末内の音楽ファイルを選択してアップロードリスト(同期リスト)に加えます。
同期リストに登録するとバックグラウンドで転送が行われます。
Google Play のシステムサービスを利用しているためアプリを閉じても構いません。
Bluetooth なのでデータの転送にはかなり時間がかかります。
大量のファイルを追加せず、最初は 1~2 ファイルでテストしてみることを
おすすめします。
● 再生
Android Wear (Wearable) 側で「Muisc Player for Android Wear」を
立ち上げてください。
機能は最小限です。
常にシャッフル再生となり順番を指定したりデータを選択することができません。
同期リストに加えても、実際の転送が完了するまで再生できないのでご注意ください。
追加のファイルを転送している途中も再生ができなくなります。
もし Play を押しても鳴らないようならしばらく時間を置いてみてください。
新規転送したリストを取得するには、一旦 Stop してから Play し直してください。
関連エントリ
・Android Wear 3D のアナログ時計 (Watch Face)
・Android Wear の 3D 描画 と NDK r10
・Android Wear にゲームを移植
・Android Wear LG G Watch (LG-W100) の速度(実測)
・Android Wear LG G Watch (LG-W100)
・Android Wear LG G Watch の GPU
OS の更新が始まり、端末によっては使える API が増えています。
Nexus 10 (Exynos 5 Dual 5250) は Android 5.0 で OpenGL ES 3.1 が
使えるようになりました。
Tegra K1 と違い AEP には対応しておりません。
詳細は Extension のページ↓に追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
下記は手持ちの端末で調べたものです。
Amazon Kindle Fire も Fire OS 4 への更新が行われており、
Android 4.4 ベースとなりました。
GPU が対応している場合は OpenGL ES 3.0 が使えるようになっています。
関連エントリ
・Nexus 9 Tegra K1 と ARM 64bit Denver
・(Kindle) Fire HD 6 は OpenGL ES 3.0 対応で非対称 4 core CPU
・iPad Air 2 (Apple A8X) の GPU
・NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応
・Extension で記事検索
Nexus 10 (Exynos 5 Dual 5250) は Android 5.0 で OpenGL ES 3.1 が
使えるようになりました。
Tegra K1 と違い AEP には対応しておりません。
GL_VERSION: OpenGL ES 3.1 GL_RENDERER: Mali-T604 GL_VENDOR: ARM GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10
詳細は Extension のページ↓に追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
下記は手持ちの端末で調べたものです。
Nexus の OpenGL API Nexus SoC GPU Android 4.4 Android 5.0 ---------------------------------------------------------------------- Nexus 7 2012 Tegra 3 ULP GeForce OpenGL ES 2.0 OpenGL ES 2.0 Nexus 7 2013 APQ8064 Adreno320 OpenGL ES 3.0 OpenGL ES 3.0 Nexus 5 MSM8974 Adreno330 OpenGL ES 3.0 OpenGL ES 3.0 Nesus 10 Exynos 5D Mali-T604 OpenGL ES 3.0 OpenGL ES 3.1 Nesus 9 Tegra K1 Kepler -- OpenGL ES 3.1 AEP
Amazon Kindle Fire も Fire OS 4 への更新が行われており、
Android 4.4 ベースとなりました。
GPU が対応している場合は OpenGL ES 3.0 が使えるようになっています。
Amazon Fire の OpenGL API Fire SoC GPU FireOS 3 FireOS 4 ---------------------------------------------------------------------- Kindle Fire HDX 7 MSM8974 Adreno 330 OpenGL ES 2.0 OpenGL ES 3.0 Fire HD 6 MT8135 PowerVR G6200 -- OpenGL ES 3.0
関連エントリ
・Nexus 9 Tegra K1 と ARM 64bit Denver
・(Kindle) Fire HD 6 は OpenGL ES 3.0 対応で非対称 4 core CPU
・iPad Air 2 (Apple A8X) の GPU
・NVIDIA SHIELD Tablet Tegra K1 は OpenGL ES 3.1 で Extension Pack 対応
・Extension で記事検索
2014/11/09
Nexus 9 NVIDIA Tegra K1 64 Denver の浮動小数点演算速度
VFP Benchmark の Android 版も 64bit 対応になりました。
対応していれば arm64 (arm64-v8a), x86_64 (x64), mips64 で計測を行います。
なお iOS 版はすでに 64bit (arm64) に対応しています。
・VFP Benchmark v1.3
・VFP Benchmark (Google Play)
下記は Nexus 9 (Tegra K1 64) での結果の比較です。
AArch64 は倍精度 NEON 命令が使えるため DP の速度が 2倍になっています。
より詳しい結果は下記ページに載せています。
・VFP Benchmark Log
fmul.2s, fmul.4s の速度差が無いため、Cortex-A15 と異なり NEON 命令の実行は
128bit 単位と思われます。
おそらく Nexus 9 の Denver は 2.2GHz 前後で動作しており、
1 cycle あたりスカラー乗算 で 1、加算が 2。
SIMD ではこの割合が 4 mul, 6 add, 4 mad となっています。
表にまとめると下記の通り。(数値が大きい方が cycle あたりの演算能力が高い)
↑この表は命令あたりの演算個数で、積和を 2とみなしています。
より詳しい表は下記ページに載せています。
・CPU の浮動小数点演算能力の詳細
Denver は CPU core と比べても比較的おとなしい結果となっています。
浮動小数点演算において特に突出した特徴は持っていないので、
core の数が少ない分だけ Multi-Thread 時のピーク値が低くなっています。
下の表は 32bit 版 Tegra K1 を搭載した SHILD Tablet との比較です。
これだけ見ると Cortex-A15 版の方が優れているように見えますが、
あくまで浮動小数点演算命令だけの結果です。
実際には ARM の 64bit 命令セットが使えるメリットは大きく、
アプリケーションの動作速度ではこれらと大きく異なった結果になると思われます。
↓の表は WebGL (Emscripten) 物理エンジン ベンチマークの結果比較で、
Nexus 9 はかなり高速に実行できています。
詳しくは下記ページで。現在は Firefox でも正しく描画されるようになっています。
・iOS8 で WebGL & 物理エンジンのベンチマーク結果
● Android NDK のアセンブラ命令
clang と gcc4.9 の違いかもしれませんが、左側の省略記法が使えなかったので
右のようにレジスタ名への展開が必要でした。
関連エントリ
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
・Android x86 Binary Translator を試してみる
・Atom Bay Trail の浮動小数点演算能力
・VFP Benchmark v1.1 浮動小数点演算命令の速度 (NEON/SSE/AVX)
・ARM CPU の VFP Benchmark アプリ 浮動小数点演算速度の計測
・iPhone 5s A7 CPU の浮動小数点演算速度 (2) (arm64/AArch64/64bit)
・iPhone 5s A7 CPU の浮動小数点演算速度 (32bit)
・Nexus 10 CPU Cortex-A15 の速度
・Nexus 10 CPU Cortex-A15 の浮動小数点演算速度
・Qualcomm APQ8064 GPU Adreno 320 の速度
・Qualcomm APQ8064 Krait/A6 swift の浮動小数点演算能力
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・benchmark 関連
対応していれば arm64 (arm64-v8a), x86_64 (x64), mips64 で計測を行います。
なお iOS 版はすでに 64bit (arm64) に対応しています。
・VFP Benchmark v1.3
・VFP Benchmark (Google Play)
下記は Nexus 9 (Tegra K1 64) での結果の比較です。
NVIDIA Denver ST-SP ST-DP MT-SP MT-DP ---------------------------------------------------------------- AArch32 32bit armv7a 17.799 4.423 34.582 8.719 GFLOPS AArch64 64bit arm64 17.906 8.762 34.888 17.601 GFLOPS * ST=Single thread, MT=Multi thread * SP=Single precision fp, DP=Double precision fp * 単位は GFLOPS, 数値が大きい方が高速
AArch64 は倍精度 NEON 命令が使えるため DP の速度が 2倍になっています。
より詳しい結果は下記ページに載せています。
・VFP Benchmark Log
// Tegra K1 Denver arm64 時間(sec) MFLOPS --------------------------------------------------- FPU fmul (32bit x1) n8 : 2.049 1952.1 FPU fadd (32bit x1) n8 : 1.000 3998.3 FPU fmadd (32bit x1) n8 : 1.849 4326.0 NEON fmul.2s (32bit x2) n8 : 1.842 4343.8 NEON fadd.2s (32bit x2) n8 : 1.259 6356.0 NEON fmla.2s (32bit x2) n8 : 1.900 8420.3 NEON fmul.4s (32bit x4) n8 : 1.837 8711.7 NEON fadd.4s (32bit x4) n8 : 1.179 13570.5 NEON fmla.4s (32bit x4) n8 : 1.831 17475.0 FPU fmul (64bit x1) n8 : 1.930 2072.7 FPU fadd (64bit x1) n8 : 0.929 4306.0 FPU fmadd (64bit x1) n8 : 1.798 4450.2 NEON fmul.2d (64bit x2) n8 : 1.809 4422.6 NEON fadd.2d (64bit x2) n8 : 1.195 6695.8 NEON fmla.2d (64bit x2) n8 : 1.826 8762.0
fmul.2s, fmul.4s の速度差が無いため、Cortex-A15 と異なり NEON 命令の実行は
128bit 単位と思われます。
おそらく Nexus 9 の Denver は 2.2GHz 前後で動作しており、
1 cycle あたりスカラー乗算 で 1、加算が 2。
SIMD ではこの割合が 4 mul, 6 add, 4 mad となっています。
表にまとめると下記の通り。(数値が大きい方が cycle あたりの演算能力が高い)
Scalar SP Scalar DP mul add mad mul add mad ---------------------------------------------- Cortex-A9 32 1 1 2 0.5 1 1 Cortex-A15 32 1 1 2 1 1 1.4 Krait 400 32 1 1 2 1 1 2 (Qualcomm) Swift 32 1 1 1 1 1 1 (Apple A6) Denver 64 1 2 2 1 2 2 (NVIDIA Tegra) ← Cyclone 64 2 3 4 2 3 4 (Apple A7/A8) Silvermont 64 1 1 - 0.5 1 - (Intel BayTrail Atom) Jaguar 64 1 1 2 0.5 1 - (AMD Kabini)
SIMD2(32x2) SP SIMD4(32x4) SP SIMD2(64x2) DP mul add mad mul add mad mul add mad ------------------------------------------------------------------ Cortex-A9 32 2 2 4 2 2 4 - - - Cortex-A15 32 4 4 8 4 4 8 - - - Krait 400 32 2 2 4 4 4 8 - - - Swift 32 2 2 4 4 4 8 - - - Denver 64 2 3 4 4 6 8 2 3 4 ← Cyclone 64 4 6 8 8 12 16 4 6 8 Silvermont 64 - - - 2 4 6 0.5 1 1.5 Jaguar 64 - - - 4 4 8 2 2 4
↑この表は命令あたりの演算個数で、積和を 2とみなしています。
より詳しい表は下記ページに載せています。
・CPU の浮動小数点演算能力の詳細
Denver は CPU core と比べても比較的おとなしい結果となっています。
浮動小数点演算において特に突出した特徴は持っていないので、
core の数が少ない分だけ Multi-Thread 時のピーク値が低くなっています。
下の表は 32bit 版 Tegra K1 を搭載した SHILD Tablet との比較です。
Tegra K1 (数値はGFLOPS) ST-SP ST-DP MT-SP MT-DP --------------------------------------------------------------- Denver AArch32 32bit armv7a 17.799 4.423 34.582 8.719 Nexus 9 Denver AArch64 64bit arm64 17.906 8.762 34.888 17.601 Nexus 9 Cortex-A15 ARMv7A 32bit armv7a 17.136 3.431 70.174 14.036 SHIELD Tab
これだけ見ると Cortex-A15 版の方が優れているように見えますが、
あくまで浮動小数点演算命令だけの結果です。
実際には ARM の 64bit 命令セットが使えるメリットは大きく、
アプリケーションの動作速度ではこれらと大きく異なった結果になると思われます。
↓の表は WebGL (Emscripten) 物理エンジン ベンチマークの結果比較で、
Nexus 9 はかなり高速に実行できています。
Nexus 9 Tegra K1 Denver 64 Android 5.0 Firefox 33 13体 iPad Air 2 Apple A8X Cyclone 64 iOS 8.1 Safari 13体 MeMO Pad ME176 Z3740 Silvermont 32 Android 4.4 Firefox 33 9体 Tegra Note 7 Tegra 4 Cortex-A15 32 Android 4.4 Firefox 33 8体 Nexus 5 MSM8974 Krait 400 32 Android 4.4 Firefox 33 8体 Nexus 7 APQ8064 Krait 32 Android 5.0 Firefox 33 5体
詳しくは下記ページで。現在は Firefox でも正しく描画されるようになっています。
・iOS8 で WebGL & 物理エンジンのベンチマーク結果
● Android NDK のアセンブラ命令
clang と gcc4.9 の違いかもしれませんが、左側の省略記法が使えなかったので
右のようにレジスタ名への展開が必要でした。
orr.16b v1, v0, v0 → orr v1.16b, v0.16b, v0.16b fmla.4s v0, v8, v4 → fmla v0.4s, v8.4s, v4.4s
関連エントリ
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
・Android x86 Binary Translator を試してみる
・Atom Bay Trail の浮動小数点演算能力
・VFP Benchmark v1.1 浮動小数点演算命令の速度 (NEON/SSE/AVX)
・ARM CPU の VFP Benchmark アプリ 浮動小数点演算速度の計測
・iPhone 5s A7 CPU の浮動小数点演算速度 (2) (arm64/AArch64/64bit)
・iPhone 5s A7 CPU の浮動小数点演算速度 (32bit)
・Nexus 10 CPU Cortex-A15 の速度
・Nexus 10 CPU Cortex-A15 の浮動小数点演算速度
・Qualcomm APQ8064 GPU Adreno 320 の速度
・Qualcomm APQ8064 Krait/A6 swift の浮動小数点演算能力
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・benchmark 関連
2014/11/08
Nexus 9 Tegra K1 と ARM 64bit Denver
iPhone 5s に遅れることおよそ 1年、
64bit 対応の Android と ARM64 端末がリリースされました。
Nexus 9 の CPU core は NVIDIA の Denver。
少々わかりにくいですが "processor" の行が 2つあるので dual core です。
vfpbenchmark は下記のとおり。
single core 時の浮動小数点演算能力はほぼ SHILED Tablet (Cortex-A15 2.2GHz)
と同等で、トータル性能では Core 数の分だけ落ちています。
あくまで 32bit の結果なので後ほど 64bit (AArch64) でも試してみたいと思います。
arm64-v8a, armeabi-v7a, armeabi 3つの ABI に対応していました。
Android が現在 NDK でサポートしている ABI は下記の 7種類です。
ちなみに iOS で開発用の lib を作ると 5種類。
GPU は OpenGL ES 3.1 の Context を返します。
対応しているテクスチャフォーマットは DXT, ETC1, ETC2/EAC, ASTC 。
詳細は下記ページに掲載しています。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
64bit 対応の Android と ARM64 端末がリリースされました。
Nexus 9 の CPU core は NVIDIA の Denver。
Processor : NVIDIA Denver 1.0 rev 0 (aarch64) processor : 0 processor : 1 Features : fp asimd aes pmull sha1 sha2 crc32 CPU implementer : 0x4e CPU architecture: AArch64 CPU variant : 0x0 CPU part : 0x000 CPU revision : 0 Hardware : Flounder Revision : 0000 Serial : 0000000000000000
少々わかりにくいですが "processor" の行が 2つあるので dual core です。
$ cat /sys/devices/system/cpu/online 0-1
vfpbenchmark は下記のとおり。
single core 時の浮動小数点演算能力はほぼ SHILED Tablet (Cortex-A15 2.2GHz)
と同等で、トータル性能では Core 数の分だけ落ちています。
あくまで 32bit の結果なので後ほど 64bit (AArch64) でも試してみたいと思います。
// Nexus 9 ARCH: ARMv7A CPU core: 2 VFP: VFPv4-D32 NEON FMA: Yes NEON: Yes SingleT SP max: 17.799 GFLOPS SingleT DP max: 4.423 GFLOPS MultiT SP max: 34.582 GFLOPS MultiT DP max: 8.719 GFLOPS
ro.product.cpu.abi=arm64-v8a ro.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi ro.product.cpu.abilist32=armeabi-v7a,armeabi ro.product.cpu.abilist64=arm64-v8a
arm64-v8a, armeabi-v7a, armeabi 3つの ABI に対応していました。
Android が現在 NDK でサポートしている ABI は下記の 7種類です。
armeabi ARMv5TE armeabi-v7a ARMv7A VFPv3-D16 softfp (VFPv3-D32, NEON, hard-float) arm64-v8a ARMv8A (AArch64) x86 x86 (IA-32) x86_64 x64 mips MIPS32-R1 miips64 MIPS64
ちなみに iOS で開発用の lib を作ると 5種類。
armv7 ARMv7A VFPv3-D32+NEON softfp armv7s ARMv7A VFPv4-D32+NEON softfp arm64 ARMv8A (AArch64) i386 x86 simulator x86_64 x86_64 simulator
GPU は OpenGL ES 3.1 の Context を返します。
GL_VERSION: OpenGL ES 3.1 NVIDIA 343.00 GL_RENDERER: NVIDIA Tegra GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10
対応しているテクスチャフォーマットは DXT, ETC1, ETC2/EAC, ASTC 。
詳細は下記ページに掲載しています。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
Amazon の新しい Tablet である Fire HD 6 は、Android 4.4 ベースの
Fire OS 4.1 を搭載しています。
Android 4.4 、API Level 19 になったことで GPU が対応していれば
OpenGL ES 3.0 が使えるようになりました。
下記は Fire HD 6 の結果です。
SoC は MediaTek MT8135 で、非対称の 4 core CPU に PowerVR G6200。
Extension と対応している圧縮テクスチャフォーマットは下記の通り。
ETC2/EAC だけでなく PVRTC2 (PVRTCv2) にも対応していることがわかります。
同じ Series 6 でも iOS では PVRTCv2 に対応していませんでした。
PVRTCv2 は ETC2 と同じように、上位互換性を保ちつつモード分岐による
画質の向上が施された 2世代目の圧縮フォーマットです。
・OpenGL 4.3/ES 3.0 ETC2 Texture 圧縮の仕組み (PVRTC2,ASTC)
CPU は Cortex-A15 x2 と Cortex-A7 x2 の big.LITTLE 構成です。
実際に試してみると、HMP が有効らしくアプリケーションからは 4 core と
認識されていることがわかります。
負荷をかけた状態は下記の通り。4 core ともアクティブです。
ミドルクラスでも Cortex-A7 Quad の端末が増えている中、
価格帯 1万円前後ながら Cortex-A15 を搭載している点が大きな特徴と言えます。
Cortex-A15 と Cortex-A7 は数倍の性能差があるので、
HMP (GTS) ではスケジューラがどのようにタスクを割り振るのか興味あるところです。
下記ページを更新しました
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL 4.3/ES 3.0 ETC2 Texture 圧縮の仕組み (PVRTC2,ASTC)
Fire OS 4.1 を搭載しています。
Android 4.4 、API Level 19 になったことで GPU が対応していれば
OpenGL ES 3.0 が使えるようになりました。
下記は Fire HD 6 の結果です。
GL_VERSION: OpenGL ES 3.0 build 1.3@2876724 GL_RENDERER: PowerVR Rogue Han GL_VENDOR: Imagination Technologies GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00 build 1.3@2876724
SoC は MediaTek MT8135 で、非対称の 4 core CPU に PowerVR G6200。
Extension と対応している圧縮テクスチャフォーマットは下記の通り。
Extension: GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_derivatives GL_OES_vertex_array_object GL_OES_texture_npot GL_OES_surfaceless_context GL_EXT_discard_framebuffer GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture GL_EXT_shader_texture_lod GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_blend_minmax GL_EXT_texture_rg GL_EXT_occlusion_query_boolean GL_EXT_color_buffer_float GL_EXT_shader_framebuffer_fetch GL_EXT_separate_shader_objects GL_EXT_robustness GL_EXT_draw_buffers GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_compression_pvrtc2 GL_IMG_texture_npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_multisampled_render_to_texture GL_KHR_debug TextureFormat 17 00=8c01 GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 01=8c03 GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 02=8c00 GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 03=8c02 GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 04=9137 GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 05=9138 GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 06=8d64 GL_ETC1_RGB8_OES 07=9274 GL_COMPRESSED_RGB8_ETC2 08=9275 GL_COMPRESSED_SRGB8_ETC2 09=9278 GL_COMPRESSED_RGBA8_ETC2_EAC 10=9279 GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 11=9276 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 12=9277 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 13=9271 GL_COMPRESSED_SIGNED_R11_EAC 14=9270 GL_COMPRESSED_R11_EAC 15=9273 GL_COMPRESSED_SIGNED_RG11_EAC 16=9272 GL_COMPRESSED_RG11_EAC
ETC2/EAC だけでなく PVRTC2 (PVRTCv2) にも対応していることがわかります。
同じ Series 6 でも iOS では PVRTCv2 に対応していませんでした。
PVRTCv2 は ETC2 と同じように、上位互換性を保ちつつモード分岐による
画質の向上が施された 2世代目の圧縮フォーマットです。
1世代目 2世代目 ------------------- ETC1 ETC2/EAC PVRTCv1 PVRTCv2
・OpenGL 4.3/ES 3.0 ETC2 Texture 圧縮の仕組み (PVRTC2,ASTC)
PVRTCv1 PVRTCv2 ETC1 ETC2/EAC ---------------------------------------------------------- Android PowerVR Series 5 Y - Y - Android PowerVR Series 6 Y Y Y Y iOS PowerVR Series 5 Y - - - iOS PowerVR Series 6 Y - Y*1 Y *1 ETC2 は ETC1 の上位互換性があるため ETC1 の読み込みも可能
CPU は Cortex-A15 x2 と Cortex-A7 x2 の big.LITTLE 構成です。
実際に試してみると、HMP が有効らしくアプリケーションからは 4 core と
認識されていることがわかります。
負荷をかけた状態は下記の通り。4 core ともアクティブです。
$ cat /sys/devices/system/cpu/online 0-3 $ cat /proc/cpuinfo Processor : ARMv7 Processor rev 3 (v7l) processor : 0 BogoMIPS : 31.81 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 3 Processor : ARMv7 Processor rev 3 (v7l) processor : 1 BogoMIPS : 31.81 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 3 Processor : ARMv7 Processor rev 2 (v7l) processor : 2 BogoMIPS : 35.06 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc0f CPU revision : 2 Processor : ARMv7 Processor rev 2 (v7l) processor : 3 BogoMIPS : 26.00 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc0f CPU revision : 2 Hardware : MT8135 Revision : 000f 000a Serial : 0000000000000000
ミドルクラスでも Cortex-A7 Quad の端末が増えている中、
価格帯 1万円前後ながら Cortex-A15 を搭載している点が大きな特徴と言えます。
Cortex-A15 と Cortex-A7 は数倍の性能差があるので、
HMP (GTS) ではスケジューラがどのようにタスクを割り振るのか興味あるところです。
下記ページを更新しました
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL 4.3/ES 3.0 ETC2 Texture 圧縮の仕組み (PVRTC2,ASTC)