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 3310ab8bb0fa510bdb577adce5e67b6bf35882a9ddChih-Hung Hsieh explicit ScriptIntrinsic(Context *); 3414ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala ~ScriptIntrinsic() override; 358eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 3641d6c769f5fa21da3cbc116af95d88949a4a5c76Stephen Hines bool init(Context *rsc, RsScriptIntrinsicID iid, Element *e); 378eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 388eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 3914ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala void serialize(Context *rsc, OStream *stream) const override; 4014ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala RsA3DClassID getClassId() const override; 4114ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala bool freeChildren() override; 428eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 4314ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala void runForEach(Context* rsc, 4414ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala uint32_t slot, 4514ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala const Allocation ** ains, 4614ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala size_t inLen, 4714ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala Allocation* aout, 4814ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala const void* usr, 4914ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala size_t usrBytes, 5014ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala const RsScriptCall* sc = nullptr) override; 514b3c34e6833e39bc89c2128002806b654b8e623dChris Wailes 52fc7ab793ea2db91f330272d9470433bbb1a505ceDavid Gross void runReduce(Context *rsc, uint32_t slot, 53fc7ab793ea2db91f330272d9470433bbb1a505ceDavid Gross const Allocation ** ains, size_t inLen, 5414ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala Allocation *aout, const RsScriptCall *sc) override; 5514ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala 5614ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala void Invoke(Context *rsc, uint32_t slot, const void *data, size_t len) override; 5714ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala void setupScript(Context *rsc) override; 5814ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala uint32_t run(Context *) override; 5914ce007a633b10e3b9a3fae29d8f53a7e8c9b59fMatt Wala bool isIntrinsic() const override { return true; } 608eaba4fee0c7b5325742c87187622fdff51d5effJason Samsprotected: 618eaba4fee0c7b5325742c87187622fdff51d5effJason Sams uint32_t mIntrinsicID; 628eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 638eaba4fee0c7b5325742c87187622fdff51d5effJason Sams}; 648eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 658eaba4fee0c7b5325742c87187622fdff51d5effJason Sams 667974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace renderscript 677974fc03e11f3a8dd40f794f3b33b4889483090cRahul Chaudhry} // namespace android 688eaba4fee0c7b5325742c87187622fdff51d5effJason Sams#endif 69