• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef ANDROID_RS_SCRIPT_C_H
18 #define ANDROID_RS_SCRIPT_C_H
19 
20 #include "rsScript.h"
21 
22 #include "RenderScriptEnv.h"
23 
24 #include <utils/KeyedVector.h>
25 
26 struct ACCscript;
27 
28 // ---------------------------------------------------------------------------
29 namespace android {
30 namespace renderscript {
31 
32 
33 
34 class ScriptC : public Script
35 {
36 public:
37     typedef int (*RunScript_t)(uint32_t launchIndex);
38     typedef void (*VoidFunc_t)();
39 
40     ScriptC(Context *);
41     virtual ~ScriptC();
42 
43     struct Program_t {
44         int mVersionMajor;
45         int mVersionMinor;
46 
47         RunScript_t mScript;
48         VoidFunc_t mInit;
49 
50         void ** mSlotPointers[MAX_SCRIPT_BANKS];
51     };
52 
53     Program_t mProgram;
54 
55     ACCscript*    mAccScript;
56 
57     virtual void setupScript();
58     virtual bool run(Context *, uint32_t launchID);
59 };
60 
61 class ScriptCState
62 {
63 public:
64     ScriptCState();
65     ~ScriptCState();
66 
67     ScriptC *mScript;
68 
69     ObjectBaseRef<const Type> mConstantBufferTypes[MAX_SCRIPT_BANKS];
70     String8 mSlotNames[MAX_SCRIPT_BANKS];
71     bool mSlotWritable[MAX_SCRIPT_BANKS];
72     String8 mInvokableNames[MAX_SCRIPT_BANKS];
73 
74     void clear();
75     void runCompiler(Context *rsc, ScriptC *s);
76     void appendVarDefines(const Context *rsc, String8 *str);
77     void appendTypes(const Context *rsc, String8 *str);
78 
79     struct SymbolTable_t {
80         const char * mName;
81         void * mPtr;
82         const char * mRet;
83         const char * mParam;
84     };
85     static SymbolTable_t gSyms[];
86     static const SymbolTable_t * lookupSymbol(const char *);
87     static void appendDecls(String8 *str);
88 
89     KeyedVector<String8,int> mInt32Defines;
90     KeyedVector<String8,float> mFloatDefines;
91 };
92 
93 
94 }
95 }
96 #endif
97 
98 
99 
100