blob: 04289e9a4145590a5215d5091585240112338722 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.tests.getinfo;
import android.opengl.GLES20;
import android.opengl.GLES30;
import android.opengl.GLSurfaceView;
import android.util.Log;
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
class GLESSurfaceView extends GLSurfaceView {
private static final String TAG = "GLESSurfaceView";
private int mGLVersion;//1, 2, 3
private CountDownLatch mDone;
private DeviceInfoActivity mParent;
/**
*
* @param parent
* @param glVersion the version of GLES API to use inside the view
* @param done to notify the completion of the task
*/
public GLESSurfaceView(DeviceInfoActivity parent, int glVersion, CountDownLatch done){
super(parent);
mParent = parent;
mGLVersion = glVersion;
mDone = done;
if (glVersion > 1) {
// Default is 1 so only set if bigger than 1
setEGLContextClientVersion(glVersion);
}
setRenderer(new OpenGLESRenderer());
}
public class OpenGLESRenderer implements GLSurfaceView.Renderer {
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
String extensions;
String vendor;
String renderer;
if (mGLVersion == 2) {
extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS);
vendor = GLES20.glGetString(GLES20.GL_VENDOR);
renderer = GLES20.glGetString(GLES20.GL_RENDERER);
} else if (mGLVersion == 3) {
extensions = GLES30.glGetString(GLES30.GL_EXTENSIONS);
vendor = GLES30.glGetString(GLES30.GL_VENDOR);
renderer = GLES30.glGetString(GLES30.GL_RENDERER);
} else {
extensions = gl.glGetString(GL10.GL_EXTENSIONS);
vendor = gl.glGetString(GL10.GL_VENDOR);
renderer = gl.glGetString(GL10.GL_RENDERER);
}
Log.i(TAG, "extensions : " + extensions);
Log.i(TAG, "vendor : " + vendor);
Log.i(TAG, "renderer : " + renderer);
mParent.setGraphicsInfo(vendor, renderer);
Scanner scanner = new Scanner(extensions);
scanner.useDelimiter(" ");
while (scanner.hasNext()) {
String ext = scanner.next();
mParent.addOpenGlExtension(ext);
if (ext.contains("texture")) {
if (ext.contains("compression") || ext.contains("compressed")) {
Log.i(TAG, "Compression supported: " + ext);
mParent.addCompressedTextureFormat(ext);
}
}
}
scanner.close();
mDone.countDown();
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
@Override
public void onDrawFrame(GL10 gl) {
}
}
}