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