1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17// Don't edit this file! It is auto-generated by frameworks/rs/api/generate.sh. 18 19/* 20 * rs_vector_math.rsh: Vector Math Functions 21 * 22 * These functions interpret the input arguments as representation of vectors in 23 * n-dimensional space. 24 * 25 * The precision of the mathematical operations on 32 bit floats is affected by the pragmas 26 * rs_fp_relaxed and rs_fp_full. See Mathematical Constants and Functions for details. 27 * 28 * Different precision/speed tradeoffs can be achieved by using variants of the common math 29 * functions. Functions with a name starting with 30 * - native_: May have custom hardware implementations with weaker precision. Additionally, 31 * subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and 32 * infinity input may not be handled correctly. 33 * - fast_: May perform internal computations using 16 bit floats. Additionally, subnormal 34 * values may be flushed to zero, and rounding towards zero may be used. 35 * 36 */ 37 38#ifndef RENDERSCRIPT_RS_VECTOR_MATH_RSH 39#define RENDERSCRIPT_RS_VECTOR_MATH_RSH 40 41/* 42 * cross: Cross product of two vectors 43 * 44 * Computes the cross product of two vectors. 45 */ 46extern float3 __attribute__((const, overloadable)) 47 cross(float3 left_vector, float3 right_vector); 48 49extern float4 __attribute__((const, overloadable)) 50 cross(float4 left_vector, float4 right_vector); 51 52#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 53extern half3 __attribute__((const, overloadable)) 54 cross(half3 left_vector, half3 right_vector); 55#endif 56 57#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 58extern half4 __attribute__((const, overloadable)) 59 cross(half4 left_vector, half4 right_vector); 60#endif 61 62/* 63 * distance: Distance between two points 64 * 65 * Compute the distance between two points. 66 * 67 * See also fast_distance(), native_distance(). 68 */ 69extern float __attribute__((const, overloadable)) 70 distance(float left_vector, float right_vector); 71 72extern float __attribute__((const, overloadable)) 73 distance(float2 left_vector, float2 right_vector); 74 75extern float __attribute__((const, overloadable)) 76 distance(float3 left_vector, float3 right_vector); 77 78extern float __attribute__((const, overloadable)) 79 distance(float4 left_vector, float4 right_vector); 80 81#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 82extern half __attribute__((const, overloadable)) 83 distance(half left_vector, half right_vector); 84#endif 85 86#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 87extern half __attribute__((const, overloadable)) 88 distance(half2 left_vector, half2 right_vector); 89#endif 90 91#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 92extern half __attribute__((const, overloadable)) 93 distance(half3 left_vector, half3 right_vector); 94#endif 95 96#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 97extern half __attribute__((const, overloadable)) 98 distance(half4 left_vector, half4 right_vector); 99#endif 100 101/* 102 * dot: Dot product of two vectors 103 * 104 * Computes the dot product of two vectors. 105 */ 106extern float __attribute__((const, overloadable)) 107 dot(float left_vector, float right_vector); 108 109extern float __attribute__((const, overloadable)) 110 dot(float2 left_vector, float2 right_vector); 111 112extern float __attribute__((const, overloadable)) 113 dot(float3 left_vector, float3 right_vector); 114 115extern float __attribute__((const, overloadable)) 116 dot(float4 left_vector, float4 right_vector); 117 118#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 119extern half __attribute__((const, overloadable)) 120 dot(half left_vector, half right_vector); 121#endif 122 123#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 124extern half __attribute__((const, overloadable)) 125 dot(half2 left_vector, half2 right_vector); 126#endif 127 128#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 129extern half __attribute__((const, overloadable)) 130 dot(half3 left_vector, half3 right_vector); 131#endif 132 133#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 134extern half __attribute__((const, overloadable)) 135 dot(half4 left_vector, half4 right_vector); 136#endif 137 138/* 139 * fast_distance: Approximate distance between two points 140 * 141 * Computes the approximate distance between two points. 142 * 143 * The precision is what would be expected from doing the computation using 16 bit floating 144 * point values. 145 * 146 * See also distance(), native_distance(). 147 */ 148#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 149extern float __attribute__((const, overloadable)) 150 fast_distance(float left_vector, float right_vector); 151#endif 152 153#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 154extern float __attribute__((const, overloadable)) 155 fast_distance(float2 left_vector, float2 right_vector); 156#endif 157 158#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 159extern float __attribute__((const, overloadable)) 160 fast_distance(float3 left_vector, float3 right_vector); 161#endif 162 163#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 164extern float __attribute__((const, overloadable)) 165 fast_distance(float4 left_vector, float4 right_vector); 166#endif 167 168/* 169 * fast_length: Approximate length of a vector 170 * 171 * Computes the approximate length of a vector. 172 * 173 * The precision is what would be expected from doing the computation using 16 bit floating 174 * point values. 175 * 176 * See also length(), native_length(). 177 */ 178#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 179extern float __attribute__((const, overloadable)) 180 fast_length(float v); 181#endif 182 183#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 184extern float __attribute__((const, overloadable)) 185 fast_length(float2 v); 186#endif 187 188#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 189extern float __attribute__((const, overloadable)) 190 fast_length(float3 v); 191#endif 192 193#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 194extern float __attribute__((const, overloadable)) 195 fast_length(float4 v); 196#endif 197 198/* 199 * fast_normalize: Approximate normalized vector 200 * 201 * Approximately normalizes a vector. 202 * 203 * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for 204 * positive values. 205 * 206 * The precision is what would be expected from doing the computation using 16 bit floating 207 * point values. 208 * 209 * See also normalize(), native_normalize(). 210 */ 211#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 212extern float __attribute__((const, overloadable)) 213 fast_normalize(float v); 214#endif 215 216#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 217extern float2 __attribute__((const, overloadable)) 218 fast_normalize(float2 v); 219#endif 220 221#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 222extern float3 __attribute__((const, overloadable)) 223 fast_normalize(float3 v); 224#endif 225 226#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 227extern float4 __attribute__((const, overloadable)) 228 fast_normalize(float4 v); 229#endif 230 231/* 232 * length: Length of a vector 233 * 234 * Computes the length of a vector. 235 * 236 * See also fast_length(), native_length(). 237 */ 238extern float __attribute__((const, overloadable)) 239 length(float v); 240 241extern float __attribute__((const, overloadable)) 242 length(float2 v); 243 244extern float __attribute__((const, overloadable)) 245 length(float3 v); 246 247extern float __attribute__((const, overloadable)) 248 length(float4 v); 249 250#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 251extern half __attribute__((const, overloadable)) 252 length(half v); 253#endif 254 255#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 256extern half __attribute__((const, overloadable)) 257 length(half2 v); 258#endif 259 260#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 261extern half __attribute__((const, overloadable)) 262 length(half3 v); 263#endif 264 265#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 266extern half __attribute__((const, overloadable)) 267 length(half4 v); 268#endif 269 270/* 271 * native_distance: Approximate distance between two points 272 * 273 * Computes the approximate distance between two points. 274 * 275 * See also distance(), fast_distance(). 276 */ 277#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 278extern float __attribute__((const, overloadable)) 279 native_distance(float left_vector, float right_vector); 280#endif 281 282#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 283extern float __attribute__((const, overloadable)) 284 native_distance(float2 left_vector, float2 right_vector); 285#endif 286 287#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 288extern float __attribute__((const, overloadable)) 289 native_distance(float3 left_vector, float3 right_vector); 290#endif 291 292#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 293extern float __attribute__((const, overloadable)) 294 native_distance(float4 left_vector, float4 right_vector); 295#endif 296 297#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 298extern half __attribute__((const, overloadable)) 299 native_distance(half left_vector, half right_vector); 300#endif 301 302#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 303extern half __attribute__((const, overloadable)) 304 native_distance(half2 left_vector, half2 right_vector); 305#endif 306 307#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 308extern half __attribute__((const, overloadable)) 309 native_distance(half3 left_vector, half3 right_vector); 310#endif 311 312#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 313extern half __attribute__((const, overloadable)) 314 native_distance(half4 left_vector, half4 right_vector); 315#endif 316 317/* 318 * native_length: Approximate length of a vector 319 * 320 * Compute the approximate length of a vector. 321 * 322 * See also length(), fast_length(). 323 */ 324#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 325extern float __attribute__((const, overloadable)) 326 native_length(float v); 327#endif 328 329#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 330extern float __attribute__((const, overloadable)) 331 native_length(float2 v); 332#endif 333 334#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 335extern float __attribute__((const, overloadable)) 336 native_length(float3 v); 337#endif 338 339#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 340extern float __attribute__((const, overloadable)) 341 native_length(float4 v); 342#endif 343 344#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 345extern half __attribute__((const, overloadable)) 346 native_length(half v); 347#endif 348 349#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 350extern half __attribute__((const, overloadable)) 351 native_length(half2 v); 352#endif 353 354#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 355extern half __attribute__((const, overloadable)) 356 native_length(half3 v); 357#endif 358 359#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 360extern half __attribute__((const, overloadable)) 361 native_length(half4 v); 362#endif 363 364/* 365 * native_normalize: Approximately normalize a vector 366 * 367 * Approximately normalizes a vector. 368 * 369 * See also normalize(), fast_normalize(). 370 */ 371#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 372extern float __attribute__((const, overloadable)) 373 native_normalize(float v); 374#endif 375 376#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 377extern float2 __attribute__((const, overloadable)) 378 native_normalize(float2 v); 379#endif 380 381#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 382extern float3 __attribute__((const, overloadable)) 383 native_normalize(float3 v); 384#endif 385 386#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 387extern float4 __attribute__((const, overloadable)) 388 native_normalize(float4 v); 389#endif 390 391#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 392extern half __attribute__((const, overloadable)) 393 native_normalize(half v); 394#endif 395 396#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 397extern half2 __attribute__((const, overloadable)) 398 native_normalize(half2 v); 399#endif 400 401#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 402extern half3 __attribute__((const, overloadable)) 403 native_normalize(half3 v); 404#endif 405 406#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 407extern half4 __attribute__((const, overloadable)) 408 native_normalize(half4 v); 409#endif 410 411/* 412 * normalize: Normalize a vector 413 * 414 * Normalize a vector. 415 * 416 * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for 417 * positive values. 418 * 419 * See also fast_normalize(), native_normalize(). 420 */ 421extern float __attribute__((const, overloadable)) 422 normalize(float v); 423 424extern float2 __attribute__((const, overloadable)) 425 normalize(float2 v); 426 427extern float3 __attribute__((const, overloadable)) 428 normalize(float3 v); 429 430extern float4 __attribute__((const, overloadable)) 431 normalize(float4 v); 432 433#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 434extern half __attribute__((const, overloadable)) 435 normalize(half v); 436#endif 437 438#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 439extern half2 __attribute__((const, overloadable)) 440 normalize(half2 v); 441#endif 442 443#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 444extern half3 __attribute__((const, overloadable)) 445 normalize(half3 v); 446#endif 447 448#if (defined(RS_VERSION) && (RS_VERSION >= 24)) 449extern half4 __attribute__((const, overloadable)) 450 normalize(half4 v); 451#endif 452 453#endif // RENDERSCRIPT_RS_VECTOR_MATH_RSH 454