rsScriptC.h revision c97bb8844f9887d915d3c9e4b3582bd761357f98
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 24ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevichstruct ACCscript; 25ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich 26d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// --------------------------------------------------------------------------- 27d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace android { 28d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace renderscript { 29d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 30ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich 31d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 32d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsclass ScriptC : public Script 33d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 34d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 35c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams typedef int (*RunScript_t)(uint32_t launchIndex); 36d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 37d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ScriptC(); 38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams virtual ~ScriptC(); 39d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 403a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams struct Program_t { 413a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams const char * mScriptText; 423a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams uint32_t mScriptTextLength; 43d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 443a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 45928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams int mVersionMajor; 46928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams int mVersionMinor; 47d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 48c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams RunScript_t mScript; 493a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams }; 503a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 513a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams Program_t mProgram; 52d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 53ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevich ACCscript* mAccScript; 54d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 553a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams virtual bool run(Context *, uint32_t launchID); 56d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 57d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 58ec5a20bf2b9f563f9f6a4bde4d8cbbe13598fd25Jack Palevichclass ScriptCState 59d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{ 60d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic: 61d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ScriptCState(); 62d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams ~ScriptCState(); 63d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 6439ddc950c9064129ead5de04b200106c0659f937Jason Sams ACCscript* mAccScript; 653a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams 663a833d8e0f5e1f09a9e276d0f8faf18f7ab86e27Jason Sams ScriptC::Program_t mProgram; 67da423d8479a2cefb456a03d7dc550e74e473acf4Jason Sams Script::Enviroment_t mEnviroment; 68d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams Vector<const Type *> mConstantBufferTypes; 70d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 71d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams void clear(); 723eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams void runCompiler(Context *rsc); 7354440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams 7454440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams struct SymbolTable_t { 7554440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams const char * mName; 7654440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams void * mPtr; 77c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams const char * mRet; 78c97bb8844f9887d915d3c9e4b3582bd761357f98Jason Sams const char * mParam; 7954440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams }; 8054440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams static SymbolTable_t gSyms[]; 8154440a01a97144efb6a3106fc8e63152f47e97f9Jason Sams static const SymbolTable_t * lookupSymbol(const char *); 82764205c19420256ccc05df2a1669a7b69c5daaf9Jason Sams static void appendDecls(String8 *str); 83d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}; 84d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 85d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 86d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 87d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams} 88d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#endif 89d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 90d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 91d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams 92