测试 Android G1 是否支持 OpenGL 硬件加速

 

原文地址:http://www.linuxgraphics.cn/android/check_g1_opengl_hardware_acceleration.html

简介

一直以来有个疑惑,T-Mobile G1 上的 OpenGL 是软件实现的还是硬件实现的,在网上查了好多次,但众说纷纭,有说是软件实现,也有说是硬件实现。受 glxinfo 的启发,本文使用 glGetString 接口做一下检测,结论是 G1 手机的 OpenGL 是基于硬件实现的。

思路

使用 glGetString 接口查看 GL_RENDERER, GL_VERDOR, GL_VERSION, GL_EXTENSIONS 等信息,尤其是 GL_RENDERER,即可判断出是硬件实现还是软件实现。

核心代码片段如下所示:

        Log.d("GL", "GL_RENDERER = " + gl.glGetString(GL10.GL_RENDERER));
        Log.d("GL", "GL_VENDOR = " + gl.glGetString(GL10.GL_VENDOR));
        Log.d("GL", "GL_VERSION = " + gl.glGetString(GL10.GL_VERSION));
        Log.i("GL", "GL_EXTENSIONS = " + gl.glGetString(GL10.GL_EXTENSIONS));

使用 LogCat 看 debug 信息:

adb logcat

数据

测试程序跑在虚拟机上的打印信息:

GL_RENDERER = Android PixelFlinger 1.0
GL_VENDOR = Android
GL_VERSION = OpenGL ES-CM 1.0
GL_EXTENSIONS =
    GL_OES_byte_coordinates
    GL_OES_fixed_point
    GL_OES_single_precision
    GL_OES_read_format
    GL_OES_compressed_paletted_texture
    GL_OES_draw_texture
    GL_OES_matrix_get
    GL_OES_query_matrix

    GL_ARB_texture_compression
    GL_ARB_texture_non_power_of_two

    GL_ANDROID_direct_texture
    GL_ANDROID_user_clip_plane
    GL_ANDROID_vertex_buffer_object
    GL_ANDROID_generate_mipmap


从 GL_RENDERER 信息可以看出,虚拟机上的 OpenGL 是 Android PixelFlinger 实现的,即软件实现。

测试程序跑在 G1 手机上的打印信息:

GL_RENDERER = Q3Dimension MSM7500 01.02.08 0 4.0.0
GL_VENDOR = QUALCOMM, Inc.
GL_VERSION = OpenGL ES 1.0-CM
GL_EXTENSIONS =
    GL_ARB_texture_env_combine
    GL_ARB_texture_env_crossbar
    GL_ARB_texture_env_dot3
    GL_ARB_texture_mirrored_repeat
    GL_ARB_vertex_buffer_object

    GL_ATI_extended_texture_coordinate_data_formats
    GL_ATI_imageon_misc
    GL_ATI_texture_compression_atitc

    GL_EXT_blend_equation_separate
    GL_EXT_blend_func_separate
    GL_EXT_blend_minmax
    GL_EXT_blend_subtract
    GL_EXT_stencil_wrap

    GL_OES_byte_coordinates
    GL_OES_compressed_paletted_texture
    GL_OES_draw_texture
    GL_OES_fixed_point
    GL_OES_matrix_palette
    GL_OES_point_size_array
    GL_OES_point_sprite
    GL_OES_read_format
    GL_OES_single_precision
    GL_OES_vertex_buffer_object

    GL_QUALCOMM_vertex_buffer_object
    GL_QUALCOMM_direct_texture

从上面的 GL_RENDERER 信息可以看出,G1 的 OpenGL 是基于 Q3Dimesion MSM7500 芯片实现的,即是硬件实现,支持硬件加速。

Q3Dimesion MSM7500 的 GLBenchmark 测试细节:

http://www.glbenchmark.com/resultdetails.jsp?benchmark=glpro&resultid=6392206&D=LG%20KS20

你可能感兴趣的:(android,测试,buffer,Blend,Matrix,compression)