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#ifndef ANDROID_RS_SCRIPT_INTRINSIC_H
188eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#define ANDROID_RS_SCRIPT_INTRINSIC_H
198eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
208eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#include "rsScript.h"
218eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
228eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
238eaba4fee0c7b5325742c87187622fdff51d5effJason Sams// ---------------------------------------------------------------------------
248eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace android {
258eaba4fee0c7b5325742c87187622fdff51d5effJason Samsnamespace renderscript {
268eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
278eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
288eaba4fee0c7b5325742c87187622fdff51d5effJason Samsclass ScriptIntrinsic : public Script {
298eaba4fee0c7b5325742c87187622fdff51d5effJason Samspublic:
308eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
318eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    ObjectBaseRef<const Element> mElement;
328eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
338eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    ScriptIntrinsic(Context *);
348eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual ~ScriptIntrinsic();
358eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
3641d6c769f5fa21da3cbc116af95d88949a4a5c76Stephen Hines    bool init(Context *rsc, RsScriptIntrinsicID iid, Element *e);
378eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
388eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
398eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual void serialize(Context *rsc, OStream *stream) const;
408eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual RsA3DClassID getClassId() const;
418eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual bool freeChildren();
428eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
438eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual void runForEach(Context *rsc,
448eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            uint32_t slot,
458eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            const Allocation * ain,
468eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            Allocation * aout,
478eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            const void * usr,
488eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            size_t usrBytes,
498eaba4fee0c7b5325742c87187622fdff51d5effJason Sams                            const RsScriptCall *sc = NULL);
508eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
518eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual void Invoke(Context *rsc, uint32_t slot, const void *data, size_t len);
528eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual void setupScript(Context *rsc);
538eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    virtual uint32_t run(Context *);
548eaba4fee0c7b5325742c87187622fdff51d5effJason Samsprotected:
558eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    uint32_t mIntrinsicID;
568eaba4fee0c7b5325742c87187622fdff51d5effJason Sams    float mParams[9];
578eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
588eaba4fee0c7b5325742c87187622fdff51d5effJason Sams};
598eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
608eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
618eaba4fee0c7b5325742c87187622fdff51d5effJason Sams}
628eaba4fee0c7b5325742c87187622fdff51d5effJason Sams}
638eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#endif
648eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
658eaba4fee0c7b5325742c87187622fdff51d5effJason Sams
66