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