18eaba4fee0c7b5325742c87187622fdff51d5effJason Sams/* 28eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * Copyright (C) 2012 The Android Open Source Project 38eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * 48eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 58eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * you may not use this file except in compliance with the License. 68eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * You may obtain a copy of the License at 78eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * 88eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * http://www.apache.org/licenses/LICENSE-2.0 98eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * 108eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * Unless required by applicable law or agreed to in writing, software 118eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 128eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * See the License for the specific language governing permissions and 148eaba4fee0c7b5325742c87187622fdff51d5effJason Sams * limitations under the License. 158eaba4fee0c7b5325742c87187622fdff51d5effJason Sams */ 168eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 178eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#include "rsContext.h" 188eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#include "rsScriptIntrinsic.h" 198eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#include <time.h> 208eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 218eaba4fee0c7b5325742c87187622fdff51d5effJason Samsusing namespace android; 228eaba4fee0c7b5325742c87187622fdff51d5effJason Samsusing namespace android::renderscript; 238eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 248eaba4fee0c7b5325742c87187622fdff51d5effJason SamsScriptIntrinsic::ScriptIntrinsic(Context *rsc) : Script(rsc) { 258eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 268eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 278eaba4fee0c7b5325742c87187622fdff51d5effJason SamsScriptIntrinsic::~ScriptIntrinsic() { 288eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 298eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 3041d6c769f5fa21da3cbc116af95d88949a4a5c76Stephen Hinesbool ScriptIntrinsic::init(Context *rsc, RsScriptIntrinsicID iid, Element *e) { 318eaba4fee0c7b5325742c87187622fdff51d5effJason Sams mIntrinsicID = iid; 328eaba4fee0c7b5325742c87187622fdff51d5effJason Sams mElement.set(e); 3317f03fc9552551024fa9ec50e3b020c7e3100ceeJason Sams mSlots = new ObjectBaseRef<Allocation>[2]; 3417f03fc9552551024fa9ec50e3b020c7e3100ceeJason Sams mTypes = new ObjectBaseRef<const Type>[2]; 3517f03fc9552551024fa9ec50e3b020c7e3100ceeJason Sams 368eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsc->mHal.funcs.script.initIntrinsic(rsc, this, iid, e); 378eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 3817f03fc9552551024fa9ec50e3b020c7e3100ceeJason Sams 398eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return true; 408eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 418eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 428eaba4fee0c7b5325742c87187622fdff51d5effJason Samsbool ScriptIntrinsic::freeChildren() { 438eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return false; 448eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 458eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 468eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::setupScript(Context *rsc) { 478eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 488eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 498eaba4fee0c7b5325742c87187622fdff51d5effJason Samsuint32_t ScriptIntrinsic::run(Context *rsc) { 508eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsAssert(!"ScriptIntrinsic::run - should not happen"); 518eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return 0; 528eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 538eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 548eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 558eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::runForEach(Context *rsc, 568eaba4fee0c7b5325742c87187622fdff51d5effJason Sams uint32_t slot, 578eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const Allocation * ain, 588eaba4fee0c7b5325742c87187622fdff51d5effJason Sams Allocation * aout, 598eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const void * usr, 608eaba4fee0c7b5325742c87187622fdff51d5effJason Sams size_t usrBytes, 618eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const RsScriptCall *sc) { 628eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 638eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsc->mHal.funcs.script.invokeForEach(rsc, this, slot, ain, aout, usr, usrBytes, sc); 648eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 658eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 668eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::Invoke(Context *rsc, uint32_t slot, const void *data, size_t len) { 678eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 688eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 698eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::serialize(Context *rsc, OStream *stream) const { 708eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 718eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 728eaba4fee0c7b5325742c87187622fdff51d5effJason SamsRsA3DClassID ScriptIntrinsic::getClassId() const { 738eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return (RsA3DClassID)0; 748eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 758eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 768eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 778eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 788eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace android { 798eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace renderscript { 808eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 818eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 828eaba4fee0c7b5325742c87187622fdff51d5effJason SamsRsScript rsi_ScriptIntrinsicCreate(Context *rsc, uint32_t id, RsElement ve) { 838eaba4fee0c7b5325742c87187622fdff51d5effJason Sams ScriptIntrinsic *si = new ScriptIntrinsic(rsc); 848eaba4fee0c7b5325742c87187622fdff51d5effJason Sams ALOGE("rsi_ScriptIntrinsicCreate %i", id); 8541d6c769f5fa21da3cbc116af95d88949a4a5c76Stephen Hines if (!si->init(rsc, (RsScriptIntrinsicID)id, (Element *)ve)) { 868eaba4fee0c7b5325742c87187622fdff51d5effJason Sams delete si; 878eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return NULL; 888eaba4fee0c7b5325742c87187622fdff51d5effJason Sams } 898eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return si; 908eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 918eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 928eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 938eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 948eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 958eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 96