157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk/* 257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Copyright (C) 2012 The Android Open Source Project 357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * 457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License"); 557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * you may not use this file except in compliance with the License. 657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * You may obtain a copy of the License at 757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * 857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * http://www.apache.org/licenses/LICENSE-2.0 957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * 1057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software 1157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS, 1257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * See the License for the specific language governing permissions and 1457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * limitations under the License. 1557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk */ 1657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 1757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukpackage com.android.testapp; 1857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 1957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RSSurfaceView; 2057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RenderScript; 2157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RenderScriptGL; 2257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 2357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.content.Context; 2457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.content.res.Resources; 2557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.util.Log; 2657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.Surface; 2757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.SurfaceHolder; 2857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.SurfaceView; 2957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 3057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukpublic class SimpleAppView extends RSSurfaceView { 3157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 3257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk public SimpleAppView(Context context) { 3357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk super(context); 3457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk } 3557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 3657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk private RenderScriptGL mRS; 3757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk SimpleAppRS mRender; 3857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 3957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 4057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk super.surfaceChanged(holder, format, w, h); 4157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk if (mRS == null) { 4257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); 4357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk sc.setDepth(16, 24); 44b23b58ad343ccbf8835c7067698a60fc6bc1a870Alex Sakhartchouk sc.setSamples(1, 2, 1); 4557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRS = createRenderScriptGL(sc); 4657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRS.setSurface(holder, w, h); 4757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRender = new SimpleAppRS(); 4857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRender.init(mRS, getResources(), w, h); 4957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk } 5057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk } 5157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 5257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk @Override 5357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk protected void onDetachedFromWindow() { 5457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk if (mRS != null) { 5557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRender = null; 5657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk mRS = null; 5757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk destroyRenderScriptGL(); 5857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk } 5957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk } 6057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk} 6157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 6257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk 63