rs_types.rsh revision b0fa3a6916600a40f3d263e7bd201818b8fdb360
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
445439184e13077059e4caffbdadfcfe37ec99ec10Shih-wei Liao#define M_PI        3.14159265358979323846264338327950288f   /* pi */
455439184e13077059e4caffbdadfcfe37ec99ec10Shih-wei Liao
46ed2ea272afbab08d0b5d882202c8eb19a5233481Shih-wei Liao#include "stdbool.h"
479df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit integer type
499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
50717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char int8_t;
519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit integer type
539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
54717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short int16_t;
559df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit integer type
579df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
58717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int32_t;
599df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 64 bit integer type
619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
6222fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef long long int64_t;
639df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit unsigned integer type
659df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
66717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned char uint8_t;
679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit unsigned integer type
699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
70717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned short uint16_t;
719df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit unsigned integer type
739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
74717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef unsigned int uint32_t;
759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
769df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 64 bit unsigned integer type
779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
7822fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef unsigned long long uint64_t;
799df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 8 bit unsigned integer type
819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
82717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint8_t uchar;
839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
849df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 16 bit unsigned integer type
859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
86717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint16_t ushort;
879df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 32 bit unsigned integer type
899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
90717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint32_t uint;
919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
92d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Typedef for unsigned long (use for 64-bit unsigned integers)
939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
9422fa371bf64b8aae786acfe5d711af21afb13a93Jason Samstypedef uint64_t ulong;
959df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Typedef for unsigned int
979df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
98c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samstypedef uint32_t size_t;
999df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1009df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Typedef for int (use for 32-bit integers)
1019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
102c500e74d0848b721bf01cf0ab344a6adb035c312Jason Samstypedef int32_t ssize_t;
103c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
1049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
105d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript element.
1069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1079df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Element
1089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
109c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element;
1109df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
111d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript type.
1129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1139df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Type
1149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
115c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type;
1169df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
117d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript allocation.
1189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1199df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Allocation
1209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
121c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation;
1229df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
123d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript sampler object.
1249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Sampler
1269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
127c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_sampler;
1289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
129d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript script object.
1309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ScriptC
1329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
133c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_script;
1349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
135d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript mesh object.
1369df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Mesh
1389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
139c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_mesh;
1409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1419e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * \brief Opaque handle to a Renderscript Path object.
1429e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams *
1439e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * See: android.renderscript.Path
1449e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */
1459e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_path;
1469e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/**
147d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramFragment object.
1489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramFragment
1509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
151c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_fragment;
1529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
153d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramVertex object.
1549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1559df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramVertex
1569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
157c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_vertex;
1589df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
159d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramRaster object.
1609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
161d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * See: android.renderscript.ProgramRaster
1629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
163c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_raster;
1649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
165d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramStore object.
1669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramStore
1689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
169c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_store;
1709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
171d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript font object.
1729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
1739df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Font
1749df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
175c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_font;
176c093685672e54657d87b953d44e514803889486cJason Sams
1779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type.
179d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides two float fields packed into a single 64 bit field with 64 bit
1809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment.
1819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
182717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float2 __attribute__((ext_vector_type(2)));
1839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1849df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type. Provides three float fields packed
185d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment.
1869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
187717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float3 __attribute__((ext_vector_type(3)));
1889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type.
190d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides four float fields packed into a single 128 bit field with 128 bit
1919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment.
1929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
193717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float4 __attribute__((ext_vector_type(4)));
194717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
1959df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
1969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides two double fields packed
197d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment.
1989df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
19946f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double2 __attribute__((ext_vector_type(2)));
2009df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides three double fields packed
202d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2039df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
20446f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double3 __attribute__((ext_vector_type(3)));
2059df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides four double fields packed
207d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
20946f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double4 __attribute__((ext_vector_type(4)));
21046f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams
2119df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides two uchar fields packed
213d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 16 bit field with 16 bit alignment.
2149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
215717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar2 __attribute__((ext_vector_type(2)));
2169df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2179df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides three uchar fields packed
218d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2199df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
220717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar3 __attribute__((ext_vector_type(3)));
2219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2229df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides four uchar fields packed
223d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
225717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar4 __attribute__((ext_vector_type(4)));
226717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides two ushort fields packed
229d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment.
2309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
231717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort2 __attribute__((ext_vector_type(2)));
2329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides three ushort fields packed
234d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
2359df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
236717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort3 __attribute__((ext_vector_type(3)));
2379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides four ushort fields packed
239d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
2409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
241717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort4 __attribute__((ext_vector_type(4)));
242717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides two uint fields packed into a
245d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment.
2469df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
247717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint2 __attribute__((ext_vector_type(2)));
2489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides three uint fields packed into
250d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
252717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint3 __attribute__((ext_vector_type(3)));
2539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides four uint fields packed into
255d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
257717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint4 __attribute__((ext_vector_type(4)));
258717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2599df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides two ulong fields packed into
261d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment.
2629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
26346f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong2 __attribute__((ext_vector_type(2)));
2649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2659df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides three ulong fields packed
266d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
26846f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong3 __attribute__((ext_vector_type(3)));
2699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides four ulong fields packed
271d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment.
2729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
27346f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong4 __attribute__((ext_vector_type(4)));
27446f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams
2759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2769df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides two char fields packed into a
277d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 16 bit field with 16 bit alignment.
2789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
279717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char2 __attribute__((ext_vector_type(2)));
2809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2819df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides three char fields packed into
282d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
2839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
284717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char3 __attribute__((ext_vector_type(3)));
2859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides four char fields packed into
287d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
2889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
289717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char4 __attribute__((ext_vector_type(4)));
290717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
2919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides two short fields packed into
293d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment.
2949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
295717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short2 __attribute__((ext_vector_type(2)));
2969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
2979df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides three short fields packed
298d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
2999df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
300717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short3 __attribute__((ext_vector_type(3)));
3019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides four short fields packed
303d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment.
3049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
305717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short4 __attribute__((ext_vector_type(4)));
306717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3079df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two int fields packed into a
309d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment.
3109df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
311717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int2 __attribute__((ext_vector_type(2)));
3129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3139df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides three int fields packed into a
314d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3159df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
316717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int3 __attribute__((ext_vector_type(3)));
3179df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two four fields packed into a
319d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
321717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int4 __attribute__((ext_vector_type(4)));
322717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3239df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides two long fields packed into a
325d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment.
3269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
32746f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long2 __attribute__((ext_vector_type(2)));
3289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3299df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides three long fields packed into
330d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment.
3319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
33246f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long3 __attribute__((ext_vector_type(3)));
3339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides four long fields packed into
335d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment.
3369df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
33746f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long4 __attribute__((ext_vector_type(4)));
338717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams
3399df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 4x4 float matrix
3419df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3429df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*4 + col]
3449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
34505f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
34622fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams    float m[16];
34722fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams} rs_matrix4x4;
3489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 3x3 float matrix
3509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*3 + col]
3539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
35405f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
3557fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams    float m[9];
3567fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix3x3;
3579df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3589df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 2x2 float matrix
3599df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix.  Elements are stored in the array at the
3619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*2 + col]
3629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
36305f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct {
3647fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams    float m[4];
3657fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix2x2;
3667fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams
3679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * quaternion type for use with the quaternion functions
3699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
3700bd010a5bdf4df3021c92c70e92008d6640c5da6Alex Sakhartchouktypedef float4 rs_quaternion;
3717fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams
37297589cbd2b844543f6c8a6bc336f4e11a67828fdJason Sams#define RS_PACKED __attribute__((packed, aligned(4)))
3736a057c34ca84c0b7211538caa85f366a0a0e6434Stephen Hines#define NULL ((void *)0)
374c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams
3754325387cee36fe373b1a792fb2e65ef00535bbddAlex Sakhartchouk#if (defined(RS_VERSION) && (RS_VERSION >= 14))
3769df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams
3779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Enum for selecting cube map faces
3799df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
38074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum {
38174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
38274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
38374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
38474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
38574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
38674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
38774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_cubemap_face;
38874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
3899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/**
3909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Bitfield to specify the usage types for an allocation.
3919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams *
3929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * These values are ORed together to specify which usages or memory spaces are
3939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * relevant to an allocation or an operation on an allocation.
3949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */
39574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum {
39674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
39774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
39874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
39974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
40074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk    RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
40174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_usage_type;
40274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk
403b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk#endif //defined(RS_VERSION) && (RS_VERSION >= 14)
404b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
405253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouktypedef enum {
406253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_POINT,
407253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_LINE,
408253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_LINE_STRIP,
409253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_TRIANGLE,
410253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_TRIANGLE_STRIP,
411253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk    RS_PRIMITIVE_TRIANGLE_FAN
412253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk} rs_primitive;
413253325d2a19162c1dd18de59c357e36adf4a760bAlex Sakhartchouk
414b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk/**
415b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * \brief Enumeration for possible element data types
416b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
417b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * DataType represents the basic type information for a basic element.  The
418b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * naming convention follows.  For numeric types it is FLOAT,
419b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * SIGNED, or UNSIGNED followed by the _BITS where BITS is the
420b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * size of the data.  BOOLEAN is a true / false (1,0)
421b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * represented in an 8 bit container.  The UNSIGNED variants
422b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * with multiple bit definitions are for packed graphical data
423b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * formats and represent vectors with per vector member sizes
424b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * which are treated as a single unit for packing and alignment
425b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * purposes.
426b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
427b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * MATRIX the three matrix types contain FLOAT_32 elements and are treated
428b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * as 32 bits for alignment purposes.
429b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
430b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * RS_* objects.  32 bit opaque handles.
431b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk */
432b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouktypedef enum {
433b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_NONE,
434b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_FLOAT_16,
435b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_FLOAT_32,
436b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_FLOAT_64,
437b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SIGNED_8,
438b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SIGNED_16,
439b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SIGNED_32,
440b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SIGNED_64,
441b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_8,
442b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_16,
443b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_32,
444b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_64,
445b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
446b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_BOOLEAN,
447b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
448b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_5_6_5,
449b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_5_5_5_1,
450b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_UNSIGNED_4_4_4_4,
451b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
452b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_MATRIX_4X4,
453b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_MATRIX_3X3,
454b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_MATRIX_2X2,
455b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
456b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_ELEMENT = 1000,
457b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_TYPE,
458b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_ALLOCATION,
459b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SAMPLER,
460b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_SCRIPT,
461b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_MESH,
462b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_PROGRAM_FRAGMENT,
463b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_PROGRAM_VERTEX,
464b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_PROGRAM_RASTER,
465b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_TYPE_PROGRAM_STORE,
466b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk} rs_data_type;
467b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
468b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk/**
469b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * \brief Enumeration for possible element data kind
470b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk *
471b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * The special interpretation of the data if required.  This is primarly
472b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * useful for graphical data.  USER indicates no special interpretation is
473b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * expected.  PIXEL is used in conjunction with the standard data types for
474b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk * representing texture formats.
475b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk */
476b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouktypedef enum {
477b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_USER,
478b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk
479b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_L = 7,
480b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_A,
481b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_LA,
482b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_RGB,
483b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_RGBA,
484b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk    RS_KIND_PIXEL_DEPTH,
485b0fa3a6916600a40f3d263e7bd201818b8fdb360Alex Sakhartchouk} rs_data_kind;
4864325387cee36fe373b1a792fb2e65ef00535bbddAlex Sakhartchouk
4879bb32e1fd75e864071f18ef10976e8ba9fc0e252Shih-wei Liao#endif
488