月別アーカイブ: 2010年12月

Creative ZiiO 7 ZMS-08 GPU と OpenGL ES 2.0

ZiiO 7inch 手に入れました。

Creative ZiiO 7

LuvPad のように回線契約なしに買える Android タブレットです。

特徴は比較的安価なこと。8GB モデルで 24800円。
その代わり抵抗膜式タッチパネルを使っておりマルチタッチも非対応です。

LuvPad と違い HOME 画面は独自で、さまざまな Zii アプリケーションが用意
されています。

●気がついたことなど簡単に

・HDMI端子あり
・Android マーケット無し
・ボタン類もタッチ式、抵抗膜パネルの一部
・タッチパネルのキャリブレーション
  設定 → サウンド&画面設定→ Touch screen calibration
・ZiiAcademy というブックリーダー付き。
・タスクマネージャーが最初から入ってる
・RAM 512MB
・タッチパネル反応は慣れると良好
使用感などは後ほど

●デバッガの接続

adb 接続は下記のページを参考にさせていただきました。

でじものがたり Creative ZiiO 7″のフォント変更(再度更新)

同様の手順を以前 LuvPad の時も行いました。下記のページも参考になります。

Developing on a Device

●NDK と GPU

CPU はごく普通の Cortex-A8 1GHz です。
もちろん NEON + VFPv3-D32 です。

GPU は ZiiLabs のオリジナル。
テストプログラムを走らせてみました。

GL_VERSION: OpenGL ES 2.0
GL_RENDERER: ZMS-08
GL_VENDOR: ZiiLABS
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.0
Extension:
  GL_OES_read_format
  GL_OES_compressed_paletted_texture
  GL_OES_byte_coordinates
  GL_OES_fixed_point
  GL_OES_single_precision
  GL_OES_matrix_get
  GL_OES_point_size_array
  GL_OES_point_sprite
  GL_EXT_texture_compression_dxt
  GL_EXT_texture_compression_dxt1
  GL_ZIILABS_fog_mask
  GL_EXT_texture_lod_bias
  GL_EXT_blend_func_separate
  GL_OES_blend_func_separate
  GL_APPLE_texture_2D_limited_npot
  GL_OES_query_matrix
  GL_OES_draw_texture
  GL_OES_element_index_uint
  GL_OES_matrix_palette
  GL_OES_extended_matrix_palette
  GL_OES_compressed_ETC1_RGB8_texture
  GL_OES_framebuffer_object
  GL_OES_rgb8_rgba8
  GL_OES_depth32
  GL_OES_stencil8
  GL_OES_mapbuffer 
tc[00]=8b90  GL_PALETTE4_RGB8
tc[01]=8b91  GL_PALETTE4_RGBA8
tc[02]=8b92  GL_PALETTE4_R5_G6_B5
tc[03]=8b93  GL_PALETTE4_RGBA4
tc[04]=8b94  GL_PALETTE4_RGB5_A1
tc[05]=8b95  GL_PALETTE8_RGB8
tc[06]=8b96  GL_PALETTE8_RGBA8
tc[07]=8b97  GL_PALETTE8_R5_G6_B5
tc[08]=8b98  GL_PALETTE8_RGBA4
tc[09]=8b99  GL_PALETTE8_RGB5_A1
tc[10]=8d64  GL_ETC1_RGB8_OES
tc[11]=83f0  GL_COMPRESSED_RGB_S3TC_DXT1_EXT
tc[12]=83f1  GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
tc[13]=83f2  GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
tc[14]=83f3  GL_COMPRESSED_RGBA_S3TC_DXT5_EXT

Tegra2 のように DXT 対応です。
ETC も使えます。

VertexShader constant: 128
FragmentShader constant: 16

・頂点テクスチャあり
・shader binary format あり

自前のアプリを移植しましたがシェーダーを読み込んだところで止まります。
ndk サンプルの hello-gl2 も Shader の Link error が出て描画されず
まだうまく動いていません。

GL ES 1.1 のアプリは動いているようです。
速度はものすごく速いといった印象はないです。
OS の違いもあるかもしれません。

●GPU 等のまとめ

これまで試した GPU や CPU をまとめました。

OpenGL ES 2.0 モバイル GPU CPU

Android 端末の一覧をこちらに作ってみました。WindowsCE 一覧 の続きのようなもの。

Android 端末一覧

関連エントリ
OpenGL ES 2.0 世代の Mobile GPU
Android LuvPad AD100 を1日持ち歩いた

OpenGL ES 2.0 世代の Mobile GPU

iOS, Android 共に数多くの端末が登場していますが、CPU は ARM アーキテクチャ、
GPU は OpenGL ES 2.0 世代でほぼ統一されています。

iOS の場合 ES 2.0 世代の GPU は 1種類のみ。
Android の場合は調べてみると予想以上に多彩なことがわかります。
完全に 2強(+1)のデスクトップ GPU と違い、まるで DirectX 初期の頃のように
さまざまなメーカーが参入しています。

iOS:
CPU
    Cortex-A8

GPU 
    PowerVR SGX 535
Android OS:
CPU
    ARM11      ARMv6 (MSM7227)
    Cortex-A8  ARMv7 (S5PC110/ZMS-08)
    Scorpion   ARMv7 (Snapdragon)
    Cortex-A9  ARMv7 (Tegra2)

GPU
    Adreno 200       (Snapdragon QSD8x50/MSM7227)
    Adreno 205       (Snapdragon QSD8x55)
    PowerVR SGX 540  (S5PC110)
    Tegra 250 GPU    (Tegra2)
    ZMS-08 GPU       (ZMS-08)

ATI/AMD のモバイルチップだった Imageon Z430/460 は、Qualcomm になってから
名称が変更されているようです。

Qualcomm Adreno developer
Wikipedia Imageon
Wikipedia Snapdragon (processor)

Adreno のステートを見ると、テクスチャの ATC サポートなど ATI の影響が
残っています。
現行のスマートフォンでは Adreno 200 を搭載した QSD8x50 が多いですが、
HTC Desire HD 001HT の QSD8255 など、今後 Adreno 205 搭載機も
増えてくると思われます。
Z430(200?) が思ったよりも速度を引き出しづらい特性だったので 205 には
期待しています。

昨日ニュースに出ていた Creative の ZiiO は独自のプロセッサ ZMS-08 を
採用しています。

クリエイティブ、Androidメディアプレーヤーを国内販売
Zii LABS

開発はあの 3DLABS (ZiiLABS) なので気になる存在です。

進化速度が速いので、モバイル向け GPU の 3D 性能も大きく向上していく
ものと予想されます。

Android OS 2.3 と NDK r5

新しい Android OS 2.3 Gingerbread が公開され、同時に SDK も新しくなりました。
特に嬉しいのが NDK の強化。NDK r5 がリリースされています。

Android SDK

Native 向け API が大幅に追加されたようで、従来 Java + JNI 経由で受け取って
いた入力関係、Java でないと初期化出来なかった EGL 関連も Native code で
記述できるようになっています。
下記の NativeActivity の例を見ると C だけで書かれているのがわかります。

NativeActivity

NDK を使うとデバッグが大変だったので、gdb が含まれるようになったのもかなり
重要なポイントでしょう。

C/C++ の利点はプラットフォームの垣根を越えた共通言語であること。
ライブラリやツールをシェアし、core 部分を移植しやすくするという意味でも
C/C++ のサポート強化は歓迎です。

ndk-build の使い方は r4 と同じですが、内部のディレクトリ構成は結構変わって
いるようです。
自分で build system を構築している場合は少々手を入れる必要があります。

関連エントリ
Snapdragon と浮動小数演算速度
Android NDK r3 と OpenGL ES 2.0