Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package android.opengl.cts;
     17 
     18 import android.app.Activity;
     19 import android.content.Context;
     20 import android.opengl.GLSurfaceView;
     21 import android.opengl.GLSurfaceView.Renderer;
     22 import android.os.Bundle;
     23 import android.view.Window;
     24 import android.view.WindowManager;
     25 
     26 import java.lang.InterruptedException;
     27 import java.util.concurrent.CountDownLatch;
     28 import java.util.concurrent.TimeUnit;
     29 
     30 public class OpenGLES20ActivityOne extends Activity {
     31 
     32     public static final String EXTRA_VIEW_TYPE = "viewType";
     33     public static final String EXTRA_VIEW_INDEX = "viewIndex";
     34 
     35     OpenGLES20View view;
     36     Renderer mRenderer;
     37     int mRendererType;
     38     private CountDownLatch mLatch = new CountDownLatch(1);
     39 
     40     @Override
     41     public void onCreate(Bundle savedInstanceState) {
     42         super.onCreate(savedInstanceState);
     43         Window window = getWindow();
     44         window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
     45                 | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
     46                 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
     47                 | WindowManager.LayoutParams.FLAG_FULLSCREEN
     48                 | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
     49         int viewType = getIntent().getIntExtra(EXTRA_VIEW_TYPE, -1);
     50         int viewIndex = getIntent().getIntExtra(EXTRA_VIEW_INDEX, -1);
     51 
     52         view = new OpenGLES20View(this, viewType, viewIndex, mLatch);
     53         setContentView(view);
     54     }
     55 
     56     public int getNoOfAttachedShaders() {
     57         return ((RendererBase)mRenderer).mShaderCount[0];
     58     }
     59 
     60     public int glGetError() {
     61         return ((RendererBase)mRenderer).mError;
     62     }
     63 
     64     public String glGetInfoLog() {
     65         return ((RendererBase)mRenderer).mInfoLog;
     66     }
     67 
     68     public boolean waitForFrameDrawn() {
     69         boolean result = false;
     70         try {
     71             result = mLatch.await(10L, TimeUnit.SECONDS);
     72         } catch (InterruptedException e) {
     73             // just return false
     74         }
     75         return result;
     76     }
     77 
     78     @Override
     79     protected void onPause() {
     80         super.onPause();
     81         if (view != null) {
     82             view.onPause();
     83         }
     84     }
     85 
     86     @Override
     87     protected void onResume() {
     88         super.onResume();
     89         if (view != null) {
     90             view.onResume();
     91         }
     92     }
     93 
     94     class OpenGLES20View extends GLSurfaceView {
     95 
     96         public OpenGLES20View(Context context, int type, int index, CountDownLatch latch) {
     97             super(context);
     98             setEGLContextClientVersion(2);
     99 
    100             if (type == Constants.SHADER) {
    101                 if (index == 1) {
    102                     mRenderer = new RendererOneShaderTest(latch);
    103                 } else if(index == 2) {
    104                     mRenderer = new RendererTwoShaderTest(latch);
    105                 } else if(index == 3) {
    106                     mRenderer = new RendererThreeShaderTest(latch);
    107                 } else if(index == 4) {
    108                     mRenderer = new RendererFourShaderTest(latch);
    109                 } else if(index == 5) {
    110                     mRenderer = new RendererFiveShaderTest(latch);
    111                 } else if(index == 6) {
    112                     mRenderer = new RendererSixShaderTest(latch);
    113                 } else if(index == 7) {
    114                     mRenderer = new RendererSevenShaderTest(latch);
    115                 } else if(index == 8) {
    116                     mRenderer = new RendererEightShaderTest(latch);
    117                 } else if(index == 9) {
    118                     mRenderer = new RendererNineShaderTest(latch);
    119                 } else if(index == 10) {
    120                     mRenderer = new RendererTenShaderTest(latch);
    121                 } else if(index == 11) {
    122                     mRenderer = new RendererElevenShaderTest(latch);
    123                 } else if(index == 12) {
    124                     mRenderer = new RendererTwelveShaderTest(latch);
    125                 } else {
    126                     throw new RuntimeException();
    127                 }
    128             } else if (type == Constants.PROGRAM) {
    129                 if (index == 1) {
    130                     mRenderer = new RendererOneProgramTest(latch);
    131                 }
    132             }
    133             setRenderer(mRenderer);
    134         }
    135 
    136         @Override
    137         public void setEGLContextClientVersion(int version) {
    138             super.setEGLContextClientVersion(version);
    139         }
    140 
    141     }
    142 }
    143