1*e1eccf28SAndroid Build Coastguard Worker /* 2*e1eccf28SAndroid Build Coastguard Worker * Copyright (C) 2012 The Android Open Source Project 3*e1eccf28SAndroid Build Coastguard Worker * 4*e1eccf28SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*e1eccf28SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*e1eccf28SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*e1eccf28SAndroid Build Coastguard Worker * 8*e1eccf28SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*e1eccf28SAndroid Build Coastguard Worker * 10*e1eccf28SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*e1eccf28SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*e1eccf28SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*e1eccf28SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*e1eccf28SAndroid Build Coastguard Worker * limitations under the License. 15*e1eccf28SAndroid Build Coastguard Worker */ 16*e1eccf28SAndroid Build Coastguard Worker 17*e1eccf28SAndroid Build Coastguard Worker #ifndef RSD_CPU_SCRIPT_INTRINSIC_H 18*e1eccf28SAndroid Build Coastguard Worker #define RSD_CPU_SCRIPT_INTRINSIC_H 19*e1eccf28SAndroid Build Coastguard Worker 20*e1eccf28SAndroid Build Coastguard Worker #include "rsCpuScript.h" 21*e1eccf28SAndroid Build Coastguard Worker 22*e1eccf28SAndroid Build Coastguard Worker 23*e1eccf28SAndroid Build Coastguard Worker namespace android { 24*e1eccf28SAndroid Build Coastguard Worker namespace renderscript { 25*e1eccf28SAndroid Build Coastguard Worker 26*e1eccf28SAndroid Build Coastguard Worker 27*e1eccf28SAndroid Build Coastguard Worker struct MTLaunchStructForEachBlas : public MTLaunchStructCommon { 28*e1eccf28SAndroid Build Coastguard Worker // Driver info structure 29*e1eccf28SAndroid Build Coastguard Worker RsExpandKernelDriverInfo fep; 30*e1eccf28SAndroid Build Coastguard Worker 31*e1eccf28SAndroid Build Coastguard Worker // Tile size info for M, and N dimensions. 32*e1eccf28SAndroid Build Coastguard Worker uint32_t tileSizeM; 33*e1eccf28SAndroid Build Coastguard Worker uint32_t numTileM; 34*e1eccf28SAndroid Build Coastguard Worker uint32_t tileSizeN; 35*e1eccf28SAndroid Build Coastguard Worker uint32_t numTileN; 36*e1eccf28SAndroid Build Coastguard Worker 37*e1eccf28SAndroid Build Coastguard Worker const Allocation *ains[RS_KERNEL_INPUT_LIMIT]; 38*e1eccf28SAndroid Build Coastguard Worker const RsBlasCall *sc; 39*e1eccf28SAndroid Build Coastguard Worker }; 40*e1eccf28SAndroid Build Coastguard Worker 41*e1eccf28SAndroid Build Coastguard Worker 42*e1eccf28SAndroid Build Coastguard Worker class RsdCpuScriptIntrinsic : public RsdCpuScriptImpl { 43*e1eccf28SAndroid Build Coastguard Worker public: 44*e1eccf28SAndroid Build Coastguard Worker void populateScript(Script *) override = 0; 45*e1eccf28SAndroid Build Coastguard Worker 46*e1eccf28SAndroid Build Coastguard Worker void invokeFunction(uint32_t slot, const void * params, size_t paramLength) override; 47*e1eccf28SAndroid Build Coastguard Worker int invokeRoot() override; 48*e1eccf28SAndroid Build Coastguard Worker 49*e1eccf28SAndroid Build Coastguard Worker void invokeForEach(uint32_t slot, 50*e1eccf28SAndroid Build Coastguard Worker const Allocation ** ain, 51*e1eccf28SAndroid Build Coastguard Worker uint32_t inLen, 52*e1eccf28SAndroid Build Coastguard Worker Allocation * aout, 53*e1eccf28SAndroid Build Coastguard Worker const void * usr, 54*e1eccf28SAndroid Build Coastguard Worker uint32_t usrLen, 55*e1eccf28SAndroid Build Coastguard Worker const RsScriptCall *sc) override; 56*e1eccf28SAndroid Build Coastguard Worker 57*e1eccf28SAndroid Build Coastguard Worker void forEachKernelSetup(uint32_t slot, MTLaunchStructForEach * mtls) override; 58*e1eccf28SAndroid Build Coastguard Worker void invokeInit() override; 59*e1eccf28SAndroid Build Coastguard Worker void invokeFreeChildren() override; 60*e1eccf28SAndroid Build Coastguard Worker 61*e1eccf28SAndroid Build Coastguard Worker void preLaunch(uint32_t slot, const Allocation ** ains, 62*e1eccf28SAndroid Build Coastguard Worker uint32_t inLen, Allocation * aout, const void * usr, 63*e1eccf28SAndroid Build Coastguard Worker uint32_t usrLen, const RsScriptCall * sc) override; 64*e1eccf28SAndroid Build Coastguard Worker void postLaunch(uint32_t slot, const Allocation ** ains, 65*e1eccf28SAndroid Build Coastguard Worker uint32_t inLen, Allocation * aout, 66*e1eccf28SAndroid Build Coastguard Worker const void * usr, uint32_t usrLen, 67*e1eccf28SAndroid Build Coastguard Worker const RsScriptCall * sc) override; 68*e1eccf28SAndroid Build Coastguard Worker 69*e1eccf28SAndroid Build Coastguard Worker void setGlobalVar(uint32_t slot, const void * data, size_t dataLength) override; 70*e1eccf28SAndroid Build Coastguard Worker void setGlobalVarWithElemDims(uint32_t slot, const void * data, 71*e1eccf28SAndroid Build Coastguard Worker size_t dataLength, const Element * e, 72*e1eccf28SAndroid Build Coastguard Worker const uint32_t * dims, 73*e1eccf28SAndroid Build Coastguard Worker size_t dimLength) override; 74*e1eccf28SAndroid Build Coastguard Worker void setGlobalBind(uint32_t slot, Allocation *data) override; 75*e1eccf28SAndroid Build Coastguard Worker void setGlobalObj(uint32_t slot, ObjectBase *data) override; 76*e1eccf28SAndroid Build Coastguard Worker 77*e1eccf28SAndroid Build Coastguard Worker ~RsdCpuScriptIntrinsic() override; 78*e1eccf28SAndroid Build Coastguard Worker RsdCpuScriptIntrinsic(RsdCpuReferenceImpl * ctx, const Script * s, 79*e1eccf28SAndroid Build Coastguard Worker const Element * e, RsScriptIntrinsicID iid); 80*e1eccf28SAndroid Build Coastguard Worker 81*e1eccf28SAndroid Build Coastguard Worker protected: 82*e1eccf28SAndroid Build Coastguard Worker RsScriptIntrinsicID mID; 83*e1eccf28SAndroid Build Coastguard Worker ForEachFunc_t mRootPtr; 84*e1eccf28SAndroid Build Coastguard Worker ObjectBaseRef<const Element> mElement; 85*e1eccf28SAndroid Build Coastguard Worker 86*e1eccf28SAndroid Build Coastguard Worker }; 87*e1eccf28SAndroid Build Coastguard Worker 88*e1eccf28SAndroid Build Coastguard Worker 89*e1eccf28SAndroid Build Coastguard Worker 90*e1eccf28SAndroid Build Coastguard Worker } // namespace renderscript 91*e1eccf28SAndroid Build Coastguard Worker } // namespace android 92*e1eccf28SAndroid Build Coastguard Worker 93*e1eccf28SAndroid Build Coastguard Worker #endif 94