rsScriptIntrinsic.cpp revision 8eaba4fee0c7b5325742c87187622fdff51d5eff
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 308eaba4fee0c7b5325742c87187622fdff51d5effJason Samsbool ScriptIntrinsic::init(Context *rsc, RsScriptIntrisicID iid, Element *e) { 318eaba4fee0c7b5325742c87187622fdff51d5effJason Sams mIntrinsicID = iid; 328eaba4fee0c7b5325742c87187622fdff51d5effJason Sams mElement.set(e); 338eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsc->mHal.funcs.script.initIntrinsic(rsc, this, iid, e); 348eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 358eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return true; 368eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 378eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 388eaba4fee0c7b5325742c87187622fdff51d5effJason Samsbool ScriptIntrinsic::freeChildren() { 398eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return false; 408eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 418eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 428eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::setupScript(Context *rsc) { 438eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 448eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 458eaba4fee0c7b5325742c87187622fdff51d5effJason Samsuint32_t ScriptIntrinsic::run(Context *rsc) { 468eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsAssert(!"ScriptIntrinsic::run - should not happen"); 478eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return 0; 488eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 498eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 508eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 518eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::runForEach(Context *rsc, 528eaba4fee0c7b5325742c87187622fdff51d5effJason Sams uint32_t slot, 538eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const Allocation * ain, 548eaba4fee0c7b5325742c87187622fdff51d5effJason Sams Allocation * aout, 558eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const void * usr, 568eaba4fee0c7b5325742c87187622fdff51d5effJason Sams size_t usrBytes, 578eaba4fee0c7b5325742c87187622fdff51d5effJason Sams const RsScriptCall *sc) { 588eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 598eaba4fee0c7b5325742c87187622fdff51d5effJason Sams rsc->mHal.funcs.script.invokeForEach(rsc, this, slot, ain, aout, usr, usrBytes, sc); 608eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 618eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 628eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::Invoke(Context *rsc, uint32_t slot, const void *data, size_t len) { 638eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 648eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 658eaba4fee0c7b5325742c87187622fdff51d5effJason Samsvoid ScriptIntrinsic::serialize(Context *rsc, OStream *stream) const { 668eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 678eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 688eaba4fee0c7b5325742c87187622fdff51d5effJason SamsRsA3DClassID ScriptIntrinsic::getClassId() const { 698eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return (RsA3DClassID)0; 708eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 718eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 728eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 738eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 748eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace android { 758eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace renderscript { 768eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 778eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 788eaba4fee0c7b5325742c87187622fdff51d5effJason SamsRsScript rsi_ScriptIntrinsicCreate(Context *rsc, uint32_t id, RsElement ve) { 798eaba4fee0c7b5325742c87187622fdff51d5effJason Sams ScriptIntrinsic *si = new ScriptIntrinsic(rsc); 808eaba4fee0c7b5325742c87187622fdff51d5effJason Sams ALOGE("rsi_ScriptIntrinsicCreate %i", id); 818eaba4fee0c7b5325742c87187622fdff51d5effJason Sams if (!si->init(rsc, (RsScriptIntrisicID)id, (Element *)ve)) { 828eaba4fee0c7b5325742c87187622fdff51d5effJason Sams delete si; 838eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return NULL; 848eaba4fee0c7b5325742c87187622fdff51d5effJason Sams } 858eaba4fee0c7b5325742c87187622fdff51d5effJason Sams return si; 868eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 878eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 888eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 898eaba4fee0c7b5325742c87187622fdff51d5effJason Sams} 908eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 918eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 92