RsBenchView.java revision 6b5222dd5334ebd8c8b641fa507776714505d198
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 176b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchoukpackage com.android.samples; 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 //setFocusable(true); 476b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 486b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 496b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk private RenderScriptGL mRS; 506b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk private RsBenchRS mRender; 516b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 526b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 536b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 546b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk super.surfaceChanged(holder, format, w, h); 556b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (mRS == null) { 566b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); 576b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk sc.setDepth(16, 24); 586b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS = createRenderScriptGL(sc); 596b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS.setSurface(holder, w, h); 606b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender = new RsBenchRS(); 616b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender.init(mRS, getResources(), w, h); 626b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 636b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 646b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 656b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 666b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk protected void onDetachedFromWindow() { 676b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (mRS != null) { 686b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRS = null; 696b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk destroyRenderScriptGL(); 706b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 716b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 726b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 736b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 746b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk public boolean onKeyDown(int keyCode, KeyEvent event) 756b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk { 766b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk // break point at here 776b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk // this method doesn't work when 'extends View' include 'extends ScrollView'. 786b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk return super.onKeyDown(keyCode, event); 796b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 806b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 816b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 826b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk @Override 836b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk public boolean onTouchEvent(MotionEvent ev) 846b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk { 856b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk boolean ret = false; 866b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk int act = ev.getAction(); 876b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk if (act == ev.ACTION_DOWN) { 886b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk mRender.onActionDown((int)ev.getX(), (int)ev.getY()); 896b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk ret = true; 906b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 916b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 926b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk return ret; 936b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk } 946b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk} 956b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 966b5222dd5334ebd8c8b641fa507776714505d198Alex Sakhartchouk 97