10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* 20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2011 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/** @file rs_types.rsh 180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Define the standard Renderscript types 200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Integers 220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 8 bit: char, int8_t 230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 16 bit: short, int16_t 240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit: int, in32_t 250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 64 bit: long, long long, int64_t 260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unsigned Integers 280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 8 bit: uchar, uint8_t 290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 16 bit: ushort, uint16_t 300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit: uint, uint32_t 310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 64 bit: ulong, uint64_t 320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Floating point 340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit: float 350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 64 bit: double 360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vectors of length 2, 3, and 4 are supported for all the types above. 380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifndef __RS_TYPES_RSH__ 420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define __RS_TYPES_RSH__ 430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* Constants */ 450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_E 2.718281828459045235360287471352662498f /* e */ 460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_LOG2E 1.442695040888963407359924681001892137f /* log_2 e */ 470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_LOG10E 0.434294481903251827651128918916605082f /* log_10 e */ 480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_LN2 0.693147180559945309417232121458176568f /* log_e 2 */ 490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_LN10 2.302585092994045684017991454684364208f /* log_e 10 */ 500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_PI 3.141592653589793238462643383279502884f /* pi */ 510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_PI_2 1.570796326794896619231321691639751442f /* pi/2 */ 520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_PI_4 0.785398163397448309615660845819875721f /* pi/4 */ 530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_1_PI 0.318309886183790671537767526745028724f /* 1/pi */ 540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_2_PIl 0.636619772367581343075535053490057448f /* 2/pi */ 550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_2_SQRTPI 1.128379167095512573896158903121545172f /* 2/sqrt(pi) */ 560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_SQRT2 1.414213562373095048801688724209698079f /* sqrt(2) */ 570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define M_SQRT1_2 0.707106781186547524400844362104849039f /* 1/sqrt(2) */ 580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "stdbool.h" 600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 8 bit integer type 620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char int8_t; 640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 16 bit integer type 660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short int16_t; 680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit integer type 700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int int32_t; 720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 64 bit integer type 740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long int64_t; 760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 8 bit unsigned integer type 780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned char uint8_t; 800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 16 bit unsigned integer type 820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned short uint16_t; 840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit unsigned integer type 860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned int uint32_t; 880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 64 bit unsigned integer type 900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef unsigned long long uint64_t; 920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 8 bit unsigned integer type 940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint8_t uchar; 960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 16 bit unsigned integer type 980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint16_t ushort; 1000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 32 bit unsigned integer type 1020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint32_t uint; 1040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Typedef for unsigned long (use for 64-bit unsigned integers) 1060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint64_t ulong; 1080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Typedef for unsigned int 1100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint32_t size_t; 1120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Typedef for int (use for 32-bit integers) 1140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int32_t ssize_t; 1160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript element. 1190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Element 1210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element; 1230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript type. 1250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Type 1270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type; 1290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript allocation. 1310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Allocation 1330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation; 1350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript sampler object. 1370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Sampler 1390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_sampler; 1410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript script object. 1430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.ScriptC 1450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_script; 1470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript mesh object. 1490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Mesh 1510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_mesh; 1530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript Path object. 1550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Path 1570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_path; 1590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript ProgramFragment object. 1610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.ProgramFragment 1630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_fragment; 1650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript ProgramVertex object. 1670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.ProgramVertex 1690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_vertex; 1710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript ProgramRaster object. 1730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.ProgramRaster 1750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_raster; 1770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript ProgramStore object. 1790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.ProgramStore 1810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_store; 1830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Opaque handle to a Renderscript font object. 1850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 1860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See: android.renderscript.Font 1870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_font; 1890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic float type. 1920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Provides two float fields packed into a single 64 bit field with 64 bit 1930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * alignment. 1940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 1950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float2 __attribute__((ext_vector_type(2))); 1960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 1970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic float type. Provides three float fields packed 1980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 128 bit field with 128 bit alignment. 1990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float3 __attribute__((ext_vector_type(3))); 2010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic float type. 2030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Provides four float fields packed into a single 128 bit field with 128 bit 2040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * alignment. 2050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float float4 __attribute__((ext_vector_type(4))); 2070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic double type. Provides two double fields packed 2100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 128 bit field with 128 bit alignment. 2110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef double double2 __attribute__((ext_vector_type(2))); 2130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic double type. Provides three double fields packed 2150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 256 bit field with 256 bit alignment. 2160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef double double3 __attribute__((ext_vector_type(3))); 2180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic double type. Provides four double fields packed 2200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 256 bit field with 256 bit alignment. 2210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef double double4 __attribute__((ext_vector_type(4))); 2230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uchar type. Provides two uchar fields packed 2260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 16 bit field with 16 bit alignment. 2270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uchar uchar2 __attribute__((ext_vector_type(2))); 2290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uchar type. Provides three uchar fields packed 2310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 32 bit field with 32 bit alignment. 2320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uchar uchar3 __attribute__((ext_vector_type(3))); 2340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uchar type. Provides four uchar fields packed 2360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 32 bit field with 32 bit alignment. 2370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uchar uchar4 __attribute__((ext_vector_type(4))); 2390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ushort type. Provides two ushort fields packed 2420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 32 bit field with 32 bit alignment. 2430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ushort ushort2 __attribute__((ext_vector_type(2))); 2450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ushort type. Provides three ushort fields packed 2470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 64 bit field with 64 bit alignment. 2480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ushort ushort3 __attribute__((ext_vector_type(3))); 2500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ushort type. Provides four ushort fields packed 2520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 64 bit field with 64 bit alignment. 2530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ushort ushort4 __attribute__((ext_vector_type(4))); 2550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uint type. Provides two uint fields packed into a 2580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 64 bit field with 64 bit alignment. 2590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint uint2 __attribute__((ext_vector_type(2))); 2610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uint type. Provides three uint fields packed into 2630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 128 bit field with 128 bit alignment. 2640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint uint3 __attribute__((ext_vector_type(3))); 2660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic uint type. Provides four uint fields packed into 2680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 128 bit field with 128 bit alignment. 2690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef uint uint4 __attribute__((ext_vector_type(4))); 2710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ulong type. Provides two ulong fields packed into 2740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 128 bit field with 128 bit alignment. 2750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ulong ulong2 __attribute__((ext_vector_type(2))); 2770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ulong type. Provides three ulong fields packed 2790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 256 bit field with 256 bit alignment. 2800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ulong ulong3 __attribute__((ext_vector_type(3))); 2820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic ulong type. Provides four ulong fields packed 2840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 256 bit field with 256 bit alignment. 2850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef ulong ulong4 __attribute__((ext_vector_type(4))); 2870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic char type. Provides two char fields packed into a 2900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 16 bit field with 16 bit alignment. 2910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char2 __attribute__((ext_vector_type(2))); 2930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic char type. Provides three char fields packed into 2950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 32 bit field with 32 bit alignment. 2960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 2970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char3 __attribute__((ext_vector_type(3))); 2980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 2990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic char type. Provides four char fields packed into 3000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 32 bit field with 32 bit alignment. 3010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef char char4 __attribute__((ext_vector_type(4))); 3030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic short type. Provides two short fields packed into 3060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 32 bit field with 32 bit alignment. 3070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short2 __attribute__((ext_vector_type(2))); 3090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic short type. Provides three short fields packed 3110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 64 bit field with 64 bit alignment. 3120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short3 __attribute__((ext_vector_type(3))); 3140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic short type. Provides four short fields packed 3160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * into a single 64 bit field with 64 bit alignment. 3170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef short short4 __attribute__((ext_vector_type(4))); 3190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic int type. Provides two int fields packed into a 3220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 64 bit field with 64 bit alignment. 3230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int int2 __attribute__((ext_vector_type(2))); 3250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic int type. Provides three int fields packed into a 3270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 128 bit field with 128 bit alignment. 3280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int int3 __attribute__((ext_vector_type(3))); 3300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic int type. Provides two four fields packed into a 3320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 128 bit field with 128 bit alignment. 3330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef int int4 __attribute__((ext_vector_type(4))); 3350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic long type. Provides two long fields packed into a 3380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * single 128 bit field with 128 bit alignment. 3390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long2 __attribute__((ext_vector_type(2))); 3410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic long type. Provides three long fields packed into 3430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 256 bit field with 256 bit alignment. 3440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long3 __attribute__((ext_vector_type(3))); 3460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vector version of the basic long type. Provides four long fields packed into 3480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * a single 256 bit field with 256 bit alignment. 3490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef long long4 __attribute__((ext_vector_type(4))); 3510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief 4x4 float matrix 3540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 3550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Native holder for RS matrix. Elements are stored in the array at the 3560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * location [row*4 + col] 3570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { 3590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines float m[16]; 3600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix4x4; 3610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief 3x3 float matrix 3630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 3640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Native holder for RS matrix. Elements are stored in the array at the 3650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * location [row*3 + col] 3660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { 3680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines float m[9]; 3690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix3x3; 3700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief 2x2 float matrix 3720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 3730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Native holder for RS matrix. Elements are stored in the array at the 3740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * location [row*2 + col] 3750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef struct { 3770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines float m[4]; 3780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_matrix2x2; 3790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * quaternion type for use with the quaternion functions 3820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef float4 rs_quaternion; 3840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define RS_PACKED __attribute__((packed, aligned(4))) 3860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define NULL ((void *)0) 3870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#if (defined(RS_VERSION) && (RS_VERSION >= 14)) 3890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 3900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 3910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Enum for selecting cube map faces 3920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 3930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 3940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0, 3950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1, 3960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2, 3970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3, 3980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4, 3990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5 4000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_allocation_cubemap_face; 4010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 4030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Bitfield to specify the usage types for an allocation. 4040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 4050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * These values are ORed together to specify which usages or memory spaces are 4060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * relevant to an allocation or an operation on an allocation. 4070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 4090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_USAGE_SCRIPT = 0x0001, 4100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, 4110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, 4120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, 4130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010 4140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_allocation_usage_type; 4150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif //defined(RS_VERSION) && (RS_VERSION >= 14) 4170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines// New API's 4190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#if (defined(RS_VERSION) && (RS_VERSION >= 16)) 4200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 4220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Describes the way mesh vertex data is interpreted when rendering 4230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 4240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines **/ 4250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 4260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertex data will be rendered as a series of points 4280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_POINT = 0, 4300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertex pairs will be rendered as lines 4320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_LINE = 1, 4340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertex data will be rendered as a connected line strip 4360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_LINE_STRIP = 2, 4380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertices will be rendered as individual triangles 4400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_TRIANGLE = 3, 4420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertices will be rendered as a connected triangle strip 4440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * defined by the first three vertices with each additional 4450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * triangle defined by a new vertex 4460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_TRIANGLE_STRIP = 4, 4480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Vertices will be rendered as a sequence of triangles that all 4500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * share first vertex as the origin 4510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_TRIANGLE_FAN = 5, 4530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 4550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Invalid primitive 4560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_PRIMITIVE_INVALID = 100, 4580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_primitive; 4590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 4610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Enumeration for possible element data types 4620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 4630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * DataType represents the basic type information for a basic element. The 4640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * naming convention follows. For numeric types it is FLOAT, 4650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * SIGNED, or UNSIGNED followed by the _BITS where BITS is the 4660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * size of the data. BOOLEAN is a true / false (1,0) 4670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * represented in an 8 bit container. The UNSIGNED variants 4680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * with multiple bit definitions are for packed graphical data 4690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * formats and represent vectors with per vector member sizes 4700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * which are treated as a single unit for packing and alignment 4710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * purposes. 4720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 4730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * MATRIX the three matrix types contain FLOAT_32 elements and are treated 4740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * as 32 bits for alignment purposes. 4750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 4760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * RS_* objects. 32 bit opaque handles. 4770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 4780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 4790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_NONE = 0, 4800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_FLOAT_32 = 2, 4810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_FLOAT_64 = 3, 4820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SIGNED_8 = 4, 4830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SIGNED_16 = 5, 4840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SIGNED_32 = 6, 4850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SIGNED_64 = 7, 4860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_8 = 8, 4870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_16 = 9, 4880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_32 = 10, 4890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_64 = 11, 4900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_BOOLEAN = 12, 4920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_5_6_5 = 13, 4940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_5_5_5_1 = 14, 4950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_UNSIGNED_4_4_4_4 = 15, 4960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 4970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_MATRIX_4X4 = 16, 4980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_MATRIX_3X3 = 17, 4990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_MATRIX_2X2 = 18, 5000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_ELEMENT = 1000, 5020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_TYPE = 1001, 5030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_ALLOCATION = 1002, 5040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SAMPLER = 1003, 5050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_SCRIPT = 1004, 5060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_MESH = 1005, 5070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_PROGRAM_FRAGMENT = 1006, 5080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_PROGRAM_VERTEX = 1007, 5090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_PROGRAM_RASTER = 1008, 5100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_PROGRAM_STORE = 1009, 5110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_FONT = 1010, 5120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_TYPE_INVALID = 10000, 5140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_data_type; 5150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/** 5170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * \brief Enumeration for possible element data kind 5180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 5190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * The special interpretation of the data if required. This is primarly 5200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * useful for graphical data. USER indicates no special interpretation is 5210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * expected. PIXEL is used in conjunction with the standard data types for 5220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * representing texture formats. 5230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 5250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_USER = 0, 5260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_L = 7, 5280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_A = 8, 5290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_LA = 9, 5300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_RGB = 10, 5310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_RGBA = 11, 5320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_PIXEL_DEPTH = 12, 5330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_KIND_INVALID = 100, 5350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_data_kind; 5360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 5380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Always drawn 5400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_ALWAYS = 0, 5420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is less than that in the 5440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * depth buffer 5450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_LESS = 1, 5470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is less or equal to that in 5490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * the depth buffer 5500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_LEQUAL = 2, 5520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is greater than that in the 5540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * depth buffer 5550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_GREATER = 3, 5570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is greater or equal to that 5590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * in the depth buffer 5600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_GEQUAL = 4, 5620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is equal to that in the 5640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * depth buffer 5650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_EQUAL = 5, 5670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Drawn if the incoming depth value is not equal to that in the 5690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * depth buffer 5700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_NOTEQUAL = 6, 5720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines /** 5730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Invalid depth function 5740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 5750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_DEPTH_FUNC_INVALID = 100, 5760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_depth_func; 5770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 5790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_ZERO = 0, 5800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_ONE = 1, 5810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_DST_COLOR = 2, 5820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_ONE_MINUS_DST_COLOR = 3, 5830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_SRC_ALPHA = 4, 5840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA = 5, 5850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_DST_ALPHA = 6, 5860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_ONE_MINUS_DST_ALPHA = 7, 5870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_SRC_ALPHA_SATURATE = 8, 5880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_SRC_INVALID = 100, 5900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_blend_src_func; 5910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 5920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 5930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_ZERO = 0, 5940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_ONE = 1, 5950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_SRC_COLOR = 2, 5960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_ONE_MINUS_SRC_COLOR = 3, 5970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_SRC_ALPHA = 4, 5980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_ONE_MINUS_SRC_ALPHA = 5, 5990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_DST_ALPHA = 6, 6000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_ONE_MINUS_DST_ALPHA = 7, 6010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_BLEND_DST_INVALID = 100, 6030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_blend_dst_func; 6040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 6060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_CULL_BACK = 0, 6070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_CULL_FRONT = 1, 6080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_CULL_NONE = 2, 6090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_CULL_INVALID = 100, 6110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_cull_mode; 6120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinestypedef enum { 6140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_NEAREST = 0, 6150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_LINEAR = 1, 6160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_LINEAR_MIP_LINEAR = 2, 6170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_WRAP = 3, 6180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_CLAMP = 4, 6190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_LINEAR_MIP_NEAREST = 5, 6200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines RS_SAMPLER_INVALID = 100, 6220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} rs_sampler_value; 6230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) 6250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 6260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif // __RS_TYPES_RSH__ 627