rsScript.cpp revision f2649a961db2995e9e24a6c98f8a419f1496c1b7
1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/*
2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project
3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License.
6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at
7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software
11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and
14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License.
15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */
16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsContext.h"
18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
19326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android;
20326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript;
21326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
22e514b45de8561fbc6ef6770845102ca10b0a69d7Jason SamsScript::Script(Context *rsc) : ObjectBase(rsc)
23326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
24f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams    mAllocFile = __FILE__;
25f2649a961db2995e9e24a6c98f8a419f1496c1b7Jason Sams    mAllocLine = __LINE__;
26928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    memset(&mEnviroment, 0, sizeof(mEnviroment));
27928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    mEnviroment.mClearColor[0] = 0;
28928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    mEnviroment.mClearColor[1] = 0;
29928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    mEnviroment.mClearColor[2] = 0;
30928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    mEnviroment.mClearColor[3] = 1;
31928b734b2fbba0800567c8b7e686bcf5f45483ccJason Sams    mEnviroment.mClearDepth = 1;
328c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    mEnviroment.mClearStencil = 0;
338c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    mEnviroment.mIsRoot = false;
34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
36326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScript::~Script()
37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
39326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
40326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android {
41326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript {
42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
44326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptBindAllocation(Context * rsc, RsScript vs, RsAllocation va, uint32_t slot)
45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    Script *s = static_cast<Script *>(vs);
47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    s->mSlots[slot].set(static_cast<Allocation *>(va));
48326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
50d34b725ac1752f5a234c7643a0b65245591ea1ccJason Samsvoid rsi_ScriptSetClearColor(Context * rsc, RsScript vs, float r, float g, float b, float a)
51d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams{
52d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    Script *s = static_cast<Script *>(vs);
53d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearColor[0] = r;
54d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearColor[1] = g;
55d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearColor[2] = b;
56d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearColor[3] = a;
57d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams}
58d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams
59d34b725ac1752f5a234c7643a0b65245591ea1ccJason Samsvoid rsi_ScriptSetTimeZone(Context * rsc, RsScript vs, const char * timeZone, uint32_t length)
60d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams{
61d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    Script *s = static_cast<Script *>(vs);
62d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mTimeZone = timeZone;
63d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams}
64d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams
65d34b725ac1752f5a234c7643a0b65245591ea1ccJason Samsvoid rsi_ScriptSetClearDepth(Context * rsc, RsScript vs, float v)
66d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams{
67d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    Script *s = static_cast<Script *>(vs);
68d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearDepth = v;
69d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams}
70d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams
71d34b725ac1752f5a234c7643a0b65245591ea1ccJason Samsvoid rsi_ScriptSetClearStencil(Context * rsc, RsScript vs, uint32_t v)
72d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams{
73d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    Script *s = static_cast<Script *>(vs);
74d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams    s->mEnviroment.mClearStencil = v;
75d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams}
76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
7790b36a88cf0cc549b296ac15a249ea7786c6de9eJason Samsvoid rsi_ScriptSetType(Context * rsc, RsType vt, uint32_t slot, bool writable, const char *name)
78fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams{
79fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    ScriptCState *ss = &rsc->mScriptC;
80fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    const Type *t = static_cast<const Type *>(vt);
81fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    ss->mConstantBufferTypes[slot].set(t);
8290b36a88cf0cc549b296ac15a249ea7786c6de9eJason Sams    ss->mSlotWritable[slot] = writable;
83fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    if (name) {
84fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams        ss->mSlotNames[slot].setTo(name);
85fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    } else {
86fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams        ss->mSlotNames[slot].setTo("");
87fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    }
88fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams}
89fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams
908c6bc6930d4996b897de8e5113da4a4efae2310cJason Samsvoid rsi_ScriptSetInvoke(Context *rsc, const char *name, uint32_t slot)
918c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams{
928c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    ScriptCState *ss = &rsc->mScriptC;
938c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    ss->mInvokableNames[slot] = name;
948c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams}
958c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams
968c6bc6930d4996b897de8e5113da4a4efae2310cJason Samsvoid rsi_ScriptInvoke(Context *rsc, RsScript vs, uint32_t slot)
978c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams{
988c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    Script *s = static_cast<Script *>(vs);
99ada7f272890d8791bc518c95989ad7d13050834dJason Sams    s->setupScript();
1008c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    s->mEnviroment.mInvokables[slot]();
1018c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams}
1028c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams
1038c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams
104fa51719e6c1bd17b3f347477b4827face9ab647eJason Samsvoid rsi_ScriptSetRoot(Context * rsc, bool isRoot)
105fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams{
106fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams    ScriptCState *ss = &rsc->mScriptC;
1078c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams    ss->mScript->mEnviroment.mIsRoot = isRoot;
108fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams}
109fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams
110fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams
111326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
112326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
113326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
114