先日8月頭に発売された GALAXY Tab S 8.4(SM-T700 すなわちWiFiモデル) を調べてみました。基本的なことは各所のサイトで紹介されていると思いますので、ここではプログラマ目線で個人的に気になることを調べてみました。
初期状態でのOSは Android 4.4.2 です。
搭載しているプロセッサは、Samsung Exynos 5420 (Cortex-A7 x4 1.3GHz + A15 x4 1.9GHz) オクタコアです。
またこの中に入っている GPU は Mali-T628 となっています。
注意すべき点は、LTEモデルだとこのあたりが変わっていて、Snapdragon 800, Adreno330 となります。
画面解像度は、 2560×1600 WQXGA となっています。
個人的に、Snapdragon 800(Adreno330)は割と主流の流れなので、ここでは貴重なMali 6xx搭載の Wifiモデルを選ぶのがよさそうに思います。というか、GPUが他と違い珍しいので惹かれます。
さて、開発者として個人的に気にしている点が、このブログでも何度か登場しているNDKで開発してのネイティブデバッグができるか(ndk-gdbが使用可能であるか?)と、OpenGL ESの拡張はどのくらい、どんなものを備えているか、です。
ndk-gdb
サンプルのhello-jniでndk-gdbを起動させてみました。
結果はうまく動いていました。このあたりはさすがGalaxyシリーズと言ったところでしょうか。
この時点で開発用途には、現役で使えそうです。
OpenGL(ES)のExtension
この環境でエクステンションを取得してみました。GPUとOSからOpenGL ES 3.0だと思いますので期待できそうです。
GL Vendor = ARM GL Renderer = Mali-T628 GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_KHR_texture_compression_astc_ldr GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_ARM_mali_program_binary
このような結果になりました。良くも悪くもARMのGPUといったところでしょうか。テクスチャ圧縮のASTCがサポートされています。残念なのは、float texture に関するサポートがないようにみえるところです。 GL_OES_texture_float などが全く見当たりません。
また、3.0からはマルチレンダーターゲットがサポートされ、ディファードシェーディングもできる!と巷で話がありますが、これではfloat値をレンダーターゲットにできず、そのテクニックが使用不可能です。そもそも OpenGL ES 3.0 で FBO に float テクスチャをセットできるかは “GL_EXT_color_buffer_float” という別の拡張をサポートしているかがキーですが。
こういった特徴から、素のOpenGL ES 3.0 に近いGPUであるといえそうです。どのくらい標準的に普及するかは謎なところですが、テスト機の1台としてはなかなかそさそうには感じています。