Resolve conflict for Merge of '03d8b3c9'
- also changed some code based on the new style using CountDownLatch
Conflicts:
tests/expectations/knownfailures.txt
tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityOne.java
tests/tests/opengl/src/android/opengl/cts/RendererBase.java
Change-Id: I18ea90d5c20d715587bf10f80da49fa18d1b336c
diff --git a/tests/tests/opengl/src/android/opengl/cts/AttachShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/AttachShaderTest.java
index 921ce71..62ca1f9 100644
--- a/tests/tests/opengl/src/android/opengl/cts/AttachShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/AttachShaderTest.java
@@ -32,7 +32,9 @@
intent.putExtra(OpenGLES20NativeActivityOne.EXTRA_VIEW_TYPE, viewType);
intent.putExtra(OpenGLES20NativeActivityOne.EXTRA_VIEW_INDEX, viewIndex);
setActivityIntent(intent);
- return getActivity();
+ OpenGLES20ActivityOne activity = getActivity();
+ assertTrue(activity.waitForFrameDrawn());
+ return activity;
}
/**
@@ -61,10 +63,8 @@
public void test_glAttachedShaders_invalidshader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 2);
- int shaderCount = mActivity.getNoOfAttachedShaders();
- assertEquals(1, shaderCount);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_VALUE, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
/**
@@ -78,7 +78,7 @@
public void test_glAttachedShaders_attach_same_shader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 3);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_OPERATION, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
/**
@@ -113,19 +113,19 @@
public void test_glAttachShaders_emptyvertexshader_emptyvertexshader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 7);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_OPERATION, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
public void test_glAttachShaders_programobject_attach_fragshaderobject() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 8);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_VALUE, error);
+ assertEquals(GLES20.GL_NO_ERROR, error);
}
public void test_glAttachShaders_invalidshader_attach_valid_handle() throws Throwable{
mActivity = getShaderActivity(Constants.SHADER, 9);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_VALUE, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
public void test_glAttachShaders_successfulcompile_attach_frag() throws Throwable {
@@ -143,6 +143,6 @@
public void test_glAttachShaders_successfulcompile_attach_invalid_handle_frag() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 12);
int error = mActivity.glGetError();
- assertEquals(GLES20.GL_INVALID_VALUE, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java
index 0882259..5ec1ce1 100755
--- a/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java
@@ -54,7 +54,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -72,7 +72,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -91,7 +91,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -110,7 +110,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -129,7 +129,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -148,7 +148,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -167,7 +167,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java
index d076141..1622af1 100755
--- a/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java
@@ -33,7 +33,9 @@
intent.putExtra(OpenGLES20NativeActivityOne.EXTRA_VIEW_TYPE, viewType);
intent.putExtra(OpenGLES20NativeActivityOne.EXTRA_VIEW_INDEX, viewIndex);
setActivityIntent(intent);
- return getActivity();
+ OpenGLES20NativeActivityOne activity = getActivity();
+ assertTrue(activity.waitForFrameDrawn());
+ return activity;
}
/**
@@ -62,7 +64,7 @@
public void test_glAttachedShaders_invalidshader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 2);
int error = mActivity.mRenderer.mAttachShaderError;
- assertEquals(GLES20.GL_INVALID_VALUE, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
/**
@@ -76,7 +78,7 @@
public void test_glAttachedShaders_attach_same_shader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 3);
int error = mActivity.mRenderer.mAttachShaderError;
- assertEquals(GLES20.GL_INVALID_OPERATION, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
/**
@@ -99,7 +101,7 @@
public void test_glAttachShaders_emptyfragshader_emptyfragshader() throws Throwable {
mActivity = getShaderActivity(Constants.SHADER, 5);
int error = mActivity.mRenderer.mAttachShaderError;
- assertEquals(GLES20.GL_INVALID_OPERATION, error);
+ assertTrue(GLES20.GL_NO_ERROR != error);
}
public void test_glAttachShaders_emptyfragshader_emptyvertexshader() throws Throwable {
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java
index 6354c90..7f4dbb2 100755
--- a/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java
@@ -49,7 +49,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -67,7 +67,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -86,7 +86,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -105,7 +105,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -124,7 +124,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -143,7 +143,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
@@ -162,7 +162,7 @@
mActivity.setView(Constants.COLOR, 1, vertexColors);
}
});
- Thread.sleep(SLEEP_TIME);
+ assertTrue(mActivity.waitForFrameDrawn());
float[] actualColor = mActivity.getActualColor();
compare(expectedColor, actualColor);
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java
index 02daee5..623daea 100755
--- a/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java
@@ -22,7 +22,7 @@
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;
-
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -54,19 +54,20 @@
private short[] mIndices = { 0, 1, 2, 0, 2, 3 };
private FloatBuffer mColor;
- public NativeRendererOneColorBufferTest(Context context) {
-
+ public NativeRendererOneColorBufferTest(Context context, CountDownLatch latch) {
+ super(latch);
}
- public NativeRendererOneColorBufferTest(Context context, float[] color) {
- this.mVertexColor = color;
+ public NativeRendererOneColorBufferTest(Context context, float[] color, CountDownLatch latch) {
+ super(latch);
+ this.mVertexColor = color;
}
public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
}
- public void onDrawFrame(GL10 glUnused) {
+ public void doOnDrawFrame(GL10 glUnused) {
Log.i(TAG,"onDrawFrame start");
float[] result = GL2JniLibOne.draw(3, 1, mVertexColor);
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityOne.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityOne.java
index 9a249a4..5acac32 100644
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityOne.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityOne.java
@@ -23,6 +23,10 @@
import android.view.Window;
import android.view.WindowManager;
+import java.lang.InterruptedException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
public class OpenGLES20ActivityOne extends Activity {
public static final String EXTRA_VIEW_TYPE = "viewType";
@@ -31,6 +35,7 @@
OpenGLES20View view;
Renderer mRenderer;
int mRendererType;
+ private CountDownLatch mLatch = new CountDownLatch(1);
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -41,68 +46,81 @@
int viewType = getIntent().getIntExtra(EXTRA_VIEW_TYPE, -1);
int viewIndex = getIntent().getIntExtra(EXTRA_VIEW_INDEX, -1);
- view = new OpenGLES20View(this, viewType, viewIndex);
+ view = new OpenGLES20View(this, viewType, viewIndex, mLatch);
setContentView(view);
}
public int getNoOfAttachedShaders() {
- return ((RendererBase)mRenderer).mShaderCount[0];
+ return ((RendererBase)mRenderer).mShaderCount[0];
}
public int glGetError() {
return ((RendererBase)mRenderer).mError;
}
+ public boolean waitForFrameDrawn() {
+ boolean result = false;
+ try {
+ result = mLatch.await(10L, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ // just return false
+ }
+ return result;
+ }
+
@Override
protected void onPause() {
super.onPause();
- view.onPause();
+ if (view != null) {
+ view.onPause();
+ }
}
@Override
protected void onResume() {
super.onResume();
- if(view != null) {
+ if (view != null) {
view.onResume();
}
}
class OpenGLES20View extends GLSurfaceView {
- public OpenGLES20View(Context context, int type, int index) {
+ public OpenGLES20View(Context context, int type, int index, CountDownLatch latch) {
super(context);
setEGLContextClientVersion(2);
- if(type == Constants.SHADER) {
- if(index == 1) {
- mRenderer = new RendererOneShaderTest();
- }else if(index == 2) {
- mRenderer = new RendererTwoShaderTest();
- }else if(index == 3) {
- mRenderer = new RendererThreeShaderTest();
- }else if(index == 4) {
- mRenderer = new RendererFourShaderTest();
- }else if(index == 5) {
- mRenderer = new RendererFiveShaderTest();
- }else if(index == 6) {
- mRenderer = new RendererSixShaderTest();
- }else if(index == 7) {
- mRenderer = new RendererSevenShaderTest();
- }else if(index == 8) {
- mRenderer = new RendererEightShaderTest();
- }else if(index == 9) {
- mRenderer = new RendererNineShaderTest();
- }else if(index == 10) {
- mRenderer = new RendererTenShaderTest();
- }else if(index == 11) {
- mRenderer = new RendererElevenShaderTest();
- }else if(index == 12) {
- mRenderer = new RendererTwelveShaderTest();
- }else {
+
+ if (type == Constants.SHADER) {
+ if (index == 1) {
+ mRenderer = new RendererOneShaderTest(latch);
+ } else if(index == 2) {
+ mRenderer = new RendererTwoShaderTest(latch);
+ } else if(index == 3) {
+ mRenderer = new RendererThreeShaderTest(latch);
+ } else if(index == 4) {
+ mRenderer = new RendererFourShaderTest(latch);
+ } else if(index == 5) {
+ mRenderer = new RendererFiveShaderTest(latch);
+ } else if(index == 6) {
+ mRenderer = new RendererSixShaderTest(latch);
+ } else if(index == 7) {
+ mRenderer = new RendererSevenShaderTest(latch);
+ } else if(index == 8) {
+ mRenderer = new RendererEightShaderTest(latch);
+ } else if(index == 9) {
+ mRenderer = new RendererNineShaderTest(latch);
+ } else if(index == 10) {
+ mRenderer = new RendererTenShaderTest(latch);
+ } else if(index == 11) {
+ mRenderer = new RendererElevenShaderTest(latch);
+ } else if(index == 12) {
+ mRenderer = new RendererTwelveShaderTest(latch);
+ } else {
throw new RuntimeException();
}
- }else if(type == Constants.PROGRAM) {
- if(index == 1) {
- mRenderer = new RendererOneProgramTest();
+ } else if (type == Constants.PROGRAM) {
+ if (index == 1) {
+ mRenderer = new RendererOneProgramTest(latch);
}
}
setRenderer(mRenderer);
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java
index c158c47..6bb34e4 100755
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java
@@ -21,24 +21,40 @@
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
+import java.lang.InterruptedException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+
public class OpenGLES20ActivityTwo extends Activity {
OpenGLES20View view;
Renderer mRenderer;
int mRendererType;
+ private CountDownLatch mLatch = new CountDownLatch(1);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
+ public boolean waitForFrameDrawn() {
+ boolean result = false;
+ try {
+ result = mLatch.await(10L, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ // just return false
+ }
+ return result;
+ }
+
public void setView(int type, int i, float[] vertexColors ) {
- view = new OpenGLES20View(this,type,i, vertexColors);
+ view = new OpenGLES20View(this,type,i, vertexColors, mLatch);
setContentView(view);
}
public void setView(int type, int i) {
float[] f = {};
- view = new OpenGLES20View(this,type,i, f ) ;
+ view = new OpenGLES20View(this, type, i, f, mLatch) ;
setContentView(view);
}
@@ -71,12 +87,13 @@
class OpenGLES20View extends GLSurfaceView {
- public OpenGLES20View(Context context, int type, int index, float[] rgba) {
+ public OpenGLES20View(Context context, int type, int index, float[] rgba,
+ CountDownLatch latch) {
super(context);
setEGLContextClientVersion(2);
if(type == Constants.COLOR) {
if(index == 1) {
- mRenderer = new RendererOneColorBufferTest(context, rgba);
+ mRenderer = new RendererOneColorBufferTest(context, rgba, latch);
}else {
throw new RuntimeException();
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
index e06e7e2..ac4fce5 100755
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
@@ -9,6 +9,10 @@
import android.view.Window;
import android.view.WindowManager;
+import java.lang.InterruptedException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -23,6 +27,8 @@
GL2Renderer mRenderer;
int mRendererType;
+ private CountDownLatch mLatch = new CountDownLatch(1);
+
/**
* Called when the activity is first created.
*/
@@ -35,10 +41,20 @@
int viewType = getIntent().getIntExtra(EXTRA_VIEW_TYPE, -1);
int viewIndex = getIntent().getIntExtra(EXTRA_VIEW_INDEX, -1);
- view = new OpenGLES20View(this, viewType, viewIndex);
+ view = new OpenGLES20View(this, viewType, viewIndex, mLatch);
setContentView(view);
}
+ public boolean waitForFrameDrawn() {
+ boolean result = false;
+ try {
+ result = mLatch.await(10L, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ // just return false
+ }
+ return result;
+ }
+
@Override
protected void onPause() {
super.onPause();
@@ -54,10 +70,10 @@
}
class OpenGLES20View extends GLSurfaceView {
- public OpenGLES20View(Context context, int category, int testCase) {
+ public OpenGLES20View(Context context, int category, int testCase, CountDownLatch latch) {
super(context);
setEGLContextClientVersion(2);
- mRenderer = new GL2Renderer(category, testCase);
+ mRenderer = new GL2Renderer(category, testCase, latch);
setRenderer(mRenderer);
}
@@ -78,9 +94,12 @@
int mAttachShaderError = -1;
int mShaderCount = -1;
- public GL2Renderer(int category, int testcase) {
+ private CountDownLatch mLatch;
+
+ public GL2Renderer(int category, int testcase, CountDownLatch latch) {
this.mCategory = category;
this.mTestCase = testcase;
+ mLatch = latch;
}
public void onDrawFrame(GL10 gl) {
@@ -94,6 +113,7 @@
Log.i(TAG,"error:" + mAttachShaderError);
this.mShaderCount = GL2JniLibOne.getAttachedShaderCount();
Log.i(TAG,"ShaderCount:" + mShaderCount);
+ mLatch.countDown();
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java
index 9969ba4..6bdf95f 100755
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java
@@ -21,18 +21,34 @@
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
+import java.lang.InterruptedException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
public class OpenGLES20NativeActivityTwo extends Activity {
OpenGLES20View view;
Renderer mRenderer;
int mRendererType;
+ private CountDownLatch mLatch = new CountDownLatch(1);
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
+ public boolean waitForFrameDrawn() {
+ boolean result = false;
+ try {
+ result = mLatch.await(10L, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ // just return false
+ }
+ return result;
+ }
+
public void setView(int type, int i, float[] vertexColors ) {
- view = new OpenGLES20View(this,type,i, vertexColors);
+ view = new OpenGLES20View(this,type,i, vertexColors, mLatch);
setContentView(view);
}
@@ -81,12 +97,13 @@
super.onResume();
}
- public OpenGLES20View(Context context, int type, int index, float[] rgba) {
+ public OpenGLES20View(Context context, int type, int index, float[] rgba,
+ CountDownLatch latch) {
super(context);
setEGLContextClientVersion(2);
if(type == Constants.COLOR) {
if(index == 1) {
- mRenderer = new NativeRendererOneColorBufferTest(context, rgba);
+ mRenderer = new NativeRendererOneColorBufferTest(context, rgba, latch);
}else {
throw new RuntimeException();
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererBase.java b/tests/tests/opengl/src/android/opengl/cts/RendererBase.java
index 84234ea..994c1c6 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererBase.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererBase.java
@@ -23,6 +23,8 @@
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
+import java.util.concurrent.CountDownLatch;
+
public abstract class RendererBase implements GLSurfaceView.Renderer {
FloatBuffer floatBuffer;
@@ -30,9 +32,17 @@
int maPositionHandle;
float[] mColorOne = new float[4];
- int[] mShaderCount;
+ int[] mShaderCount = null;
int mError;
+ // child may need to manipulate them directly
+ protected CountDownLatch mLatch;
+ protected boolean mDrawn = false;
+
+ public RendererBase(CountDownLatch latch) {
+ mLatch = latch;
+ }
+
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
@@ -44,4 +54,18 @@
GLES20.glCompileShader(shader);
return shader;
}
+
+ @Override
+ public void onDrawFrame(GL10 gl) {
+ if (mDrawn) {
+ return;
+ }
+ mDrawn = true;
+ doOnDrawFrame(gl);
+ mLatch.countDown();
+ }
+
+ /// dummy method to be overridden by child
+ public void doOnDrawFrame(GL10 gl) {
+ }
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererEightShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererEightShaderTest.java
index eba7601..c2d1a19 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererEightShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererEightShaderTest.java
@@ -17,13 +17,13 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
public class RendererEightShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+ public RendererEightShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -36,5 +36,6 @@
GLES20.glAttachShader(mProgram, shaderOne);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java
index f301676..35df7b5 100755
--- a/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java
@@ -15,6 +15,7 @@
*/
package android.opengl.cts;
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -23,9 +24,8 @@
public class RendererElevenShaderTest extends RendererBase {
private String fragmentShaderCode = Vertex.successfulcompile_vertex;
- @Override
- public void onDrawFrame(GL10 gl) {
-
+ public RendererElevenShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -38,5 +38,6 @@
GLES20.glLinkProgram(mProgram);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererFiveShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererFiveShaderTest.java
index 0dce725..f40c896 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererFiveShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererFiveShaderTest.java
@@ -17,14 +17,15 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
import android.util.Log;
public class RendererFiveShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+
+ public RendererFiveShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -40,5 +41,6 @@
int[] shaders = new int[10];
GLES20.glGetAttachedShaders(mProgram, 10, mShaderCount, 0, shaders, 0);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererFourShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererFourShaderTest.java
index 2382c6d..dd98b68 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererFourShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererFourShaderTest.java
@@ -17,14 +17,15 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
import android.util.Log;
public class RendererFourShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+
+ public RendererFourShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -41,5 +42,6 @@
}
mError = GLES20.glGetError();
GLES20.glLinkProgram(mProgram);
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererNineShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererNineShaderTest.java
index 64cc9d0..54b6634 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererNineShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererNineShaderTest.java
@@ -17,13 +17,13 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
public class RendererNineShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+ public RendererNineShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -37,5 +37,6 @@
GLES20.glAttachShader(mProgram, shaderOne);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java
index a79e71a..50a4085 100755
--- a/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java
@@ -22,7 +22,7 @@
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;
-
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -59,7 +59,8 @@
private FloatBuffer mColor;
- public RendererOneColorBufferTest(Context context) {
+ public RendererOneColorBufferTest(Context context, CountDownLatch latch) {
+ super(latch);
mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
.order(ByteOrder.nativeOrder()).asFloatBuffer();
mVertices.put(mVerticesData).position(0);
@@ -75,7 +76,8 @@
mColor.put(mVertexColor).position(0);
}
- public RendererOneColorBufferTest(Context context, float[] colors) {
+ public RendererOneColorBufferTest(Context context, float[] colors, CountDownLatch latch) {
+ super(latch);
mVertexColor = colors;
mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
.order(ByteOrder.nativeOrder()).asFloatBuffer();
@@ -181,7 +183,7 @@
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
- public void onDrawFrame(GL10 glUnused)
+ public void doOnDrawFrame(GL10 glUnused)
{
// Set the viewport
GLES20.glViewport(0, 0, mWidth, mHeight);
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererOneProgramTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererOneProgramTest.java
index 3aceeaa..dff3adb 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererOneProgramTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererOneProgramTest.java
@@ -17,14 +17,14 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
import android.util.Log;
public class RendererOneProgramTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+ public RendererOneProgramTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -35,5 +35,6 @@
int mProgramTwo = GLES20.glCreateProgram();
GLES20.glAttachShader(mProgram, mProgramTwo);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererOneShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererOneShaderTest.java
index 83f7f43..1c88854 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererOneShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererOneShaderTest.java
@@ -23,6 +23,7 @@
import android.opengl.GLES20;
+import java.util.concurrent.CountDownLatch;
public class RendererOneShaderTest extends RendererBase {
@@ -37,8 +38,12 @@
+ " gl_FragColor = vec4 (0.63671875, 0.76953125, 0.22265625, 1.0); \n"
+ "} \n";
+ public RendererOneShaderTest(CountDownLatch latch) {
+ super(latch);
+ }
+
@Override
- public void onDrawFrame(GL10 gl) {
+ public void doOnDrawFrame(GL10 gl) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
GLES20.glUseProgram(mProgram);
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererSevenShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererSevenShaderTest.java
index b225572..4338d59 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererSevenShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererSevenShaderTest.java
@@ -17,12 +17,13 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
public class RendererSevenShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+
+ public RendererSevenShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -35,5 +36,6 @@
GLES20.glAttachShader(mProgram, shaderOne);
GLES20.glAttachShader(mProgram, shaderTwo);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererSixShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererSixShaderTest.java
index 989bd7f..e998448 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererSixShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererSixShaderTest.java
@@ -17,12 +17,13 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
public class RendererSixShaderTest extends RendererBase {
- @Override
- public void onDrawFrame(GL10 gl) {
+
+ public RendererSixShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -38,5 +39,6 @@
int[] shaders = new int[10];
GLES20.glGetAttachedShaders(mProgram, 10, mShaderCount, 0, shaders, 0);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererTenShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererTenShaderTest.java
index 0d8e86e..5879ddc 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererTenShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererTenShaderTest.java
@@ -17,15 +17,14 @@
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-
+import java.util.concurrent.CountDownLatch;
import android.opengl.GLES20;
public class RendererTenShaderTest extends RendererBase {
private String fragmentShaderCode = Shaders.successfulcompile_frag;
- @Override
- public void onDrawFrame(GL10 gl) {
-
+ public RendererTenShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -38,5 +37,6 @@
GLES20.glLinkProgram(mProgram);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererThreeShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererThreeShaderTest.java
index 430c1a0..8064904 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererThreeShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererThreeShaderTest.java
@@ -17,7 +17,7 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -36,8 +36,13 @@
+ "void main(){ \n"
+ " gl_FragColor = vec4 (0.63671875, 0.76953125, 0.22265625, 1.0); \n"
+ "} \n";
+
+ public RendererThreeShaderTest(CountDownLatch latch) {
+ super(latch);
+ }
+
@Override
- public void onDrawFrame(GL10 gl) {
+ public void doOnDrawFrame(GL10 gl) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
GLES20.glUseProgram(mProgram);
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java
index 5d0d73d..a3dab8e 100755
--- a/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java
@@ -15,6 +15,7 @@
*/
package android.opengl.cts;
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -23,9 +24,8 @@
public class RendererTwelveShaderTest extends RendererBase {
private String fragmentShaderCode = Shaders.successfulcompile_frag;
- @Override
- public void onDrawFrame(GL10 gl) {
-
+ public RendererTwelveShaderTest(CountDownLatch latch) {
+ super(latch);
}
@Override
@@ -39,5 +39,6 @@
GLES20.glLinkProgram(mProgram);
mError = GLES20.glGetError();
+ mLatch.countDown();
}
}
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererTwoShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererTwoShaderTest.java
index 53d90af..99b3e75 100644
--- a/tests/tests/opengl/src/android/opengl/cts/RendererTwoShaderTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/RendererTwoShaderTest.java
@@ -15,33 +15,26 @@
*/
package android.opengl.cts;
+import android.opengl.GLES20;
+
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.util.concurrent.CountDownLatch;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
-import android.opengl.GLES20;
-
public class RendererTwoShaderTest extends RendererBase {
private final String fragmentShaderCode = "precision mediump float; \n"
+ "void main(){ \n"
+ " gl_FragColor = vec4 (0.63671875, 0.76953125, 0.22265625, 1.0); \n"
+ "} \n";
- @Override
- public void onDrawFrame(GL10 gl) {
- GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
- GLES20.glUseProgram(mProgram);
- GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT,
- false, 12, floatBuffer);
- GLES20.glEnableVertexAttribArray(maPositionHandle);
- GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
- mShaderCount = new int[1];
- int[] shaders = new int[10];
- GLES20.glGetAttachedShaders(mProgram, 10, mShaderCount, 0, shaders, 0);
+ public RendererTwoShaderTest(CountDownLatch latch) {
+ super(latch);
}
+
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
@@ -50,18 +43,10 @@
int vertexShaderOne = 9999;
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
mProgram = GLES20.glCreateProgram();
+ // some driver crashes instead of returning error.
GLES20.glAttachShader(mProgram, vertexShaderOne);
mError = GLES20.glGetError();
- GLES20.glAttachShader(mProgram, fragmentShader);
- GLES20.glLinkProgram(mProgram);
- int[] linkStatus = new int[1];
- GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linkStatus, 0);
- mShaderCount = new int[1];
- int[] shaders = new int[10];
- GLES20.glGetAttachedShaders(mProgram, 10, mShaderCount, 0, shaders, 0);
- if (linkStatus[0] != GLES20.GL_TRUE) {
- //do nothing
- }
+ mLatch.countDown();
}
public void initShapes(){