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