Nexus5X の端末に Android 7.1.1 の OS が配信されてきたので更新してみました。
Android 6.0.1 からの更新となり、 7.0 を飛ばしてしまった感じになりました。
更新結果
動作そのものが重くなるかなと思いましたが、逆にレスポンス良く動くようになった気がします。
そして OpenGL ES 3.2 のコンテキストで初期化できるようになったようです!今までに ES 3.2 のコンテキストで動く端末を見てなかったので感動です。
恒例の OpenGL Extension のリストです。
OpenGL ES 3.2 V@145.0 GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_KHR_texture_compression_astc_ldr GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_EXT_copy_image GL_EXT_geometry_shader GL_EXT_tessellation_shader GL_OES_texture_stencil8 GL_EXT_shader_io_blocks GL_OES_shader_image_atomic GL_OES_sample_variables GL_EXT_texture_border_clamp GL_EXT_multisampled_render_to_texture GL_OES_shader_multisample_interpolation GL_EXT_texture_cube_map
Geometry Shader や Tessellation Shader が出現しています。レンダーテクスチャの先として float, half float が使えるのも見て取れます。
これで DirectX11 相当の機能は動きそうです。
Vulkan は?
Android 7.0 からは Nexus5X でも Vulkan が使用可能になっています。7.1.1 にしてみて状態を取得してみたところ API のサポートはあるようで動きそうです。
ただし気になる点がありました。それが Geometry Shader や Tessellation Shader の部分で false が返ってきていた点です。
もしかすると、 OpenGL ES 3.2 のほうがサポートできている機能範囲が広かったりするのでは?と思っています。
Adreno 418 , API Version 1.0.20 とは出ていたのですが。これについては追加検証が必要だと思います。
ちなみにこれらを確認したソフトは VulkanCapsViewer という Android アプリです。