10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/*
20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2007-2012 The Android Open Source Project
30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License.
60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at
70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software
110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and
140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License.
150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */
160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifndef RENDER_SCRIPT_DEFINES_H
180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define RENDER_SCRIPT_DEFINES_H
190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include <stdint.h>
210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include <sys/types.h>
220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifdef __cplusplus
240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesextern "C" {
250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif
260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines//////////////////////////////////////////////////////
280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines//
290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsAsyncVoidPtr;
310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsAdapter1D;
330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsAdapter2D;
340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsAllocation;
350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsAnimation;
360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsContext;
370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsDevice;
380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsElement;
390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsFile;
400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsFont;
410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsSampler;
420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsScript;
43ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samstypedef void * RsScriptKernelID;
44ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samstypedef void * RsScriptFieldID;
45ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samstypedef void * RsScriptMethodID;
46ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samstypedef void * RsScriptGroup;
470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsMesh;
480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsPath;
490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsType;
500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsObjectBase;
510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsProgram;
530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsProgramVertex;
540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsProgramFragment;
550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsProgramStore;
560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsProgramRaster;
570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void * RsNativeWindow;
590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef void (* RsBitmapCallback_t)(void *);
610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    float m[16];
640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix4x4;
650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    float m[9];
680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix3x3;
690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    float m[4];
720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix2x2;
730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsDeviceParam {
750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEVICE_PARAM_FORCE_SOFTWARE_GL,
760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEVICE_PARAM_COUNT
770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t colorMin;
810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t colorPref;
820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t alphaMin;
830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t alphaPref;
840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t depthMin;
850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t depthPref;
860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t stencilMin;
870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t stencilPref;
880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t samplesMin;
890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t samplesPref;
900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    float samplesQ;
910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} RsSurfaceConfig;
920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsMessageToClientType {
940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_MESSAGE_TO_CLIENT_NONE = 0,
950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_MESSAGE_TO_CLIENT_EXCEPTION = 1,
960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_MESSAGE_TO_CLIENT_RESIZE = 2,
970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_MESSAGE_TO_CLIENT_ERROR = 3,
980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_MESSAGE_TO_CLIENT_USER = 4
990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsAllocationUsageType {
1020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
1030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
1040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
1050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
1060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010,
1070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_IO_INPUT = 0x0020,
1080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_IO_OUTPUT = 0x0040,
1090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_USAGE_ALL = 0x00FF
1110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsAllocationMipmapControl {
1140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_MIPMAP_NONE = 0,
1150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_MIPMAP_FULL = 1,
1160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_MIPMAP_ON_SYNC_TO_TEXTURE = 2
1170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsAllocationCubemapFace {
1200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
1210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
1220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
1230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
1240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
1250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
1260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsDataType {
1290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_NONE,
1300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_FLOAT_16,
1310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_FLOAT_32,
1320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_FLOAT_64,
1330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SIGNED_8,
1340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SIGNED_16,
1350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SIGNED_32,
1360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SIGNED_64,
1370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_8,
1380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_16,
1390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_32,
1400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_64,
1410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_BOOLEAN,
1430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_5_6_5,
1450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_5_5_5_1,
1460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_UNSIGNED_4_4_4_4,
1470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_MATRIX_4X4,
1490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_MATRIX_3X3,
1500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_MATRIX_2X2,
1510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_ELEMENT = 1000,
1530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_TYPE,
1540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_ALLOCATION,
1550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SAMPLER,
1560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_SCRIPT,
1570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_MESH,
1580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_PROGRAM_FRAGMENT,
1590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_PROGRAM_VERTEX,
1600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_PROGRAM_RASTER,
1610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_PROGRAM_STORE,
1620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_FONT,
1630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TYPE_INVALID = 10000,
1650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsDataKind {
1680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_USER,
1690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_L = 7,
1710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_A,
1720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_LA,
1730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_RGB,
1740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_RGBA,
1750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_PIXEL_DEPTH,
1760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_KIND_INVALID = 100,
1780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsSamplerParam {
1810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_MIN_FILTER,
1820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_MAG_FILTER,
1830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_WRAP_S,
1840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_WRAP_T,
1850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_WRAP_R,
1860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_ANISO
1870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsSamplerValue {
1900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_NEAREST,
1910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_LINEAR,
1920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_LINEAR_MIP_LINEAR,
1930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_WRAP,
1940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_CLAMP,
1950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_LINEAR_MIP_NEAREST,
1960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
1970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_SAMPLER_INVALID = 100,
1980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
1990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsTextureTarget {
2010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEXTURE_2D,
2020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEXTURE_CUBE
2030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsDimension {
2060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_X,
2070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_Y,
2080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_Z,
2090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_LOD,
2100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_FACE,
2110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_ARRAY_0 = 100,
2130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_ARRAY_1,
2140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_ARRAY_2,
2150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_ARRAY_3,
2160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DIMENSION_MAX = RS_DIMENSION_ARRAY_3
2170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsDepthFunc {
2200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_ALWAYS,
2210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_LESS,
2220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_LEQUAL,
2230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_GREATER,
2240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_GEQUAL,
2250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_EQUAL,
2260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_DEPTH_FUNC_NOTEQUAL
2270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsBlendSrcFunc {
2300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_ZERO,                  // 0
2310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_ONE,                   // 1
2320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_DST_COLOR,             // 2
2330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_ONE_MINUS_DST_COLOR,   // 3
2340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_SRC_ALPHA,             // 4
2350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA,   // 5
2360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_DST_ALPHA,             // 6
2370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_ONE_MINUS_DST_ALPHA,   // 7
2380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_SRC_ALPHA_SATURATE,    // 8
2390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_SRC_INVALID = 100,
2400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsBlendDstFunc {
2430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_ZERO,                  // 0
2440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_ONE,                   // 1
2450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_SRC_COLOR,             // 2
2460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_ONE_MINUS_SRC_COLOR,   // 3
2470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_SRC_ALPHA,             // 4
2480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_ONE_MINUS_SRC_ALPHA,   // 5
2490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_DST_ALPHA,             // 6
2500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_ONE_MINUS_DST_ALPHA,   // 7
2510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_BLEND_DST_INVALID = 100,
2530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsTexEnvMode {
2560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEX_ENV_MODE_NONE,
2570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEX_ENV_MODE_REPLACE,
2580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEX_ENV_MODE_MODULATE,
2590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_TEX_ENV_MODE_DECAL
2600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsProgramParam {
2630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PROGRAM_PARAM_INPUT,
2640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PROGRAM_PARAM_OUTPUT,
2650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PROGRAM_PARAM_CONSTANT,
2660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PROGRAM_PARAM_TEXTURE_TYPE,
2670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsPrimitive {
2700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_POINT,
2710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_LINE,
2720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_LINE_STRIP,
2730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_TRIANGLE,
2740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_TRIANGLE_STRIP,
2750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_TRIANGLE_FAN,
2760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PRIMITIVE_INVALID = 100,
2780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsPathPrimitive {
2810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PATH_PRIMITIVE_QUADRATIC_BEZIER,
2820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_PATH_PRIMITIVE_CUBIC_BEZIER
2830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsError {
2860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_NONE = 0,
2870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_BAD_SHADER = 1,
2880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_BAD_SCRIPT = 2,
2890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_BAD_VALUE = 3,
2900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_OUT_OF_MEMORY = 4,
2910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_DRIVER = 5,
2920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_FATAL_UNKNOWN = 0x1000,
2940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_FATAL_DRIVER = 0x1001,
2950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ERROR_FATAL_PROGRAM_LINK = 0x1002
2960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
2970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
2980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsAnimationInterpolation {
2990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_STEP,
3000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_LINEAR,
3010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_BEZIER,
3020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_CARDINAL,
3030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_HERMITE,
3040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_INTERPOLATION_BSPLINE
3050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
3060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsAnimationEdge {
3080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_UNDEFINED,
3090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_CONSTANT,
3100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_GRADIENT,
3110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_CYCLE,
3120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_OSCILLATE,
3130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_ANIMATION_EDGE_CYLE_RELATIVE
3140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
3150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsA3DClassID {
3170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_UNKNOWN,
3180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_MESH,
3190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_TYPE,
3200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_ELEMENT,
3210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_ALLOCATION,
3220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_PROGRAM_VERTEX,
3230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_PROGRAM_RASTER,
3240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_PROGRAM_FRAGMENT,
3250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_PROGRAM_STORE,
3260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_SAMPLER,
3270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_ANIMATION,
3280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_ADAPTER_1D,
3290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_A3D_CLASS_ID_ADAPTER_2D,
330ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_A3D_CLASS_ID_SCRIPT_C,
331ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_A3D_CLASS_ID_SCRIPT_KERNEL_ID,
332ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_A3D_CLASS_ID_SCRIPT_FIELD_ID,
333ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_A3D_CLASS_ID_SCRIPT_METHOD_ID,
334ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_A3D_CLASS_ID_SCRIPT_GROUP
3350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
3360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesenum RsCullMode {
3380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_CULL_BACK,
3390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_CULL_FRONT,
3400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_CULL_NONE,
3410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RS_CULL_INVALID = 100,
3420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
3430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
344ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Samsenum RsScriptIntrinsicID {
345ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_UNDEFINED = 0,
346ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_CONVOLVE_3x3 = 1,
347ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_COLOR_MATRIX = 2,
348ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_LUT = 3,
349ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_CONVOLVE_5x5 = 4,
350ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_BLUR = 5,
351ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_YUV_TO_RGB = 6,
352ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams    RS_SCRIPT_INTRINSIC_ID_BLEND = 7
353ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams};
354ca29b8caf56fa4866752f9cea4ec02b2a271dceeJason Sams
3550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
3560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    RsA3DClassID classID;
3570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    const char* objectName;
3580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} RsFileIndexEntry;
3590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// Script to Script
3610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct {
3620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t xStart;
3630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t xEnd;
3640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t yStart;
3650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t yEnd;
3660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t zStart;
3670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t zEnd;
3680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t arrayStart;
3690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    uint32_t arrayEnd;
3700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} RsScriptCall;
3720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifdef __cplusplus
3740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
3750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif
3760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif // RENDER_SCRIPT_DEFINES_H
3780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
3810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
382