rs_element.rsh revision 14607a6bd1e909a7944e39b7ec71dc0ba65de2cd
114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/*
214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Copyright (C) 2012 The Android Open Source Project
314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * you may not use this file except in compliance with the License.
614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * You may obtain a copy of the License at
714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
1014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
1114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
1214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * See the License for the specific language governing permissions and
1414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * limitations under the License.
1514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
1614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
1714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/*! \mainpage notitle
1814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
1914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Renderscript is a high-performance runtime that provides graphics rendering and
2014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * compute operations at the native level. Renderscript code is compiled on devices
2114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * at runtime to allow platform-independence as well.
2214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * This reference documentation describes the Renderscript runtime APIs, which you
2314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * can utilize to write Renderscript code in C99. The Renderscript header
2414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * files are automatically included for you, except for the rs_graphics.rsh header. If
2514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * you are doing graphics rendering, include the graphics header file like this:
2614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
2714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * <code>#include "rs_graphics.rsh"</code>
2814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
2914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * To use Renderscript, you need to utilize the Renderscript runtime APIs documented here
3014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * as well as the Android framework APIs for Renderscript.
3114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * For documentation on the Android framework APIs, see the <a target="_parent" href=
3214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * "http://developer.android.com/reference/android/renderscript/package-summary.html">
3314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * android.renderscript</a> package reference.
3414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * For more information on how to develop with Renderscript and how the runtime and
3514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Android framework APIs interact, see the <a target="_parent" href=
3614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * "http://developer.android.com/guide/topics/renderscript/index.html">Renderscript
3714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * developer guide</a> and the <a target="_parent" href=
3814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * "http://developer.android.com/resources/samples/RenderScript/index.html">
3914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * Renderscript samples</a>.
4014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
4114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
4214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/** @file rs_element.rsh
4314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *  \brief Element routines
4414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
4514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *
4614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
4714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
4814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk#ifndef __RS_ELEMENT_RSH__
4914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk#define __RS_ELEMENT_RSH__
5014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
5114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
5214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
5314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return number of sub-elements in this element
5414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
5514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
5614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElementCount(rs_element e);
5714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
5814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
5914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
6014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param index index of the sub-element to return
6114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return sub-element in this element at given index
6214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
6314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern rs_element __attribute__((overloadable))
6414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElement(rs_element, uint32_t index);
6514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
6614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
6714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
6814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param index index of the sub-element to return
6914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return length of the sub-element name including the null
7014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *         terminator (size of buffer needed to write the name)
7114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
7214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
7314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElementNameLength(rs_element e, uint32_t index);
7414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
7514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
7614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
7714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param index index of the sub-element
7814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param name array to store the name into
7914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param nameLength length of the provided name array
8014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return number of characters actually written, excluding the
8114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *         null terminator
8214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
8314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
8414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElementName(rs_element e, uint32_t index, char *name, uint32_t nameLength);
8514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
8614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
8714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
8814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param index index of the sub-element
8914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return array size of sub-element in this element at given
9014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *         index
9114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
9214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
9314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElementArraySize(rs_element e, uint32_t index);
9414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
9514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
9614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
9714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param index index of the sub-element
9814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return offset in bytes of sub-element in this element at
9914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *         given index
10014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
10114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
10214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index);
10314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
10414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
10514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
10614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return total size of the element in bytes
10714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
10814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
10914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetSizeBytes(rs_element e);
11014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
11114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
11214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
11314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return element's data type
11414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
11514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern rs_data_type __attribute__((overloadable))
11614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetDataType(rs_element e);
11714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
11814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
11914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
12014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return element's data size
12114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
12214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern rs_data_kind __attribute__((overloadable))
12314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetDataKind(rs_element e);
12414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
12514607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk/**
12614607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @param e element to get data from
12714607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk * @return length of the element vector (for float2, float3,
12814607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk *         etc.)
12914607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk */
13014607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchoukextern uint32_t __attribute__((overloadable))
13114607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk    rsElementGetVectorSize(rs_element e);
13214607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
13314607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk#endif // __RS_ELEMENT_RSH__
13414607a6bd1e909a7944e39b7ec71dc0ba65de2cdAlex Sakhartchouk
135