summaryrefslogtreecommitdiffstats
path: root/tests/HwAccelerationTest
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-10-01 00:25:02 -0700
committerRomain Guy <romainguy@android.com>2010-10-01 00:25:02 -0700
commit0bb5667b4ef91fefd0500fae0186789d15d54e0e (patch)
tree92dfccfc1a428b6124e2a41061cde6a403976cd1 /tests/HwAccelerationTest
parent557ed7aa290497fb5764acb3f577edbe78bad5b9 (diff)
downloadframeworks_base-0bb5667b4ef91fefd0500fae0186789d15d54e0e.zip
frameworks_base-0bb5667b4ef91fefd0500fae0186789d15d54e0e.tar.gz
frameworks_base-0bb5667b4ef91fefd0500fae0186789d15d54e0e.tar.bz2
Fix INVALID_OPERATION error with layers rendering.
This change is a workaround for a driver bug that causes an INVALID_OPERATION to be thrown on every glCopyTexSubImage() call. This change also adds a new test for gradients local matrices. Change-Id: I41b7437481026702d0a3a9677f099b4557c0a84e
Diffstat (limited to 'tests/HwAccelerationTest')
-rw-r--r--tests/HwAccelerationTest/AndroidManifest.xml9
-rw-r--r--tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java108
-rw-r--r--tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java7
-rw-r--r--tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java1
4 files changed, 124 insertions, 1 deletions
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index af71a0f..4be41b9 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -164,6 +164,15 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
+
+ <activity
+ android:name="GradientsActivity"
+ android:label="_Gradients">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
<activity
android:name="ShadersActivity"
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java
new file mode 100644
index 0000000..b70f3a9
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2010 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 com.android.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.LinearGradient;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.Shader;
+import android.os.Bundle;
+import android.view.View;
+
+@SuppressWarnings({"UnusedDeclaration"})
+public class GradientsActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(new ShadersView(this));
+ }
+
+ static class ShadersView extends View {
+ private final Paint mPaint;
+ private final float mDrawWidth;
+ private final float mDrawHeight;
+ private final LinearGradient mGradient;
+ private final Matrix mMatrix;
+
+ ShadersView(Context c) {
+ super(c);
+
+ mDrawWidth = 200;
+ mDrawHeight = 200;
+
+ mGradient = new LinearGradient(0, 0, 0, 1, 0xFF000000, 0, Shader.TileMode.CLAMP);
+ mMatrix = new Matrix();
+
+ mPaint = new Paint();
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ canvas.drawRGB(255, 255, 255);
+
+ // Gradients
+ canvas.save();
+ float top = 40.0f;
+ float right = 40.0f + mDrawWidth;
+ float left = 40.0f;
+ float bottom = 40.0f + mDrawHeight;
+
+ mPaint.setShader(mGradient);
+
+ mMatrix.setScale(1, mDrawWidth);
+ mMatrix.postRotate(90);
+ mMatrix.postTranslate(right, top);
+ mGradient.setLocalMatrix(mMatrix);
+ canvas.drawRect(right - mDrawWidth, top, right, top + mDrawHeight, mPaint);
+
+ top += 40.0f + mDrawHeight;
+ bottom += 40.0f + mDrawHeight;
+
+ mMatrix.setScale(1, mDrawHeight);
+ mMatrix.postTranslate(left, top);
+ mGradient.setLocalMatrix(mMatrix);
+ canvas.drawRect(left, top, right, top + mDrawHeight, mPaint);
+
+ left += 40.0f + mDrawWidth;
+ right += 40.0f + mDrawWidth;
+ top -= 40.0f + mDrawHeight;
+ bottom -= 40.0f + mDrawHeight;
+
+ mMatrix.setScale(1, mDrawHeight);
+ mMatrix.postRotate(180);
+ mMatrix.postTranslate(left, bottom);
+ mGradient.setLocalMatrix(mMatrix);
+ canvas.drawRect(left, bottom - mDrawHeight, right, bottom, mPaint);
+
+ top += 40.0f + mDrawHeight;
+ bottom += 40.0f + mDrawHeight;
+
+ mMatrix.setScale(1, mDrawWidth);
+ mMatrix.postRotate(-90);
+ mMatrix.postTranslate(left, top);
+ mGradient.setLocalMatrix(mMatrix);
+ canvas.drawRect(left, top, left + mDrawWidth, bottom, mPaint);
+
+ canvas.restore();
+ }
+ }
+}
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
index 9c8e7ec..2db1071 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
@@ -77,8 +77,13 @@ public class ShadersActivity extends Activity {
m2.setScale(0.5f, 0.5f);
mScaledShader.setLocalMatrix(m2);
- mHorGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth, 0.0f,
+ mHorGradient = new LinearGradient(0.0f, 0.0f, 1.0f, 0.0f,
Color.RED, Color.GREEN, Shader.TileMode.CLAMP);
+ Matrix m3 = new Matrix();
+ m3.setScale(mDrawHeight, 1.0f);
+ m3.postRotate(-90.0f);
+ m3.postTranslate(0.0f, mDrawHeight);
+ mHorGradient.setLocalMatrix(m3);
mDiagGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth / 1.5f, mDrawHeight,
Color.BLUE, Color.MAGENTA, Shader.TileMode.CLAMP);
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
index f47b00f..763169a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
@@ -87,6 +87,7 @@ public class TransparentListActivity extends Activity {
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
list.setCacheColorHint(0);
+ list.setVerticalFadingEdgeEnabled(true);
registerForContextMenu(list);
}