1ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/* 2ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Copyright (C) 2013 The Android Open Source Project 3ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 4ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Licensed under the Apache License, Version 2.0 (the "License"); 5ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * you may not use this file except in compliance with the License. 6ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * You may obtain a copy of the License at 7ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 8ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * http://www.apache.org/licenses/LICENSE-2.0 9ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 10ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Unless required by applicable law or agreed to in writing, software 11ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * distributed under the License is distributed on an "AS IS" BASIS, 12ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * See the License for the specific language governing permissions and 14ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * limitations under the License. 15ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray */ 16ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 17ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murraypackage android.support.v8.renderscript; 18ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 19ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.lang.reflect.Method; 20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.util.ArrayList; 21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass ScriptGroupThunker extends ScriptGroup { 23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.ScriptGroup mN; 24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.ScriptGroup getNObj() { 26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mN; 27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ScriptGroupThunker(int id, RenderScript rs) { 30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray super(id, rs); 31ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void setInput(Script.KernelID s, Allocation a) { 34ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker at = (AllocationThunker) a; 35d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 36d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray mN.setInput(s.mN, at.getNObj()); 37d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 38d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 39d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 41ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 42ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void setOutput(Script.KernelID s, Allocation a) { 43ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray AllocationThunker at = (AllocationThunker) a; 44d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 45d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray mN.setOutput(s.mN, at.getNObj()); 46d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 47d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 48d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 51ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void execute() { 52d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 53d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray mN.execute(); 54d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 55d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 56d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public static final class Builder { 61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.ScriptGroup.Builder bN; 63ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScript mRS; 64ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray Builder(RenderScript rs) { 66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker) rs; 67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mRS = rs; 68d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 69d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray bN = new android.renderscript.ScriptGroup.Builder(rst.mN); 70d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 71d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 72d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 73ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Builder addKernel(Script.KernelID k) { 76d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 77d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray bN.addKernel(k.mN); 78d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 79d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 80d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return this; 82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 83ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 84ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Builder addConnection(Type t, Script.KernelID from, Script.FieldID to) { 85ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = (TypeThunker) t; 86d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 87d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray bN.addConnection(tt.getNObj(), from.mN, to.mN); 88d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 89d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 90d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return this; 92ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 93ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 94ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Builder addConnection(Type t, Script.KernelID from, Script.KernelID to) { 95ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray TypeThunker tt = (TypeThunker) t; 96d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 97d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray bN.addConnection(tt.getNObj(), from.mN, to.mN); 98d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 99d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 100d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 101ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return this; 102ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 103ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 104ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public ScriptGroupThunker create() { 107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ScriptGroupThunker sg = new ScriptGroupThunker(0, mRS); 108d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 109d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray sg.mN = bN.create(); 110d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 111d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 112d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 113ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return sg; 114ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 115ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 116ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 117ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 118ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray} 119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 121