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