1044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/*
2044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Copyright (C) 2011 The Android Open Source Project
3044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams *
4044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * you may not use this file except in compliance with the License.
6044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * You may obtain a copy of the License at
7044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams *
8044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams *
10044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Unless required by applicable law or agreed to in writing, software
11044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * See the License for the specific language governing permissions and
14044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * limitations under the License.
15044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */
16044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams
17044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** @file rs_types.rsh
189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
199df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  Define the standard Renderscript types
209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  Integers
229df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  8 bit: char, int8_t
239df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  16 bit: short, int16_t
249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  32 bit: int, in32_t
259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  64 bit: long, long long, int64_t
269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  Unsigned Integers
289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  8 bit: uchar, uint8_t
299df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  16 bit: ushort, uint16_t
309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  32 bit: uint, uint32_t
319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  64 bit: ulong, uint64_t
329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  Floating point
349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  32 bit: float
359df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  64 bit: double
369df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *  Vectors of length 2, 3, and 4 are supported for all the types above.
389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
399df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams
419bb32e1fd75e864071f18ef10976e8ba9fc0e252Shih-wei Liao#ifndef __RS_TYPES_RSH__
429bb32e1fd75e864071f18ef10976e8ba9fc0e252Shih-wei Liao#define __RS_TYPES_RSH__
43717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
44796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma/* Constants */
45796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_E         2.718281828459045235360287471352662498f     /* e */
46796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_LOG2E     1.442695040888963407359924681001892137f     /* log_2 e */
47796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_LOG10E    0.434294481903251827651128918916605082f     /* log_10 e */
48796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_LN2       0.693147180559945309417232121458176568f     /* log_e 2 */
49796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_LN10      2.302585092994045684017991454684364208f     /* log_e 10 */
50796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_PI        3.141592653589793238462643383279502884f     /* pi */
51796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_PI_2      1.570796326794896619231321691639751442f     /* pi/2 */
52796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_PI_4      0.785398163397448309615660845819875721f     /* pi/4 */
53796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_1_PI      0.318309886183790671537767526745028724f     /* 1/pi */
54796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_2_PIl     0.636619772367581343075535053490057448f     /* 2/pi */
55796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_2_SQRTPI  1.128379167095512573896158903121545172f     /* 2/sqrt(pi) */
56796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_SQRT2     1.414213562373095048801688724209698079f     /* sqrt(2) */
57796ea154c3252ad932871678d558d6edefe846fdRajeev Sharma#define M_SQRT1_2   0.707106781186547524400844362104849039f     /* 1/sqrt(2) */
585439184e13077059e4caffbdadfcfe37ec99ec10Shih-wei Liao
59ed2ea272afbab08d0b5d882202c8eb19a5233481Shih-wei Liao#include "stdbool.h"
609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit integer type
629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
63717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char int8_t;
649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
659df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit integer type
669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
67717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short int16_t;
689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit integer type
709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
71717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int32_t;
729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 64 bit integer type
749df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
7522fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef long long int64_t;
769df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit unsigned integer type
789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
79717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned char uint8_t;
809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit unsigned integer type
829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
83717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned short uint16_t;
849df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit unsigned integer type
869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
87717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned int uint32_t;
889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 64 bit unsigned integer type
909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
9122fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef unsigned long long uint64_t;
929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit unsigned integer type
949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
95717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint8_t uchar;
969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
979df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit unsigned integer type
989df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
99717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint16_t ushort;
1009df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit unsigned integer type
1029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
103717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint32_t uint;
1049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
105d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Typedef for unsigned long (use for 64-bit unsigned integers)
1069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
10722fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef uint64_t ulong;
1089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1099df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Typedef for unsigned int
1109df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
111c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samstypedef uint32_t size_t;
1129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1139df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Typedef for int (use for 32-bit integers)
1149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
115c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samstypedef int32_t ssize_t;
116c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
1179df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
118d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript element.
1199df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Element
1219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
122c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element;
1239df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
124d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript type.
1259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Type
1279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
128c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type;
1299df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
130d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript allocation.
1319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Allocation
1339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
134c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation;
1359df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
136d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript sampler object.
1379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Sampler
1399df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
140c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_sampler;
1419df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
142d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript script object.
1439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ScriptC
1459df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
146c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_script;
1479df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
148d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript mesh object.
1499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Mesh
1519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
152c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_mesh;
1539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1549e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * \brief Opaque handle to a Renderscript Path object.
1559e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *
1569e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * See: android.renderscript.Path
1579e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */
1589e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_path;
1599e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/**
160d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramFragment object.
1619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramFragment
1639df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
164c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_fragment;
1659df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
166d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramVertex object.
1679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramVertex
1699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
170c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_vertex;
1719df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
172d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramRaster object.
1739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
174d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * See: android.renderscript.ProgramRaster
1759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
176c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_raster;
1779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
178d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramStore object.
1799df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramStore
1819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
182c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_store;
1839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
184d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript font object.
1859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Font
1879df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
188c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_font;
189c093685672e54657d87b953d44e514803889486cJason Sams
1909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type.
192d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides two float fields packed into a single 64 bit field with 64 bit
1939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment.
1949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
195717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float2 __attribute__((ext_vector_type(2)));
1969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1979df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type. Provides three float fields packed
198d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment.
1999df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
200717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float3 __attribute__((ext_vector_type(3)));
2019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type.
203d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides four float fields packed into a single 128 bit field with 128 bit
2049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment.
2059df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
206717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float4 __attribute__((ext_vector_type(4)));
207717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2099df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides two double fields packed
210d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment.
2119df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
21246f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double2 __attribute__((ext_vector_type(2)));
2139df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides three double fields packed
215d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2169df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
21746f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double3 __attribute__((ext_vector_type(3)));
2189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2199df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides four double fields packed
220d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
22246f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double4 __attribute__((ext_vector_type(4)));
22346f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams
2249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides two uchar fields packed
226d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 16 bit field with 16 bit alignment.
2279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
228717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar2 __attribute__((ext_vector_type(2)));
2299df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides three uchar fields packed
231d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
233717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar3 __attribute__((ext_vector_type(3)));
2349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2359df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides four uchar fields packed
236d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
238717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar4 __attribute__((ext_vector_type(4)));
239717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2419df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides two ushort fields packed
242d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
244717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort2 __attribute__((ext_vector_type(2)));
2459df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2469df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides three ushort fields packed
247d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
2489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
249717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort3 __attribute__((ext_vector_type(3)));
2509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides four ushort fields packed
252d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
2539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
254717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort4 __attribute__((ext_vector_type(4)));
255717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2579df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides two uint fields packed into a
258d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment.
2599df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
260717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint2 __attribute__((ext_vector_type(2)));
2619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides three uint fields packed into
263d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
265717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint3 __attribute__((ext_vector_type(3)));
2669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides four uint fields packed into
268d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
270717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint4 __attribute__((ext_vector_type(4)));
271717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides two ulong fields packed into
274d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
27646f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong2 __attribute__((ext_vector_type(2)));
2779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides three ulong fields packed
279d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
28146f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong3 __attribute__((ext_vector_type(3)));
2829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides four ulong fields packed
284d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
28646f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong4 __attribute__((ext_vector_type(4)));
28746f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams
2889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides two char fields packed into a
290d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 16 bit field with 16 bit alignment.
2919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
292717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char2 __attribute__((ext_vector_type(2)));
2939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides three char fields packed into
295d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
2969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
297717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char3 __attribute__((ext_vector_type(3)));
2989df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2999df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides four char fields packed into
300d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
3019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
302717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char4 __attribute__((ext_vector_type(4)));
303717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3059df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides two short fields packed into
306d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
3079df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
308717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short2 __attribute__((ext_vector_type(2)));
3099df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3109df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides three short fields packed
311d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
3129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
313717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short3 __attribute__((ext_vector_type(3)));
3149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3159df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides four short fields packed
316d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
3179df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
318717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short4 __attribute__((ext_vector_type(4)));
319717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two int fields packed into a
322d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment.
3239df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
324717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int2 __attribute__((ext_vector_type(2)));
3259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides three int fields packed into a
327d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
329717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int3 __attribute__((ext_vector_type(3)));
3309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two four fields packed into a
332d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
334717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int4 __attribute__((ext_vector_type(4)));
335717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3369df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides two long fields packed into a
338d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3399df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
34046f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long2 __attribute__((ext_vector_type(2)));
3419df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3429df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides three long fields packed into
343d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment.
3449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
34546f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long3 __attribute__((ext_vector_type(3)));
3469df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3479df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides four long fields packed into
348d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment.
3499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
35046f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long4 __attribute__((ext_vector_type(4)));
351717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 4x4 float matrix
3549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3559df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*4 + col]
3579df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
35805f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
35922fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams    float m[16];
36022fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams} rs_matrix4x4;
3619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 3x3 float matrix
3639df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3659df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*3 + col]
3669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
36705f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
3687fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams    float m[9];
3697fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix3x3;
3709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3719df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 2x2 float matrix
3729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3749df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*2 + col]
3759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
37605f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
3777fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams    float m[4];
3787fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix2x2;
3797fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams
3809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * quaternion type for use with the quaternion functions
3829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
3830bd010a5bdf4df3021c92c70e92008d6640c5da6Alex Sakhartchouktypedef float4 rs_quaternion;
3847fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams
38597589cbd2b844543f6c8a6bc336f4e11a67828fdJason Sams#define RS_PACKED __attribute__((packed, aligned(4)))
3866a057c34ca84c0b7211538caa85f366a0a0e6434Stephen Hines#define NULL ((void *)0)
387c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
3884325387cee36fe373b1a792fb2e65ef00535bbddAlex Sakhartchouk#if (defined(RS_VERSION) && (RS_VERSION >= 14))
3899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams
3909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Enum for selecting cube map faces
3929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
39374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum {
39474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
39574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
39674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
39774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
39874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
39974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
40074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_cubemap_face;
40174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
4029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
4039df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Bitfield to specify the usage types for an allocation.
4049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
4059df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * These values are ORed together to specify which usages or memory spaces are
4069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * relevant to an allocation or an operation on an allocation.
4079df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
40874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum {
40974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
41074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
41174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
41274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
41374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
41474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_usage_type;
41574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
416b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk#endif //defined(RS_VERSION) && (RS_VERSION >= 14)
417b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
418340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk// New API's
4193c0c6061ce428609182eedcf82c7f75df074fcf4Alex Sakhartchouk#if (defined(RS_VERSION) && (RS_VERSION >= 16))
4203c0c6061ce428609182eedcf82c7f75df074fcf4Alex Sakhartchouk
4218d0f59ef07388a32ed694efe8aa63c24a67cfd7bAlex Sakhartchouk/**
4228d0f59ef07388a32ed694efe8aa63c24a67cfd7bAlex Sakhartchouk * Describes the way mesh vertex data is interpreted when rendering
4238d0f59ef07388a32ed694efe8aa63c24a67cfd7bAlex Sakhartchouk *
4248d0f59ef07388a32ed694efe8aa63c24a67cfd7bAlex Sakhartchouk **/
425253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouktypedef enum {
426340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
427340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertex data will be rendered as a series of points
428340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
42909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_POINT              = 0,
430340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
431340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertex pairs will be rendered as lines
432340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
43309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_LINE               = 1,
434340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
435340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertex data will be rendered as a connected line strip
436340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
43709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_LINE_STRIP         = 2,
438340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
439340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertices will be rendered as individual triangles
440340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
44109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_TRIANGLE           = 3,
442340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
443340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertices will be rendered as a connected triangle strip
444340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * defined by the first three vertices with each additional
445340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * triangle defined by a new vertex
446340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
44709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_TRIANGLE_STRIP     = 4,
448340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
449340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Vertices will be rendered as a sequence of triangles that all
450340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * share first vertex as the origin
451340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
45209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_TRIANGLE_FAN       = 5,
45309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
454340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
455340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Invalid primitive
456340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
45709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_PRIMITIVE_INVALID            = 100,
458253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk} rs_primitive;
459253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk
460b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk/**
461b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * \brief Enumeration for possible element data types
462b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
463b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * DataType represents the basic type information for a basic element.  The
464b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * naming convention follows.  For numeric types it is FLOAT,
465b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * SIGNED, or UNSIGNED followed by the _BITS where BITS is the
466b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * size of the data.  BOOLEAN is a true / false (1,0)
467b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * represented in an 8 bit container.  The UNSIGNED variants
468b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * with multiple bit definitions are for packed graphical data
469b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * formats and represent vectors with per vector member sizes
470b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * which are treated as a single unit for packing and alignment
471b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * purposes.
472b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
473b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * MATRIX the three matrix types contain FLOAT_32 elements and are treated
474b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * as 32 bits for alignment purposes.
475b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
476b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * RS_* objects.  32 bit opaque handles.
477b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk */
478b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouktypedef enum {
47909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_NONE             = 0,
48009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_FLOAT_32         = 2,
48109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_FLOAT_64         = 3,
48209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SIGNED_8         = 4,
48309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SIGNED_16        = 5,
48409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SIGNED_32        = 6,
48509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SIGNED_64        = 7,
48609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_8       = 8,
48709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_16      = 9,
48809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_32      = 10,
48909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_64      = 11,
49009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
49109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_BOOLEAN          = 12,
49209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
49309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_5_6_5   = 13,
49409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_5_5_5_1 = 14,
49509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_UNSIGNED_4_4_4_4 = 15,
49609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
49709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_MATRIX_4X4       = 16,
49809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_MATRIX_3X3       = 17,
49909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_MATRIX_2X2       = 18,
50009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
50109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_ELEMENT          = 1000,
50209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_TYPE             = 1001,
50309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_ALLOCATION       = 1002,
50409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SAMPLER          = 1003,
50509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_SCRIPT           = 1004,
50609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_MESH             = 1005,
50709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_PROGRAM_FRAGMENT = 1006,
50809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_PROGRAM_VERTEX   = 1007,
50909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_PROGRAM_RASTER   = 1008,
51009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_PROGRAM_STORE    = 1009,
511ae8b795a673b75bf0aec72620f4530db1415f907Stephen Hines    RS_TYPE_FONT             = 1010,
51209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
51309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_TYPE_INVALID          = 10000,
514b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk} rs_data_type;
515b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
516b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk/**
517b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * \brief Enumeration for possible element data kind
518b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
519b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * The special interpretation of the data if required.  This is primarly
520b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * useful for graphical data.  USER indicates no special interpretation is
521b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * expected.  PIXEL is used in conjunction with the standard data types for
522b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * representing texture formats.
523b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk */
524b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouktypedef enum {
52509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_USER         = 0,
526b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
52709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_L      = 7,
52809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_A      = 8,
52909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_LA     = 9,
53009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_RGB    = 10,
53109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_RGBA   = 11,
53209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_PIXEL_DEPTH  = 12,
53325a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk
53409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_KIND_INVALID      = 100,
535b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk} rs_data_kind;
5364325387cee36fe373b1a792fb2e65ef00535bbddAlex Sakhartchouk
53709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouktypedef enum {
538340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
539340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Always drawn
540340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
54109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_ALWAYS        = 0,
542340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
543340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is less than that in the
544340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * depth buffer
545340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
54609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_LESS          = 1,
547340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
548340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is less or equal to that in
549340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * the depth buffer
550340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
55109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_LEQUAL        = 2,
552340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
553340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is greater than that in the
554340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * depth buffer
555340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
55609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_GREATER       = 3,
557340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
558340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is greater or equal to that
559340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * in the depth buffer
560340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
56109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_GEQUAL        = 4,
562340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
563340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is equal to that in the
564340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * depth buffer
565340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
56609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_EQUAL         = 5,
567340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
568340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Drawn if the incoming depth value is not equal to that in the
569340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * depth buffer
570340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
57109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_NOTEQUAL      = 6,
572340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    /**
573340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    * Invalid depth function
574340d15add608408d64cc2b9bec4f0d1924552cf5Alex Sakhartchouk    */
57509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_DEPTH_FUNC_INVALID       = 100,
57609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk} rs_depth_func;
57709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
57809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouktypedef enum {
57909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_ZERO                   = 0,
58009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_ONE                    = 1,
58109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_DST_COLOR              = 2,
58209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_ONE_MINUS_DST_COLOR    = 3,
58309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_SRC_ALPHA              = 4,
58409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA    = 5,
58509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_DST_ALPHA              = 6,
58609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_ONE_MINUS_DST_ALPHA    = 7,
58709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_SRC_ALPHA_SATURATE     = 8,
58809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
58909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_SRC_INVALID                = 100,
59009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk} rs_blend_src_func;
59109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
59209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouktypedef enum {
59309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_ZERO                   = 0,
59409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_ONE                    = 1,
59509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_SRC_COLOR              = 2,
59609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_ONE_MINUS_SRC_COLOR    = 3,
59709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_SRC_ALPHA              = 4,
59809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_ONE_MINUS_SRC_ALPHA    = 5,
59909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_DST_ALPHA              = 6,
60009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_ONE_MINUS_DST_ALPHA    = 7,
60109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
60209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_BLEND_DST_INVALID                = 100,
60309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk} rs_blend_dst_func;
60409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
60509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouktypedef enum {
60609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_CULL_BACK     = 0,
60709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_CULL_FRONT    = 1,
60809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_CULL_NONE     = 2,
60909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
61009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_CULL_INVALID  = 100,
61109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk} rs_cull_mode;
61209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
61309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouktypedef enum {
61409db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_NEAREST              = 0,
61509db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_LINEAR               = 1,
61609db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_LINEAR_MIP_LINEAR    = 2,
61709db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_WRAP                 = 3,
61809db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_CLAMP                = 4,
61909db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_LINEAR_MIP_NEAREST   = 5,
62009db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
62109db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk    RS_SAMPLER_INVALID              = 100,
62209db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk} rs_sampler_value;
62309db907b55417f071460bf0b5a82c13e8e9a5088Alex Sakhartchouk
6243c0c6061ce428609182eedcf82c7f75df074fcf4Alex Sakhartchouk#endif // (defined(RS_VERSION) && (RS_VERSION >= 16))
6253c0c6061ce428609182eedcf82c7f75df074fcf4Alex Sakhartchouk
6263c0c6061ce428609182eedcf82c7f75df074fcf4Alex Sakhartchouk#endif // __RS_TYPES_RSH__
627