1ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams/* 2ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Copyright (C) 2012 The Android Open Source Project 3ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 4ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * you may not use this file except in compliance with the License. 6ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * You may obtain a copy of the License at 7ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 8ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * 10ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * Unless required by applicable law or agreed to in writing, software 11ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * See the License for the specific language governing permissions and 14ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams * limitations under the License. 15ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams */ 16ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 17ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#ifndef ANDROID_RS_SCRIPT_INTRINSIC_H 18ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#define ANDROID_RS_SCRIPT_INTRINSIC_H 19ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 20ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#include "rsScript.h" 21ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 22ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 23ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams// --------------------------------------------------------------------------- 24ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsnamespace android { 25ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsnamespace renderscript { 26ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 27ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 28ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsclass ScriptIntrinsic : public Script { 29ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samspublic: 30ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 31ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams ObjectBaseRef<const Element> mElement; 32ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 33ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams ScriptIntrinsic(Context *); 34ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual ~ScriptIntrinsic(); 35ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 36ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams bool init(Context *rsc, RsScriptIntrinsicID iid, Element *e); 37ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 38ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 39ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual void serialize(Context *rsc, OStream *stream) const; 40ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual RsA3DClassID getClassId() const; 41ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual bool freeChildren(); 42ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 43ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual void runForEach(Context *rsc, 44ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams uint32_t slot, 45ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const Allocation * ain, 46ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams Allocation * aout, 47ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const void * usr, 48ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams size_t usrBytes, 49ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams const RsScriptCall *sc = NULL); 50ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 51ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual void Invoke(Context *rsc, uint32_t slot, const void *data, size_t len); 52ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual void setupScript(Context *rsc); 53ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams virtual uint32_t run(Context *); 54ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsprotected: 55ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams uint32_t mIntrinsicID; 56ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams float mParams[9]; 57ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 58ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams}; 59ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 60ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 61ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 62ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams} 63ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams#endif 64ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 65ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams 66