rsScript.cpp revision 6d0a0740530d57e2a5759df994352600946ff47d
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)); 27326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 29326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsScript::~Script() 30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 33be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid Script::setVar(uint32_t slot, const void *val, uint32_t len) 34be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 35be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams int32_t *destPtr = ((int32_t **)mEnviroment.mFieldAddress)[slot]; 36be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams if (destPtr) { 37be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams //LOGE("setVar f1 %f", ((const float *)destPtr)[0]); 38be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams //LOGE("setVar %p %i", destPtr, len); 39be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams memcpy(destPtr, val, len); 40be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams //LOGE("setVar f2 %f", ((const float *)destPtr)[0]); 41be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams } else { 42be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams LOGE("Calling setVar on slot = %i which is null", slot); 43be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams } 44be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams} 45be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams 46326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace android { 47326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsnamespace renderscript { 48326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 49326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 50326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid rsi_ScriptBindAllocation(Context * rsc, RsScript vs, RsAllocation va, uint32_t slot) 51326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{ 52326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams Script *s = static_cast<Script *>(vs); 53be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Allocation *a = static_cast<Allocation *>(va); 54be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams s->mSlots[slot].set(a); 55be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams //LOGE("rsi_ScriptBindAllocation %i %p %p", slot, a, a->getPtr()); 56326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 57326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 58d34b725ac1752f5a234c7643a0b65245591ea1ccJason Samsvoid rsi_ScriptSetTimeZone(Context * rsc, RsScript vs, const char * timeZone, uint32_t length) 59d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams{ 60d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams Script *s = static_cast<Script *>(vs); 61d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams s->mEnviroment.mTimeZone = timeZone; 62d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams} 63d34b725ac1752f5a234c7643a0b65245591ea1ccJason Sams 6490b36a88cf0cc549b296ac15a249ea7786c6de9eJason Samsvoid rsi_ScriptSetType(Context * rsc, RsType vt, uint32_t slot, bool writable, const char *name) 65fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams{ 66fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams ScriptCState *ss = &rsc->mScriptC; 67fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams const Type *t = static_cast<const Type *>(vt); 68fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams ss->mConstantBufferTypes[slot].set(t); 6990b36a88cf0cc549b296ac15a249ea7786c6de9eJason Sams ss->mSlotWritable[slot] = writable; 70be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams LOGE("rsi_ScriptSetType"); 71fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams} 72fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams 738c6bc6930d4996b897de8e5113da4a4efae2310cJason Samsvoid rsi_ScriptInvoke(Context *rsc, RsScript vs, uint32_t slot) 748c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams{ 758c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams Script *s = static_cast<Script *>(vs); 7622fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams s->Invoke(rsc, slot, NULL, 0); 778c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams} 788c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams 798c6bc6930d4996b897de8e5113da4a4efae2310cJason Sams 80be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid rsi_ScriptInvokeData(Context *rsc, RsScript vs, uint32_t slot, void *data) 81be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 82be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Script *s = static_cast<Script *>(vs); 8322fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams s->Invoke(rsc, slot, NULL, 0); 84be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams} 85be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams 86be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid rsi_ScriptInvokeV(Context *rsc, RsScript vs, uint32_t slot, const void *data, uint32_t len) 87be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 88be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Script *s = static_cast<Script *>(vs); 8922fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams s->Invoke(rsc, slot, data, len); 90be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams} 91be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams 92be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid rsi_ScriptSetVarI(Context *rsc, RsScript vs, uint32_t slot, int value) 93be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 94be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Script *s = static_cast<Script *>(vs); 95be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams s->setVar(slot, &value, sizeof(value)); 96be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams} 97be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams 98be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid rsi_ScriptSetVarF(Context *rsc, RsScript vs, uint32_t slot, float value) 99be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 100be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Script *s = static_cast<Script *>(vs); 101be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams s->setVar(slot, &value, sizeof(value)); 102be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams} 103be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams 1046d0a0740530d57e2a5759df994352600946ff47dStephen Hinesvoid rsi_ScriptSetVarD(Context *rsc, RsScript vs, uint32_t slot, double value) 1056d0a0740530d57e2a5759df994352600946ff47dStephen Hines{ 1066d0a0740530d57e2a5759df994352600946ff47dStephen Hines Script *s = static_cast<Script *>(vs); 1076d0a0740530d57e2a5759df994352600946ff47dStephen Hines s->setVar(slot, &value, sizeof(value)); 1086d0a0740530d57e2a5759df994352600946ff47dStephen Hines} 1096d0a0740530d57e2a5759df994352600946ff47dStephen Hines 110be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Samsvoid rsi_ScriptSetVarV(Context *rsc, RsScript vs, uint32_t slot, const void *data, uint32_t len) 111be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams{ 112be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams const float *fp = (const float *)data; 113be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams Script *s = static_cast<Script *>(vs); 114be36bf3a76481737a7fa606a04144ceef80eb4f2Jason Sams s->setVar(slot, data, len); 115fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams} 116fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams 117fa51719e6c1bd17b3f347477b4827face9ab647eJason Sams 118326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 119326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 120326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 121