RsBenchView.java revision c29a4442812d5f0e9f1af13b36cb6a806b6b46e0
16b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk/* 26b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * Copyright (C) 2008 The Android Open Source Project 36b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * 46b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 56b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * you may not use this file except in compliance with the License. 66b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * You may obtain a copy of the License at 76b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * 86b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 96b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * 106b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 116b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 126b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * See the License for the specific language governing permissions and 146b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk * limitations under the License. 156b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk */ 166b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 17c29a4442812d5f0e9f1af13b36cb6a806b6b46e0Alex Sakhartchoukpackage com.android.perftest; 186b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 196b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport java.io.Writer; 206b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport java.util.ArrayList; 216b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport java.util.concurrent.Semaphore; 226b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 236b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.renderscript.RSSurfaceView; 246b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.renderscript.RenderScript; 256b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.renderscript.RenderScriptGL; 266b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 276b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.content.Context; 286b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.content.res.Resources; 296b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.graphics.Bitmap; 306b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.graphics.drawable.BitmapDrawable; 316b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.graphics.drawable.Drawable; 326b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.os.Handler; 336b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.os.Message; 346b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.util.AttributeSet; 356b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.util.Log; 366b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.view.Surface; 376b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.view.SurfaceHolder; 386b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.view.SurfaceView; 396b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.view.KeyEvent; 406b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukimport android.view.MotionEvent; 416b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 426b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukpublic class RsBenchView extends RSSurfaceView { 436b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 446b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk public RsBenchView(Context context) { 456b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk super(context); 466b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 476b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 486b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk private RenderScriptGL mRS; 496b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk private RsBenchRS mRender; 506b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 516b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 526b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 536b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk super.surfaceChanged(holder, format, w, h); 546b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (mRS == null) { 556b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); 566b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk sc.setDepth(16, 24); 576b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS = createRenderScriptGL(sc); 586b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS.setSurface(holder, w, h); 596b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender = new RsBenchRS(); 606b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender.init(mRS, getResources(), w, h); 616b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 626b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 636b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 646b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 656b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk protected void onDetachedFromWindow() { 666b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (mRS != null) { 676b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS = null; 686b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk destroyRenderScriptGL(); 696b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 706b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 716b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 726b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 730857196107d55bae312c12b72b115d25d5fee4f9Alex Sakhartchouk public boolean onKeyDown(int keyCode, KeyEvent event) { 746b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk return super.onKeyDown(keyCode, event); 756b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 766b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 776b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 786b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 790857196107d55bae312c12b72b115d25d5fee4f9Alex Sakhartchouk public boolean onTouchEvent(MotionEvent ev) { 806b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk boolean ret = false; 816b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk int act = ev.getAction(); 826b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (act == ev.ACTION_DOWN) { 836b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender.onActionDown((int)ev.getX(), (int)ev.getY()); 846b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk ret = true; 856b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 866b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 876b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk return ret; 886b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 896b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk} 906b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 916b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 92