rsScriptC.cpp revision 1f52633fefd1862451e6a30209d590680d02beec
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#include "rsScriptC.h" 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsMatrix.h" 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 211ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich#include "acc/acc.h" 221ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich 23326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android; 24326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript; 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 27326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScriptC::ScriptC() 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 291ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich mAccScript = NULL; 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mScript = NULL; 311f52633fefd1862451e6a30209d590680d02beecJason Sams mScriptText = NULL; 321f52633fefd1862451e6a30209d590680d02beecJason Sams mScriptTextLength = 0; 33326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 35326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScriptC::~ScriptC() 36326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 371ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich if (mAccScript) { 381ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich accDeleteScript(mAccScript); 391ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich } 40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 42fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadIdentity(void *con, rsc_Matrix *mat) 43326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->loadIdentity(); 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 48fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadFloat(void *con, rsc_Matrix *mat, const float *f) 49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->load(f); 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 53326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 54fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadMat(void *con, rsc_Matrix *mat, const rsc_Matrix *newmat) 55326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 56326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 57326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->load(reinterpret_cast<const Matrix *>(newmat)); 58326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 59326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 60fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadRotate(void *con, rsc_Matrix *mat, float rot, float x, float y, float z) 61326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 62326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 63326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->loadRotate(rot, x, y, z); 64326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 65326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 66fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadScale(void *con, rsc_Matrix *mat, float x, float y, float z) 67326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 68326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 69326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->loadScale(x, y, z); 70326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 71326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 72fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadTranslate(void *con, rsc_Matrix *mat, float x, float y, float z) 73326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 74326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 75326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->loadTranslate(x, y, z); 76326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 77326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 78fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixLoadMultiply(void *con, rsc_Matrix *mat, const rsc_Matrix *lhs, const rsc_Matrix *rhs) 79326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 80326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 81326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->loadMultiply(reinterpret_cast<const Matrix *>(lhs), 82326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams reinterpret_cast<const Matrix *>(rhs)); 83326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 84326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 85fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixMultiply(void *con, rsc_Matrix *mat, const rsc_Matrix *rhs) 86326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 87326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 88326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->multiply(reinterpret_cast<const Matrix *>(rhs)); 89326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 90326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 91fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixRotate(void *con, rsc_Matrix *mat, float rot, float x, float y, float z) 92326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 93326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 94326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->rotate(rot, x, y, z); 95326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 96326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 97fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixScale(void *con, rsc_Matrix *mat, float x, float y, float z) 98326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 99326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 100326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->scale(x, y, z); 101326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 102326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 103fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void matrixTranslate(void *con, rsc_Matrix *mat, float x, float y, float z) 104326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 105326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Matrix *m = reinterpret_cast<Matrix *>(mat); 106326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams m->translate(x, y, z); 107326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 108326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 109326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 110fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" const void * loadVp(void *vp, uint32_t bank, uint32_t offset) 111326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 112326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 113326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return &static_cast<const uint8_t *>(env->mScript->mSlots[bank]->getPtr())[offset]; 114326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 115326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 116fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" float loadF(void *vp, uint32_t bank, uint32_t offset) 117326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 118326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 119326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //LOGE("bank %i, offset %i", bank, offset); 120326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //LOGE("%p", env->mScript->mSlots[bank]->getPtr()); 121326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return static_cast<const float *>(env->mScript->mSlots[bank]->getPtr())[offset]; 122326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 123326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 124fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" int32_t loadI32(void *vp, uint32_t bank, uint32_t offset) 125326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 126326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 127326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return static_cast<const int32_t *>(env->mScript->mSlots[bank]->getPtr())[offset]; 128326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 129326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 130fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" uint32_t loadU32(void *vp, uint32_t bank, uint32_t offset) 131326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 132326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 133326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return static_cast<const uint32_t *>(env->mScript->mSlots[bank]->getPtr())[offset]; 134326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 135326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 136fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void loadEnvVec4(void *vp, uint32_t bank, uint32_t offset, rsc_Vector4 *v) 137326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 138326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 139326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(v, &static_cast<const float *>(env->mScript->mSlots[bank]->getPtr())[offset], sizeof(rsc_Vector4)); 140326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 141326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 142fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void loadEnvMatrix(void *vp, uint32_t bank, uint32_t offset, rsc_Matrix *m) 143326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 144326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 145326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(m, &static_cast<const float *>(env->mScript->mSlots[bank]->getPtr())[offset], sizeof(rsc_Matrix)); 146326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 147326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 148326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 149fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void storeF(void *vp, uint32_t bank, uint32_t offset, float v) 150326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 151326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 152326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<float *>(env->mScript->mSlots[bank]->getPtr())[offset] = v; 153326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 154326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 155fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void storeI32(void *vp, uint32_t bank, uint32_t offset, int32_t v) 156326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 157326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 158326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<int32_t *>(env->mScript->mSlots[bank]->getPtr())[offset] = v; 159326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 160326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 161fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void storeU32(void *vp, uint32_t bank, uint32_t offset, uint32_t v) 162326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 163326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 164326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<uint32_t *>(env->mScript->mSlots[bank]->getPtr())[offset] = v; 165326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 166326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 167fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void storeEnvVec4(void *vp, uint32_t bank, uint32_t offset, const rsc_Vector4 *v) 168326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 169326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 170326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(&static_cast<float *>(env->mScript->mSlots[bank]->getPtr())[offset], v, sizeof(rsc_Vector4)); 171326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 172326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 173fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void storeEnvMatrix(void *vp, uint32_t bank, uint32_t offset, const rsc_Matrix *m) 174326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 175326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 176326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams memcpy(&static_cast<float *>(env->mScript->mSlots[bank]->getPtr())[offset], m, sizeof(rsc_Matrix)); 177326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 178326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 179326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 180fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void color(void *vp, float r, float g, float b, float a) 181326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 182326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 183326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glColor4f(r, g, b, a); 184326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 185326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 186fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void renderTriangleMesh(void *vp, RsTriangleMesh mesh) 187326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 188326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 189326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsi_TriangleMeshRender(env->mContext, mesh); 190326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 191326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 192fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void renderTriangleMeshRange(void *vp, RsTriangleMesh mesh, uint32_t start, uint32_t count) 193326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 194326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 195326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsi_TriangleMeshRenderRange(env->mContext, mesh, start, count); 196326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 197326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 198fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void materialDiffuse(void *vp, float r, float g, float b, float a) 199326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 200326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 201326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams float v[] = {r, g, b, a}; 202326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, v); 203326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 204326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 205fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void materialSpecular(void *vp, float r, float g, float b, float a) 206326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 207326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 208326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams float v[] = {r, g, b, a}; 209326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, v); 210326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 211326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 212fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void lightPosition(void *vp, float x, float y, float z, float w) 213326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 214326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 215326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams float v[] = {x, y, z, w}; 216326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glLightfv(GL_LIGHT0, GL_POSITION, v); 217326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 218326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 219fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void materialShininess(void *vp, float s) 220326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 221326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 222326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &s); 223326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 224326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 225fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void uploadToTexture(void *vp, RsAllocation va, uint32_t baseMipLevel) 226326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 227326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 228326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsi_AllocationUploadToTexture(env->mContext, va, baseMipLevel); 229326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 230326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 231fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void enable(void *vp, uint32_t p) 232326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 233326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 234326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnable(p); 235326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 236326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 237fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void disable(void *vp, uint32_t p) 238326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 239326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 240326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisable(p); 241326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 242326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 243fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" uint32_t scriptRand(void *vp, uint32_t max) 244326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 245326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return (uint32_t)(((float)rand()) * max / RAND_MAX); 246326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 247326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 248326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// Assumes (GL_FIXED) x,y,z (GL_UNSIGNED_BYTE)r,g,b,a 249fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void drawTriangleArray(void *vp, RsAllocation alloc, uint32_t count) 250326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 251326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams const Allocation *a = (const Allocation *)alloc; 252326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams const uint32_t *ptr = (const uint32_t *)a->getPtr(); 253326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 254326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 255326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams env->mContext->setupCheck(); 256326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 257326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glBindBuffer(GL_ARRAY_BUFFER, 0); 258326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]); 259326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 260326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnableClientState(GL_VERTEX_ARRAY); 261326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisableClientState(GL_NORMAL_ARRAY); 262326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDisableClientState(GL_TEXTURE_COORD_ARRAY); 263326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glEnableClientState(GL_COLOR_ARRAY); 264326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 265326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glVertexPointer(2, GL_FIXED, 12, ptr + 1); 266326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //glTexCoordPointer(2, GL_FIXED, 24, ptr + 1); 267326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr); 268326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 269326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams glDrawArrays(GL_TRIANGLES, 0, count * 3); 270326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 271326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 2726678e9b2568ad041429a2477177133fe4932159fJason Samsextern "C" void drawRect(void *vp, int32_t x1, int32_t x2, int32_t y1, int32_t y2) 2736678e9b2568ad041429a2477177133fe4932159fJason Sams{ 2746678e9b2568ad041429a2477177133fe4932159fJason Sams x1 = (x1 << 16); 2756678e9b2568ad041429a2477177133fe4932159fJason Sams x2 = (x2 << 16); 2766678e9b2568ad041429a2477177133fe4932159fJason Sams y1 = (y1 << 16); 2776678e9b2568ad041429a2477177133fe4932159fJason Sams y2 = (y2 << 16); 2786678e9b2568ad041429a2477177133fe4932159fJason Sams 2796678e9b2568ad041429a2477177133fe4932159fJason Sams int32_t vtx[] = {x1,y1, x1,y2, x2,y1, x2,y2}; 2806678e9b2568ad041429a2477177133fe4932159fJason Sams static const int32_t tex[] = {0,0, 0,0x10000, 0x10000,0, 0x10000,0x10000}; 2816678e9b2568ad041429a2477177133fe4932159fJason Sams 2826678e9b2568ad041429a2477177133fe4932159fJason Sams 2836678e9b2568ad041429a2477177133fe4932159fJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 2846678e9b2568ad041429a2477177133fe4932159fJason Sams env->mContext->setupCheck(); 2856678e9b2568ad041429a2477177133fe4932159fJason Sams 2866678e9b2568ad041429a2477177133fe4932159fJason Sams glBindBuffer(GL_ARRAY_BUFFER, 0); 2876678e9b2568ad041429a2477177133fe4932159fJason Sams //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]); 2886678e9b2568ad041429a2477177133fe4932159fJason Sams 2896678e9b2568ad041429a2477177133fe4932159fJason Sams glEnableClientState(GL_VERTEX_ARRAY); 2906678e9b2568ad041429a2477177133fe4932159fJason Sams glEnableClientState(GL_TEXTURE_COORD_ARRAY); 2916678e9b2568ad041429a2477177133fe4932159fJason Sams glDisableClientState(GL_NORMAL_ARRAY); 2926678e9b2568ad041429a2477177133fe4932159fJason Sams glDisableClientState(GL_COLOR_ARRAY); 2936678e9b2568ad041429a2477177133fe4932159fJason Sams 2946678e9b2568ad041429a2477177133fe4932159fJason Sams glVertexPointer(2, GL_FIXED, 8, vtx); 2956678e9b2568ad041429a2477177133fe4932159fJason Sams glTexCoordPointer(2, GL_FIXED, 8, tex); 2966678e9b2568ad041429a2477177133fe4932159fJason Sams //glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr); 2976678e9b2568ad041429a2477177133fe4932159fJason Sams 2986678e9b2568ad041429a2477177133fe4932159fJason Sams glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 2996678e9b2568ad041429a2477177133fe4932159fJason Sams} 3006678e9b2568ad041429a2477177133fe4932159fJason Sams 301fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void pfBindTexture(void *vp, RsProgramFragment vpf, uint32_t slot, RsAllocation va) 302326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 303326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //LOGE("pfBindTexture %p", vpf); 304326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 305fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevich rsi_ProgramFragmentBindTexture(env->mContext, 306326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<ProgramFragment *>(vpf), 307326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams slot, 308326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<Allocation *>(va)); 309326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 310326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 311326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 312fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void pfBindSampler(void *vp, RsProgramFragment vpf, uint32_t slot, RsSampler vs) 313326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 314326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 315fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevich rsi_ProgramFragmentBindSampler(env->mContext, 316326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<ProgramFragment *>(vpf), 317326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams slot, 318326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams static_cast<Sampler *>(vs)); 319326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 320326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 321326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 322fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void contextBindProgramFragmentStore(void *vp, RsProgramFragmentStore pfs) 323326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 324326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //LOGE("contextBindProgramFragmentStore %p", pfs); 325326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 326326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsi_ContextBindProgramFragmentStore(env->mContext, pfs); 327326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 328326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 329326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 330fd19dc9fc3e76caf5c37645ea5131b2a2cf10ef7Jack Palevichextern "C" void contextBindProgramFragment(void *vp, RsProgramFragment pf) 331326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 332326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams //LOGE("contextBindProgramFragment %p", pf); 333326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC::Env * env = static_cast<ScriptC::Env *>(vp); 334326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams rsi_ContextBindProgramFragment(env->mContext, pf); 335326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 336326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 337326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 338326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 339326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsstatic rsc_FunctionTable scriptCPtrTable = { 340326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadVp, 341326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadF, 342326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadI32, 343326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadU32, 344326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadEnvVec4, 345326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams loadEnvMatrix, 346326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 347326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams storeF, 348326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams storeI32, 349326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams storeU32, 350326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams storeEnvVec4, 351326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams storeEnvMatrix, 352326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 353326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadIdentity, 354326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadFloat, 355326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadMat, 356326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadRotate, 357326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadScale, 358326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadTranslate, 359326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixLoadMultiply, 360326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixMultiply, 361326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixRotate, 362326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixScale, 363326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams matrixTranslate, 364326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 365326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams color, 366326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 367326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams pfBindTexture, 368326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams pfBindSampler, 369326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 370326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams materialDiffuse, 371326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams materialSpecular, 372326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams lightPosition, 373326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams materialShininess, 374326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams uploadToTexture, 375326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams enable, 376326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams disable, 377326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 378326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams scriptRand, 379326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams contextBindProgramFragment, 3806678e9b2568ad041429a2477177133fe4932159fJason Sams contextBindProgramFragmentStore, 3816678e9b2568ad041429a2477177133fe4932159fJason Sams 3826678e9b2568ad041429a2477177133fe4932159fJason Sams 3836678e9b2568ad041429a2477177133fe4932159fJason Sams renderTriangleMesh, 3846678e9b2568ad041429a2477177133fe4932159fJason Sams renderTriangleMeshRange, 3856678e9b2568ad041429a2477177133fe4932159fJason Sams 3866678e9b2568ad041429a2477177133fe4932159fJason Sams drawTriangleArray, 3876678e9b2568ad041429a2477177133fe4932159fJason Sams drawRect 3886678e9b2568ad041429a2477177133fe4932159fJason Sams 389326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}; 390326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 391326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 392a44cb29164726cd9d812117819abdd7b60dfdd93Jason Samsbool ScriptC::run(Context *rsc, uint32_t launchID) 393326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 394326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Env e = {rsc, this}; 395a44cb29164726cd9d812117819abdd7b60dfdd93Jason Sams return mScript(&e, &scriptCPtrTable, launchID) != 0; 396326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 397326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 398326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScriptCState::ScriptCState() 399326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 400326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams clear(); 401326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 402326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 403326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScriptCState::~ScriptCState() 404326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 4051ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich if (mAccScript) { 4061ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich accDeleteScript(mAccScript); 4071ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich } 408326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 409326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 410326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ScriptCState::clear() 411326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 412326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mConstantBufferTypes.clear(); 413326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearColor[0] = 0; 414326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearColor[1] = 0; 415326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearColor[2] = 0; 416326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearColor[3] = 1; 417326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearDepth = 1; 418326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mClearStencil = 0; 4191ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich mAccScript = NULL; 420326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mScript = NULL; 421326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mIsRoot = false; 422326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams mIsOrtho = true; 4231f52633fefd1862451e6a30209d590680d02beecJason Sams mScriptText = NULL; 4241f52633fefd1862451e6a30209d590680d02beecJason Sams mScriptTextLength = 0; 4251f52633fefd1862451e6a30209d590680d02beecJason Sams} 4261f52633fefd1862451e6a30209d590680d02beecJason Sams 4271f52633fefd1862451e6a30209d590680d02beecJason Samsvoid ScriptCState::runCompiler() 4281f52633fefd1862451e6a30209d590680d02beecJason Sams{ 4291f52633fefd1862451e6a30209d590680d02beecJason Sams mAccScript = accCreateScript(); 4301f52633fefd1862451e6a30209d590680d02beecJason Sams 4311f52633fefd1862451e6a30209d590680d02beecJason Sams LOGE("Compiler 1"); 4321f52633fefd1862451e6a30209d590680d02beecJason Sams const char* scriptSource[] = {mScriptText}; 4331f52633fefd1862451e6a30209d590680d02beecJason Sams int scriptLength[] = {mScriptTextLength} ; 4341f52633fefd1862451e6a30209d590680d02beecJason Sams accScriptSource(mAccScript, 1, scriptSource, scriptLength); 4351f52633fefd1862451e6a30209d590680d02beecJason Sams accCompileScript(mAccScript); 4361f52633fefd1862451e6a30209d590680d02beecJason Sams accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mScript); 4371f52633fefd1862451e6a30209d590680d02beecJason Sams LOGE("Compiler 1"); 438326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 439326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 440326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 441326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 442326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 443326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCBegin(Context * rsc) 444326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 445326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 446326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->clear(); 447326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 448326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 449326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCSetClearColor(Context * rsc, float r, float g, float b, float a) 450326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 451326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 452326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearColor[0] = r; 453326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearColor[1] = g; 454326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearColor[2] = b; 455326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearColor[3] = a; 456326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 457326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 458326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCSetClearDepth(Context * rsc, float v) 459326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 460326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 461326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearDepth = v; 462326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 463326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 464326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCSetClearStencil(Context * rsc, uint32_t v) 465326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 466326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 467326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mClearStencil = v; 468326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 469326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 470326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCAddType(Context * rsc, RsType vt) 471326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 472326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 473326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mConstantBufferTypes.add(static_cast<const Type *>(vt)); 474326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 475326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 4761ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevichvoid rsi_ScriptCSetScript(Context * rsc, void* accScript, void *vp) 477326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 478326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 4791ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich ss->mAccScript = reinterpret_cast<ACCscript*>(accScript); 480326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mScript = reinterpret_cast<rsc_RunScript>(vp); 481326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 482326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 483326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCSetRoot(Context * rsc, bool isRoot) 484326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 485326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 486326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mIsRoot = isRoot; 487326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 488326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 489326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptCSetOrtho(Context * rsc, bool isOrtho) 490326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 491326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 492326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ss->mIsOrtho = isOrtho; 493326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 494326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 4951f52633fefd1862451e6a30209d590680d02beecJason Samsvoid rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len) 4961f52633fefd1862451e6a30209d590680d02beecJason Sams{ 4971f52633fefd1862451e6a30209d590680d02beecJason Sams ScriptCState *ss = &rsc->mScriptC; 4981f52633fefd1862451e6a30209d590680d02beecJason Sams ss->mScriptText = text; 4991f52633fefd1862451e6a30209d590680d02beecJason Sams ss->mScriptTextLength = len; 5001f52633fefd1862451e6a30209d590680d02beecJason Sams} 5011f52633fefd1862451e6a30209d590680d02beecJason Sams 5021f52633fefd1862451e6a30209d590680d02beecJason Sams 503326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsRsScript rsi_ScriptCCreate(Context * rsc) 504326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 505326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptCState *ss = &rsc->mScriptC; 506326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 5071f52633fefd1862451e6a30209d590680d02beecJason Sams ss->runCompiler(); 5081f52633fefd1862451e6a30209d590680d02beecJason Sams 509326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams ScriptC *s = new ScriptC(); 5101ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich s->mAccScript = ss->mAccScript; 5111ef8b80bc49f415b93912fe7335f852953bde4a4Jack Palevich ss->mAccScript = NULL; 512326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mScript = ss->mScript; 513326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearColor[0] = ss->mClearColor[0]; 514326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearColor[1] = ss->mClearColor[1]; 515326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearColor[2] = ss->mClearColor[2]; 516326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearColor[3] = ss->mClearColor[3]; 517326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearDepth = ss->mClearDepth; 518326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mClearStencil = ss->mClearStencil; 519326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mIsRoot = ss->mIsRoot; 520326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams s->mIsOrtho = ss->mIsOrtho; 5211f52633fefd1862451e6a30209d590680d02beecJason Sams s->mScriptText = ss->mScriptText; 5221f52633fefd1862451e6a30209d590680d02beecJason Sams s->mScriptTextLength = ss->mScriptTextLength; 523326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams return s; 524326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 525326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 526326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 527326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 528326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 529326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 530