ProgramFragment.java revision b4d7bb6872f523b4318144202e119766ed9054ed
122534176fb5c1257130ef4ee589739ca42766a32Jason Sams/* 222534176fb5c1257130ef4ee589739ca42766a32Jason Sams * Copyright (C) 2008 The Android Open Source Project 322534176fb5c1257130ef4ee589739ca42766a32Jason Sams * 422534176fb5c1257130ef4ee589739ca42766a32Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 522534176fb5c1257130ef4ee589739ca42766a32Jason Sams * you may not use this file except in compliance with the License. 622534176fb5c1257130ef4ee589739ca42766a32Jason Sams * You may obtain a copy of the License at 722534176fb5c1257130ef4ee589739ca42766a32Jason Sams * 822534176fb5c1257130ef4ee589739ca42766a32Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 922534176fb5c1257130ef4ee589739ca42766a32Jason Sams * 1022534176fb5c1257130ef4ee589739ca42766a32Jason Sams * Unless required by applicable law or agreed to in writing, software 1122534176fb5c1257130ef4ee589739ca42766a32Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1222534176fb5c1257130ef4ee589739ca42766a32Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1322534176fb5c1257130ef4ee589739ca42766a32Jason Sams * See the License for the specific language governing permissions and 1422534176fb5c1257130ef4ee589739ca42766a32Jason Sams * limitations under the License. 1522534176fb5c1257130ef4ee589739ca42766a32Jason Sams */ 1622534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1722534176fb5c1257130ef4ee589739ca42766a32Jason Samspackage android.renderscript; 1822534176fb5c1257130ef4ee589739ca42766a32Jason Sams 1922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 2022534176fb5c1257130ef4ee589739ca42766a32Jason Samsimport android.util.Config; 2122534176fb5c1257130ef4ee589739ca42766a32Jason Samsimport android.util.Log; 2222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 2322534176fb5c1257130ef4ee589739ca42766a32Jason Sams 2422534176fb5c1257130ef4ee589739ca42766a32Jason Sams/** 2522534176fb5c1257130ef4ee589739ca42766a32Jason Sams * @hide 2622534176fb5c1257130ef4ee589739ca42766a32Jason Sams * 2722534176fb5c1257130ef4ee589739ca42766a32Jason Sams **/ 287e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Samspublic class ProgramFragment extends Program { 2922534176fb5c1257130ef4ee589739ca42766a32Jason Sams ProgramFragment(int id, RenderScript rs) { 307e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams super(id, rs); 3122534176fb5c1257130ef4ee589739ca42766a32Jason Sams } 3222534176fb5c1257130ef4ee589739ca42766a32Jason Sams 33b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public static class Builder extends BaseProgramBuilder { 34b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public Builder(RenderScript rs) { 357e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams super(rs); 367e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 377e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 387e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams public ProgramFragment create() { 397e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams mRS.validate(); 4067f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2]; 417e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams int idx = 0; 427e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 437e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams for (int i=0; i < mInputCount; i++) { 4467f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk tmp[idx++] = ProgramParam.INPUT.mID; 4506d69de78845659e6904ae4964e606a7f1a6a4a8Jason Sams tmp[idx++] = mInputs[i].getID(); 467e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 477e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams for (int i=0; i < mOutputCount; i++) { 4867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk tmp[idx++] = ProgramParam.OUTPUT.mID; 4906d69de78845659e6904ae4964e606a7f1a6a4a8Jason Sams tmp[idx++] = mOutputs[i].getID(); 507e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 517e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams for (int i=0; i < mConstantCount; i++) { 5267f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk tmp[idx++] = ProgramParam.CONSTANT.mID; 5306d69de78845659e6904ae4964e606a7f1a6a4a8Jason Sams tmp[idx++] = mConstants[i].getID(); 547e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 5567f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk for (int i=0; i < mTextureCount; i++) { 5667f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID; 5767f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk tmp[idx++] = mTextureTypes[i].mID; 5867f2e442a31b8395e3c1951f8e91139ec7f2be99Alex Sakhartchouk } 597e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams 60b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk int id = mRS.nProgramFragmentCreate(mShader, tmp); 617e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams ProgramFragment pf = new ProgramFragment(id, mRS); 627e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams initProgram(pf); 637e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams return pf; 647e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 657e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams } 6622534176fb5c1257130ef4ee589739ca42766a32Jason Sams} 6722534176fb5c1257130ef4ee589739ca42766a32Jason Sams 6822534176fb5c1257130ef4ee589739ca42766a32Jason Sams 6922534176fb5c1257130ef4ee589739ca42766a32Jason Sams 70