diff options
author | Romain Guy <romainguy@android.com> | 2010-10-01 00:25:02 -0700 |
---|---|---|
committer | Romain Guy <romainguy@android.com> | 2010-10-01 00:25:02 -0700 |
commit | 0bb5667b4ef91fefd0500fae0186789d15d54e0e (patch) | |
tree | 92dfccfc1a428b6124e2a41061cde6a403976cd1 /tests/HwAccelerationTest | |
parent | 557ed7aa290497fb5764acb3f577edbe78bad5b9 (diff) | |
download | frameworks_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')
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); } |