rs_object_info.rsh revision 4a73004df5231d188c41267fee17c566ae7c3631
1be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
2be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Copyright (C) 2015 The Android Open Source Project
3be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
4be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Licensed under the Apache License, Version 2.0 (the "License");
5be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * you may not use this file except in compliance with the License.
6be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * You may obtain a copy of the License at
7be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
8be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *      http://www.apache.org/licenses/LICENSE-2.0
9be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
10be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Unless required by applicable law or agreed to in writing, software
11be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * distributed under the License is distributed on an "AS IS" BASIS,
12be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See the License for the specific language governing permissions and
14be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * limitations under the License.
15be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
16be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
174a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
18be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
19be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
20be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rs_object_info.rsh: Element functions
21be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
22be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The term "element" is used a bit ambiguously in RenderScript, as both
23be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * the type of an item of an allocation and the instantiation of that type:
24be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
254a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet * - rs_element is a handle to a type specification, and
26be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
274a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet * - In functions like rsGetElementAt(), "element" means the instantiation
28be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * of the type, i.e. an item of an allocation.
29be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
30be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The functions below let you query the characteristics of the type specificiation.
31be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
32be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * To create complex elements, use the Element.Builder Java class.
33be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For common elements, in Java you can simply use one of the many predefined elements
34be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * like F32_2.  You can't create elements from a script.
35be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
36be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * An element can be a simple data type as found in C/C++, a handle type,
37be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * a structure, or a fixed size vector (of size 2, 3, or 4) of sub-elements.
38be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
39be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Elements can also have a kind, which is semantic information used mostly to
40be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * interpret pixel data.
41be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
424a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet
43be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#ifndef RENDERSCRIPT_RS_OBJECT_INFO_RSH
44be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define RENDERSCRIPT_RS_OBJECT_INFO_RSH
45be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
46be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
47be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsAllocationGetDimFaces: Presence of more than one face
48be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
49be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the allocation is a cubemap, this function returns 1 if there's more than one
50be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * face present.  In all other cases, it returns 0.
51be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
52be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Returns 1 if more than one face is present, 0 otherwise.
53be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
54be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
55be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetDimFaces(rs_allocation a);
56be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
57be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
58be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsAllocationGetDimLOD: Presence of levels of details
59be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
60be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Query an allocation for the presence of more than one Level Of Details.  This is useful for mipmaps.
61be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
62be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Returns 1 if more than one LOD is present, 0 otherwise.
63be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
64be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
65be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetDimLOD(rs_allocation a);
66be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
67be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
68be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsAllocationGetDimX: Size of the X dimension
69be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
70be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the size of the X dimension of the allocation.
71be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
72be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: The X dimension of the allocation.
73be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
74be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
75be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetDimX(rs_allocation a);
76be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
77be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
78be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsAllocationGetDimY: Size of the Y dimension
79be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
80be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the size of the Y dimension of the allocation.
81be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the allocation has less than two dimensions, returns 0.
82be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
83be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: The Y dimension of the allocation.
84be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
85be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
86be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetDimY(rs_allocation a);
87be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
88be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
89be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsAllocationGetDimZ: Size of the Z dimension
90be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
91be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the size of the Z dimension of the allocation.
92be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the allocation has less than three dimensions, returns 0.
93be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
94be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: The Z dimension of the allocation.
95be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
96be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
97be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetDimZ(rs_allocation a);
98be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
99be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Get the element object describing the allocation's layout
101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
1034a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   a: allocation to get data from
104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: element describing allocation layout
106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_element __attribute__((overloadable))
108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsAllocationGetElement(rs_allocation a);
109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsClearObject: For internal use.
112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsClearObject(rs_element* dst);
116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsClearObject(rs_type* dst);
119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsClearObject(rs_allocation* dst);
122be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsClearObject(rs_sampler* dst);
125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsClearObject(rs_script* dst);
128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsIsObject: For internal use.
131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern bool __attribute__((overloadable))
134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsIsObject(rs_element v);
135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern bool __attribute__((overloadable))
137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsIsObject(rs_type v);
138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern bool __attribute__((overloadable))
140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsIsObject(rs_allocation v);
141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern bool __attribute__((overloadable))
143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsIsObject(rs_sampler v);
144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern bool __attribute__((overloadable))
146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsIsObject(rs_script v);
147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetBytesSize: Return the size of an element
150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the size in bytes that an instantiation of this element will occupy.
152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetBytesSize(rs_element e);
156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetDataKind: Return the kind of an element
160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the element's data kind.  This is used to interpret pixel data.
162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See rs_data_kind.
164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_data_kind __attribute__((overloadable))
167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetDataKind(rs_element e);
168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetDataType: Return the data type of an element
172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the element's base data type.  This can be a type similar to C/C++ (e.g. RS_TYPE_UNSIGNED_8),
174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * a handle (e.g. RS_TYPE_ALLOCATION and RS_TYPE_ELEMENT), or a more complex numerical type
175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * (e.g.RS_TYPE_UNSIGNED_5_6_5 and RS_TYPE_MATRIX_4X4).
176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the element describes a vector, this function returns the data type of one of its items.
178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the element describes a structure, RS_TYPE_NONE is returned.
180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See rs_data_type.
182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_data_type __attribute__((overloadable))
185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetDataType(rs_element e);
186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetSubElement: Return a sub element of a complex element
190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For the element represents a structure, this function returns the sub-element at
192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * the specified index.
193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * If the element is not a structure or the index is greater or equal to the number
195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * of sub-elements, an invalid handle is returned.
196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
1984a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to query
1994a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   index: Index of the sub-element to return
200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Sub-element at the given index
202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_element __attribute__((overloadable))
205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElement(rs_element e, uint32_t index);
206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetSubElementArraySize: Return the array size of a sub element of a complex element
210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For complex elements, some sub-elements could be statically
212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sized arrays. This function returns the array size of the
213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sub-element at the index.
214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2164a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to query
2174a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   index: Index of the sub-element
218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Array size of the sub-element at the given index
220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
221be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
222be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
223be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElementArraySize(rs_element e, uint32_t index);
224be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
225be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
226be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
227be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetSubElementCount: Return the number of sub-elements
228be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
229be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Elements could be simple, such as an int or a float, or a
230be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * structure with multiple sub-elements, such as a collection of
231be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * floats, float2, float4.  This function returns zero for simple
232be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * elements or the number of sub-elements otherwise.
233be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
234be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2354a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to get data from
236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Number of sub-elements in this element
238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElementCount(rs_element e);
242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetSubElementName: Return the name of a sub-element
246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For complex elements, this function returns the name of the sub-element
248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * at the specified index.
249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2514a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to get data from
2524a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   index: Index of the sub-element
2534a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   name: Array to store the name into
2544a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   nameLength: Length of the provided name array
255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Number of characters actually written, excluding the null terminator
257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
260be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength);
261be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
262be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
263be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
264be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsElementGetSubElementNameLength: Return the length of the name of a sub-element
265be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For complex elements, this function will return the length of
267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * sub-element name at index
268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2704a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to get data from
2714a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   index: Index of the sub-element to return
272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Length of the sub-element name including the null terminator (size of buffer needed to write the name)
274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElementNameLength(rs_element e, uint32_t index);
278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * This function specifies the location of a sub-element within
282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * the element
283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2854a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to get data from
2864a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   index: Index of the sub-element
287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Offset in bytes of sub-element in this element at given index
289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index);
293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
295be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
296be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the element's vector size
297be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
298be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
2994a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   e: Element to get data from
300be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
301be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: Length of the element vector (for float2, float3, etc.)
302be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
303be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
304be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern uint32_t __attribute__((overloadable))
305be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsElementGetVectorSize(rs_element e);
306be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
307be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
308be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
309be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsGetAllocation: Returns the Allocation for a given pointer
310be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
311be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns the Allocation for a given pointer.  The pointer should point within
312be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * a valid allocation.  The results are undefined if the pointer is not from a
313be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * valid allocation.
314be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
315be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * This function is deprecated and will be removed from the SDK in a future
316be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * release.
317be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
318be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_allocation __attribute__((overloadable))
319be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsGetAllocation(const void* p);
320be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
321be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
322be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *  Get sampler anisotropy
323be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
324be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
3254a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   s: sampler to query
326be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
327be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: anisotropy
328be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
329be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
330be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((overloadable))
331be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSamplerGetAnisotropy(rs_sampler s);
332be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
333be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
334be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
335be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Get sampler magnification value
336be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
337be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
3384a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   s: sampler to query
339be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
340be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: magnification value
341be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
342be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
343be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_sampler_value __attribute__((overloadable))
344be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSamplerGetMagnification(rs_sampler s);
345be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
346be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
347be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
348be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Get sampler minification value
349be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
350be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
3514a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   s: sampler to query
352be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
353be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: minification value
354be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
355be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
356be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_sampler_value __attribute__((overloadable))
357be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSamplerGetMinification(rs_sampler s);
358be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
359be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
360be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
361be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Get sampler wrap S value
362be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
363be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
3644a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   s: sampler to query
365be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
366be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: wrap S value
367be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
368be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
369be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_sampler_value __attribute__((overloadable))
370be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSamplerGetWrapS(rs_sampler s);
371be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
372be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
373be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
374be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Get sampler wrap T value
375be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
376be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Parameters:
3774a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet *   s: sampler to query
378be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
379be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Returns: wrap T value
380be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
381be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 16))
382be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern rs_sampler_value __attribute__((overloadable))
383be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSamplerGetWrapT(rs_sampler s);
384be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif
385be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
386be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/*
387be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rsSetObject: For internal use.
388be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet *
389be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */
390be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
391be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSetObject(rs_element* dst, rs_element src);
392be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
393be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
394be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSetObject(rs_type* dst, rs_type src);
395be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
396be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
397be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSetObject(rs_allocation* dst, rs_allocation src);
398be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
399be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
400be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSetObject(rs_sampler* dst, rs_sampler src);
401be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
402be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern void __attribute__((overloadable))
403be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet    rsSetObject(rs_script* dst, rs_script src);
404be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet
405be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif // RENDERSCRIPT_RS_OBJECT_INFO_RSH
406