rsScript.h revision a9e7a05b84470257637c97d65f6562aa832c66ef
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_H
18d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#define ANDROID_RS_SCRIPT_H
19d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
20d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#include "rsAllocation.h"
21d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
223eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams
23d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams// ---------------------------------------------------------------------------
24d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace android {
25d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsnamespace renderscript {
26d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
273eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsclass ProgramVertex;
283eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsclass ProgramFragment;
293eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsclass ProgramRaster;
303eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Samsclass ProgramFragmentStore;
31d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
3243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams#define MAX_SCRIPT_BANKS 16
3343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams
34d19f10d43aa400e1183aa21a97099d02074131a2Jason Samsclass Script : public ObjectBase
35d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams{
36d19f10d43aa400e1183aa21a97099d02074131a2Jason Samspublic:
37be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams    typedef void (* InvokeFunc_t)(void);
38d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
39a9e7a05b84470257637c97d65f6562aa832c66efJason Sams    Script(Context *);
40d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams    virtual ~Script();
41d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
42d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
43928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams    struct Enviroment_t {
44928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams        bool mIsRoot;
45928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams        float mClearColor[4];
46928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams        float mClearDepth;
47928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams        uint32_t mClearStencil;
48928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams
49584a375df68ed7d62b38389078c6804edf228f9cRomain Guy        uint32_t mStartTimeMillis;
50584a375df68ed7d62b38389078c6804edf228f9cRomain Guy        const char* mTimeZone;
51584a375df68ed7d62b38389078c6804edf228f9cRomain Guy
523eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        ObjectBaseRef<ProgramVertex> mVertex;
533eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        ObjectBaseRef<ProgramFragment> mFragment;
543eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        //ObjectBaseRef<ProgramRaster> mRaster;
553eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        ObjectBaseRef<ProgramFragmentStore> mFragmentStore;
56be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams        InvokeFunc_t mInvokables[MAX_SCRIPT_BANKS];
57be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams        const char * mScriptText;
58be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams        uint32_t mScriptTextLength;
59928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams    };
60928f5cf2870177abd715e1dfb81da6ac1fe3e845Jason Sams    Enviroment_t mEnviroment;
61d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
62d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams    uint32_t mCounstantBufferCount;
63d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
64be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams
6543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams    ObjectBaseRef<Allocation> mSlots[MAX_SCRIPT_BANKS];
66fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams    ObjectBaseRef<const Type> mTypes[MAX_SCRIPT_BANKS];
67fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams    String8 mSlotNames[MAX_SCRIPT_BANKS];
68334ea0c98f051b5a6b85bc616c93304651854298Jason Sams    bool mSlotWritable[MAX_SCRIPT_BANKS];
69d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
70be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams
71be2e84193f709419634de4cc3ba0e67acf6976f3Jason Sams
72e60446b9c1a0f4f48372a36de5b01a2ddb8121e3Jason Sams    virtual void setupScript() = 0;
73a09f11d6c641726b61f80c15230a18d31c146fecJason Sams    virtual bool run(Context *, uint32_t launchID) = 0;
74d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams};
75d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
76d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
77d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
78d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}
79d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams}
80d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams#endif
81d19f10d43aa400e1183aa21a97099d02074131a2Jason Sams
82