1ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams/* 2ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Copyright (C) 2012 The Android Open Source Project 3ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 4ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * you may not use this file except in compliance with the License. 6ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * You may obtain a copy of the License at 7ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 8ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 10ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Unless required by applicable law or agreed to in writing, software 11ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * See the License for the specific language governing permissions and 14ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * limitations under the License. 15ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 16ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 17ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsContext.h" 18ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsScriptIntrinsic.h" 19ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include <time.h> 20ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 21ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsusing namespace android; 22ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsusing namespace android::renderscript; 23ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 24ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason SamsScriptIntrinsic::ScriptIntrinsic(Context *rsc) : Script(rsc) { 25ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 26ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 27ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason SamsScriptIntrinsic::~ScriptIntrinsic() { 28ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 29ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 30ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsbool ScriptIntrinsic::init(Context *rsc, RsScriptIntrinsicID iid, Element *e) { 31ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mIntrinsicID = iid; 32ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mElement.set(e); 33ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mSlots = new ObjectBaseRef<Allocation>[2]; 34ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams mTypes = new ObjectBaseRef<const Type>[2]; 35ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 36ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams rsc->mHal.funcs.script.initIntrinsic(rsc, this, iid, e); 37ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 38ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 39ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return true; 40ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 41ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 42ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsbool ScriptIntrinsic::freeChildren() { 43ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return false; 44ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 45ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 46ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid ScriptIntrinsic::setupScript(Context *rsc) { 47ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 48ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 49ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsuint32_t ScriptIntrinsic::run(Context *rsc) { 50ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams rsAssert(!"ScriptIntrinsic::run - should not happen"); 51ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return 0; 52ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 53ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 54ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 55ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid ScriptIntrinsic::runForEach(Context *rsc, 56ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams uint32_t slot, 57ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const Allocation * ain, 58ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams Allocation * aout, 59ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const void * usr, 60ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams size_t usrBytes, 61ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const RsScriptCall *sc) { 62ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 63ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams rsc->mHal.funcs.script.invokeForEach(rsc, this, slot, ain, aout, usr, usrBytes, sc); 64ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 65ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 66ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid ScriptIntrinsic::Invoke(Context *rsc, uint32_t slot, const void *data, size_t len) { 67ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 68ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 69ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsvoid ScriptIntrinsic::serialize(Context *rsc, OStream *stream) const { 70ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 71ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 72ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason SamsRsA3DClassID ScriptIntrinsic::getClassId() const { 73ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return (RsA3DClassID)0; 74ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 75ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 76ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 77ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 78ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsnamespace android { 79ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsnamespace renderscript { 80ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 81ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 82ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason SamsRsScript rsi_ScriptIntrinsicCreate(Context *rsc, uint32_t id, RsElement ve) { 83ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams ScriptIntrinsic *si = new ScriptIntrinsic(rsc); 84ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams ALOGE("rsi_ScriptIntrinsicCreate %i", id); 85ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams if (!si->init(rsc, (RsScriptIntrinsicID)id, (Element *)ve)) { 86ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams delete si; 87ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return NULL; 88ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams } 89ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams return si; 90ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 91ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 92ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 93ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 94ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 95ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 96