Is there any way to get GPU information?

后端 未结 4 1223
我寻月下人不归
我寻月下人不归 2020-12-30 01:46

I know how to get CPU info inside /proc/, but is there any way to get GPU info? Something like the CPU one?

相关标签:
4条回答
  • 2020-12-30 02:18

    There is, you can get GPU information by using OpenGL:

        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 ));
    

    For more information see: https://developer.android.com/guide/topics/graphics/opengl.html

    0 讨论(0)
  • 2020-12-30 02:19

    I hope its useful useful to you.. First This code check if device is support the GPU or Not.

     // Check if the system supports OpenGL ES 2.0.
      final ActivityManager activityManager =  (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        final ConfigurationInfo configurationInfo = activityManager
                .getDeviceConfigurationInfo();
        final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
    
        if (supportsEs2) {
            Log.i("JO", "configurationInfo.reqGlEsVersion:"
                    + configurationInfo.reqGlEsVersion + "supportsEs2:"
                    + supportsEs2);
            // Request an OpenGL ES 2.0 compatible context.
            myGlsurfaceView.setEGLContextClientVersion(2);
    
            final DisplayMetrics displayMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    
            // Set the renderer to our demo renderer, defined below.
            myRenderer = new MyRenderer(this, myGlsurfaceView);
            myGlsurfaceView.setRenderer(myRenderer, displayMetrics.density);
            myGlsurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
        } else {
            // This is where you could create an OpenGL ES 1.x compatible
            // renderer if you wanted to support both ES 1 and ES 2.
            return;
        }
    

    Second One : This code give the GPU Information..

    Put It in this code inside MyRenderer Class..

     public void determineGraphicSupport(GL10 gl){
        int _graphicEngine = GRAPHICS_CANVAS;
    
        String extensions = gl.glGetString(GLES20.GL_EXTENSIONS); 
        //String version = GLES10.glGetString(GL10.GL_VERSION);
        String version = GLES20.glGetString(GLES20.GL_VERSION);
    
        //String renderer = gl.glGetString(GL10.GL_RENDERER);
        String renderer = GLES20.glGetString(GLES20.GL_RENDERER);
    
        boolean isSoftwareRenderer = renderer.contains("PixelFlinger");
        boolean supportsDrawTexture = extensions.contains("draw_texture");
    
        int[] arGlMaxTextureSize = new int[1];
    
        gl.glGetIntegerv( GLES20.GL_MAX_TEXTURE_SIZE, arGlMaxTextureSize, 0 );
    
        if( !isSoftwareRenderer && supportsDrawTexture && _width >= 480 && _height >= 800 
                && arGlMaxTextureSize[0] >= 4096 )
            _graphicEngine = GRAPHICS_OPENGL_DRAW_TEXTURE;
        else
            _graphicEngine = GRAPHICS_CANVAS;
    
     }
    
    0 讨论(0)
  • 2020-12-30 02:22

    Here is a SampleActivity to get GPU info:

    public class MainActivity extends Activity implements GLSurfaceView.Renderer{
        private TextView textView;
        private GLSurfaceView glSurfaceView;
        private StringBuilder sb;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            textView = (TextView) findViewById(R.id.textView);
    
            final ActivityManager activityManager =  (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
            final ConfigurationInfo configurationInfo = activityManager
                    .getDeviceConfigurationInfo();
            sb=new StringBuilder();
            sb.append("GL version:").append(configurationInfo.getGlEsVersion()).append("\n");
    
            textView.setText(sb.toString());
            this.glSurfaceView = new GLSurfaceView(this);
            this.glSurfaceView.setRenderer(this);
            ((ViewGroup)textView.getParent()).addView(this.glSurfaceView);
        }
    
        @Override
        public void onClick(View v) {
        }
    
        @Override
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
           sb.append("RENDERER").append(gl.glGetString(GL10.GL_RENDERER)).append("\n");
            sb.append("VENDOR").append( gl.glGetString(GL10.GL_VENDOR)).append("\n");
            sb.append("VERSION").append(gl.glGetString(GL10.GL_VERSION)).append("\n");
            sb.append("EXTENSIONS").append(gl.glGetString(GL10.GL_EXTENSIONS));
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    textView.setText(sb.toString());
                    glSurfaceView.setVisibility(View.GONE);
                }
            });
        }
    
        @Override
        public void onSurfaceChanged(GL10 gl, int width, int height) {
        }
    
        @Override
        public void onDrawFrame(GL10 gl) {
        }
    }
    
    0 讨论(0)
  • 2020-12-30 02:31

    Simpler way: adb shell dumpsys | grep GLES

    0 讨论(0)
提交回复
热议问题