Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 // Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
     18 
     19 /*
     20  * rs_object_types.rsh: Object Types
     21  *
     22  * The types below are used to manipulate RenderScript objects like allocations, samplers,
     23  * elements, and scripts.  Most of these object are created using the Java RenderScript APIs.
     24  */
     25 
     26 #ifndef RENDERSCRIPT_RS_OBJECT_TYPES_RSH
     27 #define RENDERSCRIPT_RS_OBJECT_TYPES_RSH
     28 
     29 #define NULL ((void *)0)
     30 
     31 // Opaque handle to a RenderScript object. Do not use this directly.
     32 #ifndef __LP64__
     33 #define _RS_OBJECT_DECL \
     34 {\
     35   const int* const p;\
     36 } __attribute__((packed, aligned(4)))
     37 #else
     38 #define _RS_OBJECT_DECL \
     39 {\
     40   const long* const p;\
     41   const long* const unused1;\
     42   const long* const unused2;\
     43   const long* const unused3;\
     44 }
     45 #endif
     46 
     47 /*
     48  * rs_element: Handle to an element
     49  *
     50  * An opaque handle to a RenderScript element.
     51  *
     52  * See android.renderscript.Element.
     53  */
     54 typedef struct rs_element _RS_OBJECT_DECL rs_element;
     55 
     56 /*
     57  * rs_type: Handle to a Type
     58  *
     59  * An opaque handle to a RenderScript type.
     60  *
     61  * See android.renderscript.Type.
     62  */
     63 typedef struct rs_type _RS_OBJECT_DECL rs_type;
     64 
     65 /*
     66  * rs_allocation: Handle to an allocation
     67  *
     68  * An opaque handle to a RenderScript allocation.
     69  *
     70  * See android.renderscript.Allocation.
     71  */
     72 typedef struct rs_allocation _RS_OBJECT_DECL rs_allocation;
     73 
     74 /*
     75  * rs_sampler: Handle to a Sampler
     76  *
     77  * An opaque handle to a RenderScript sampler object.
     78  *
     79  * See android.renderscript.Sampler.
     80  */
     81 typedef struct rs_sampler _RS_OBJECT_DECL rs_sampler;
     82 
     83 /*
     84  * rs_script: Handle to a Script
     85  *
     86  * An opaque handle to a RenderScript script object.
     87  *
     88  * See android.renderscript.ScriptC.
     89  */
     90 typedef struct rs_script _RS_OBJECT_DECL rs_script;
     91 
     92 /*
     93  * rs_allocation_cubemap_face: Enum for selecting cube map faces
     94  *
     95  * An enum used to specify one the six faces of a cubemap.
     96  */
     97 #if (defined(RS_VERSION) && (RS_VERSION >= 14))
     98 typedef enum {
     99     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
    100     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
    101     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
    102     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
    103     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
    104     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
    105 } rs_allocation_cubemap_face;
    106 #endif
    107 
    108 /*
    109  * rs_allocation_usage_type: Bitfield to specify how an allocation is used
    110  *
    111  * These values are ORed together to specify which usages or memory spaces are
    112  * relevant to an allocation or an operation on an allocation.
    113  */
    114 #if (defined(RS_VERSION) && (RS_VERSION >= 14))
    115 typedef enum {
    116     RS_ALLOCATION_USAGE_SCRIPT = 0x0001, // Allocation is bound to and accessed by scripts.
    117     RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, // Allocation is used as a texture source.
    118     RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, // Deprecated.
    119     RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, // Deprecated.
    120     RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010, // Deprecated.
    121     RS_ALLOCATION_USAGE_IO_INPUT = 0x0020, // Allocation is used as a Surface consumer.
    122     RS_ALLOCATION_USAGE_IO_OUTPUT = 0x0040, // Allocation is used as a Surface producer.
    123     RS_ALLOCATION_USAGE_SHARED = 0x0080 // Allocation's backing store is shared with another object (usually a Bitmap).  Copying to or from the original source Bitmap will cause a synchronization rather than a full copy.
    124 } rs_allocation_usage_type;
    125 #endif
    126 
    127 /*
    128  * rs_data_type: Element basic data type
    129  *
    130  * rs_data_type is used to encode the type information of a basic element.
    131  *
    132  * RS_TYPE_UNSIGNED_5_6_5, RS_TYPE_UNSIGNED_5_5_5_1, RS_TYPE_UNSIGNED_4_4_4_4 are for packed
    133  * graphical data formats and represent vectors with per vector member sizes which are treated
    134  * as a single unit for packing and alignment purposes.
    135  */
    136 #if (defined(RS_VERSION) && (RS_VERSION >= 16))
    137 typedef enum {
    138     RS_TYPE_NONE = 0, // Element is a complex type, i.e. a struct.
    139     RS_TYPE_FLOAT_16 = 1, // A 16 bit floating point value.
    140     RS_TYPE_FLOAT_32 = 2, // A 32 bit floating point value.
    141     RS_TYPE_FLOAT_64 = 3, // A 64 bit floating point value.
    142     RS_TYPE_SIGNED_8 = 4, // An 8 bit signed integer.
    143     RS_TYPE_SIGNED_16 = 5, // A 16 bit signed integer.
    144     RS_TYPE_SIGNED_32 = 6, // A 32 bit signed integer.
    145     RS_TYPE_SIGNED_64 = 7, // A 64 bit signed integer.
    146     RS_TYPE_UNSIGNED_8 = 8, // An 8 bit unsigned integer.
    147     RS_TYPE_UNSIGNED_16 = 9, // A 16 bit unsigned integer.
    148     RS_TYPE_UNSIGNED_32 = 10, // A 32 bit unsigned integer.
    149     RS_TYPE_UNSIGNED_64 = 11, // A 64 bit unsigned integer.
    150     RS_TYPE_BOOLEAN = 12, // 0 or 1 (false or true) stored in an 8 bit container.
    151     RS_TYPE_UNSIGNED_5_6_5 = 13, // A 16 bit unsigned integer packing graphical data in 5, 6, and 5 bit sections.
    152     RS_TYPE_UNSIGNED_5_5_5_1 = 14, // A 16 bit unsigned integer packing graphical data in 5, 5, 5, and 1 bit sections.
    153     RS_TYPE_UNSIGNED_4_4_4_4 = 15, // A 16 bit unsigned integer packing graphical data in 4, 4, 4, and 4 bit sections.
    154     RS_TYPE_MATRIX_4X4 = 16, // A 4x4 matrix of 32 bit floats, aligned on a 32 bit boundary.
    155     RS_TYPE_MATRIX_3X3 = 17, // A 3x3 matrix of 32 bit floats, aligned on a 32 bit boundary.
    156     RS_TYPE_MATRIX_2X2 = 18, // A 2x2 matrix of 32 bit floats, aligned on a 32 bit boundary.
    157     RS_TYPE_ELEMENT = 1000, // A handle to an Element.
    158     RS_TYPE_TYPE = 1001, // A handle to a Type.
    159     RS_TYPE_ALLOCATION = 1002, // A handle to an Allocation.
    160     RS_TYPE_SAMPLER = 1003, // A handle to a Sampler.
    161     RS_TYPE_SCRIPT = 1004, // A handle to a Script.
    162     RS_TYPE_MESH = 1005, // Deprecated.
    163     RS_TYPE_PROGRAM_FRAGMENT = 1006, // Deprecated.
    164     RS_TYPE_PROGRAM_VERTEX = 1007, // Deprecated.
    165     RS_TYPE_PROGRAM_RASTER = 1008, // Deprecated.
    166     RS_TYPE_PROGRAM_STORE = 1009, // Deprecated.
    167     RS_TYPE_FONT = 1010, // Deprecated.
    168     RS_TYPE_INVALID = 10000
    169 } rs_data_type;
    170 #endif
    171 
    172 /*
    173  * rs_data_kind: Element data kind
    174  *
    175  * This enumeration is primarly useful for graphical data.  It provides additional information to
    176  * help interpret the rs_data_type.
    177  *
    178  * RS_KIND_USER indicates no special interpretation is expected.
    179  *
    180  * The RS_KIND_PIXEL_* values are used in conjunction with the standard data types for representing
    181  * texture formats.
    182  *
    183  * See the Element.createPixel() method.
    184  */
    185 #if (defined(RS_VERSION) && (RS_VERSION >= 16))
    186 typedef enum {
    187     RS_KIND_USER         = 0, // No special interpretation.
    188     RS_KIND_PIXEL_L      = 7, // Luminance.
    189     RS_KIND_PIXEL_A      = 8, // Alpha.
    190     RS_KIND_PIXEL_LA     = 9, // Luminance and Alpha.
    191     RS_KIND_PIXEL_RGB    = 10, // Red, Green, Blue.
    192     RS_KIND_PIXEL_RGBA   = 11, // Red, Green, Blue, and Alpha.
    193     RS_KIND_PIXEL_DEPTH  = 12, // Depth for a depth texture.
    194     RS_KIND_PIXEL_YUV    = 13, // Luminance and chrominance.
    195     RS_KIND_INVALID      = 100
    196 } rs_data_kind;
    197 #endif
    198 
    199 /*
    200  * rs_yuv_format: YUV format
    201  *
    202  *  Android YUV formats that can be associated with a RenderScript Type.
    203  *
    204  *  See android.graphics.ImageFormat for a description of each format.
    205  */
    206 #if (defined(RS_VERSION) && (RS_VERSION >= 24))
    207 typedef enum {
    208     RS_YUV_NONE = 0,
    209     RS_YUV_YV12 = 0x32315659,
    210     RS_YUV_NV21 = 0x11,
    211     RS_YUV_420_888 = 0x23
    212 } rs_yuv_format;
    213 #endif
    214 
    215 /*
    216  * rs_sampler_value: Sampler wrap T value
    217  *
    218  */
    219 #if (defined(RS_VERSION) && (RS_VERSION >= 16))
    220 typedef enum {
    221     RS_SAMPLER_NEAREST = 0,
    222     RS_SAMPLER_LINEAR = 1,
    223     RS_SAMPLER_LINEAR_MIP_LINEAR = 2,
    224     RS_SAMPLER_WRAP = 3,
    225     RS_SAMPLER_CLAMP = 4,
    226     RS_SAMPLER_LINEAR_MIP_NEAREST = 5,
    227     RS_SAMPLER_MIRRORED_REPEAT = 6,
    228     RS_SAMPLER_INVALID = 100
    229 } rs_sampler_value;
    230 #endif
    231 
    232 #endif // RENDERSCRIPT_RS_OBJECT_TYPES_RSH
    233