1d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams/* 2d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Copyright (C) 2009 The Android Open Source Project 3d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 4d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * you may not use this file except in compliance with the License. 6d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * You may obtain a copy of the License at 7d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 8d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * 10d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * Unless required by applicable law or agreed to in writing, software 11d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * See the License for the specific language governing permissions and 14d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams * limitations under the License. 15d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams */ 16d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 17d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#ifndef ANDROID_RS_PROGRAM_FRAGMENT_H 18d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define ANDROID_RS_PROGRAM_FRAGMENT_H 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsProgram.h" 21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 22d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace android { 24d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace renderscript { 25d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 269bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Samsclass ProgramFragmentState; 27d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 28ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukclass ProgramFragment : public Program { 29d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 307e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams ProgramFragment(Context *rsc, const char * shaderText, 317e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams uint32_t shaderLength, const uint32_t * params, 327e5ab3b177b10fee304d011b3a4b9ee03e2b18b5Jason Sams uint32_t paramLength); 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams virtual ~ProgramFragment(); 34d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 35407cae950325682a56fe5373dd218a666da901efAlex Sakhartchouk virtual void setup(Context *, ProgramFragmentState *); 36d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 37aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk virtual void serialize(OStream *stream) const; 38aae74ad6144470c66e72b075ac3afeddb186fa98Alex Sakhartchouk virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_FRAGMENT; } 39aa7d2884cb563f87294003981e03e37a1abeb961Alex Sakhartchouk static ProgramFragment *createFromStream(Context *rsc, IStream *stream); 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 41b89aaacb2ca9d062e0a17a32e3d4dbf3f6948a17Alex Sakhartchouk void setConstantColor(Context *, float, float, float, float); 42442a647424e6537e94341654e3ae5d52efd84862Jason Sams 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsprotected: 44442a647424e6537e94341654e3ae5d52efd84862Jason Sams float mConstantColor[4]; 45caaac0f8271ddc34c1163cb45b4026c014b3ec12Alex Sakhartchouk int32_t mTextureUniformIndexStart; 46d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 48ed9f210568082dd6d1d8a0c92c693d574d87d545Alex Sakhartchoukclass ProgramFragmentState { 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 50d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ProgramFragmentState(); 51d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ~ProgramFragmentState(); 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 53d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ProgramFragment *mPF; 54f603d212552485c634e25f3556f847dc2b022bd5Jason Sams void init(Context *rsc); 5561f08d6fa7c7657e9fbcd17e9a1c5b9114bb3844Jason Sams void deinit(Context *rsc); 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 579c54bdbf458e3c9433d237ae71cf47c4ec47d852Jason Sams ObjectBaseRef<ProgramFragment> mDefault; 583eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams Vector<ProgramFragment *> mPrograms; 599bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams 609bee51c42eb8c3daffe7d6fa483edbb1689b94d2Jason Sams ObjectBaseRef<ProgramFragment> mLast; 61d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 62d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 63d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 64d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 65d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#endif 66d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 67d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 70