diff options
author | George Mount <mount@google.com> | 2013-05-09 13:30:39 -0700 |
---|---|---|
committer | George Mount <mount@google.com> | 2013-05-09 13:30:39 -0700 |
commit | caa77af0d12fa40418a342385bc47b8db6267e6c (patch) | |
tree | fde8041f08ed006d158ac4f41aed8fcee9418649 /src/com/android/gallery3d/ui | |
parent | b5530eae0732be37a7685e646c5dd9726dc73caf (diff) | |
download | android_packages_apps_Snap-caa77af0d12fa40418a342385bc47b8db6267e6c.tar.gz android_packages_apps_Snap-caa77af0d12fa40418a342385bc47b8db6267e6c.tar.bz2 android_packages_apps_Snap-caa77af0d12fa40418a342385bc47b8db6267e6c.zip |
Remove GL dependency on unused stencil buffers.
Bug 8884435
Change-Id: I8e7f0563a4a901953e3e2b14e35457b4fefe2e34
Diffstat (limited to 'src/com/android/gallery3d/ui')
-rw-r--r-- | src/com/android/gallery3d/ui/GLRootView.java | 9 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/GalleryEGLConfigChooser.java | 158 |
2 files changed, 5 insertions, 162 deletions
diff --git a/src/com/android/gallery3d/ui/GLRootView.java b/src/com/android/gallery3d/ui/GLRootView.java index 775e4a518..f00bd543c 100644 --- a/src/com/android/gallery3d/ui/GLRootView.java +++ b/src/com/android/gallery3d/ui/GLRootView.java @@ -94,9 +94,6 @@ public class GLRootView extends GLSurfaceView private int mFlags = FLAG_NEED_LAYOUT; private volatile boolean mRenderRequested = false; - private final GalleryEGLConfigChooser mEglConfigChooser = - new GalleryEGLConfigChooser(); - private final ArrayList<CanvasAnimation> mAnimations = new ArrayList<CanvasAnimation>(); @@ -123,7 +120,11 @@ public class GLRootView extends GLSurfaceView mFlags |= FLAG_INITIALIZED; setBackgroundDrawable(null); setEGLContextClientVersion(ApiHelper.HAS_GLES20_REQUIRED ? 2 : 1); - setEGLConfigChooser(mEglConfigChooser); + if (ApiHelper.USE_888_PIXEL_FORMAT) { + setEGLConfigChooser(8, 8, 8, 0, 0, 0); + } else { + setEGLConfigChooser(5, 6, 5, 0, 0, 0); + } setRenderer(this); if (ApiHelper.USE_888_PIXEL_FORMAT) { getHolder().setFormat(PixelFormat.RGB_888); diff --git a/src/com/android/gallery3d/ui/GalleryEGLConfigChooser.java b/src/com/android/gallery3d/ui/GalleryEGLConfigChooser.java deleted file mode 100644 index f7673bce5..000000000 --- a/src/com/android/gallery3d/ui/GalleryEGLConfigChooser.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2009 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.gallery3d.ui; - -import android.opengl.GLSurfaceView.EGLConfigChooser; - -import com.android.gallery3d.common.ApiHelper; - -import javax.microedition.khronos.egl.EGL10; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.egl.EGLDisplay; - -/* - * The code is copied/adapted from - * <code>android.opengl.GLSurfaceView.BaseConfigChooser</code>. Here we try to - * choose a configuration that support RGBA_8888 format and if possible, - * with stencil buffer, but is not required. - */ -class GalleryEGLConfigChooser implements EGLConfigChooser { - - private static final String TAG = "GalleryEGLConfigChooser"; - - private final int mConfigSpec565[] = new int[] { - EGL10.EGL_RED_SIZE, 5, - EGL10.EGL_GREEN_SIZE, 6, - EGL10.EGL_BLUE_SIZE, 5, - EGL10.EGL_ALPHA_SIZE, 0, - EGL10.EGL_NONE - }; - - private final int mConfigSpec888[] = new int[] { - EGL10.EGL_RED_SIZE, 8, - EGL10.EGL_GREEN_SIZE, 8, - EGL10.EGL_BLUE_SIZE, 8, - EGL10.EGL_ALPHA_SIZE, 0, - EGL10.EGL_NONE - }; - - private final int mConfig2Spec565[] = new int[] { - EGL10.EGL_RED_SIZE, 5, - EGL10.EGL_GREEN_SIZE, 6, - EGL10.EGL_BLUE_SIZE, 5, - EGL10.EGL_ALPHA_SIZE, 0, - EGL10.EGL_RENDERABLE_TYPE, 4, /* EGL_OPENGL_ES2_BIT */ - EGL10.EGL_NONE - }; - - private final int mConfig2Spec888[] = new int[] { - EGL10.EGL_RED_SIZE, 8, - EGL10.EGL_GREEN_SIZE, 8, - EGL10.EGL_BLUE_SIZE, 8, - EGL10.EGL_ALPHA_SIZE, 0, - EGL10.EGL_RENDERABLE_TYPE, 4, /* EGL_OPENGL_ES2_BIT */ - EGL10.EGL_NONE - }; - - @Override - public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { - int[] numConfig = new int[1]; - - int configSpec[]; - if (ApiHelper.HAS_GLES20_REQUIRED) { - configSpec = ApiHelper.USE_888_PIXEL_FORMAT ? mConfig2Spec888 : mConfig2Spec565; - } else { - configSpec = ApiHelper.USE_888_PIXEL_FORMAT ? mConfigSpec888 : mConfigSpec565; - } - if (!egl.eglChooseConfig(display, configSpec, null, 0, numConfig)) { - throw new RuntimeException("eglChooseConfig failed"); - } - - if (numConfig[0] <= 0) { - throw new RuntimeException("No configs match configSpec"); - } - - EGLConfig[] configs = new EGLConfig[numConfig[0]]; - if (!egl.eglChooseConfig(display, - configSpec, configs, configs.length, numConfig)) { - throw new RuntimeException(); - } - - return chooseConfig(egl, display, configs); - } - - private EGLConfig chooseConfig( - EGL10 egl, EGLDisplay display, EGLConfig configs[]) { - - EGLConfig result = null; - int minStencil = Integer.MAX_VALUE; - int value[] = new int[1]; - - // Because we need only one bit of stencil, try to choose a config that - // has stencil support but with smallest number of stencil bits. If - // none is found, choose any one. - for (int i = 0, n = configs.length; i < n; ++i) { - if (!ApiHelper.USE_888_PIXEL_FORMAT) { - if (egl.eglGetConfigAttrib( - display, configs[i], EGL10.EGL_RED_SIZE, value)) { - // Filter out ARGB 8888 configs. - if (value[0] == 8) continue; - } - } - if (egl.eglGetConfigAttrib( - display, configs[i], EGL10.EGL_STENCIL_SIZE, value)) { - if (value[0] == 0) continue; - if (value[0] < minStencil) { - minStencil = value[0]; - result = configs[i]; - } - } else { - throw new RuntimeException( - "eglGetConfigAttrib error: " + egl.eglGetError()); - } - } - if (result == null) result = configs[0]; - egl.eglGetConfigAttrib( - display, result, EGL10.EGL_STENCIL_SIZE, value); - logConfig(egl, display, result); - return result; - } - - private static final int[] ATTR_ID = { - EGL10.EGL_RED_SIZE, - EGL10.EGL_GREEN_SIZE, - EGL10.EGL_BLUE_SIZE, - EGL10.EGL_ALPHA_SIZE, - EGL10.EGL_DEPTH_SIZE, - EGL10.EGL_STENCIL_SIZE, - EGL10.EGL_CONFIG_ID, - EGL10.EGL_CONFIG_CAVEAT - }; - - private static final String[] ATTR_NAME = { - "R", "G", "B", "A", "D", "S", "ID", "CAVEAT" - }; - - private void logConfig(EGL10 egl, EGLDisplay display, EGLConfig config) { - int value[] = new int[1]; - StringBuilder sb = new StringBuilder(); - for (int j = 0; j < ATTR_ID.length; j++) { - egl.eglGetConfigAttrib(display, config, ATTR_ID[j], value); - sb.append(ATTR_NAME[j] + value[0] + " "); - } - Log.i(TAG, "Config chosen: " + sb.toString()); - } -} |