xref: /aosp_15_r20/frameworks/rs/driver/runtime/rs_structs.h (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
1*e1eccf28SAndroid Build Coastguard Worker #ifndef _RS_STRUCTS_H_
2*e1eccf28SAndroid Build Coastguard Worker #define _RS_STRUCTS_H_
3*e1eccf28SAndroid Build Coastguard Worker 
4*e1eccf28SAndroid Build Coastguard Worker #include "rs_core.rsh"
5*e1eccf28SAndroid Build Coastguard Worker #include "rs_graphics.rsh"
6*e1eccf28SAndroid Build Coastguard Worker 
7*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
8*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
9*e1eccf28SAndroid Build Coastguard Worker  *
10*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
11*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class Allocation owned by librs. Unfortunately,
12*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
13*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
14*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
15*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsAllocation.h is modified.
16*e1eccf28SAndroid Build Coastguard Worker  *
17*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
18*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsAllocationGetDimX(). Without this
19*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
20*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
21*e1eccf28SAndroid Build Coastguard Worker  * allocations.
22*e1eccf28SAndroid Build Coastguard Worker  *
23*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
24*e1eccf28SAndroid Build Coastguard Worker typedef enum {
25*e1eccf28SAndroid Build Coastguard Worker     RS_ALLOCATION_MIPMAP_NONE = 0,
26*e1eccf28SAndroid Build Coastguard Worker     RS_ALLOCATION_MIPMAP_FULL = 1,
27*e1eccf28SAndroid Build Coastguard Worker     RS_ALLOCATION_MIPMAP_ON_SYNC_TO_TEXTURE = 2
28*e1eccf28SAndroid Build Coastguard Worker } rs_allocation_mipmap_control;
29*e1eccf28SAndroid Build Coastguard Worker 
30*e1eccf28SAndroid Build Coastguard Worker typedef struct Allocation {
31*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
32*e1eccf28SAndroid Build Coastguard Worker     char __pad[32];
33*e1eccf28SAndroid Build Coastguard Worker #else
34*e1eccf28SAndroid Build Coastguard Worker     char __pad[56];
35*e1eccf28SAndroid Build Coastguard Worker #endif
36*e1eccf28SAndroid Build Coastguard Worker     struct {
37*e1eccf28SAndroid Build Coastguard Worker         void * drv;
38*e1eccf28SAndroid Build Coastguard Worker         struct {
39*e1eccf28SAndroid Build Coastguard Worker             const void *type;
40*e1eccf28SAndroid Build Coastguard Worker             uint32_t usageFlags;
41*e1eccf28SAndroid Build Coastguard Worker             rs_allocation_mipmap_control mipmapControl;
42*e1eccf28SAndroid Build Coastguard Worker             uint32_t yuv;
43*e1eccf28SAndroid Build Coastguard Worker             uint32_t elementSizeBytes;
44*e1eccf28SAndroid Build Coastguard Worker             bool hasMipmaps;
45*e1eccf28SAndroid Build Coastguard Worker             bool hasFaces;
46*e1eccf28SAndroid Build Coastguard Worker             bool hasReferences;
47*e1eccf28SAndroid Build Coastguard Worker             void * usrPtr;
48*e1eccf28SAndroid Build Coastguard Worker             int32_t surfaceTextureID;
49*e1eccf28SAndroid Build Coastguard Worker             void * nativeBuffer;
50*e1eccf28SAndroid Build Coastguard Worker             int64_t timestamp;
51*e1eccf28SAndroid Build Coastguard Worker 
52*e1eccf28SAndroid Build Coastguard Worker             // Allocation adapter state
53*e1eccf28SAndroid Build Coastguard Worker             const void *baseAlloc;
54*e1eccf28SAndroid Build Coastguard Worker             uint32_t originX;
55*e1eccf28SAndroid Build Coastguard Worker             uint32_t originY;
56*e1eccf28SAndroid Build Coastguard Worker             uint32_t originZ;
57*e1eccf28SAndroid Build Coastguard Worker             uint32_t originLOD;
58*e1eccf28SAndroid Build Coastguard Worker             uint32_t originFace;
59*e1eccf28SAndroid Build Coastguard Worker             uint32_t originArray[4/*Type::mMaxArrays*/];
60*e1eccf28SAndroid Build Coastguard Worker         } state;
61*e1eccf28SAndroid Build Coastguard Worker 
62*e1eccf28SAndroid Build Coastguard Worker         struct DrvState {
63*e1eccf28SAndroid Build Coastguard Worker             struct LodState {
64*e1eccf28SAndroid Build Coastguard Worker                 void * mallocPtr;
65*e1eccf28SAndroid Build Coastguard Worker                 size_t stride;
66*e1eccf28SAndroid Build Coastguard Worker                 uint32_t dimX;
67*e1eccf28SAndroid Build Coastguard Worker                 uint32_t dimY;
68*e1eccf28SAndroid Build Coastguard Worker                 uint32_t dimZ;
69*e1eccf28SAndroid Build Coastguard Worker             } lod[16/*android::renderscript::Allocation::MAX_LOD*/];
70*e1eccf28SAndroid Build Coastguard Worker             size_t faceOffset;
71*e1eccf28SAndroid Build Coastguard Worker             uint32_t lodCount;
72*e1eccf28SAndroid Build Coastguard Worker             uint32_t faceCount;
73*e1eccf28SAndroid Build Coastguard Worker 
74*e1eccf28SAndroid Build Coastguard Worker             struct YuvState {
75*e1eccf28SAndroid Build Coastguard Worker                 uint32_t shift;
76*e1eccf28SAndroid Build Coastguard Worker                 uint32_t step;
77*e1eccf28SAndroid Build Coastguard Worker             } yuv;
78*e1eccf28SAndroid Build Coastguard Worker 
79*e1eccf28SAndroid Build Coastguard Worker             int grallocFlags;
80*e1eccf28SAndroid Build Coastguard Worker             uint32_t dimArray[4/*Type::mMaxArrays*/];
81*e1eccf28SAndroid Build Coastguard Worker         } drvState;
82*e1eccf28SAndroid Build Coastguard Worker     } mHal;
83*e1eccf28SAndroid Build Coastguard Worker } Allocation_t;
84*e1eccf28SAndroid Build Coastguard Worker 
85*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
86*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
87*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
88*e1eccf28SAndroid Build Coastguard Worker  *
89*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
90*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class ProgramStore owned by librs. Unfortunately,
91*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
92*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
93*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
94*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsProgramStore.h is modified.
95*e1eccf28SAndroid Build Coastguard Worker  *
96*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
97*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsgProgramStoreGetDepthFunc(). Without this
98*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
99*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
100*e1eccf28SAndroid Build Coastguard Worker  * program store.
101*e1eccf28SAndroid Build Coastguard Worker  *
102*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
103*e1eccf28SAndroid Build Coastguard Worker typedef struct ProgramStore {
104*e1eccf28SAndroid Build Coastguard Worker     char __pad[40];
105*e1eccf28SAndroid Build Coastguard Worker     struct {
106*e1eccf28SAndroid Build Coastguard Worker         struct {
107*e1eccf28SAndroid Build Coastguard Worker             bool ditherEnable;
108*e1eccf28SAndroid Build Coastguard Worker             bool colorRWriteEnable;
109*e1eccf28SAndroid Build Coastguard Worker             bool colorGWriteEnable;
110*e1eccf28SAndroid Build Coastguard Worker             bool colorBWriteEnable;
111*e1eccf28SAndroid Build Coastguard Worker             bool colorAWriteEnable;
112*e1eccf28SAndroid Build Coastguard Worker             rs_blend_src_func blendSrc;
113*e1eccf28SAndroid Build Coastguard Worker             rs_blend_dst_func blendDst;
114*e1eccf28SAndroid Build Coastguard Worker             bool depthWriteEnable;
115*e1eccf28SAndroid Build Coastguard Worker             rs_depth_func depthFunc;
116*e1eccf28SAndroid Build Coastguard Worker         } state;
117*e1eccf28SAndroid Build Coastguard Worker     } mHal;
118*e1eccf28SAndroid Build Coastguard Worker } ProgramStore_t;
119*e1eccf28SAndroid Build Coastguard Worker 
120*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
121*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
122*e1eccf28SAndroid Build Coastguard Worker  *
123*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
124*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class ProgramRaster owned by librs. Unfortunately,
125*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
126*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
127*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
128*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsProgramRaster.h is modified.
129*e1eccf28SAndroid Build Coastguard Worker  *
130*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
131*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsgProgramRasterGetCullMode(). Without this
132*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
133*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
134*e1eccf28SAndroid Build Coastguard Worker  * program raster.
135*e1eccf28SAndroid Build Coastguard Worker  *
136*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
137*e1eccf28SAndroid Build Coastguard Worker typedef struct ProgramRaster {
138*e1eccf28SAndroid Build Coastguard Worker     char __pad[36];
139*e1eccf28SAndroid Build Coastguard Worker     struct {
140*e1eccf28SAndroid Build Coastguard Worker         void * drv;
141*e1eccf28SAndroid Build Coastguard Worker         struct {
142*e1eccf28SAndroid Build Coastguard Worker             bool pointSprite;
143*e1eccf28SAndroid Build Coastguard Worker             rs_cull_mode cull;
144*e1eccf28SAndroid Build Coastguard Worker         } state;
145*e1eccf28SAndroid Build Coastguard Worker     } mHal;
146*e1eccf28SAndroid Build Coastguard Worker } ProgramRaster_t;
147*e1eccf28SAndroid Build Coastguard Worker #endif //__LP64__
148*e1eccf28SAndroid Build Coastguard Worker 
149*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
150*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
151*e1eccf28SAndroid Build Coastguard Worker  *
152*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
153*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class Sampler owned by librs. Unfortunately,
154*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
155*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
156*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
157*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsSampler.h is modified.
158*e1eccf28SAndroid Build Coastguard Worker  *
159*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
160*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsgProgramRasterGetMagFilter(). Without this
161*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
162*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
163*e1eccf28SAndroid Build Coastguard Worker  * samplers.
164*e1eccf28SAndroid Build Coastguard Worker  *
165*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
166*e1eccf28SAndroid Build Coastguard Worker typedef struct Sampler {
167*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
168*e1eccf28SAndroid Build Coastguard Worker     char __pad[32];
169*e1eccf28SAndroid Build Coastguard Worker #else
170*e1eccf28SAndroid Build Coastguard Worker     char __pad[56];
171*e1eccf28SAndroid Build Coastguard Worker #endif
172*e1eccf28SAndroid Build Coastguard Worker     struct {
173*e1eccf28SAndroid Build Coastguard Worker         void *drv;
174*e1eccf28SAndroid Build Coastguard Worker         struct {
175*e1eccf28SAndroid Build Coastguard Worker             rs_sampler_value magFilter;
176*e1eccf28SAndroid Build Coastguard Worker             rs_sampler_value minFilter;
177*e1eccf28SAndroid Build Coastguard Worker             rs_sampler_value wrapS;
178*e1eccf28SAndroid Build Coastguard Worker             rs_sampler_value wrapT;
179*e1eccf28SAndroid Build Coastguard Worker             rs_sampler_value wrapR;
180*e1eccf28SAndroid Build Coastguard Worker             float aniso;
181*e1eccf28SAndroid Build Coastguard Worker         } state;
182*e1eccf28SAndroid Build Coastguard Worker     } mHal;
183*e1eccf28SAndroid Build Coastguard Worker } Sampler_t;
184*e1eccf28SAndroid Build Coastguard Worker 
185*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
186*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
187*e1eccf28SAndroid Build Coastguard Worker  *
188*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
189*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class Element owned by librs. Unfortunately,
190*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
191*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
192*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
193*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsElement.h is modified.
194*e1eccf28SAndroid Build Coastguard Worker  *
195*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
196*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsElementGetSubElementCount(). Without this
197*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
198*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
199*e1eccf28SAndroid Build Coastguard Worker  * elements.
200*e1eccf28SAndroid Build Coastguard Worker  *
201*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
202*e1eccf28SAndroid Build Coastguard Worker typedef struct Element {
203*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
204*e1eccf28SAndroid Build Coastguard Worker     char __pad[32];
205*e1eccf28SAndroid Build Coastguard Worker #else
206*e1eccf28SAndroid Build Coastguard Worker     char __pad[56];
207*e1eccf28SAndroid Build Coastguard Worker #endif
208*e1eccf28SAndroid Build Coastguard Worker     struct {
209*e1eccf28SAndroid Build Coastguard Worker         void *drv;
210*e1eccf28SAndroid Build Coastguard Worker         struct {
211*e1eccf28SAndroid Build Coastguard Worker             rs_data_type dataType;
212*e1eccf28SAndroid Build Coastguard Worker             rs_data_kind dataKind;
213*e1eccf28SAndroid Build Coastguard Worker             uint32_t vectorSize;
214*e1eccf28SAndroid Build Coastguard Worker             uint32_t elementSizeBytes;
215*e1eccf28SAndroid Build Coastguard Worker 
216*e1eccf28SAndroid Build Coastguard Worker             // Subelements
217*e1eccf28SAndroid Build Coastguard Worker             const void **fields;
218*e1eccf28SAndroid Build Coastguard Worker             uint32_t *fieldArraySizes;
219*e1eccf28SAndroid Build Coastguard Worker             const char **fieldNames;
220*e1eccf28SAndroid Build Coastguard Worker             uint32_t *fieldNameLengths;
221*e1eccf28SAndroid Build Coastguard Worker             uint32_t *fieldOffsetBytes;
222*e1eccf28SAndroid Build Coastguard Worker             uint32_t fieldsCount;
223*e1eccf28SAndroid Build Coastguard Worker         } state;
224*e1eccf28SAndroid Build Coastguard Worker     } mHal;
225*e1eccf28SAndroid Build Coastguard Worker } Element_t;
226*e1eccf28SAndroid Build Coastguard Worker 
227*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
228*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
229*e1eccf28SAndroid Build Coastguard Worker  *
230*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
231*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class Type owned by librs. Unfortunately,
232*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
233*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
234*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
235*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsType.h is modified.
236*e1eccf28SAndroid Build Coastguard Worker  *
237*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
238*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsAllocationGetElement(). Without this
239*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
240*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
241*e1eccf28SAndroid Build Coastguard Worker  * types.
242*e1eccf28SAndroid Build Coastguard Worker  *
243*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
244*e1eccf28SAndroid Build Coastguard Worker typedef struct Type {
245*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
246*e1eccf28SAndroid Build Coastguard Worker     char __pad[32];
247*e1eccf28SAndroid Build Coastguard Worker #else
248*e1eccf28SAndroid Build Coastguard Worker     char __pad[56];
249*e1eccf28SAndroid Build Coastguard Worker #endif
250*e1eccf28SAndroid Build Coastguard Worker     struct {
251*e1eccf28SAndroid Build Coastguard Worker         void *drv;
252*e1eccf28SAndroid Build Coastguard Worker         struct {
253*e1eccf28SAndroid Build Coastguard Worker             const void * element;
254*e1eccf28SAndroid Build Coastguard Worker             uint32_t dimX;
255*e1eccf28SAndroid Build Coastguard Worker             uint32_t dimY;
256*e1eccf28SAndroid Build Coastguard Worker             uint32_t dimZ;
257*e1eccf28SAndroid Build Coastguard Worker             uint32_t *lodDimX;
258*e1eccf28SAndroid Build Coastguard Worker             uint32_t *lodDimY;
259*e1eccf28SAndroid Build Coastguard Worker             uint32_t *lodDimZ;
260*e1eccf28SAndroid Build Coastguard Worker             uint32_t *arrays;
261*e1eccf28SAndroid Build Coastguard Worker             uint32_t lodCount;
262*e1eccf28SAndroid Build Coastguard Worker             uint32_t dimYuv;
263*e1eccf28SAndroid Build Coastguard Worker             uint32_t arrayCount;
264*e1eccf28SAndroid Build Coastguard Worker             bool faces;
265*e1eccf28SAndroid Build Coastguard Worker         } state;
266*e1eccf28SAndroid Build Coastguard Worker     } mHal;
267*e1eccf28SAndroid Build Coastguard Worker } Type_t;
268*e1eccf28SAndroid Build Coastguard Worker 
269*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
270*e1eccf28SAndroid Build Coastguard Worker /*****************************************************************************
271*e1eccf28SAndroid Build Coastguard Worker  * CAUTION
272*e1eccf28SAndroid Build Coastguard Worker  *
273*e1eccf28SAndroid Build Coastguard Worker  * The following structure layout provides a more efficient way to access
274*e1eccf28SAndroid Build Coastguard Worker  * internal members of the C++ class Mesh owned by librs. Unfortunately,
275*e1eccf28SAndroid Build Coastguard Worker  * since this class has virtual members, we can't simply use offsetof() or any
276*e1eccf28SAndroid Build Coastguard Worker  * other compiler trickery to dynamically get the appropriate values at
277*e1eccf28SAndroid Build Coastguard Worker  * build-time. This layout may need to be updated whenever
278*e1eccf28SAndroid Build Coastguard Worker  * frameworks/base/libs/rs/rsMesh.h is modified.
279*e1eccf28SAndroid Build Coastguard Worker  *
280*e1eccf28SAndroid Build Coastguard Worker  * Having the layout information available in this file allows us to
281*e1eccf28SAndroid Build Coastguard Worker  * accelerate functionality like rsMeshGetVertexAllocationCount(). Without this
282*e1eccf28SAndroid Build Coastguard Worker  * information, we would not be able to inline the bitcode, thus resulting in
283*e1eccf28SAndroid Build Coastguard Worker  * potential runtime performance penalties for tight loops operating on
284*e1eccf28SAndroid Build Coastguard Worker  * meshes.
285*e1eccf28SAndroid Build Coastguard Worker  *
286*e1eccf28SAndroid Build Coastguard Worker  *****************************************************************************/
287*e1eccf28SAndroid Build Coastguard Worker typedef struct Mesh {
288*e1eccf28SAndroid Build Coastguard Worker     char __pad[32];
289*e1eccf28SAndroid Build Coastguard Worker     struct {
290*e1eccf28SAndroid Build Coastguard Worker         void *drv;
291*e1eccf28SAndroid Build Coastguard Worker         struct {
292*e1eccf28SAndroid Build Coastguard Worker             void **vertexBuffers;
293*e1eccf28SAndroid Build Coastguard Worker             uint32_t vertexBuffersCount;
294*e1eccf28SAndroid Build Coastguard Worker 
295*e1eccf28SAndroid Build Coastguard Worker             // indexBuffers[i] could be nullptr, in which case only primitives[i] is used
296*e1eccf28SAndroid Build Coastguard Worker             void **indexBuffers;
297*e1eccf28SAndroid Build Coastguard Worker             uint32_t indexBuffersCount;
298*e1eccf28SAndroid Build Coastguard Worker             rs_primitive *primitives;
299*e1eccf28SAndroid Build Coastguard Worker             uint32_t primitivesCount;
300*e1eccf28SAndroid Build Coastguard Worker         } state;
301*e1eccf28SAndroid Build Coastguard Worker     } mHal;
302*e1eccf28SAndroid Build Coastguard Worker } Mesh_t;
303*e1eccf28SAndroid Build Coastguard Worker #endif //__LP64__
304*e1eccf28SAndroid Build Coastguard Worker 
305*e1eccf28SAndroid Build Coastguard Worker // Null version of _RS_OBJECT_DECL defined in script_api/rs_object_types.spec
306*e1eccf28SAndroid Build Coastguard Worker #ifndef __LP64__
307*e1eccf28SAndroid Build Coastguard Worker #define RS_NULL_OBJ {0}
308*e1eccf28SAndroid Build Coastguard Worker #else
309*e1eccf28SAndroid Build Coastguard Worker #define RS_NULL_OBJ {0, 0, 0, 0}
310*e1eccf28SAndroid Build Coastguard Worker #endif //__LP64__
311*e1eccf28SAndroid Build Coastguard Worker 
312*e1eccf28SAndroid Build Coastguard Worker #endif // _RS_CORE_H_
313