123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- /*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #ifndef RENDER_SCRIPT_DEFINES_H
- #define RENDER_SCRIPT_DEFINES_H
- #include <stdint.h>
- #include <sys/types.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- //////////////////////////////////////////////////////
- //
- typedef void * RsAsyncVoidPtr;
- typedef void * RsAllocation;
- typedef void * RsAnimation;
- typedef void * RsClosure;
- typedef void * RsContext;
- typedef void * RsDevice;
- typedef void * RsElement;
- typedef void * RsFile;
- typedef void * RsFont;
- typedef void * RsSampler;
- typedef void * RsScript;
- typedef void * RsScriptKernelID;
- typedef void * RsScriptInvokeID;
- typedef void * RsScriptFieldID;
- typedef void * RsScriptMethodID;
- typedef void * RsScriptGroup;
- typedef void * RsScriptGroup2;
- typedef void * RsMesh;
- typedef void * RsPath;
- typedef void * RsType;
- typedef void * RsObjectBase;
- typedef void * RsProgram;
- typedef void * RsProgramVertex;
- typedef void * RsProgramFragment;
- typedef void * RsProgramStore;
- typedef void * RsProgramRaster;
- typedef void * RsNativeWindow;
- typedef void (* RsBitmapCallback_t)(void *);
- typedef struct {
- float m[16];
- } rs_matrix4x4;
- typedef struct {
- float m[9];
- } rs_matrix3x3;
- typedef struct {
- float m[4];
- } rs_matrix2x2;
- enum RsDeviceParam {
- RS_DEVICE_PARAM_FORCE_SOFTWARE_GL,
- RS_DEVICE_PARAM_COUNT
- };
- enum RsContextType {
- RS_CONTEXT_TYPE_NORMAL,
- RS_CONTEXT_TYPE_DEBUG,
- RS_CONTEXT_TYPE_PROFILE
- };
- enum RsAllocationUsageType {
- RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
- RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
- RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
- RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
- RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010,
- RS_ALLOCATION_USAGE_IO_INPUT = 0x0020,
- RS_ALLOCATION_USAGE_IO_OUTPUT = 0x0040,
- RS_ALLOCATION_USAGE_SHARED = 0x0080,
- RS_ALLOCATION_USAGE_INCREMENTAL_SUPPORT = 0x1000,
- RS_ALLOCATION_USAGE_OEM = 0x8000,
- RS_ALLOCATION_USAGE_ALL = 0x80FF
- };
- enum RsAllocationMipmapControl {
- RS_ALLOCATION_MIPMAP_NONE = 0,
- RS_ALLOCATION_MIPMAP_FULL = 1,
- RS_ALLOCATION_MIPMAP_ON_SYNC_TO_TEXTURE = 2
- };
- enum RsAllocationCubemapFace {
- RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
- RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
- RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
- RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
- RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
- RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
- };
- enum RsDataType {
- RS_TYPE_NONE = 0,
- RS_TYPE_FLOAT_16,
- RS_TYPE_FLOAT_32,
- RS_TYPE_FLOAT_64,
- RS_TYPE_SIGNED_8,
- RS_TYPE_SIGNED_16,
- RS_TYPE_SIGNED_32,
- RS_TYPE_SIGNED_64,
- RS_TYPE_UNSIGNED_8,
- RS_TYPE_UNSIGNED_16,
- RS_TYPE_UNSIGNED_32,
- RS_TYPE_UNSIGNED_64,
- RS_TYPE_BOOLEAN,
- RS_TYPE_UNSIGNED_5_6_5,
- RS_TYPE_UNSIGNED_5_5_5_1,
- RS_TYPE_UNSIGNED_4_4_4_4,
- RS_TYPE_MATRIX_4X4,
- RS_TYPE_MATRIX_3X3,
- RS_TYPE_MATRIX_2X2,
- RS_TYPE_ELEMENT = 1000,
- RS_TYPE_TYPE,
- RS_TYPE_ALLOCATION,
- RS_TYPE_SAMPLER,
- RS_TYPE_SCRIPT,
- RS_TYPE_MESH,
- RS_TYPE_PROGRAM_FRAGMENT,
- RS_TYPE_PROGRAM_VERTEX,
- RS_TYPE_PROGRAM_RASTER,
- RS_TYPE_PROGRAM_STORE,
- RS_TYPE_FONT,
- RS_TYPE_INVALID = 10000,
- };
- enum RsDataKind {
- RS_KIND_USER,
- RS_KIND_PIXEL_L = 7,
- RS_KIND_PIXEL_A,
- RS_KIND_PIXEL_LA,
- RS_KIND_PIXEL_RGB,
- RS_KIND_PIXEL_RGBA,
- RS_KIND_PIXEL_DEPTH,
- RS_KIND_PIXEL_YUV,
- RS_KIND_INVALID = 100,
- };
- enum RsYuvFormat {
- RS_YUV_NONE = 0,
- RS_YUV_YV12 = 0x32315659, // HAL_PIXEL_FORMAT_YV12 in system/graphics.h
- RS_YUV_NV21 = 0x11, // HAL_PIXEL_FORMAT_YCrCb_420_SP
- RS_YUV_420_888 = 0x23, // HAL_PIXEL_FORMAT_YCbCr_420_888
- };
- enum RsSamplerParam {
- RS_SAMPLER_MIN_FILTER,
- RS_SAMPLER_MAG_FILTER,
- RS_SAMPLER_WRAP_S,
- RS_SAMPLER_WRAP_T,
- RS_SAMPLER_WRAP_R,
- RS_SAMPLER_ANISO
- };
- enum RsSamplerValue {
- RS_SAMPLER_NEAREST,
- RS_SAMPLER_LINEAR,
- RS_SAMPLER_LINEAR_MIP_LINEAR,
- RS_SAMPLER_WRAP,
- RS_SAMPLER_CLAMP,
- RS_SAMPLER_LINEAR_MIP_NEAREST,
- RS_SAMPLER_MIRRORED_REPEAT,
- RS_SAMPLER_INVALID = 100,
- };
- enum RsDimension {
- RS_DIMENSION_X,
- RS_DIMENSION_Y,
- RS_DIMENSION_Z,
- RS_DIMENSION_LOD,
- RS_DIMENSION_FACE,
- RS_DIMENSION_ARRAY_0 = 100,
- RS_DIMENSION_ARRAY_1,
- RS_DIMENSION_ARRAY_2,
- RS_DIMENSION_ARRAY_3,
- RS_DIMENSION_MAX = RS_DIMENSION_ARRAY_3
- };
- enum RsError {
- RS_ERROR_NONE = 0,
- RS_ERROR_BAD_SHADER = 1,
- RS_ERROR_BAD_SCRIPT = 2,
- RS_ERROR_BAD_VALUE = 3,
- RS_ERROR_OUT_OF_MEMORY = 4,
- RS_ERROR_DRIVER = 5,
- // Errors that only occur in the debug context.
- RS_ERROR_FATAL_DEBUG = 0x0800,
- RS_ERROR_FATAL_UNKNOWN = 0x1000,
- RS_ERROR_FATAL_DRIVER = 0x1001,
- RS_ERROR_FATAL_PROGRAM_LINK = 0x1002
- };
- enum RsForEachStrategy {
- RS_FOR_EACH_STRATEGY_SERIAL = 0,
- RS_FOR_EACH_STRATEGY_DONT_CARE = 1,
- RS_FOR_EACH_STRATEGY_DST_LINEAR = 2,
- RS_FOR_EACH_STRATEGY_TILE_SMALL = 3,
- RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4,
- RS_FOR_EACH_STRATEGY_TILE_LARGE = 5
- };
- // Script to Script
- typedef struct {
- enum RsForEachStrategy strategy;
- uint32_t xStart;
- uint32_t xEnd;
- uint32_t yStart;
- uint32_t yEnd;
- uint32_t zStart;
- uint32_t zEnd;
- uint32_t arrayStart;
- uint32_t arrayEnd;
- uint32_t array2Start;
- uint32_t array2End;
- uint32_t array3Start;
- uint32_t array3End;
- uint32_t array4Start;
- uint32_t array4End;
- } RsScriptCall;
- enum RsContextFlags {
- RS_CONTEXT_SYNCHRONOUS = 0x0001,
- RS_CONTEXT_LOW_LATENCY = 0x0002,
- RS_CONTEXT_LOW_POWER = 0x0004,
- RS_CONTEXT_WAIT_FOR_ATTACH = 0x0008
- };
- enum RsBlasTranspose {
- RsBlasNoTrans=111,
- RsBlasTrans=112,
- RsBlasConjTrans=113
- };
- enum RsBlasUplo {
- RsBlasUpper=121,
- RsBlasLower=122
- };
- enum RsBlasDiag {
- RsBlasNonUnit=131,
- RsBlasUnit=132
- };
- enum RsBlasSide {
- RsBlasLeft=141,
- RsBlasRight=142
- };
- enum RsBlasFunction {
- RsBlas_nop = 0,
- RsBlas_sdsdot = 1,
- RsBlas_dsdot = 2,
- RsBlas_sdot = 3,
- RsBlas_ddot = 4,
- RsBlas_cdotu_sub = 5,
- RsBlas_cdotc_sub = 6,
- RsBlas_zdotu_sub = 7,
- RsBlas_zdotc_sub = 8,
- RsBlas_snrm2 = 9,
- RsBlas_sasum = 10,
- RsBlas_dnrm2 = 11,
- RsBlas_dasum = 12,
- RsBlas_scnrm2 = 13,
- RsBlas_scasum = 14,
- RsBlas_dznrm2 = 15,
- RsBlas_dzasum = 16,
- RsBlas_isamax = 17,
- RsBlas_idamax = 18,
- RsBlas_icamax = 19,
- RsBlas_izamax = 20,
- RsBlas_sswap = 21,
- RsBlas_scopy = 22,
- RsBlas_saxpy = 23,
- RsBlas_dswap = 24,
- RsBlas_dcopy = 25,
- RsBlas_daxpy = 26,
- RsBlas_cswap = 27,
- RsBlas_ccopy = 28,
- RsBlas_caxpy = 29,
- RsBlas_zswap = 30,
- RsBlas_zcopy = 31,
- RsBlas_zaxpy = 32,
- RsBlas_srotg = 33,
- RsBlas_srotmg = 34,
- RsBlas_srot = 35,
- RsBlas_srotm = 36,
- RsBlas_drotg = 37,
- RsBlas_drotmg = 38,
- RsBlas_drot = 39,
- RsBlas_drotm = 40,
- RsBlas_sscal = 41,
- RsBlas_dscal = 42,
- RsBlas_cscal = 43,
- RsBlas_zscal = 44,
- RsBlas_csscal = 45,
- RsBlas_zdscal = 46,
- RsBlas_sgemv = 47,
- RsBlas_sgbmv = 48,
- RsBlas_strmv = 49,
- RsBlas_stbmv = 50,
- RsBlas_stpmv = 51,
- RsBlas_strsv = 52,
- RsBlas_stbsv = 53,
- RsBlas_stpsv = 54,
- RsBlas_dgemv = 55,
- RsBlas_dgbmv = 56,
- RsBlas_dtrmv = 57,
- RsBlas_dtbmv = 58,
- RsBlas_dtpmv = 59,
- RsBlas_dtrsv = 60,
- RsBlas_dtbsv = 61,
- RsBlas_dtpsv = 62,
- RsBlas_cgemv = 63,
- RsBlas_cgbmv = 64,
- RsBlas_ctrmv = 65,
- RsBlas_ctbmv = 66,
- RsBlas_ctpmv = 67,
- RsBlas_ctrsv = 68,
- RsBlas_ctbsv = 69,
- RsBlas_ctpsv = 70,
- RsBlas_zgemv = 71,
- RsBlas_zgbmv = 72,
- RsBlas_ztrmv = 73,
- RsBlas_ztbmv = 74,
- RsBlas_ztpmv = 75,
- RsBlas_ztrsv = 76,
- RsBlas_ztbsv = 77,
- RsBlas_ztpsv = 78,
- RsBlas_ssymv = 79,
- RsBlas_ssbmv = 80,
- RsBlas_sspmv = 81,
- RsBlas_sger = 82,
- RsBlas_ssyr = 83,
- RsBlas_sspr = 84,
- RsBlas_ssyr2 = 85,
- RsBlas_sspr2 = 86,
- RsBlas_dsymv = 87,
- RsBlas_dsbmv = 88,
- RsBlas_dspmv = 89,
- RsBlas_dger = 90,
- RsBlas_dsyr = 91,
- RsBlas_dspr = 92,
- RsBlas_dsyr2 = 93,
- RsBlas_dspr2 = 94,
- RsBlas_chemv = 95,
- RsBlas_chbmv = 96,
- RsBlas_chpmv = 97,
- RsBlas_cgeru = 98,
- RsBlas_cgerc = 99,
- RsBlas_cher = 100,
- RsBlas_chpr = 101,
- RsBlas_cher2 = 102,
- RsBlas_chpr2 = 103,
- RsBlas_zhemv = 104,
- RsBlas_zhbmv = 105,
- RsBlas_zhpmv = 106,
- RsBlas_zgeru = 107,
- RsBlas_zgerc = 108,
- RsBlas_zher = 109,
- RsBlas_zhpr = 110,
- RsBlas_zher2 = 111,
- RsBlas_zhpr2 = 112,
- RsBlas_sgemm = 113,
- RsBlas_ssymm = 114,
- RsBlas_ssyrk = 115,
- RsBlas_ssyr2k = 116,
- RsBlas_strmm = 117,
- RsBlas_strsm = 118,
- RsBlas_dgemm = 119,
- RsBlas_dsymm = 120,
- RsBlas_dsyrk = 121,
- RsBlas_dsyr2k = 122,
- RsBlas_dtrmm = 123,
- RsBlas_dtrsm = 124,
- RsBlas_cgemm = 125,
- RsBlas_csymm = 126,
- RsBlas_csyrk = 127,
- RsBlas_csyr2k = 128,
- RsBlas_ctrmm = 129,
- RsBlas_ctrsm = 130,
- RsBlas_zgemm = 131,
- RsBlas_zsymm = 132,
- RsBlas_zsyrk = 133,
- RsBlas_zsyr2k = 134,
- RsBlas_ztrmm = 135,
- RsBlas_ztrsm = 136,
- RsBlas_chemm = 137,
- RsBlas_cherk = 138,
- RsBlas_cher2k = 139,
- RsBlas_zhemm = 140,
- RsBlas_zherk = 141,
- RsBlas_zher2k = 142,
- // BLAS extensions start here
- RsBlas_bnnm = 1000,
- };
- // custom complex types because of NDK support
- typedef struct {
- float r;
- float i;
- } RsFloatComplex;
- typedef struct {
- double r;
- double i;
- } RsDoubleComplex;
- typedef union {
- float f;
- RsFloatComplex c;
- double d;
- RsDoubleComplex z;
- } RsBlasScalar;
- typedef struct {
- RsBlasFunction func;
- RsBlasTranspose transA;
- RsBlasTranspose transB;
- RsBlasUplo uplo;
- RsBlasDiag diag;
- RsBlasSide side;
- int M;
- int N;
- int K;
- RsBlasScalar alpha;
- RsBlasScalar beta;
- int incX;
- int incY;
- int KL;
- int KU;
- uint8_t a_offset;
- uint8_t b_offset;
- int32_t c_offset;
- int32_t c_mult_int;
- } RsBlasCall;
- enum RsGlobalProperty {
- RS_GLOBAL_TYPE = 0x0000FFFF,
- RS_GLOBAL_CONSTANT = 0x00010000,
- RS_GLOBAL_STATIC = 0x00020000,
- RS_GLOBAL_POINTER = 0x00040000
- };
- // Special symbols embedded into a shared object compiled by bcc.
- static const char kRoot[] = "root";
- static const char kInit[] = "init";
- static const char kRsDtor[] = ".rs.dtor";
- static const char kRsInfo[] = ".rs.info";
- static const char kRsGlobalEntries[] = ".rs.global_entries";
- static const char kRsGlobalNames[] = ".rs.global_names";
- static const char kRsGlobalAddresses[] = ".rs.global_addresses";
- static const char kRsGlobalSizes[] = ".rs.global_sizes";
- static const char kRsGlobalProperties[] = ".rs.global_properties";
- static inline uint32_t getGlobalRsType(uint32_t properties) {
- return properties & RS_GLOBAL_TYPE;
- }
- static inline bool isGlobalConstant(uint32_t properties) {
- return properties & RS_GLOBAL_CONSTANT;
- }
- static inline bool isGlobalStatic(uint32_t properties) {
- return properties & RS_GLOBAL_STATIC;
- }
- static inline bool isGlobalPointer(uint32_t properties) {
- return properties & RS_GLOBAL_POINTER;
- }
- #ifdef __cplusplus
- };
- #endif
- #endif // RENDER_SCRIPT_DEFINES_H
|