xref: /aosp_15_r20/frameworks/rs/cpu_ref/rsCpuIntrinsic.h (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
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