rs_types.rsh revision d5dccb8c49d8da069f2630c4ac9c0e2d14958a88
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/** 141d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramFragment object. 1429df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 1439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramFragment 1449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 145c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_fragment; 1469df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 147d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramVertex object. 1489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 1499df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramVertex 1509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 151c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_vertex; 1529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 153d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramRaster object. 1549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 155d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * See: android.renderscript.ProgramRaster 1569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 157c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_raster; 1589df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 159d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript ProgramStore object. 1609df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 1619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.ProgramStore 1629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 163c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_store; 1649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 165d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * \brief Opaque handle to a Renderscript font object. 1669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 1679df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * See: android.renderscript.Font 1689df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 169c093685672e54657d87b953d44e514803889486cJason Samstypedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_font; 170c093685672e54657d87b953d44e514803889486cJason Sams 1719df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 1729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type. 173d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides two float fields packed into a single 64 bit field with 64 bit 1749df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment. 1759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 176717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float2 __attribute__((ext_vector_type(2))); 1779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 1789df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type. Provides three float fields packed 179d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment. 1809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 181717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float3 __attribute__((ext_vector_type(3))); 1829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 1839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic float type. 184d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * Provides four float fields packed into a single 128 bit field with 128 bit 1859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * alignment. 1869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 187717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef float float4 __attribute__((ext_vector_type(4))); 188717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 1899df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 1909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides two double fields packed 191d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 128 bit field with 128 bit alignment. 1929df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 19346f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double2 __attribute__((ext_vector_type(2))); 1949df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 1959df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides three double fields packed 196d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment. 1979df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 19846f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double3 __attribute__((ext_vector_type(3))); 1999df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2009df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic double type. Provides four double fields packed 201d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment. 2029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 20346f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef double double4 __attribute__((ext_vector_type(4))); 20446f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams 2059df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides two uchar fields packed 207d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 16 bit field with 16 bit alignment. 2089df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 209717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar2 __attribute__((ext_vector_type(2))); 2109df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2119df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides three uchar fields packed 212d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment. 2139df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 214717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar3 __attribute__((ext_vector_type(3))); 2159df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2169df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uchar type. Provides four uchar fields packed 217d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment. 2189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 219717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uchar uchar4 __attribute__((ext_vector_type(4))); 220717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 2219df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2229df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides two ushort fields packed 223d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 32 bit field with 32 bit alignment. 2249df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 225717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort2 __attribute__((ext_vector_type(2))); 2269df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides three ushort fields packed 228d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment. 2299df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 230717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort3 __attribute__((ext_vector_type(3))); 2319df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2329df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ushort type. Provides four ushort fields packed 233d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment. 2349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 235717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef ushort ushort4 __attribute__((ext_vector_type(4))); 236717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 2379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides two uint fields packed into a 239d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment. 2409df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 241717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint2 __attribute__((ext_vector_type(2))); 2429df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides three uint fields packed into 244d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment. 2459df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 246717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint3 __attribute__((ext_vector_type(3))); 2479df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2489df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic uint type. Provides four uint fields packed into 249d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment. 2509df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 251717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef uint uint4 __attribute__((ext_vector_type(4))); 252717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 2539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides two ulong fields packed into 255d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 128 bit field with 128 bit alignment. 2569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 25746f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong2 __attribute__((ext_vector_type(2))); 2589df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2599df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides three ulong fields packed 260d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment. 2619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 26246f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong3 __attribute__((ext_vector_type(3))); 2639df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2649df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic ulong type. Provides four ulong fields packed 265d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 256 bit field with 256 bit alignment. 2669df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 26746f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef ulong ulong4 __attribute__((ext_vector_type(4))); 26846f2e7295d648f52812a414edd486a5be9f1ee7eJason Sams 2699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides two char fields packed into a 271d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 16 bit field with 16 bit alignment. 2729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 273717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char2 __attribute__((ext_vector_type(2))); 2749df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2759df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides three char fields packed into 276d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment. 2779df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 278717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char3 __attribute__((ext_vector_type(3))); 2799df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2809df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic char type. Provides four char fields packed into 281d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment. 2829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 283717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef char char4 __attribute__((ext_vector_type(4))); 284717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 2859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides two short fields packed into 287d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 32 bit field with 32 bit alignment. 2889df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 289717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short2 __attribute__((ext_vector_type(2))); 2909df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2919df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides three short fields packed 292d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment. 2939df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 294717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short3 __attribute__((ext_vector_type(3))); 2959df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 2969df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic short type. Provides four short fields packed 297d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * into a single 64 bit field with 64 bit alignment. 2989df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 299717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef short short4 __attribute__((ext_vector_type(4))); 300717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 3019df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3029df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two int fields packed into a 303d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 64 bit field with 64 bit alignment. 3049df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 305717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int2 __attribute__((ext_vector_type(2))); 3069df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3079df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides three int fields packed into a 308d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment. 3099df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 310717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int3 __attribute__((ext_vector_type(3))); 3119df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3129df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic int type. Provides two four fields packed into a 313d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment. 3149df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 315717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Samstypedef int int4 __attribute__((ext_vector_type(4))); 316717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 3179df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3189df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides two long fields packed into a 319d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * single 128 bit field with 128 bit alignment. 3209df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 32146f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long2 __attribute__((ext_vector_type(2))); 3229df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3239df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides three long fields packed into 324d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment. 3259df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 32646f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long3 __attribute__((ext_vector_type(3))); 3279df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3289df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Vector version of the basic long type. Provides four long fields packed into 329d5dccb8c49d8da069f2630c4ac9c0e2d14958a88Stephen Hines * a single 256 bit field with 256 bit alignment. 3309df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 33146f2e7295d648f52812a414edd486a5be9f1ee7eJason Samstypedef long long4 __attribute__((ext_vector_type(4))); 332717e34a50d2de026b5b66b4ccad06b7bc8b62b9eJason Sams 3339df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3349df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 4x4 float matrix 3359df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 3369df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix. Elements are stored in the array at the 3379df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*4 + col] 3389df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 33905f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct { 34022fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams float m[16]; 34122fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams} rs_matrix4x4; 3429df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3439df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 3x3 float matrix 3449df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 3459df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix. Elements are stored in the array at the 3469df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*3 + col] 3479df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 34805f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct { 3497fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams float m[9]; 3507fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix3x3; 3519df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3529df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief 2x2 float matrix 3539df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 3549df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * Native holder for RS matrix. Elements are stored in the array at the 3559df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * location [row*2 + col] 3569df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 35705f1cb4ca5ce203a4facc7ec0bd002af2ae324b7Alex Sakhartchouktypedef struct { 3587fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams float m[4]; 3597fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams} rs_matrix2x2; 3607fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams 3619df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3629df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * quaternion type for use with the quaternion functions 3639df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 3640bd010a5bdf4df3021c92c70e92008d6640c5da6Alex Sakhartchouktypedef float4 rs_quaternion; 3657fe6bce13c30b8d14dc833e06468666d28e56ee1Jason Sams 36697589cbd2b844543f6c8a6bc336f4e11a67828fdJason Sams#define RS_PACKED __attribute__((packed, aligned(4))) 367c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams#define NULL ((const void *)0) 368c500e74d0848b721bf01cf0ab344a6adb035c312Jason Sams 3699df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams 3709df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3719df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Enum for selecting cube map faces 3729df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 37374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum { 37474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0, 37574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1, 37674a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2, 37774a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3, 37874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4, 37974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5 38074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_cubemap_face; 38174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 3829df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams/** 3839df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * \brief Bitfield to specify the usage types for an allocation. 3849df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * 3859df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * These values are ORed together to specify which usages or memory spaces are 3869df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams * relevant to an allocation or an operation on an allocation. 3879df3b2b03e6bbe26d5fa7daae49b26fd9f15eaa0Jason Sams */ 38874a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouktypedef enum { 38974a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_USAGE_SCRIPT = 0x0001, 39074a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, 39174a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, 39274a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, 39374a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010 39474a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk} rs_allocation_usage_type; 39574a827988567a9d65954bb0d825a3ba4a97e2947Alex Sakhartchouk 3969bb32e1fd75e864071f18ef10976e8ba9fc0e252Shih-wei Liao#endif 397