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