diff options
-rw-r--r-- | libs/hwui/TextureCache.cpp | 4 | ||||
-rw-r--r-- | tests/HwAccelerationTest/AndroidManifest.xml | 10 | ||||
-rw-r--r-- | tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png | bin | 0 -> 45781 bytes | |||
-rw-r--r-- | tests/HwAccelerationTest/res/drawable/sunset3.png | bin | 0 -> 45781 bytes | |||
-rw-r--r-- | tests/HwAccelerationTest/src/com/google/android/test/hwui/BitmapsAlphaActivity.java | 82 |
5 files changed, 95 insertions, 1 deletions
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp index 3f9698d..2e8a8be 100644 --- a/libs/hwui/TextureCache.cpp +++ b/libs/hwui/TextureCache.cpp @@ -149,9 +149,11 @@ void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture, bool rege GL_RGB, GL_UNSIGNED_SHORT_5_6_5, bitmap->getPixels()); break; case SkBitmap::kARGB_8888_Config: - texture->blend = !bitmap->isOpaque(); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bitmap->rowBytesAsPixels(), texture->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, bitmap->getPixels()); + // Do this after calling getPixels() to make sure Skia's deferred + // decoding happened + texture->blend = !bitmap->isOpaque(); break; default: break; diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index 775dc24..564f13e 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -59,6 +59,16 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + + <activity + android:name="BitmapsAlphaActivity" + android:label="_BitmapsAlpha" + android:theme="@android:style/Theme.Translucent.NoTitleBar"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> <activity android:name="BitmapsRectActivity" diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png b/tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png Binary files differnew file mode 100644 index 0000000..6508b27 --- /dev/null +++ b/tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png diff --git a/tests/HwAccelerationTest/res/drawable/sunset3.png b/tests/HwAccelerationTest/res/drawable/sunset3.png Binary files differnew file mode 100644 index 0000000..6508b27 --- /dev/null +++ b/tests/HwAccelerationTest/res/drawable/sunset3.png diff --git a/tests/HwAccelerationTest/src/com/google/android/test/hwui/BitmapsAlphaActivity.java b/tests/HwAccelerationTest/src/com/google/android/test/hwui/BitmapsAlphaActivity.java new file mode 100644 index 0000000..f6fd8fe --- /dev/null +++ b/tests/HwAccelerationTest/src/com/google/android/test/hwui/BitmapsAlphaActivity.java @@ -0,0 +1,82 @@ +/* + * 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.google.android.test.hwui; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.os.Bundle; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; + +@SuppressWarnings({"UnusedDeclaration"}) +public class BitmapsAlphaActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final BitmapsView view = new BitmapsView(this); + final FrameLayout layout = new FrameLayout(this); + layout.addView(view, new FrameLayout.LayoutParams(480, 800, Gravity.CENTER)); + setContentView(layout); + } + + static class BitmapsView extends View { + private Paint mBitmapPaint; + private final Bitmap mBitmap1; + private final Bitmap mBitmap2; + private Bitmap mBitmap3; + + BitmapsView(Context c) { + super(c); + + Log.d("OpenGLRenderer", "Loading sunset1, default options"); + mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); + Log.d("OpenGLRenderer", "Loading sunset2, default options"); + mBitmap2 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset2); + Log.d("OpenGLRenderer", "Loading sunset3, forcing ARGB-8888"); + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inPreferredConfig = Bitmap.Config.ARGB_8888; + mBitmap3 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset3, opts); + Log.d("OpenGLRenderer", " has bitmap alpha? " + mBitmap3.hasAlpha()); + + mBitmapPaint = new Paint(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + Log.d("OpenGLRenderer", "================= Draw"); + + canvas.translate(120.0f, 50.0f); + canvas.drawBitmap(mBitmap1, 0.0f, 0.0f, mBitmapPaint); + + canvas.translate(0.0f, mBitmap1.getHeight()); + canvas.translate(0.0f, 25.0f); + canvas.drawBitmap(mBitmap2, 0.0f, 0.0f, null); + + canvas.translate(0.0f, mBitmap2.getHeight()); + canvas.translate(0.0f, 25.0f); + canvas.drawBitmap(mBitmap3, 0.0f, 0.0f, null); + } + } +} |