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