rsScriptC.h revision 334ea0c98f051b5a6b85bc616c93304651854298
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_SCRIPT_C_H 18d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define ANDROID_RS_SCRIPT_C_H 19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsScript.h" 21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 22d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "RenderScriptEnv.h" 23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 24d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato#include <utils/KeyedVector.h> 25d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 26ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevichstruct ACCscript; 27ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich 28d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 29d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace android { 30d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace renderscript { 31d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 32ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 34d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsclass ScriptC : public Script 35d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 36d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 37c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams typedef int (*RunScript_t)(uint32_t launchIndex); 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ScriptC(); 40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams virtual ~ScriptC(); 41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 423a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams struct Program_t { 433a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams const char * mScriptText; 443a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams uint32_t mScriptTextLength; 45d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 463a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 47928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams int mVersionMajor; 48928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams int mVersionMinor; 49d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 50c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams RunScript_t mScript; 513a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams }; 523a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 533a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams Program_t mProgram; 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 55ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich ACCscript* mAccScript; 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 573a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams virtual bool run(Context *, uint32_t launchID); 58d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 59d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 60ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevichclass ScriptCState 61d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 62d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 63d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ScriptCState(); 64d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ~ScriptCState(); 65d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6639ddc950c9064129ead5de04b200106c0659f937Jason Sams ACCscript* mAccScript; 673a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 683a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams ScriptC::Program_t mProgram; 69da423d8479a2cefb456a03d7dc550e74e473acf4Jason Sams Script::Enviroment_t mEnviroment; 70d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 7143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams ObjectBaseRef<const Type> mConstantBufferTypes[MAX_SCRIPT_BANKS]; 72fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams String8 mSlotNames[MAX_SCRIPT_BANKS]; 73334ea0c98f051b5a6b85bc616c93304651854298Jason Sams bool mSlotWritable[MAX_SCRIPT_BANKS]; 74d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 75d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void clear(); 763eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams void runCompiler(Context *rsc); 77d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato void appendVarDefines(String8 *str); 7843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams void appendTypes(String8 *str); 7954440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams 8054440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams struct SymbolTable_t { 8154440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams const char * mName; 8254440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams void * mPtr; 83c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams const char * mRet; 84c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams const char * mParam; 8554440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams }; 8654440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams static SymbolTable_t gSyms[]; 8754440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams static const SymbolTable_t * lookupSymbol(const char *); 88764205c19420256ccc05df2a1669a7b69c5daaf9Jason Sams static void appendDecls(String8 *str); 89d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato 90d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato KeyedVector<String8,int> mInt32Defines; 91d7b3774da62d3c70cc7e8cf549967a1c823501e6Joe Onorato KeyedVector<String8,float> mFloatDefines; 92d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 93d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 94d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 95d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 96d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 97d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#endif 98d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 99d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 100d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 101