summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorJason Sams <jsams@google.com>2015-03-26 20:46:57 +0000
committerJason Sams <jsams@google.com>2015-03-26 20:46:57 +0000
commit41371c7c23c4115cf0b3e7dc83240d5bcfb828b3 (patch)
tree13e7ad83c8f4218cc85a2dfcd4bbefc6b1d0025d /api
parent386e87ecf4114084c10dd385edc1c2baebe80a04 (diff)
downloadrs-41371c7c23c4115cf0b3e7dc83240d5bcfb828b3.tar.gz
Revert "Reorganize the header files in a way that's easier to document."
This reverts commit 386e87ecf4114084c10dd385edc1c2baebe80a04. Change-Id: Icaeedd9badfec2c51a8120c72eb6297736d68c2a
Diffstat (limited to 'api')
-rwxr-xr-xapi/generate.sh4
-rw-r--r--api/rs_allocation.spec (renamed from api/rs_allocation_data.spec)94
-rw-r--r--api/rs_convert.spec133
-rw-r--r--api/rs_core.spec379
-rw-r--r--api/rs_core_math.spec2284
-rw-r--r--api/rs_element.spec (renamed from api/rs_object_info.spec)154
-rw-r--r--api/rs_for_each.spec346
-rw-r--r--api/rs_graphics.spec352
-rw-r--r--api/rs_io.spec78
-rw-r--r--api/rs_math.spec2295
-rw-r--r--api/rs_matrix.spec105
-rw-r--r--api/rs_mesh.spec78
-rw-r--r--api/rs_object.spec76
-rw-r--r--api/rs_object_types.spec226
-rw-r--r--api/rs_program.spec130
-rw-r--r--api/rs_sampler.spec70
-rw-r--r--api/rs_types.spec849
-rw-r--r--api/rs_value_types.spec407
-rw-r--r--api/rs_vector_math.spec197
19 files changed, 4115 insertions, 4142 deletions
diff --git a/api/generate.sh b/api/generate.sh
index e216e468..fd0085da 100755
--- a/api/generate.sh
+++ b/api/generate.sh
@@ -22,9 +22,7 @@ mkdir -p test
mkdir -p scriptc
mkdir -p html
-# Because rsIs/Clear/SetObject is documented in rs_object_info but also found in rs_graphics, the latter must appear
-# after the former.
-./generator rs_core.spec rs_value_types.spec rs_object_types.spec rs_allocation_data.spec rs_atomic.spec rs_convert.spec rs_debug.spec rs_for_each.spec rs_io.spec rs_math.spec rs_matrix.spec rs_object_info.spec rs_quaternion.spec rs_time.spec rs_vector_math.spec rs_graphics.spec
+./generator rs_allocation.spec rs_atomic.spec rs_core_math.spec rs_core.spec rs_debug.spec rs_element.spec rs_graphics.spec rs_math.spec rs_matrix.spec rs_mesh.spec rs_object.spec rs_program.spec rs_quaternion.spec rs_sampler.spec rs_time.spec rs_types.spec
rm -f ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/generated/*
mv test/* ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/generated/
diff --git a/api/rs_allocation_data.spec b/api/rs_allocation.spec
index fd1e215c..51ec1903 100644
--- a/api/rs_allocation_data.spec
+++ b/api/rs_allocation.spec
@@ -17,8 +17,6 @@
header:
summary: Allocation routines
description:
- TODO Adjust documentation.
-
Functions that can be used to query the characteristics of an allocation,
to set and get elements of the allocation.
end:
@@ -42,6 +40,7 @@ description:
test: none
end:
+
function: rsAllocationCopy2DRange
version: 14
ret: void
@@ -66,6 +65,83 @@ description:
test: none
end:
+function: rsAllocationGetDimFaces
+ret: uint32_t, "Returns 1 if more than one face is present, 0 otherwise."
+arg: rs_allocation a
+summary: Presence of more than one face
+description:
+ If the allocation is a cubemap, this function returns 1 if there's more than one
+ face present. In all other cases, it returns 0.
+test: none
+end:
+
+function: rsAllocationGetDimLOD
+ret: uint32_t, "Returns 1 if more than one LOD is present, 0 otherwise."
+arg: rs_allocation a
+summary: Presence of levels of details
+description:
+ Query an allocation for the presence of more than one Level Of Details. This is useful for mipmaps.
+test: none
+end:
+
+function: rsAllocationGetDimX
+ret: uint32_t, "The X dimension of the allocation."
+arg: rs_allocation a
+summary: Size of the X dimension
+description:
+ Returns the size of the X dimension of the allocation.
+test: none
+end:
+
+function: rsAllocationGetDimY
+ret: uint32_t, "The Y dimension of the allocation."
+arg: rs_allocation a
+summary: Size of the Y dimension
+description:
+ Returns the size of the Y dimension of the allocation.
+ If the allocation has less than two dimensions, returns 0.
+test: none
+end:
+
+function: rsAllocationGetDimZ
+ret: uint32_t, "The Z dimension of the allocation."
+arg: rs_allocation a
+summary: Size of the Z dimension
+description:
+ Returns the size of the Z dimension of the allocation.
+ If the allocation has less than three dimensions, returns 0.
+test: none
+end:
+
+function: rsAllocationGetElement
+ret: rs_element, "element describing allocation layout"
+arg: rs_allocation a, "allocation to get data from"
+summary:
+description:
+ Get the element object describing the allocation's layout
+test: none
+end:
+
+function: rsAllocationIoReceive
+version: 16
+ret: void
+arg: rs_allocation a, "allocation to work on"
+summary: Receive new content from the queue
+description:
+ Receive a new set of contents from the queue.
+test: none
+end:
+
+function: rsAllocationIoSend
+version: 16
+ret: void
+arg: rs_allocation a, "allocation to work on"
+summary: Send new content to the queue
+description:
+ Send the contents of the Allocation to the queue.
+test: none
+end:
+
function: rsAllocationVLoadX_#2#1
version: 22
w: 2, 3, 4
@@ -141,6 +217,20 @@ arg: uint32_t z
test: none
end:
+function: rsGetAllocation
+ret: rs_allocation
+arg: const void* p
+summary: Returns the Allocation for a given pointer
+description:
+ Returns the Allocation for a given pointer. The pointer should point within
+ a valid allocation. The results are undefined if the pointer is not from a
+ valid allocation.
+
+ This function is deprecated and will be removed from the SDK in a future
+ release.
+test: none
+end:
+
function: rsGetElementAt
ret: const void*
arg: rs_allocation a
diff --git a/api/rs_convert.spec b/api/rs_convert.spec
deleted file mode 100644
index 8e38a4ab..00000000
--- a/api/rs_convert.spec
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: Conversion functions
-description:
- TODO Add desc.
-end:
-
-function: convert_#3#1
-version: 9
-attrib: const
-w: 2, 3, 4
-t: u8, u16, u32, i8, i16, i32, f32
-t: u8, u16, u32, i8, i16, i32, f32
-ret: #3#1
-arg: #2#1 v, compatible(#3)
-summary: Converts numerical vectors
-description:
- Component wise conversion from a numerical type to another.
-
- Conversions of floating point values to integer will truncate.
-
- Conversions of numbers too large to fit the destination type yield undefined results.
- For example, converting a float that contains 1.0e18 to a short is undefined.
- Use @clamp() to avoid this.
-end:
-
-function: convert_#3#1
-version: 21
-attrib: const
-w: 2, 3, 4
-t: u64, i64, f64
-t: u64, i64, f64
-ret: #3#1
-arg: #2#1 v, compatible(#3)
-end:
-
-function: convert_#3#1
-version: 21
-attrib: const
-w: 2, 3, 4
-t: u64, i64, f64
-t: u8, u16, u32, i8, i16, i32, f32
-ret: #3#1
-arg: #2#1 v, compatible(#3)
-end:
-
-function: convert_#3#1
-version: 21
-attrib: const
-w: 2, 3, 4
-t: u8, u16, u32, i8, i16, i32, f32
-t: u64, i64, f64
-ret: #3#1
-arg: #2#1 v, compatible(#3)
-end:
-
-function: rsPackColorTo8888
-attrib: const
-ret: uchar4
-arg: float r
-arg: float g
-arg: float b
-summary:
-description:
- Pack floating point (0-1) RGB values into a uchar4.
-
- For the float3 variant and the variant that only specifies r, g, b,
- the alpha component is set to 255 (1.0).
-test: none
-end:
-
-function: rsPackColorTo8888
-attrib: const
-ret: uchar4
-arg: float r
-arg: float g
-arg: float b
-arg: float a
-test: none
-end:
-
-function: rsPackColorTo8888
-attrib: const
-ret: uchar4
-arg: float3 color
-test: none
-end:
-
-function: rsPackColorTo8888
-attrib: const
-ret: uchar4
-arg: float4 color
-test: none
-end:
-
-function: rsUnpackColor8888
-attrib: =const
-ret: float4
-arg: uchar4 c
-summary:
-description:
- Unpack a uchar4 color to float4. The resulting float range will be (0-1).
-test: none
-end:
-
-function: rsYuvToRGBA_#2#1
-attrib: const
-w: 4
-t: u8, f32
-ret: #2#1
-arg: uchar y
-arg: uchar u
-arg: uchar v
-summary:
-description:
- Convert from YUV to RGBA.
-test: none
-end:
diff --git a/api/rs_core.spec b/api/rs_core.spec
index 6177d447..bd5cda87 100644
--- a/api/rs_core.spec
+++ b/api/rs_core.spec
@@ -34,21 +34,378 @@ description:
include:
#define RS_KERNEL __attribute__((kernel))
- #include "stdbool.h"
-
- #include "rs_value_types.rsh"
- #include "rs_object_types.rsh"
-
- #include "rs_allocation_data.rsh"
+ #include "rs_types.rsh"
+ #include "rs_allocation.rsh"
#include "rs_atomic.rsh"
- #include "rs_convert.rsh"
+ #include "rs_core_math.rsh"
#include "rs_debug.rsh"
- #include "rs_for_each.rsh"
- #include "rs_io.rsh"
+ #include "rs_element.rsh"
#include "rs_math.rsh"
#include "rs_matrix.rsh"
- #include "rs_object_info.rsh"
+ #include "rs_object.rsh"
#include "rs_quaternion.rsh"
+ #include "rs_sampler.rsh"
#include "rs_time.rsh"
- #include "rs_vector_math.rsh"
+end:
+
+type: rs_for_each_strategy_t
+enum: rs_for_each_strategy
+value: RS_FOR_EACH_STRATEGY_SERIAL = 0
+value: RS_FOR_EACH_STRATEGY_DONT_CARE = 1
+value: RS_FOR_EACH_STRATEGY_DST_LINEAR = 2
+value: RS_FOR_EACH_STRATEGY_TILE_SMALL = 3
+value: RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4
+value: RS_FOR_EACH_STRATEGY_TILE_LARGE = 5
+summary: Launch order hint for rsForEach calls
+description:
+ Launch order hint for rsForEach calls. This provides a hint to the system to
+ determine in which order the root function of the target is called with each
+ cell of the allocation.
+
+ This is a hint and implementations may not obey the order.
+end:
+
+type: rs_kernel_context
+version: 23
+simple: const struct rs_kernel_context_t *
+summary: Opaque handle to RenderScript kernel invocation context
+description:
+ TODO
+end:
+
+type: rs_script_call_t
+struct: rs_script_call
+field: rs_for_each_strategy_t strategy
+field: uint32_t xStart
+field: uint32_t xEnd
+field: uint32_t yStart
+field: uint32_t yEnd
+field: uint32_t zStart
+field: uint32_t zEnd
+field: uint32_t arrayStart
+field: uint32_t arrayEnd
+summary: Provides extra information to a rsForEach call
+description:
+ Structure to provide extra information to a rsForEach call. Primarly used to
+ restrict the call to a subset of cells in the allocation.
+end:
+
+function: rsForEach
+version: 9 13
+ret: void
+arg: rs_script script, "The target script to call"
+arg: rs_allocation input, "The allocation to source data from"
+arg: rs_allocation output, "the allocation to write date into"
+arg: const void* usrData, "The user defined params to pass to the root script. May be NULL."
+arg: const rs_script_call_t* sc, "Extra control infomation used to select a sub-region of the allocation to be processed or suggest a walking strategy. May be NULL."
+summary:
+description:
+ Make a script to script call to launch work. One of the input or output is
+ required to be a valid object. The input and output must be of the same
+ dimensions.
+test: none
+end:
+
+function: rsForEach
+version: 9 13
+ret: void
+arg: rs_script script
+arg: rs_allocation input
+arg: rs_allocation output
+arg: const void* usrData
+test: none
+end:
+
+function: rsForEach
+version: 14 20
+ret: void
+arg: rs_script script
+arg: rs_allocation input
+arg: rs_allocation output
+arg: const void* usrData
+arg: size_t usrDataLen, "The size of the userData structure. This will be used to perform a shallow copy of the data if necessary."
+arg: const rs_script_call_t* sc
+test: none
+end:
+
+function: rsForEach
+version: 14 20
+ret: void
+arg: rs_script script
+arg: rs_allocation input
+arg: rs_allocation output
+arg: const void* usrData
+arg: size_t usrDataLen
+test: none
+end:
+
+function: rsForEach
+version: 14
+ret: void
+arg: rs_script script
+arg: rs_allocation input
+arg: rs_allocation output
+test: none
+end:
+
+function: rsSendToClient
+ret: bool
+arg: int cmdID
+summary:
+description:
+ Send a message back to the client. Will not block and returns true
+ if the message was sendable and false if the fifo was full.
+ A message ID is required. Data payload is optional.
+test: none
+end:
+
+function: rsSendToClient
+ret: bool
+arg: int cmdID
+arg: const void* data
+arg: uint len
+test: none
+end:
+
+function: rsSendToClientBlocking
+ret: void
+arg: int cmdID
+summary:
+description:
+ Send a message back to the client, blocking until the message is queued.
+ A message ID is required. Data payload is optional.
+test: none
+end:
+
+function: rsSendToClientBlocking
+ret: void
+arg: int cmdID
+arg: const void* data
+arg: uint len
+test: none
+end:
+
+function: rsGetArray0
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Index in the Array0 dimension for the specified context
+description:
+ Returns the index in the Array0 dimension of the cell being processed,
+ as specified by the supplied context.
+
+ This context is created when a kernel is launched and updated at each
+ iteration. It contains common characteristics of the allocations being
+ iterated over and rarely used indexes, like the Array0 index.
+
+ You can access the context by adding a rs_kernel_context argument to your
+ kernel function. E.g.<br/>
+ <code>short RS_KERNEL myKernel(short value, uint32_t x, rs_kernel_context context) {<br/>
+ &nbsp;&nbsp;// The current index in the common x, y, z, w dimensions are accessed by<br/>
+ &nbsp;&nbsp;// adding these variables as arguments. For the more rarely used indexes<br/>
+ &nbsp;&nbsp;// to the other dimensions, extract them from the context:<br/>
+ &nbsp;&nbsp;uint32_t index_a0 = rsGetArray0(context);<br/>
+ &nbsp;&nbsp;//...<br/>
+ }<br/></code>
+
+ This function returns 0 if the Array0 dimension is not present.
+test: none
+end:
+
+function: rsGetArray1
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Index in the Array1 dimension for the specified context
+description:
+ Returns the index in the Array1 dimension of the cell being processed,
+ as specified by the supplied context. See @rsGetArray0() for an explanation
+ of the context.
+
+ Returns 0 if the Array1 dimension is not present.
+test: none
+end:
+
+function: rsGetArray2
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Index in the Array2 dimension for the specified context
+description:
+ Returns the index in the Array2 dimension of the cell being processed,
+ as specified by the supplied context. See @rsGetArray0() for an explanation
+ of the context.
+
+ Returns 0 if the Array2 dimension is not present.
+test: none
+end:
+
+function: rsGetArray3
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Index in the Array3 dimension for the specified context
+description:
+ Returns the index in the Array3 dimension of the cell being processed,
+ as specified by the supplied context. See @rsGetArray0() for an explanation
+ of the context.
+
+ Returns 0 if the Array3 dimension is not present.
+test: none
+end:
+
+function: rsGetDimArray0
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Array0 dimension for the specified context
+description:
+ Returns the size of the Array0 dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Array0 dimension is not present.
+#TODO Add an hyperlink to something that explains Array0/1/2/3
+# for the relevant functions.
+test: none
+end:
+
+function: rsGetDimArray1
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Array1 dimension for the specified context
+description:
+ Returns the size of the Array1 dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Array1 dimension is not present.
+test: none
+end:
+
+function: rsGetDimArray2
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Array2 dimension for the specified context
+description:
+ Returns the size of the Array2 dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Array2 dimension is not present.
+test: none
+end:
+
+function: rsGetDimArray3
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Array3 dimension for the specified context
+description:
+ Returns the size of the Array3 dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Array3 dimension is not present.
+test: none
+end:
+
+function: rsGetDimHasFaces
+version: 23
+ret: bool, "Returns true if more than one face is present, false otherwise."
+arg: rs_kernel_context ctxt
+summary: Presence of more than one face for the specified context
+description:
+ If the context refers to a cubemap, this function returns true if there's
+ more than one face present. In all other cases, it returns false.
+ See @rsGetDimX() for an explanation of the context.
+
+ @rsAllocationGetDimFaces() is similar but returns 0 or 1 instead of a bool.
+test: none
+end:
+
+function: rsGetDimLod
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Number of levels of detail for the specified context
+description:
+ Returns the number of levels of detail for the specified context.
+ This is useful for mipmaps. See @rsGetDimX() for an explanation of the context.
+ Returns 0 if Level of Detail is not used.
+
+ @rsAllocationGetDimLOD() is similar but returns 0 or 1 instead the actual
+ number of levels.
+test: none
+end:
+
+function: rsGetDimX
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the X dimension for the specified context
+description:
+ Returns the size of the X dimension for the specified context.
+
+ This context is created when a kernel is launched. It contains common
+ characteristics of the allocations being iterated over by the kernel in
+ a very efficient structure. It also contains rarely used indexes.
+
+ You can access it by adding a rs_kernel_context argument to your kernel
+ function. E.g.<br/>
+ <code>int4 RS_KERNEL myKernel(int4 value, rs_kernel_context context) {<br/>
+ &nbsp;&nbsp;uint32_t size = rsGetDimX(context); //...<br/></code>
+test: none
+end:
+
+function: rsGetDimY
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Y dimension for the specified context
+description:
+ Returns the size of the X dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Y dimension is not present.
+test: none
+end:
+
+function: rsGetDimZ
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Size of the Z dimension for the specified context
+description:
+ Returns the size of the Z dimension for the specified context.
+ See @rsGetDimX() for an explanation of the context.
+
+ Returns 0 if the Z dimension is not present.
+test: none
+end:
+
+function: rsGetFace
+version: 23
+ret: rs_allocation_cubemap_face
+arg: rs_kernel_context ctxt
+summary: Coordinate of the Face for the specified context
+description:
+ Returns the face on which the cell being processed is found, as specified
+ by the supplied context. See @rsGetArray0() for an explanation of the context.
+
+ Returns RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X if the face dimension is not
+ present.
+test: none
+end:
+
+function: rsGetLod
+version: 23
+ret: uint32_t
+arg: rs_kernel_context ctxt
+summary: Index in the Levels of Detail dimension for the specified context.
+description:
+ Returns the index in the Levels of Detail dimension of the cell being
+ processed, as specified by the supplied context. See @rsGetArray0() for
+ an explanation of the context.
+
+ Returns 0 if the Levels of Detail dimension is not present.
+test: none
end:
diff --git a/api/rs_core_math.spec b/api/rs_core_math.spec
new file mode 100644
index 00000000..bf47bdc3
--- /dev/null
+++ b/api/rs_core_math.spec
@@ -0,0 +1,2284 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Mathematical functions
+description:
+ Most mathematical functions can be applied to scalars and vectors.
+ When applied to vectors, a vector of the function applied to each entry
+ of the input is returned.
+
+ For example:<br/>
+ <code>
+ float3 a, b;<br/>
+ // The following call sets<br/>
+ // a.x to sin(b.x),<br/>
+ // a.y to sin(b.y), and<br/>
+ // a.z to sin(b.z).<br/>
+ a = sin(b);<br/>
+ </code>
+
+ A few functions like @distance() and @length() interpret instead the input
+ as a single vector in n-dimensional space.
+
+ The precision of the mathematical operations is affected by the pragmas
+# TODO Create an anchor for the section of http://developer.android.com/guide/topics/renderscript/compute.html that details rs_fp_* and link them here.
+ rs_fp_relaxed and rs_fp_full.
+
+ Different precision/speed tradeoffs can be achieved by using three variants
+ of common math functions. Functions with a name starting with<ul>
+ <li>native_ may have custom hardware implementations with weaker precision,</li>
+ <li>half_ may perform internal computations using 16 bit floats, and</li>
+ <li>fast_ are n-dimensional space computations that may use 16 bit floats.
+ </ul>
+end:
+
+function: abs
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: i8, i16, i32
+ret: u#2#1
+arg: #2#1 v
+summary: Absolute value of an integer
+description:
+ Returns the absolute value of an integer.
+
+ For floats, use @fabs().
+end:
+
+function: acos
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse cosine
+description:
+ Returns the inverse cosine, in radians.
+
+ See also @native_acos().
+end:
+
+function: acosh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Inverse hyperbolic cosine
+description:
+ Returns the inverse hyperbolic cosine, in radians.
+
+ See also @native_acosh().
+end:
+
+function: acospi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse cosine divided by pi
+description:
+ Returns the inverse cosine in radians, divided by pi.
+
+ To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
+
+ See also @native_acospi().
+end:
+
+function: asin
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse sine
+description:
+ Returns the inverse sine, in radians.
+
+ See also @native_asin().
+end:
+
+function: asinh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Inverse hyperbolic sine
+description:
+ Returns the inverse hyperbolic sine, in radians.
+
+ See also @native_asinh().
+end:
+
+function: asinpi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse sine divided by pi
+description:
+ Returns the inverse sine in radians, divided by pi.
+
+ To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
+
+ See also @native_asinpi().
+end:
+
+function: atan
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse tangent
+description:
+ Returns the inverse tangent, in radians.
+
+ See also @native_atan().
+end:
+
+function: atan2
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator, "The numerator"
+arg: #2#1 denominator, "The denominator. Can be 0."
+summary: Inverse tangent of a ratio
+description:
+ Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians.
+
+ See also @native_atan2().
+end:
+
+function: atan2pi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator, "The numerator"
+arg: #2#1 denominator, "The denominator. Can be 0."
+summary: Inverse tangent of a ratio, divided by pi
+description:
+ Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
+
+ See also @native_atan2pi().
+end:
+
+function: atanh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse hyperbolic tangent
+description:
+ Returns the inverse hyperbolic tangent, in radians.
+
+ See also @native_atanh().
+end:
+
+function: atanpi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Inverse tangent divided by pi
+description:
+ Returns the inverse tangent in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
+
+ See also @native_atanpi().
+end:
+
+function: cbrt
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Cube root
+description:
+ Returns the cube root.
+
+ See also @native_cbrt().
+end:
+
+function: ceil
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Smallest integer not less than a value
+description:
+ Returns the smallest integer not less than a value.
+
+ For example, <code>ceil(1.2f)</code> returns 2.f, and <code>ceil(-1.2f)</code> returns -1.f.
+
+ See also @floor().
+end:
+
+function: clamp
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 value, "Value to be clamped."
+arg: #2#1 min_value, "Lower bound, a scalar or matching vector."
+arg: #2#1 max_value, above(min_value), "High bound, must match the type of low."
+summary: Restrain a value to a range
+description:
+ Clamps a value to a specified high and low bound. clamp() returns min_value
+ if value &lt; min_value, max_value if value &gt; max_value, otherwise value.
+
+ There are two variants of clamp: one where the min and max are scalars applied
+ to all entries of the value, the other where the min and max are also vectors.
+
+ If min_value is greater than max_value, the results are undefined.
+end:
+
+function: clamp
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 value
+arg: #2 min_value
+arg: #2 max_value, above(min_value)
+end:
+
+function: clamp
+version: 19
+attrib: const
+w: 1, 2, 3, 4
+t: u8, u16, u32, u64, i8, i16, i32, i64
+ret: #2#1
+arg: #2#1 value
+arg: #2#1 min_value
+arg: #2#1 max_value, above(min_value)
+end:
+
+function: clamp
+version: 19
+attrib: const
+w: 2, 3, 4
+t: u8, u16, u32, u64, i8, i16, i32, i64
+ret: #2#1
+arg: #2#1 value
+arg: #2 min_value
+arg: #2 max_value, above(min_value)
+end:
+
+function: clz
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: u8, u16, u32, i8, i16, i32
+ret: #2#1
+arg: #2#1 value
+summary: Number of leading 0 bits
+description:
+ Returns the number of leading 0-bits in a value.
+
+ For example, <code>clz((char)0x03)</code> returns 6.
+end:
+
+function: convert_#3#1
+version: 9
+attrib: const
+w: 2, 3, 4
+t: u8, u16, u32, i8, i16, i32, f32
+t: u8, u16, u32, i8, i16, i32, f32
+ret: #3#1
+arg: #2#1 v, compatible(#3)
+summary: Converts numerical vectors
+description:
+ Component wise conversion from a numerical type to another.
+
+ Conversions of floating point values to integer will truncate.
+
+ Conversions of numbers too large to fit the destination type yield undefined results.
+ For example, converting a float that contains 1.0e18 to a short is undefined.
+ Use @clamp() to avoid this.
+end:
+
+function: convert_#3#1
+version: 21
+attrib: const
+w: 2, 3, 4
+t: u64, i64, f64
+t: u64, i64, f64
+ret: #3#1
+arg: #2#1 v, compatible(#3)
+end:
+
+function: convert_#3#1
+version: 21
+attrib: const
+w: 2, 3, 4
+t: u64, i64, f64
+t: u8, u16, u32, i8, i16, i32, f32
+ret: #3#1
+arg: #2#1 v, compatible(#3)
+end:
+
+function: convert_#3#1
+version: 21
+attrib: const
+w: 2, 3, 4
+t: u8, u16, u32, i8, i16, i32, f32
+t: u64, i64, f64
+ret: #3#1
+arg: #2#1 v, compatible(#3)
+end:
+
+function: copysign
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 magnitude_value
+arg: #2#1 sign_value
+summary: Copies the sign of a number to another
+description:
+ Copies the sign from sign_value to magnitude_value.
+
+ The value returned is either magnitude_value or -magnitude_value.
+
+ For example, <code>copysign(4.0f, -2.7f)</code> returns -4.0f and <code>copysign(-4.0f, 2.7f)</code> returns 4.0f.
+end:
+
+function: cos
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Cosine
+description:
+ Returns the cosine of an angle measured in radians.
+
+ See also @native_cos().
+end:
+
+function: cosh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Hypebolic cosine
+description:
+ Returns the hypebolic cosine of v, where v is measured in radians.
+
+ See also @native_cosh().
+end:
+
+function: cospi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Cosine of a number multiplied by pi
+description:
+ Returns the cosine of <code>(v * pi)</code>, where <code>(v * pi)</code> is measured in radians.
+
+ To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
+
+ See also @native_cospi().
+end:
+
+function: cross
+version: 9
+attrib: const
+w: 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Cross product of two vectors
+description:
+ Computes the cross product of two vectors.
+test: vector
+end:
+
+function: degrees
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Converts radians into degrees
+description:
+ Converts from radians to degrees.
+end:
+
+function: distance
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Distance between two points
+description:
+ Compute the distance between two points.
+
+ See also @fast_distance(), @native_distance().
+test: vector
+end:
+
+function: dot
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Dot product of two vectors
+description:
+ Computes the dot product of two vectors.
+test: vector
+end:
+
+function: erf
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Mathematical error function
+description:
+ Returns the error function.
+end:
+
+function: erfc
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Mathematical complementary error function
+description:
+ Returns the complementary error function.
+end:
+
+function: exp
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: e raised to a number
+description:
+ Returns e raised to v, i.e. e ^ v.
+
+ See also @native_exp().
+end:
+
+function: exp10
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: 10 raised to a number
+description:
+ Returns 10 raised to v, i.e. 10.f ^ v.
+
+ See also @native_exp10().
+end:
+
+function: exp2
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: 2 raised to a number
+description:
+ Returns 2 raised to v, i.e. 2.f ^ v.
+
+ See also @native_exp2().
+end:
+
+function: expm1
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: e raised to a number minus one
+description:
+ Returns e raised to v minus 1, i.e. (e ^ v) - 1.
+
+ See also @native_expm1().
+end:
+
+function: fabs
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Absolute value of a float
+description:
+ Returns the absolute value of the float v.
+
+ For integers, use @abs().
+end:
+
+function: fast_distance
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Approximate distance between two points
+description:
+ Computes the approximate distance between two points.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
+
+ See also @distance(), @native_distance().
+test: vector
+end:
+
+function: fast_length
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 v
+summary: Approximate length of a vector
+description:
+ Computes the approximate length of a vector.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
+
+ See also @length(), @native_length().
+test: vector
+end:
+
+function: fast_normalize
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate normalized vector
+description:
+ Approximately normalizes a vector.
+
+ For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+
+ The precision is what would be expected from doing the computation using 16 bit floating point values.
+
+ See also @normalize(), @native_normalize().
+test: vector
+end:
+
+function: fdim
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Positive difference between two values
+description:
+ Returns the positive difference between two values.
+
+ If a &gt; b, returns (a - b) otherwise returns 0f.
+end:
+
+function: floor
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Smallest integer not greater than a value
+description:
+ Returns the smallest integer not greater than a value.
+
+ For example, <code>floor(1.2f)</code> returns 1.f, and <code>floor(-1.2f)</code> returns -2.f.
+
+ See also @ceil().
+end:
+
+function: fma
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 multiplicand1
+arg: #2#1 multiplicand2
+arg: #2#1 offset
+summary: Multiply and add
+description:
+ Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
+
+ This function is similar to @mad(). fma() retains full precision of the
+ multiplied result and rounds only after the addition. @mad() rounds after the
+ multiplication and the addition. This extra precision is not guaranteed in
+ rs_fp_relaxed mode.
+end:
+
+function: fmax
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Maximum of two floats
+description:
+ Returns the maximum of a and b, i.e. <code>(a &lt; b ? b : a)</code>.
+
+ The @max() function returns identical results but can be applied to more data types.
+end:
+
+function: fmax
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2 b
+end:
+
+function: fmin
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Minimum of two floats
+description:
+ Returns the minimum of a and b, i.e. <code>(a &gt; b ? b : a)</code>.
+
+ The @min() function returns identical results but can be applied to more data types.
+end:
+
+function: fmin
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2 b
+end:
+
+function: fmod
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator
+arg: #2#1 denominator
+summary: Modulo
+description:
+ Returns the remainder of (numerator / denominator), where the quotient is rounded towards zero.
+
+ The function @remainder() is similar but rounds toward the closest interger.
+ For example, <code>fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
+ while <code>@remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+end:
+
+function: fract
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, "Input value."
+arg: #2#1* floor, "If floor is not null, *floor will be set to the floor of v."
+summary: Positive fractional part
+description:
+ Returns the positive fractional part of v, i.e. <code>v - floor(v)</code>.
+
+ For example, <code>fract(1.3f, &val)</code> returns 0.3f and sets val to 1.f.
+ <code>fract(-1.3f, &val)</code> returns 0.7f and sets val to -2.f.
+end:
+
+function: fract
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+inline:
+ #2#1 unused;
+ return fract(v, &unused);
+end:
+
+function: frexp
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, "Input value."
+arg: int#1* exponent, "If exponent is not null, *exponent will be set to the exponent of v."
+summary: Binary mantissa and exponent
+description:
+ Returns the binary mantissa and exponent of v, i.e. <code>v == mantissa * 2 ^ exponent</code>.
+
+ The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+
+ See @ldexp() for the reverse operation. See also @logb() and @ilogb().
+end:
+
+function: half_recip
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Reciprocal computed to 16 bit precision
+description:
+ Returns the approximate reciprocal of a value.
+
+ The precision is that of a 16 bit floating point value.
+
+ See also @native_recip().
+end:
+
+function: half_rsqrt
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Reciprocal of a square root computed to 16 bit precision
+description:
+ Returns the approximate value of <code>(1.f / sqrt(value))</code>.
+
+ The precision is that of a 16 bit floating point value.
+
+ See also @rsqrt(), @native_rsqrt().
+end:
+
+function: half_sqrt
+version: 17
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Square root computed to 16 bit precision
+description:
+ Returns the approximate square root of a value.
+
+ The precision is that of a 16 bit floating point value.
+
+ See also @sqrt(), @native_sqrt().
+end:
+
+function: hypot
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Hypotenuse
+description:
+ Returns the hypotenuse, i.e. <code>sqrt(a * a + b * b)</code>.
+
+ See also @native_hypot().
+end:
+
+function: ilogb
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: int#1
+arg: float#1 v
+summary: Base two exponent
+description:
+ Returns the base two exponent of a value, where the mantissa is between
+ 1.f (inclusive) and 2.f (exclusive).
+
+ For example, <code>ilogb(8.5f)</code> returns 3.
+
+ Because of the difference in mantissa, this number is one less than
+ is returned by @frexp().
+
+ @logb() is similar but returns a float.
+test: custom
+end:
+
+function: ldexp
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+ret: float#1
+arg: float#1 mantissa, "The mantissa"
+arg: int#1 exponent, "The exponent, a single component or matching vector."
+summary: Creates a floating point from mantissa and exponent
+description:
+ Returns the floating point created from the mantissa and exponent,
+ i.e. (mantissa * 2 ^ exponent).
+
+ See @frexp() for the reverse operation.
+end:
+
+function: ldexp
+version: 9
+attrib: const
+w: 2, 3, 4
+ret: float#1
+arg: float#1 mantissa
+arg: int exponent
+end:
+
+function: length
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 v
+summary: Length of a vector
+description:
+ Computes the length of a vector.
+
+ See also @fast_length(), @native_length().
+test: vector
+end:
+
+function: lgamma
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Natural logarithm of the gamma function
+description:
+ Returns the natural logarithm of the absolute value of the gamma function,
+ i.e. <code>@log(@fabs(@tgamma(v)))</code>.
+
+ See also @tgamma().
+end:
+
+function: lgamma
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+arg: int#1* sign_of_gamma, "If sign_of_gamma is not null, *sign_of_gamma will be set to -1.f if the gamma of v is negative, otherwise to 1.f."
+test: custom
+#TODO Temporary until bionic & associated drivers are fixed
+end:
+
+function: log
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Natural logarithm
+description:
+ Returns the natural logarithm.
+
+ See also @native_log().
+end:
+
+function: log10
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Base 10 logarithm
+description:
+ Returns the base 10 logarithm.
+
+ See also @native_log10().
+end:
+
+function: log1p
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Natural logarithm of a value plus 1
+description:
+ Returns the natural logarithm of <code>(v + 1.f)</code>.
+
+ See also @native_log1p().
+end:
+
+function: log2
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Base 2 logarithm
+description:
+ Returns the base 2 logarithm.
+
+ See also @native_log2().
+end:
+
+function: logb
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Base two exponent
+description:
+ Returns the base two exponent of a value, where the mantissa is between
+ 1.f (inclusive) and 2.f (exclusive).
+
+ For example, <code>logb(8.5f)</code> returns 3.f.
+
+ Because of the difference in mantissa, this number is one less than
+ is returned by frexp().
+
+ @ilogb() is similar but returns an integer.
+end:
+
+function: mad
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 multiplicand1
+arg: #2#1 multiplicand2
+arg: #2#1 offset
+summary: Multiply and add
+description:
+ Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
+
+ This function is similar to @fma(). @fma() retains full precision of the
+ multiplied result and rounds only after the addition. mad() rounds after the
+ multiplication and the addition. In rs_fp_relaxed mode, mad() may not do the
+ rounding after multiplicaiton.
+end:
+
+function: max
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Maximum
+description:
+ Returns the maximum value of two arguments.
+end:
+
+function: max
+version: 9 20
+attrib: const
+w: 1
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ return (a > b ? a : b);
+end:
+
+function: max
+version: 9 20
+attrib: const
+w: 2
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x > b.x ? a.x : b.x);
+ tmp.y = (a.y > b.y ? a.y : b.y);
+ return tmp;
+end:
+
+function: max
+version: 9 20
+attrib: const
+w: 3
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x > b.x ? a.x : b.x);
+ tmp.y = (a.y > b.y ? a.y : b.y);
+ tmp.z = (a.z > b.z ? a.z : b.z);
+ return tmp;
+end:
+
+function: max
+version: 9 20
+attrib: const
+w: 4
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x > b.x ? a.x : b.x);
+ tmp.y = (a.y > b.y ? a.y : b.y);
+ tmp.z = (a.z > b.z ? a.z : b.z);
+ tmp.w = (a.w > b.w ? a.w : b.w);
+ return tmp;
+end:
+
+function: max
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: i8, i16, i32, i64, u8, u16, u32, u64
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+end:
+
+function: min
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Minimum
+description:
+ Returns the minimum value of two arguments.
+end:
+
+function: min
+version: 9 20
+attrib: const
+w: 1
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ return (a < b ? a : b);
+end:
+
+function: min
+version: 9 20
+attrib: const
+w: 2
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x < b.x ? a.x : b.x);
+ tmp.y = (a.y < b.y ? a.y : b.y);
+ return tmp;
+end:
+
+function: min
+version: 9 20
+attrib: const
+w: 3
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x < b.x ? a.x : b.x);
+ tmp.y = (a.y < b.y ? a.y : b.y);
+ tmp.z = (a.z < b.z ? a.z : b.z);
+ return tmp;
+end:
+
+function: min
+version: 9 20
+attrib: const
+w: 4
+t: i8, i16, i32, u8, u16, u32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+inline:
+ #2#1 tmp;
+ tmp.x = (a.x < b.x ? a.x : b.x);
+ tmp.y = (a.y < b.y ? a.y : b.y);
+ tmp.z = (a.z < b.z ? a.z : b.z);
+ tmp.w = (a.w < b.w ? a.w : b.w);
+ return tmp;
+end:
+
+function: min
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: i8, i16, i32, i64, u8, u16, u32, u64
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+end:
+
+function: mix
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 start
+arg: #2#1 stop
+arg: #2#1 fraction
+summary: Mixes two values
+description:
+ Returns start + ((stop - start) * fraction).
+
+ This can be useful for mixing two values. For example, to create a new color that is 40% color1 and 60% color2, use <code>mix(color1, color2, 0.6f)</code>.
+end:
+
+function: mix
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 start
+arg: #2#1 stop
+arg: #2 fraction
+end:
+
+function: modf
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1, "The floating point portion of the value."
+arg: #2#1 v, "Source value"
+arg: #2#1* integral_part, "*integral_part will be set to the integral portion of the number."
+summary: Integral and fractional components
+description:
+ Returns the integral and fractional components of a number.
+
+ Both components will have the same sign as x. For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
+end:
+
+function: nan
+version: 9
+attrib: const
+w: 1
+t: f32
+ret: #2#1
+arg: uint#1 v, "Not used."
+#TODO We're not using the argument. Once we do, add this documentation line:
+# The argument is embedded into the return value and can be used to distinguish various NaNs.
+summary: Not a Number
+description:
+ Returns a NaN value (Not a Number).
+end:
+
+function: native_acos
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse cosine
+description:
+ Returns the approximate inverse cosine, in radians.
+
+ This function yields undefined results from input values less than -1 or greater
+ than 1.
+
+ See also @acos().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_acosh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate inverse hyperbolic cosine
+description:
+ Returns the approximate inverse hyperbolic cosine, in radians.
+
+ See also @acosh().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_acospi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse cosine divided by pi
+description:
+ Returns the approximate inverse cosine in radians, divided by pi.
+
+ To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
+
+ This function yields undefined results from input values less than -1 or greater
+ than 1.
+
+ See also @acospi().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_asin
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse sine
+description:
+ Returns the approximate inverse sine, in radians.
+
+ This function yields undefined results from input values less than -1 or greater
+ than 1.
+
+ See also @asin().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_asinh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate inverse hyperbolic sine
+description:
+ Returns the approximate inverse hyperbolic sine, in radians.
+
+ See also @asinh().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_asinpi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse sine divided by pi
+description:
+ Returns the approximate inverse sine in radians, divided by pi.
+
+ To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
+
+ This function yields undefined results from input values less than -1 or greater
+ than 1.
+
+ See also @asinpi().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_atan
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse tangent
+description:
+ Returns the approximate inverse tangent, in radians.
+
+ See also @atan().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_atan2
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator, "The numerator"
+arg: #2#1 denominator, "The denominator. Can be 0."
+summary: Approximate inverse tangent of a ratio
+description:
+ Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians.
+
+ See also @atan2().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_atan2pi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator, "The numerator"
+arg: #2#1 denominator, "The denominator. Can be 0."
+summary: Approximate inverse tangent of a ratio, divided by pi
+description:
+ Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
+
+ See also @atan2pi().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_atanh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse hyperbolic tangent
+description:
+ Returns the approximate inverse hyperbolic tangent, in radians.
+
+ See also @atanh().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_atanpi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-1,1)
+summary: Approximate inverse tangent divided by pi
+description:
+ Returns the approximate inverse tangent in radians, divided by pi.
+
+ To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
+
+ See also @atanpi().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_cbrt
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate cube root
+description:
+ Returns the approximate cubic root.
+
+ See also @cbrt().
+end:
+
+function: native_cos
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate cosine
+description:
+ Returns the approximate cosine of an angle measured in radians.
+
+ See also @cos().
+end:
+
+function: native_cosh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate hypebolic cosine
+description:
+ Returns the approximate hypebolic cosine.
+
+ See also @cosh().
+end:
+
+function: native_cospi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate cosine of a number multiplied by pi
+description:
+ Returns the approximate cosine of (v * pi), where (v * pi) is measured in radians.
+
+ To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
+
+ See also @cospi().
+end:
+
+function: native_distance
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Approximate distance between two points
+description:
+ Computes the approximate distance between two points.
+
+ See also @distance(), @fast_distance().
+test: vector
+end:
+
+function: native_divide
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 left_vector
+arg: #2#1 right_vector
+summary: Approximate division
+description:
+ Computes the approximate division of two values.
+end:
+
+function: native_exp
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-86,86)
+summary: Approximate e raised to a number
+description:
+ Fast approximate exp.
+
+ It is valid for inputs from -86.f to 86.f. The precision is no worse than what would be expected from using 16 bit floating point values.
+
+ See also @exp().
+test: limited
+end:
+
+function: native_exp10
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-37,37)
+summary: Approximate 10 raised to a number
+description:
+ Fast approximate exp10.
+
+ It is valid for inputs from -37.f to 37.f. The precision is no worse than what would be expected from using 16 bit floating point values.
+
+ See also @exp10().
+test: limited
+end:
+
+function: native_exp2
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(-125,125)
+summary: Approximate 2 raised to a number
+description:
+ Fast approximate exp2.
+
+ It is valid for inputs from -125.f to 125.f. The precision is no worse than what would be expected from using 16 bit floating point values.
+
+ See also @exp2().
+test: limited
+end:
+
+function: native_expm1
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate e raised to a number minus one
+description:
+ Returns the approximate (e ^ v) - 1.
+
+ See also @expm1().
+end:
+
+function: native_hypot
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 a
+arg: #2#1 b
+summary: Approximate hypotenuse
+description:
+ Returns the approximate native_sqrt(a * a + b * b)
+
+ See also @hypot().
+end:
+
+function: native_length
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2
+arg: #2#1 v
+summary: Approximate length of a vector
+description:
+ Compute the approximate length of a vector.
+
+ See also @length(), @fast_length().
+test: vector
+end:
+
+function: native_log
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(10e-10,10e10)
+summary: Approximate natural logarithm
+description:
+ Fast approximate log.
+
+ It is not accurate for values very close to zero.
+
+ See also @log().
+test: limited
+end:
+
+function: native_log10
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(10e-10,10e10)
+summary: Approximate base 10 logarithm
+description:
+ Fast approximate log10.
+
+ It is not accurate for values very close to zero.
+
+ See also @log10().
+test: limited
+end:
+
+function: native_log1p
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate natural logarithm of a value plus 1
+description:
+ Returns the approximate natural logarithm of (v + 1.0f)
+
+ See also @log1p().
+end:
+
+function: native_log2
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v, range(10e-10,10e10)
+summary: Approximate base 2 logarithm
+description:
+ Fast approximate log2.
+
+ It is not accurate for values very close to zero.
+
+ See also @log2().
+test: limited
+end:
+
+function: native_normalize
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximately normalize a vector
+description:
+ Approximately normalizes a vector.
+
+ See also @normalize(), @fast_normalize().
+test: vector
+end:
+
+function: native_powr
+version: 18
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 base, range(0,256), "Must be between 0.f and 256.f. The function is not accurate for values very close to zero."
+arg: #2#1 exponent, range(-15,15), "Must be between -15.f and 15.f."
+summary: Approximate positive base raised to an exponent
+description:
+ Fast approximate (base ^ exponent).
+
+ See also @powr().
+test: limited
+end:
+
+function: native_recip
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate reciprocal
+description:
+ Returns the approximate approximate reciprocal of a value.
+
+ See also @half_recip().
+end:
+
+function: native_rootn
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+arg: int#1 n
+summary: Approximate nth root
+description:
+ Compute the approximate Nth root of a value.
+
+ See also @rootn().
+end:
+
+function: native_rsqrt
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate reciprocal of a square root
+description:
+ Returns approximate (1 / sqrt(v)).
+
+ See also @rsqrt(), @half_rsqrt().
+end:
+
+function: native_sin
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate sine
+description:
+ Returns the approximate sine of an angle measured in radians.
+
+ See also @sin().
+end:
+
+function: native_sincos
+version: 21
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1, "sine"
+arg: #2#1 v, "The incoming value in radians."
+arg: #2#1* cos, "*cos will be set to the cosine value."
+summary: Approximate sine and cosine
+description:
+ Returns the approximate sine and cosine of a value.
+
+ See also @sincos().
+# TODO Temporary
+test: limited(0.0005)
+end:
+
+function: native_sinh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate hyperbolic sine
+description:
+ Returns the approximate hyperbolic sine of a value specified in radians.
+
+ See also @sinh().
+end:
+
+function: native_sinpi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate sine of a number multiplied by pi
+description:
+ Returns the approximate sine of (v * pi), where (v * pi) is measured in radians.
+
+ To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
+
+ See also @sinpi().
+end:
+
+function: native_sqrt
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate square root
+description:
+ Returns the approximate sqrt(v).
+
+ See also @sqrt(), @half_sqrt().
+end:
+
+function: native_tan
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate tangent
+description:
+ Returns the approximate tangent of an angle measured in radians.
+end:
+
+function: native_tanh
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate hyperbolic tangent
+description:
+ Returns the approximate hyperbolic tangent of a value.
+
+ See also @tanh().
+end:
+
+function: native_tanpi
+version: 21
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Approximate tangent of a number multiplied by pi
+description:
+ Returns the approximate tangent of (v * pi), where (v * pi) is measured in radians.
+
+ To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
+
+ See also @tanpi().
+end:
+
+function: nextafter
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+arg: #2#1 target
+summary: Next floating point number
+description:
+ Returns the next representable floating point number from v towards target.
+
+ In rs_fp_relaxed mode, a denormalized input value may not yield the next
+ denormalized value, as support of denormalized values is optional in
+ relaxed mode.
+end:
+
+function: normalize
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Normalize a vector
+description:
+ Normalize a vector.
+
+ For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
+
+ See also @fast_normalize(), @native_normalize().
+test: vector
+end:
+
+function: pow
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 base
+arg: #2#1 exponent
+summary: Base raised to an exponent
+description:
+ Returns base raised to the power exponent, i.e. base ^ exponent.
+
+ @pown() and @powr() are similar. @pown() takes an integer exponent. @powr() assumes the base to be non-negative.
+end:
+
+function: pown
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 base
+arg: int#1 exponent
+summary: Base raised to an integer exponent
+description:
+ Returns base raised to the power exponent, i.e. base ^ exponent.
+
+ @pow() and @powr() are similar. The both take a float exponent. @powr() also assumes the base to be non-negative.
+end:
+
+function: powr
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 base, range(0,3000)
+arg: #2#1 exponent
+summary: Positive base raised to an exponent
+description:
+ Returns base raised to the power exponent, i.e. base ^ exponent. base must be &gt;= 0.
+
+ @pow() and @pown() are similar. They both make no assumptions about the base. @pow() takes a float exponent while @pown() take an integer.
+
+ See also @native_powr().
+end:
+
+function: radians
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Converts degrees into radians
+description:
+ Converts from degrees to radians.
+end:
+
+function: remainder
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 numerator
+arg: #2#1 denominator
+summary: Remainder of a division
+description:
+ Returns the remainder of (numerator / denominator), where the quotient is rounded towards the nearest integer.
+
+ The function @fmod() is similar but rounds toward the closest interger.
+ For example, <code>@fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
+ while <code>remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+end:
+
+function: remquo
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1, "The remainder, precise only for the low three bits."
+arg: #2#1 numerator, "The numerator."
+arg: #2#1 denominator, "The denominator."
+arg: int#1* quotient, "*quotient will be set to the integer quotient."
+summary: Remainder and quotient of a division
+description:
+ Returns the quotient and the remainder of (numerator / denominator).
+
+ Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+
+ This function is useful for implementing periodic functions. The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant. For example, an implementation of @sin(x) could call <code>remquo(x, PI / 2.f, &quadrant)</code> to reduce very large value of x to something within a limited range.
+
+ Example: <code>remquo(-23.5f, 8.f, &quot)</code> sets the lowest three bits of quot to 3 and the sign negative. It returns 0.5f.
+test: custom
+end:
+
+function: rint
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Round to even
+description:
+ Rounds to the nearest integral value.
+
+ rint() rounds half values to even. For example, <code>rint(0.5f)</code> returns 0.f and <code>rint(1.5f)</code> returns 2.f. Similarly, <code>rint(-0.5f)</code> returns -0.f and <code>rint(-1.5f)</code> returns -2.f.
+
+ @round() is similar but rounds away from zero. @trunc() truncates the decimal fraction.
+end:
+
+function: rootn
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+arg: int#1 n
+summary: Nth root
+description:
+ Compute the Nth root of a value.
+
+ See also @native_rootn().
+end:
+
+function: round
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Round away from zero
+description:
+ Round to the nearest integral value.
+
+ round() rounds half values away from zero. For example, <code>round(0.5f)</code> returns 1.f and <code>round(1.5f)</code> returns 2.f. Similarly, <code>round(-0.5f)</code> returns -1.f and <code>round(-1.5f)</code> returns -2.f.
+
+ @rint() is similar but rounds half values toward even. @trunc() truncates the decimal fraction.
+end:
+
+function: rsqrt
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Reciprocal of a square root
+description:
+ Returns (1 / sqrt(v)).
+
+ See also @half_rsqrt(), @native_rsqrt().
+end:
+
+function: sign
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Sign of a value
+description:
+ Returns the sign of a value.
+
+ if (v &lt; 0) return -1.f;
+ else if (v &gt; 0) return 1.f;
+ else return 0.f;
+end:
+
+function: sin
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Sine
+description:
+ Returns the sine of an angle measured in radians.
+
+ See also @native_sin().
+end:
+
+function: sincos
+version: 9
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1, "sine of v"
+arg: #2#1 v, "The incoming value in radians"
+arg: #2#1* cos, "*cos will be set to the cosine value."
+summary: Sine and cosine
+description:
+ Returns the sine and cosine of a value.
+
+ See also @native_sincos().
+end:
+
+function: sinh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Hyperbolic sine
+description:
+ Returns the hyperbolic sine of v, where v is measured in radians.
+
+ See also @native_sinh().
+end:
+
+function: sinpi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Sine of a number multiplied by pi
+description:
+ Returns the sine of (v * pi), where (v * pi) is measured in radians.
+
+ To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
+
+ See also @native_sinpi().
+end:
+
+function: sqrt
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Square root
+description:
+ Returns the square root of a value.
+
+ See also @half_sqrt(), @native_sqrt().
+end:
+
+function: step
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 edge
+arg: #2#1 v
+summary: 0 if less than a value, 0 otherwise
+description:
+ Returns 0.f if v &lt; edge, 1.f otherwise.
+
+ This can be useful to create conditional computations without using loops and branching instructions. For example, instead of computing <code>(a[i] &lt; b[i]) ? 0.f : @atan2(a[i], b[i])</code> for the corresponding elements of a vector, you could instead use <code>step(a, b) * @atan2(a, b)</code>.
+end:
+
+function: step
+version: 9
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 edge
+arg: #2 v
+end:
+
+function: step
+version: 21
+attrib: const
+w: 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2 edge
+arg: #2#1 v
+end:
+
+function: tan
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Tangent
+description:
+ Returns the tangent of an angle measured in radians.
+
+ See also @native_tan().
+end:
+
+function: tanh
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Hyperbolic tangent
+description:
+ Returns the hyperbolic tangent of a value.
+
+ See also @native_tanh().
+end:
+
+function: tanpi
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Tangent of a number multiplied by pi
+description:
+ Returns the tangent of (v * pi), where (v * pi) is measured in radians.
+
+ To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
+
+ See also @native_tanpi().
+end:
+
+function: tgamma
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Gamma function
+description:
+ Returns the gamma function of a value.
+
+ See also @lgamma().
+end:
+
+function: trunc
+version: 9
+attrib: const
+w: 1, 2, 3, 4
+t: f32
+ret: #2#1
+arg: #2#1 v
+summary: Truncates a floating point
+description:
+ Rounds to integral using truncation.
+
+ For example, <code>trunc(1.7f)</code> returns 1.f and <code>trunc(-1.7f)</code> returns -1.f.
+
+ See @rint() and @round() for other rounding options.
+end:
diff --git a/api/rs_object_info.spec b/api/rs_element.spec
index de700ac8..76abd96d 100644
--- a/api/rs_object_info.spec
+++ b/api/rs_element.spec
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2014 The Android Open Source Project
+# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -38,83 +38,6 @@ description:
interpret pixel data.
end:
-function: rsAllocationGetDimFaces
-ret: uint32_t, "Returns 1 if more than one face is present, 0 otherwise."
-arg: rs_allocation a
-summary: Presence of more than one face
-description:
- If the allocation is a cubemap, this function returns 1 if there's more than one
- face present. In all other cases, it returns 0.
-test: none
-end:
-
-function: rsAllocationGetDimLOD
-ret: uint32_t, "Returns 1 if more than one LOD is present, 0 otherwise."
-arg: rs_allocation a
-summary: Presence of levels of details
-description:
- Query an allocation for the presence of more than one Level Of Details. This is useful for mipmaps.
-test: none
-end:
-
-function: rsAllocationGetDimX
-ret: uint32_t, "The X dimension of the allocation."
-arg: rs_allocation a
-summary: Size of the X dimension
-description:
- Returns the size of the X dimension of the allocation.
-test: none
-end:
-
-function: rsAllocationGetDimY
-ret: uint32_t, "The Y dimension of the allocation."
-arg: rs_allocation a
-summary: Size of the Y dimension
-description:
- Returns the size of the Y dimension of the allocation.
- If the allocation has less than two dimensions, returns 0.
-test: none
-end:
-
-function: rsAllocationGetDimZ
-ret: uint32_t, "The Z dimension of the allocation."
-arg: rs_allocation a
-summary: Size of the Z dimension
-description:
- Returns the size of the Z dimension of the allocation.
- If the allocation has less than three dimensions, returns 0.
-test: none
-end:
-
-function: rsAllocationGetElement
-ret: rs_element, "element describing allocation layout"
-arg: rs_allocation a, "allocation to get data from"
-summary:
-description:
- Get the element object describing the allocation's layout
-test: none
-end:
-
-function: rsClearObject
-t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
-ret: void
-arg: #1* dst
-hidden:
-summary: For internal use.
-description:
-test: none
-end:
-
-function: rsIsObject
-t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
-ret: bool
-arg: #1 v
-hidden:
-summary: For internal use.
-description:
-test: none
-end:
-
function: rsElementGetBytesSize
version: 16
ret: uint32_t
@@ -243,78 +166,3 @@ description:
Returns the element's vector size
test: none
end:
-
-function: rsGetAllocation
-ret: rs_allocation
-arg: const void* p
-summary: Returns the Allocation for a given pointer
-description:
- Returns the Allocation for a given pointer. The pointer should point within
- a valid allocation. The results are undefined if the pointer is not from a
- valid allocation.
-
- This function is deprecated and will be removed from the SDK in a future
- release.
-test: none
-end:
-
-function: rsSamplerGetAnisotropy
-version: 16
-ret: float, "anisotropy"
-arg: rs_sampler s, "sampler to query"
-summary:
-description:
- Get sampler anisotropy
-test: none
-end:
-
-function: rsSamplerGetMagnification
-version: 16
-ret: rs_sampler_value, "magnification value"
-arg: rs_sampler s, "sampler to query"
-summary:
-description:
- Get sampler magnification value
-test: none
-end:
-
-function: rsSamplerGetMinification
-version: 16
-ret: rs_sampler_value, "minification value"
-arg: rs_sampler s, "sampler to query"
-summary:
-description:
- Get sampler minification value
-test: none
-end:
-
-function: rsSamplerGetWrapS
-version: 16
-ret: rs_sampler_value, "wrap S value"
-arg: rs_sampler s, "sampler to query"
-summary:
-description:
- Get sampler wrap S value
-test: none
-end:
-
-function: rsSamplerGetWrapT
-version: 16
-ret: rs_sampler_value, "wrap T value"
-arg: rs_sampler s, "sampler to query"
-summary:
-description:
- Get sampler wrap T value
-test: none
-end:
-
-function: rsSetObject
-t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
-ret: void
-arg: #1* dst
-arg: #1 src
-hidden:
-summary: For internal use.
-description:
-test: none
-end:
diff --git a/api/rs_for_each.spec b/api/rs_for_each.spec
deleted file mode 100644
index a16da5f3..00000000
--- a/api/rs_for_each.spec
+++ /dev/null
@@ -1,346 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: TODO Add documentation
-description:
- TODO Add documentation
-end:
-
-type: rs_for_each_strategy_t
-enum: rs_for_each_strategy
-value: RS_FOR_EACH_STRATEGY_SERIAL = 0
-value: RS_FOR_EACH_STRATEGY_DONT_CARE = 1
-value: RS_FOR_EACH_STRATEGY_DST_LINEAR = 2
-value: RS_FOR_EACH_STRATEGY_TILE_SMALL = 3
-value: RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4
-value: RS_FOR_EACH_STRATEGY_TILE_LARGE = 5
-summary: Launch order hint for rsForEach calls
-description:
- Launch order hint for rsForEach calls. This provides a hint to the system to
- determine in which order the root function of the target is called with each
- cell of the allocation.
-
- This is a hint and implementations may not obey the order.
-end:
-
-type: rs_kernel_context
-version: 23
-simple: const struct rs_kernel_context_t *
-summary: Opaque handle to RenderScript kernel invocation context
-description:
- TODO
-end:
-
-type: rs_script_call_t
-struct: rs_script_call
-field: rs_for_each_strategy_t strategy
-field: uint32_t xStart
-field: uint32_t xEnd
-field: uint32_t yStart
-field: uint32_t yEnd
-field: uint32_t zStart
-field: uint32_t zEnd
-field: uint32_t arrayStart
-field: uint32_t arrayEnd
-summary: Provides extra information to a rsForEach call
-description:
- Structure to provide extra information to a rsForEach call. Primarly used to
- restrict the call to a subset of cells in the allocation.
-end:
-
-function: rsForEach
-version: 9 13
-ret: void
-arg: rs_script script, "The target script to call"
-arg: rs_allocation input, "The allocation to source data from"
-arg: rs_allocation output, "the allocation to write date into"
-arg: const void* usrData, "The user defined params to pass to the root script. May be NULL."
-arg: const rs_script_call_t* sc, "Extra control infomation used to select a sub-region of the allocation to be processed or suggest a walking strategy. May be NULL."
-summary:
-description:
- Make a script to script call to launch work. One of the input or output is
- required to be a valid object. The input and output must be of the same
- dimensions.
-test: none
-end:
-
-function: rsForEach
-version: 9 13
-ret: void
-arg: rs_script script
-arg: rs_allocation input
-arg: rs_allocation output
-arg: const void* usrData
-test: none
-end:
-
-function: rsForEach
-version: 14 20
-ret: void
-arg: rs_script script
-arg: rs_allocation input
-arg: rs_allocation output
-arg: const void* usrData
-arg: size_t usrDataLen, "The size of the userData structure. This will be used to perform a shallow copy of the data if necessary."
-arg: const rs_script_call_t* sc
-test: none
-end:
-
-function: rsForEach
-version: 14 20
-ret: void
-arg: rs_script script
-arg: rs_allocation input
-arg: rs_allocation output
-arg: const void* usrData
-arg: size_t usrDataLen
-test: none
-end:
-
-function: rsForEach
-version: 14
-ret: void
-arg: rs_script script
-arg: rs_allocation input
-arg: rs_allocation output
-test: none
-end:
-
-function: rsGetArray0
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Index in the Array0 dimension for the specified context
-description:
- Returns the index in the Array0 dimension of the cell being processed,
- as specified by the supplied context.
-
- This context is created when a kernel is launched and updated at each
- iteration. It contains common characteristics of the allocations being
- iterated over and rarely used indexes, like the Array0 index.
-
- You can access the context by adding a rs_kernel_context argument to your
- kernel function. E.g.<br/>
- <code>short RS_KERNEL myKernel(short value, uint32_t x, rs_kernel_context context) {<br/>
- &nbsp;&nbsp;// The current index in the common x, y, z, w dimensions are accessed by<br/>
- &nbsp;&nbsp;// adding these variables as arguments. For the more rarely used indexes<br/>
- &nbsp;&nbsp;// to the other dimensions, extract them from the context:<br/>
- &nbsp;&nbsp;uint32_t index_a0 = rsGetArray0(context);<br/>
- &nbsp;&nbsp;//...<br/>
- }<br/></code>
-
- This function returns 0 if the Array0 dimension is not present.
-test: none
-end:
-
-function: rsGetArray1
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Index in the Array1 dimension for the specified context
-description:
- Returns the index in the Array1 dimension of the cell being processed,
- as specified by the supplied context. See @rsGetArray0() for an explanation
- of the context.
-
- Returns 0 if the Array1 dimension is not present.
-test: none
-end:
-
-function: rsGetArray2
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Index in the Array2 dimension for the specified context
-description:
- Returns the index in the Array2 dimension of the cell being processed,
- as specified by the supplied context. See @rsGetArray0() for an explanation
- of the context.
-
- Returns 0 if the Array2 dimension is not present.
-test: none
-end:
-
-function: rsGetArray3
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Index in the Array3 dimension for the specified context
-description:
- Returns the index in the Array3 dimension of the cell being processed,
- as specified by the supplied context. See @rsGetArray0() for an explanation
- of the context.
-
- Returns 0 if the Array3 dimension is not present.
-test: none
-end:
-
-function: rsGetDimArray0
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Array0 dimension for the specified context
-description:
- Returns the size of the Array0 dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Array0 dimension is not present.
-#TODO Add an hyperlink to something that explains Array0/1/2/3
-# for the relevant functions.
-test: none
-end:
-
-function: rsGetDimArray1
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Array1 dimension for the specified context
-description:
- Returns the size of the Array1 dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Array1 dimension is not present.
-test: none
-end:
-
-function: rsGetDimArray2
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Array2 dimension for the specified context
-description:
- Returns the size of the Array2 dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Array2 dimension is not present.
-test: none
-end:
-
-function: rsGetDimArray3
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Array3 dimension for the specified context
-description:
- Returns the size of the Array3 dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Array3 dimension is not present.
-test: none
-end:
-
-function: rsGetDimHasFaces
-version: 23
-ret: bool, "Returns true if more than one face is present, false otherwise."
-arg: rs_kernel_context ctxt
-summary: Presence of more than one face for the specified context
-description:
- If the context refers to a cubemap, this function returns true if there's
- more than one face present. In all other cases, it returns false.
- See @rsGetDimX() for an explanation of the context.
-
- @rsAllocationGetDimFaces() is similar but returns 0 or 1 instead of a bool.
-test: none
-end:
-
-function: rsGetDimLod
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Number of levels of detail for the specified context
-description:
- Returns the number of levels of detail for the specified context.
- This is useful for mipmaps. See @rsGetDimX() for an explanation of the context.
- Returns 0 if Level of Detail is not used.
-
- @rsAllocationGetDimLOD() is similar but returns 0 or 1 instead the actual
- number of levels.
-test: none
-end:
-
-function: rsGetDimX
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the X dimension for the specified context
-description:
- Returns the size of the X dimension for the specified context.
-
- This context is created when a kernel is launched. It contains common
- characteristics of the allocations being iterated over by the kernel in
- a very efficient structure. It also contains rarely used indexes.
-
- You can access it by adding a rs_kernel_context argument to your kernel
- function. E.g.<br/>
- <code>int4 RS_KERNEL myKernel(int4 value, rs_kernel_context context) {<br/>
- &nbsp;&nbsp;uint32_t size = rsGetDimX(context); //...<br/></code>
-test: none
-end:
-
-function: rsGetDimY
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Y dimension for the specified context
-description:
- Returns the size of the X dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Y dimension is not present.
-test: none
-end:
-
-function: rsGetDimZ
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Size of the Z dimension for the specified context
-description:
- Returns the size of the Z dimension for the specified context.
- See @rsGetDimX() for an explanation of the context.
-
- Returns 0 if the Z dimension is not present.
-test: none
-end:
-
-function: rsGetFace
-version: 23
-ret: rs_allocation_cubemap_face
-arg: rs_kernel_context ctxt
-summary: Coordinate of the Face for the specified context
-description:
- Returns the face on which the cell being processed is found, as specified
- by the supplied context. See @rsGetArray0() for an explanation of the context.
-
- Returns RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X if the face dimension is not
- present.
-test: none
-end:
-
-function: rsGetLod
-version: 23
-ret: uint32_t
-arg: rs_kernel_context ctxt
-summary: Index in the Levels of Detail dimension for the specified context.
-description:
- Returns the index in the Levels of Detail dimension of the cell being
- processed, as specified by the supplied context. See @rsGetArray0() for
- an explanation of the context.
-
- Returns 0 if the Levels of Detail dimension is not present.
-test: none
-end:
diff --git a/api/rs_graphics.spec b/api/rs_graphics.spec
index f90a4f45..37d421fd 100644
--- a/api/rs_graphics.spec
+++ b/api/rs_graphics.spec
@@ -17,178 +17,15 @@
header:
summary: RenderScript graphics API
description:
- NOTE: RenderScript Graphics has been deprecated. Do not use.
-
A set of graphics functions used by RenderScript.
include:
#ifdef __LP64__
// TODO We need to fix some of the builds before enabling this error:
// #error "RenderScript graphics is deprecated and not supported in 64bit mode."
+ #else
+ #include "rs_mesh.rsh"
+ #include "rs_program.rsh"
#endif
-
- // TODO we seem to assume order for the other headers too.
- #include "rs_object_types.rsh"
-end:
-
-type: rs_blend_src_func
-version: 16
-size: 32
-enum:
-value: RS_BLEND_SRC_ZERO = 0
-value: RS_BLEND_SRC_ONE = 1
-value: RS_BLEND_SRC_DST_COLOR = 2
-value: RS_BLEND_SRC_ONE_MINUS_DST_COLOR = 3
-value: RS_BLEND_SRC_SRC_ALPHA = 4
-value: RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA = 5
-value: RS_BLEND_SRC_DST_ALPHA = 6
-value: RS_BLEND_SRC_ONE_MINUS_DST_ALPHA = 7
-value: RS_BLEND_SRC_SRC_ALPHA_SATURATE = 8
-value: RS_BLEND_SRC_INVALID = 100
-summary: Blend source function
-description:
-end:
-
-type: rs_blend_dst_func
-version: 16
-size: 32
-enum:
-value: RS_BLEND_DST_ZERO = 0
-value: RS_BLEND_DST_ONE = 1
-value: RS_BLEND_DST_SRC_COLOR = 2
-value: RS_BLEND_DST_ONE_MINUS_SRC_COLOR = 3
-value: RS_BLEND_DST_SRC_ALPHA = 4
-value: RS_BLEND_DST_ONE_MINUS_SRC_ALPHA = 5
-value: RS_BLEND_DST_DST_ALPHA = 6
-value: RS_BLEND_DST_ONE_MINUS_DST_ALPHA = 7
-value: RS_BLEND_DST_INVALID = 100
-summary: Blend destination function
-description:
-end:
-
-type: rs_cull_mode
-version: 16
-size: 32
-enum:
-value: RS_CULL_BACK = 0
-value: RS_CULL_FRONT = 1
-value: RS_CULL_NONE = 2
-value: RS_CULL_INVALID = 100
-summary: Culling mode
-description:
-end:
-
-type: rs_depth_func
-version: 16
-size: 32
-enum:
-value: RS_DEPTH_FUNC_ALWAYS = 0, "Always drawn"
-value: RS_DEPTH_FUNC_LESS = 1, "Drawn if the incoming depth value is less than that in the depth buffer"
-value: RS_DEPTH_FUNC_LEQUAL = 2, "Drawn if the incoming depth value is less or equal to that in the depth buffer"
-value: RS_DEPTH_FUNC_GREATER = 3, "Drawn if the incoming depth value is greater than that in the depth buffer"
-value: RS_DEPTH_FUNC_GEQUAL = 4, "Drawn if the incoming depth value is greater or equal to that in the depth buffer"
-value: RS_DEPTH_FUNC_EQUAL = 5, "Drawn if the incoming depth value is equal to that in the depth buffer"
-value: RS_DEPTH_FUNC_NOTEQUAL = 6, "Drawn if the incoming depth value is not equal to that in the depth buffer"
-value: RS_DEPTH_FUNC_INVALID = 100, "Invalid depth function"
-summary: Depth function
-description:
- Specifies conditional drawing depending on the comparison of the incoming
- depth to that found in the depth buffer.
-end:
-
-type: rs_primitive
-version: 16
-size: 32
-enum:
-value: RS_PRIMITIVE_POINT = 0, "Vertex data will be rendered as a series of points"
-value: RS_PRIMITIVE_LINE = 1, "Vertex pairs will be rendered as lines"
-value: RS_PRIMITIVE_LINE_STRIP = 2, "Vertex data will be rendered as a connected line strip"
-value: RS_PRIMITIVE_TRIANGLE = 3, "Vertices will be rendered as individual triangles"
-value: RS_PRIMITIVE_TRIANGLE_STRIP = 4, "Vertices will be rendered as a connected triangle strip defined by the first three vertices with each additional triangle defined by a new vertex"
-value: RS_PRIMITIVE_TRIANGLE_FAN = 5, "Vertices will be rendered as a sequence of triangles that all share first vertex as the origin"
-value: RS_PRIMITIVE_INVALID = 100, "Invalid primitive"
-summary: How to intepret mesh vertex data
-description:
- Describes the way mesh vertex data is interpreted when rendering
-end:
-
-type: rs_font
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a Font
-description:
- Opaque handle to a RenderScript font object.
- See: android.renderscript.Font
-end:
-
-
-type: rs_mesh
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a Mesh
-description:
- Opaque handle to a RenderScript mesh object.
- See: android.renderscript.Mesh
-end:
-
-type: rs_program_fragment
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a ProgramFragment
-description:
- Opaque handle to a RenderScript ProgramFragment object.
- See: android.renderscript.ProgramFragment
-end:
-
-type: rs_program_vertex
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a ProgramVertex
-description:
- Opaque handle to a RenderScript ProgramVertex object.
- See: android.renderscript.ProgramVertex
-end:
-
-type: rs_program_raster
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a ProgramRaster
-description:
- Opaque handle to a RenderScript ProgramRaster object.
- See: android.renderscript.ProgramRaster
-end:
-
-type: rs_program_store
-size: 32
-simple: _RS_HANDLE
-summary: Handle to a ProgramStore
-description:
- Opaque handle to a RenderScript ProgramStore object.
- See: android.renderscript.ProgramStore
-end:
-
-function: rsClearObject
-size: 32
-t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
-ret: void
-arg: #1* dst
-test: none
-end:
-
-function: rsIsObject
-size: 32
-t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
-ret: bool
-arg: #1 v
-test: none
-end:
-
-function: rsSetObject
-size: 32
-t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
-ret: void
-arg: #1* dst
-arg: #1 src
-test: none
end:
function: rsgAllocationSyncAll
@@ -634,68 +471,6 @@ inline:
test: none
end:
-function: rsgMeshGetIndexAllocation
-version: 16
-size: 32
-ret: rs_allocation, "allocation containing index data"
-arg: rs_mesh m, "mesh to get data from"
-arg: uint32_t index, "index of the index allocation"
-summary:
-description:
- Returns an allocation containing index data or a null
- allocation if only the primitive is specified
-test: none
-end:
-
-function: rsgMeshGetPrimitive
-version: 16
-size: 32
-ret: rs_primitive, "primitive describing how the mesh is rendered"
-arg: rs_mesh m, "mesh to get data from"
-arg: uint32_t index, "index of the primitive"
-summary:
-description:
- Returns the primitive describing how a part of the mesh is
- rendered
-test: none
-end:
-
-function: rsgMeshGetPrimitiveCount
-version: 16
-size: 32
-ret: uint32_t, "number of primitive groups in the mesh. This would include simple primitives as well as allocations containing index data"
-arg: rs_mesh m, "mesh to get data from"
-summary:
-description:
- Meshes could have multiple index sets, this function returns
- the number.
-test: none
-end:
-
-function: rsgMeshGetVertexAllocation
-version: 16
-size: 32
-ret: rs_allocation, "allocation containing vertex data"
-arg: rs_mesh m, "mesh to get data from"
-arg: uint32_t index, "index of the vertex allocation"
-summary:
-description:
- Returns an allocation that is part of the mesh and contains
- vertex data, e.g. positions, normals, texcoords
-test: none
-end:
-
-function: rsgMeshGetVertexAllocationCount
-version: 16
-size: 32
-ret: uint32_t, "number of allocations in the mesh that contain vertex data"
-arg: rs_mesh m, "mesh to get data from"
-summary:
-description:
- Returns the number of allocations in the mesh that contain
- vertex data
-test: none
-end:
function: rsgProgramFragmentConstantColor
size: 32
@@ -759,123 +534,4 @@ description:
test: none
end:
-function: rsgProgramRasterGetCullMode
-version: 16
-size: 32
-ret: rs_cull_mode
-arg: rs_program_raster pr, "program raster to query"
-summary:
-description:
- Get program raster cull mode
-test: none
-end:
-
-function: rsgProgramRasterIsPointSpriteEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_raster pr, "program raster to query"
-summary:
-description:
- Get program raster point sprite state
-test: none
-end:
-
-function: rsgProgramStoreGetBlendDstFunc
-version: 16
-size: 32
-ret: rs_blend_dst_func
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store blend destination function
-test: none
-end:
-
-function: rsgProgramStoreGetBlendSrcFunc
-version: 16
-size: 32
-ret: rs_blend_src_func
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store blend source function
-test: none
-end:
-
-function: rsgProgramStoreGetDepthFunc
-version: 16
-size: 32
-ret: rs_depth_func
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store depth function
-test: none
-end:
-
-function: rsgProgramStoreIsColorMaskAlphaEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store alpha component color mask
-test: none
-end:
-
-function: rsgProgramStoreIsColorMaskBlueEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store blur component color mask
-test: none
-end:
-
-function: rsgProgramStoreIsColorMaskGreenEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store green component color mask
-test: none
-end:
-
-function: rsgProgramStoreIsColorMaskRedEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store red component color mask
-test: none
-end:
-
-function: rsgProgramStoreIsDepthMaskEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store depth mask
-test: none
-end:
-
-function: rsgProgramStoreIsDitherEnabled
-version: 16
-size: 32
-ret: bool
-arg: rs_program_store ps, "program store to query"
-summary:
-description:
- Get program store dither state
-test: none
-end:
+#endif //__LP64__
diff --git a/api/rs_io.spec b/api/rs_io.spec
deleted file mode 100644
index 05722b7f..00000000
--- a/api/rs_io.spec
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: Input/output functions
-description:
- TODO Add documentation
-end:
-
-function: rsAllocationIoReceive
-version: 16
-ret: void
-arg: rs_allocation a, "allocation to work on"
-summary: Receive new content from the queue
-description:
- Receive a new set of contents from the queue.
-test: none
-end:
-
-function: rsAllocationIoSend
-version: 16
-ret: void
-arg: rs_allocation a, "allocation to work on"
-summary: Send new content to the queue
-description:
- Send the contents of the Allocation to the queue.
-test: none
-end:
-
-function: rsSendToClient
-ret: bool
-arg: int cmdID
-summary:
-description:
- Send a message back to the client. Will not block and returns true
- if the message was sendable and false if the fifo was full.
- A message ID is required. Data payload is optional.
-test: none
-end:
-
-function: rsSendToClient
-ret: bool
-arg: int cmdID
-arg: const void* data
-arg: uint len
-test: none
-end:
-
-function: rsSendToClientBlocking
-ret: void
-arg: int cmdID
-summary:
-description:
- Send a message back to the client, blocking until the message is queued.
- A message ID is required. Data payload is optional.
-test: none
-end:
-
-function: rsSendToClientBlocking
-ret: void
-arg: int cmdID
-arg: const void* data
-arg: uint len
-test: none
-end:
diff --git a/api/rs_math.spec b/api/rs_math.spec
index 01bc5632..af84461a 100644
--- a/api/rs_math.spec
+++ b/api/rs_math.spec
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2014 The Android Open Source Project
+# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,2171 +15,176 @@
#
header:
-summary: Mathematical functions
+summary: TODO Add documentation
description:
- Most mathematical functions can be applied to scalars and vectors.
- When applied to vectors, a vector of the function applied to each entry
- of the input is returned.
-
- For example:<br/>
- <code>
- float3 a, b;<br/>
- // The following call sets<br/>
- // a.x to sin(b.x),<br/>
- // a.y to sin(b.y), and<br/>
- // a.z to sin(b.z).<br/>
- a = sin(b);<br/>
- </code>
-
-# TODO Adjust documentation
- A few functions like @distance() and @length() interpret instead the input
- as a single vector in n-dimensional space.
-
- The precision of the mathematical operations is affected by the pragmas
-# TODO Create an anchor for the section of http://developer.android.com/guide/topics/renderscript/compute.html that details rs_fp_* and link them here.
- rs_fp_relaxed and rs_fp_full.
-
- Different precision/speed tradeoffs can be achieved by using three variants
- of common math functions. Functions with a name starting with<ul>
- <li>native_ may have custom hardware implementations with weaker precision,</li>
- <li>half_ may perform internal computations using 16 bit floats, and</li>
- <li>fast_ are n-dimensional space computations that may use 16 bit floats.
- </ul>
-end:
-
-constant: M_1_PI
-value: 0.318309886183790671537767526745028724f
-summary: 1 / pi, as a 32 bit float
-description:
- The inverse of pi, as a 32 bit float.
-end:
-
-constant: M_2_PI
-value: 0.636619772367581343075535053490057448f
-summary: 2 / pi, as a 32 bit float
-description:
- 2 divided by pi, as a 32 bit float.
-end:
-
-constant: M_2_PIl
-value: 0.636619772367581343075535053490057448f
-hidden:
-summary: Deprecated. Use M_2_PI instead.
-description:
-end:
-
-constant: M_2_SQRTPI
-value: 1.128379167095512573896158903121545172f
-summary: 2 / sqrt(pi), as a 32 bit float
-description:
- 2 divided by the square root of pi, as a 32 bit float.
-end:
-
-constant: M_E
-value: 2.718281828459045235360287471352662498f
-summary: e, as a 32 bit float
-description:
- The number e, the base of the natural logarithm, as a 32 bit float.
-end:
-
-constant: M_LN10
-value: 2.302585092994045684017991454684364208f
-summary: log_e(10), as a 32 bit float
-description:
- The natural logarithm of 10, as a 32 bit float.
-end:
-
-constant: M_LN2
-value: 0.693147180559945309417232121458176568f
-summary: log_e(2), as a 32 bit float
-description:
- The natural logarithm of 2, as a 32 bit float.
-end:
-
-constant: M_LOG10E
-value: 0.434294481903251827651128918916605082f
-summary: log_10(e), as a 32 bit float
-description:
- The logarithm base 10 of e, as a 32 bit float.
+ TODO Add documentation
end:
-constant: M_LOG2E
-value: 1.442695040888963407359924681001892137f
-summary: log_2(e), as a 32 bit float
-description:
- The logarithm base 2 of e, as a 32 bit float.
-end:
-
-constant: M_PI
-value: 3.141592653589793238462643383279502884f
-summary: pi, as a 32 bit float
-description:
- The constant pi, as a 32 bit float.
-end:
-
-constant: M_PI_2
-value: 1.570796326794896619231321691639751442f
-summary: pi / 2, as a 32 bit float
-description:
- Pi divided by 2, as a 32 bit float.
-end:
-
-constant: M_PI_4
-value: 0.785398163397448309615660845819875721f
-summary: pi / 4, as a 32 bit float
-description:
- Pi divided by 4, as a 32 bit float.
-end:
-
-constant: M_SQRT1_2
-value: 0.707106781186547524400844362104849039f
-summary: 1 / sqrt(2), as a 32 bit float
-description:
- The inverse of the square root of 2, as a 32 bit float.
-end:
-
-constant: M_SQRT2
-value: 1.414213562373095048801688724209698079f
-summary: sqrt(2), as a 32 bit float
-description:
- The square root of 2, as a 32 bit float.
-end:
-
-function: abs
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32
-ret: u#2#1
-arg: #2#1 v
-summary: Absolute value of an integer
-description:
- Returns the absolute value of an integer.
-
- For floats, use @fabs().
-end:
-
-function: acos
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse cosine
-description:
- Returns the inverse cosine, in radians.
-
- See also @native_acos().
-end:
-
-function: acosh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Inverse hyperbolic cosine
-description:
- Returns the inverse hyperbolic cosine, in radians.
-
- See also @native_acosh().
-end:
-
-function: acospi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse cosine divided by pi
-description:
- Returns the inverse cosine in radians, divided by pi.
-
- To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
-
- See also @native_acospi().
-end:
-
-function: asin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse sine
-description:
- Returns the inverse sine, in radians.
-
- See also @native_asin().
-end:
-
-function: asinh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Inverse hyperbolic sine
-description:
- Returns the inverse hyperbolic sine, in radians.
-
- See also @native_asinh().
-end:
-
-function: asinpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse sine divided by pi
-description:
- Returns the inverse sine in radians, divided by pi.
-
- To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
-
- See also @native_asinpi().
-end:
-
-function: atan
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse tangent
-description:
- Returns the inverse tangent, in radians.
-
- See also @native_atan().
-end:
-
-function: atan2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Inverse tangent of a ratio
-description:
- Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians.
-
- See also @native_atan2().
-end:
-
-function: atan2pi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Inverse tangent of a ratio, divided by pi
-description:
- Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
-
- See also @native_atan2pi().
-end:
-
-function: atanh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse hyperbolic tangent
-description:
- Returns the inverse hyperbolic tangent, in radians.
-
- See also @native_atanh().
-end:
-
-function: atanpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse tangent divided by pi
-description:
- Returns the inverse tangent in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
-
- See also @native_atanpi().
-end:
-
-function: cbrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cube root
-description:
- Returns the cube root.
-
- See also @native_cbrt().
-end:
-
-function: ceil
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Smallest integer not less than a value
-description:
- Returns the smallest integer not less than a value.
-
- For example, <code>ceil(1.2f)</code> returns 2.f, and <code>ceil(-1.2f)</code> returns -1.f.
-
- See also @floor().
-end:
-
-function: clamp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 value, "Value to be clamped."
-arg: #2#1 min_value, "Lower bound, a scalar or matching vector."
-arg: #2#1 max_value, above(min_value), "High bound, must match the type of low."
+function: rsClamp
+# TODO Why always_inline?
+attrib: const, always_inline
+t: i8, i16, i32, u8, u16, u32
+ret: #1
+arg: #1 amount, "The value to clamp"
+arg: #1 low, "Lower bound"
+arg: #1 high, "Upper bound"
summary: Restrain a value to a range
description:
- Clamps a value to a specified high and low bound. clamp() returns min_value
- if value &lt; min_value, max_value if value &gt; max_value, otherwise value.
-
- There are two variants of clamp: one where the min and max are scalars applied
- to all entries of the value, the other where the min and max are also vectors.
-
- If min_value is greater than max_value, the results are undefined.
-end:
-
-function: clamp
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 value
-arg: #2 min_value
-arg: #2 max_value, above(min_value)
-end:
-
-function: clamp
-version: 19
-attrib: const
-w: 1, 2, 3, 4
-t: u8, u16, u32, u64, i8, i16, i32, i64
-ret: #2#1
-arg: #2#1 value
-arg: #2#1 min_value
-arg: #2#1 max_value, above(min_value)
-end:
-
-function: clamp
-version: 19
-attrib: const
-w: 2, 3, 4
-t: u8, u16, u32, u64, i8, i16, i32, i64
-ret: #2#1
-arg: #2#1 value
-arg: #2 min_value
-arg: #2 max_value, above(min_value)
-end:
-
-function: clz
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: u8, u16, u32, i8, i16, i32
-ret: #2#1
-arg: #2#1 value
-summary: Number of leading 0 bits
-description:
- Returns the number of leading 0-bits in a value.
-
- For example, <code>clz((char)0x03)</code> returns 6.
-end:
-
-function: copysign
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 magnitude_value
-arg: #2#1 sign_value
-summary: Copies the sign of a number to another
-description:
- Copies the sign from sign_value to magnitude_value.
-
- The value returned is either magnitude_value or -magnitude_value.
-
- For example, <code>copysign(4.0f, -2.7f)</code> returns -4.0f and <code>copysign(-4.0f, 2.7f)</code> returns 4.0f.
-end:
-
-function: cos
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cosine
-description:
- Returns the cosine of an angle measured in radians.
-
- See also @native_cos().
-end:
-
-function: cosh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hypebolic cosine
-description:
- Returns the hypebolic cosine of v, where v is measured in radians.
-
- See also @native_cosh().
-end:
-
-function: cospi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cosine of a number multiplied by pi
-description:
- Returns the cosine of <code>(v * pi)</code>, where <code>(v * pi)</code> is measured in radians.
-
- To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
-
- See also @native_cospi().
-end:
-
-function: degrees
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Converts radians into degrees
-description:
- Converts from radians to degrees.
-end:
-
-function: erf
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Mathematical error function
-description:
- Returns the error function.
-end:
-
-function: erfc
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Mathematical complementary error function
-description:
- Returns the complementary error function.
-end:
-
-function: exp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: e raised to a number
-description:
- Returns e raised to v, i.e. e ^ v.
-
- See also @native_exp().
-end:
-
-function: exp10
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: 10 raised to a number
-description:
- Returns 10 raised to v, i.e. 10.f ^ v.
-
- See also @native_exp10().
-end:
-
-function: exp2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: 2 raised to a number
-description:
- Returns 2 raised to v, i.e. 2.f ^ v.
-
- See also @native_exp2().
-end:
-
-function: expm1
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: e raised to a number minus one
-description:
- Returns e raised to v minus 1, i.e. (e ^ v) - 1.
-
- See also @native_expm1().
-end:
-
-function: fabs
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Absolute value of a float
-description:
- Returns the absolute value of the float v.
-
- For integers, use @abs().
-end:
-
-function: fdim
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Positive difference between two values
-description:
- Returns the positive difference between two values.
-
- If a &gt; b, returns (a - b) otherwise returns 0f.
-end:
-
-function: floor
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Smallest integer not greater than a value
-description:
- Returns the smallest integer not greater than a value.
-
- For example, <code>floor(1.2f)</code> returns 1.f, and <code>floor(-1.2f)</code> returns -2.f.
-
- See also @ceil().
-end:
-
-function: fma
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 multiplicand1
-arg: #2#1 multiplicand2
-arg: #2#1 offset
-summary: Multiply and add
-description:
- Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
-
- This function is similar to @mad(). fma() retains full precision of the
- multiplied result and rounds only after the addition. @mad() rounds after the
- multiplication and the addition. This extra precision is not guaranteed in
- rs_fp_relaxed mode.
-end:
-
-function: fmax
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Maximum of two floats
-description:
- Returns the maximum of a and b, i.e. <code>(a &lt; b ? b : a)</code>.
-
- The @max() function returns identical results but can be applied to more data types.
-end:
-
-function: fmax
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2 b
-end:
-
-function: fmin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Minimum of two floats
-description:
- Returns the minimum of a and b, i.e. <code>(a &gt; b ? b : a)</code>.
-
- The @min() function returns identical results but can be applied to more data types.
-end:
-
-function: fmin
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2 b
-end:
-
-function: fmod
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator
-arg: #2#1 denominator
-summary: Modulo
-description:
- Returns the remainder of (numerator / denominator), where the quotient is rounded towards zero.
+ Clamp a value between low and high.
- The function @remainder() is similar but rounds toward the closest interger.
- For example, <code>fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
- while <code>@remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+ Deprecated. Use @clamp() instead.
+test: none
end:
-function: fract
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, "Input value."
-arg: #2#1* floor, "If floor is not null, *floor will be set to the floor of v."
-summary: Positive fractional part
+function: rsExtractFrustumPlanes
+# TODO Why always_inline?
+attrib: always_inline
+ret: void
+arg: const rs_matrix4x4* viewProj, "matrix to extract planes from"
+arg: float4* left, "left plane"
+arg: float4* right, "right plane"
+arg: float4* top, "top plane"
+arg: float4* bottom, "bottom plane"
+arg: float4* near, "near plane"
+arg: float4* far, "far plane"
+summary:
description:
- Returns the positive fractional part of v, i.e. <code>v - floor(v)</code>.
-
- For example, <code>fract(1.3f, &val)</code> returns 0.3f and sets val to 1.f.
- <code>fract(-1.3f, &val)</code> returns 0.7f and sets val to -2.f.
-end:
-
-function: fract
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
+ Computes 6 frustum planes from the view projection matrix
inline:
- #2#1 unused;
- return fract(v, &unused);
-end:
-
-function: frexp
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, "Input value."
-arg: int#1* exponent, "If exponent is not null, *exponent will be set to the exponent of v."
-summary: Binary mantissa and exponent
-description:
- Returns the binary mantissa and exponent of v, i.e. <code>v == mantissa * 2 ^ exponent</code>.
-
- The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
-
- See @ldexp() for the reverse operation. See also @logb() and @ilogb().
-end:
-
-function: half_recip
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal computed to 16 bit precision
-description:
- Returns the approximate reciprocal of a value.
-
- The precision is that of a 16 bit floating point value.
-
- See also @native_recip().
-end:
-
-function: half_rsqrt
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal of a square root computed to 16 bit precision
-description:
- Returns the approximate value of <code>(1.f / sqrt(value))</code>.
-
- The precision is that of a 16 bit floating point value.
-
- See also @rsqrt(), @native_rsqrt().
-end:
-
-function: half_sqrt
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Square root computed to 16 bit precision
-description:
- Returns the approximate square root of a value.
-
- The precision is that of a 16 bit floating point value.
-
- See also @sqrt(), @native_sqrt().
-end:
-
-function: hypot
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Hypotenuse
-description:
- Returns the hypotenuse, i.e. <code>sqrt(a * a + b * b)</code>.
-
- See also @native_hypot().
-end:
-
-function: ilogb
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: int#1
-arg: float#1 v
-summary: Base two exponent
-description:
- Returns the base two exponent of a value, where the mantissa is between
- 1.f (inclusive) and 2.f (exclusive).
-
- For example, <code>ilogb(8.5f)</code> returns 3.
-
- Because of the difference in mantissa, this number is one less than
- is returned by @frexp().
-
- @logb() is similar but returns a float.
-test: custom
-end:
-
-function: ldexp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-ret: float#1
-arg: float#1 mantissa, "The mantissa"
-arg: int#1 exponent, "The exponent, a single component or matching vector."
-summary: Creates a floating point from mantissa and exponent
-description:
- Returns the floating point created from the mantissa and exponent,
- i.e. (mantissa * 2 ^ exponent).
-
- See @frexp() for the reverse operation.
-end:
-
-function: ldexp
-version: 9
-attrib: const
-w: 2, 3, 4
-ret: float#1
-arg: float#1 mantissa
-arg: int exponent
-end:
-
-function: lgamma
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm of the gamma function
-description:
- Returns the natural logarithm of the absolute value of the gamma function,
- i.e. <code>@log(@fabs(@tgamma(v)))</code>.
-
- See also @tgamma().
-end:
-
-function: lgamma
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1* sign_of_gamma, "If sign_of_gamma is not null, *sign_of_gamma will be set to -1.f if the gamma of v is negative, otherwise to 1.f."
-test: custom
-#TODO Temporary until bionic & associated drivers are fixed
-end:
-
-function: log
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm
-description:
- Returns the natural logarithm.
-
- See also @native_log().
-end:
-
-function: log10
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base 10 logarithm
-description:
- Returns the base 10 logarithm.
-
- See also @native_log10().
-end:
-
-function: log1p
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm of a value plus 1
-description:
- Returns the natural logarithm of <code>(v + 1.f)</code>.
-
- See also @native_log1p().
-end:
-
-function: log2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base 2 logarithm
-description:
- Returns the base 2 logarithm.
-
- See also @native_log2().
-end:
-
-function: logb
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base two exponent
-description:
- Returns the base two exponent of a value, where the mantissa is between
- 1.f (inclusive) and 2.f (exclusive).
-
- For example, <code>logb(8.5f)</code> returns 3.f.
-
- Because of the difference in mantissa, this number is one less than
- is returned by frexp().
-
- @ilogb() is similar but returns an integer.
-end:
-
-function: mad
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 multiplicand1
-arg: #2#1 multiplicand2
-arg: #2#1 offset
-summary: Multiply and add
-description:
- Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
-
- This function is similar to @fma(). @fma() retains full precision of the
- multiplied result and rounds only after the addition. mad() rounds after the
- multiplication and the addition. In rs_fp_relaxed mode, mad() may not do the
- rounding after multiplicaiton.
+ // x y z w = a b c d in the plane equation
+ left->x = viewProj->m[3] + viewProj->m[0];
+ left->y = viewProj->m[7] + viewProj->m[4];
+ left->z = viewProj->m[11] + viewProj->m[8];
+ left->w = viewProj->m[15] + viewProj->m[12];
+
+ right->x = viewProj->m[3] - viewProj->m[0];
+ right->y = viewProj->m[7] - viewProj->m[4];
+ right->z = viewProj->m[11] - viewProj->m[8];
+ right->w = viewProj->m[15] - viewProj->m[12];
+
+ top->x = viewProj->m[3] - viewProj->m[1];
+ top->y = viewProj->m[7] - viewProj->m[5];
+ top->z = viewProj->m[11] - viewProj->m[9];
+ top->w = viewProj->m[15] - viewProj->m[13];
+
+ bottom->x = viewProj->m[3] + viewProj->m[1];
+ bottom->y = viewProj->m[7] + viewProj->m[5];
+ bottom->z = viewProj->m[11] + viewProj->m[9];
+ bottom->w = viewProj->m[15] + viewProj->m[13];
+
+ near->x = viewProj->m[3] + viewProj->m[2];
+ near->y = viewProj->m[7] + viewProj->m[6];
+ near->z = viewProj->m[11] + viewProj->m[10];
+ near->w = viewProj->m[15] + viewProj->m[14];
+
+ far->x = viewProj->m[3] - viewProj->m[2];
+ far->y = viewProj->m[7] - viewProj->m[6];
+ far->z = viewProj->m[11] - viewProj->m[10];
+ far->w = viewProj->m[15] - viewProj->m[14];
+
+ float len = length(left->xyz);
+ *left /= len;
+ len = length(right->xyz);
+ *right /= len;
+ len = length(top->xyz);
+ *top /= len;
+ len = length(bottom->xyz);
+ *bottom /= len;
+ len = length(near->xyz);
+ *near /= len;
+ len = length(far->xyz);
+ *far /= len;
+test: none
end:
-function: max
-version: 9
+function: rsFrac
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Maximum
+ret: float
+arg: float v
+summary:
description:
- Returns the maximum value of two arguments.
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 1
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- return (a > b ? a : b);
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 2
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- return tmp;
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 3
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- tmp.z = (a.z > b.z ? a.z : b.z);
- return tmp;
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 4
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- tmp.z = (a.z > b.z ? a.z : b.z);
- tmp.w = (a.w > b.w ? a.w : b.w);
- return tmp;
-end:
-
-function: max
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32, i64, u8, u16, u32, u64
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
+ Returns the fractional part of a float
+test: none
end:
-function: min
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Minimum
+function: rsIsSphereInFrustum
+attrib: always_inline
+ret: bool
+arg: float4* sphere, "float4 representing the sphere"
+arg: float4* left, "left plane"
+arg: float4* right, "right plane"
+arg: float4* top, "top plane"
+arg: float4* bottom, "bottom plane"
+arg: float4* near, "near plane"
+arg: float4* far, "far plane"
+summary:
description:
- Returns the minimum value of two arguments.
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 1
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- return (a < b ? a : b);
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 2
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- return tmp;
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 3
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
+ Checks if a sphere is withing the 6 frustum planes
inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- tmp.z = (a.z < b.z ? a.z : b.z);
- return tmp;
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 4
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- tmp.z = (a.z < b.z ? a.z : b.z);
- tmp.w = (a.w < b.w ? a.w : b.w);
- return tmp;
-end:
-
-function: min
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32, i64, u8, u16, u32, u64
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-end:
-
-function: mix
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 start
-arg: #2#1 stop
-arg: #2#1 fraction
-summary: Mixes two values
-description:
- Returns start + ((stop - start) * fraction).
-
- This can be useful for mixing two values. For example, to create a new color that is 40% color1 and 60% color2, use <code>mix(color1, color2, 0.6f)</code>.
-end:
-
-function: mix
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 start
-arg: #2#1 stop
-arg: #2 fraction
-end:
-
-function: modf
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "The floating point portion of the value."
-arg: #2#1 v, "Source value"
-arg: #2#1* integral_part, "*integral_part will be set to the integral portion of the number."
-summary: Integral and fractional components
-description:
- Returns the integral and fractional components of a number.
-
- Both components will have the same sign as x. For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
-end:
-
-function: nan
-version: 9
-attrib: const
-w: 1
-t: f32
-ret: #2#1
-arg: uint#1 v, "Not used."
-#TODO We're not using the argument. Once we do, add this documentation line:
-# The argument is embedded into the return value and can be used to distinguish various NaNs.
-summary: Not a Number
-description:
- Returns a NaN value (Not a Number).
-end:
-
-function: native_acos
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse cosine
-description:
- Returns the approximate inverse cosine, in radians.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @acos().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_acosh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate inverse hyperbolic cosine
-description:
- Returns the approximate inverse hyperbolic cosine, in radians.
-
- See also @acosh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_acospi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse cosine divided by pi
-description:
- Returns the approximate inverse cosine in radians, divided by pi.
-
- To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @acospi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asin
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse sine
-description:
- Returns the approximate inverse sine, in radians.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @asin().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asinh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate inverse hyperbolic sine
-description:
- Returns the approximate inverse hyperbolic sine, in radians.
-
- See also @asinh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asinpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse sine divided by pi
-description:
- Returns the approximate inverse sine in radians, divided by pi.
-
- To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @asinpi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse tangent
-description:
- Returns the approximate inverse tangent, in radians.
-
- See also @atan().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan2
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Approximate inverse tangent of a ratio
-description:
- Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians.
-
- See also @atan2().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan2pi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Approximate inverse tangent of a ratio, divided by pi
-description:
- Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
-
- See also @atan2pi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atanh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse hyperbolic tangent
-description:
- Returns the approximate inverse hyperbolic tangent, in radians.
-
- See also @atanh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atanpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse tangent divided by pi
-description:
- Returns the approximate inverse tangent in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
-
- See also @atanpi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_cbrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cube root
-description:
- Returns the approximate cubic root.
-
- See also @cbrt().
-end:
-
-function: native_cos
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cosine
-description:
- Returns the approximate cosine of an angle measured in radians.
-
- See also @cos().
-end:
-
-function: native_cosh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hypebolic cosine
-description:
- Returns the approximate hypebolic cosine.
-
- See also @cosh().
-end:
-
-function: native_cospi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cosine of a number multiplied by pi
-description:
- Returns the approximate cosine of (v * pi), where (v * pi) is measured in radians.
-
- To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
-
- See also @cospi().
-end:
-
-function: native_divide
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Approximate division
-description:
- Computes the approximate division of two values.
-end:
-
-function: native_exp
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-86,86)
-summary: Approximate e raised to a number
-description:
- Fast approximate exp.
-
- It is valid for inputs from -86.f to 86.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp().
-test: limited
-end:
-
-function: native_exp10
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-37,37)
-summary: Approximate 10 raised to a number
-description:
- Fast approximate exp10.
-
- It is valid for inputs from -37.f to 37.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp10().
-test: limited
-end:
-
-function: native_exp2
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-125,125)
-summary: Approximate 2 raised to a number
-description:
- Fast approximate exp2.
-
- It is valid for inputs from -125.f to 125.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp2().
-test: limited
-end:
-
-function: native_expm1
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate e raised to a number minus one
-description:
- Returns the approximate (e ^ v) - 1.
-
- See also @expm1().
-end:
-
-function: native_hypot
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Approximate hypotenuse
-description:
- Returns the approximate native_sqrt(a * a + b * b)
-
- See also @hypot().
-end:
-
-function: native_log
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate natural logarithm
-description:
- Fast approximate log.
-
- It is not accurate for values very close to zero.
-
- See also @log().
-test: limited
-end:
-
-function: native_log10
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate base 10 logarithm
-description:
- Fast approximate log10.
-
- It is not accurate for values very close to zero.
-
- See also @log10().
-test: limited
-end:
-
-function: native_log1p
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate natural logarithm of a value plus 1
-description:
- Returns the approximate natural logarithm of (v + 1.0f)
-
- See also @log1p().
-end:
-
-function: native_log2
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate base 2 logarithm
-description:
- Fast approximate log2.
-
- It is not accurate for values very close to zero.
-
- See also @log2().
-test: limited
-end:
-
-function: native_powr
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base, range(0,256), "Must be between 0.f and 256.f. The function is not accurate for values very close to zero."
-arg: #2#1 exponent, range(-15,15), "Must be between -15.f and 15.f."
-summary: Approximate positive base raised to an exponent
-description:
- Fast approximate (base ^ exponent).
-
- See also @powr().
-test: limited
-end:
-
-function: native_recip
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate reciprocal
-description:
- Returns the approximate approximate reciprocal of a value.
-
- See also @half_recip().
-end:
-
-function: native_rootn
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1 n
-summary: Approximate nth root
-description:
- Compute the approximate Nth root of a value.
-
- See also @rootn().
-end:
-
-function: native_rsqrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate reciprocal of a square root
-description:
- Returns approximate (1 / sqrt(v)).
-
- See also @rsqrt(), @half_rsqrt().
-end:
-
-function: native_sin
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate sine
-description:
- Returns the approximate sine of an angle measured in radians.
-
- See also @sin().
-end:
-
-function: native_sincos
-version: 21
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "sine"
-arg: #2#1 v, "The incoming value in radians."
-arg: #2#1* cos, "*cos will be set to the cosine value."
-summary: Approximate sine and cosine
-description:
- Returns the approximate sine and cosine of a value.
-
- See also @sincos().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_sinh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hyperbolic sine
-description:
- Returns the approximate hyperbolic sine of a value specified in radians.
-
- See also @sinh().
-end:
-
-function: native_sinpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate sine of a number multiplied by pi
-description:
- Returns the approximate sine of (v * pi), where (v * pi) is measured in radians.
-
- To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
-
- See also @sinpi().
-end:
-
-function: native_sqrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate square root
-description:
- Returns the approximate sqrt(v).
-
- See also @sqrt(), @half_sqrt().
-end:
-
-function: native_tan
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate tangent
-description:
- Returns the approximate tangent of an angle measured in radians.
-end:
-
-function: native_tanh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hyperbolic tangent
-description:
- Returns the approximate hyperbolic tangent of a value.
-
- See also @tanh().
-end:
-
-function: native_tanpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate tangent of a number multiplied by pi
-description:
- Returns the approximate tangent of (v * pi), where (v * pi) is measured in radians.
-
- To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
-
- See also @tanpi().
-end:
-
-function: nextafter
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: #2#1 target
-summary: Next floating point number
-description:
- Returns the next representable floating point number from v towards target.
-
- In rs_fp_relaxed mode, a denormalized input value may not yield the next
- denormalized value, as support of denormalized values is optional in
- relaxed mode.
-end:
-
-function: pow
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base
-arg: #2#1 exponent
-summary: Base raised to an exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent.
-
- @pown() and @powr() are similar. @pown() takes an integer exponent. @powr() assumes the base to be non-negative.
-end:
-
-function: pown
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base
-arg: int#1 exponent
-summary: Base raised to an integer exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent.
-
- @pow() and @powr() are similar. The both take a float exponent. @powr() also assumes the base to be non-negative.
-end:
-
-function: powr
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base, range(0,3000)
-arg: #2#1 exponent
-summary: Positive base raised to an exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent. base must be &gt;= 0.
-
- @pow() and @pown() are similar. They both make no assumptions about the base. @pow() takes a float exponent while @pown() take an integer.
-
- See also @native_powr().
-end:
-
-function: radians
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Converts degrees into radians
-description:
- Converts from degrees to radians.
-end:
-
-function: remainder
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator
-arg: #2#1 denominator
-summary: Remainder of a division
-description:
- Returns the remainder of (numerator / denominator), where the quotient is rounded towards the nearest integer.
-
- The function @fmod() is similar but rounds toward the closest interger.
- For example, <code>@fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
- while <code>remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
-end:
-
-function: remquo
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "The remainder, precise only for the low three bits."
-arg: #2#1 numerator, "The numerator."
-arg: #2#1 denominator, "The denominator."
-arg: int#1* quotient, "*quotient will be set to the integer quotient."
-summary: Remainder and quotient of a division
-description:
- Returns the quotient and the remainder of (numerator / denominator).
-
- Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
-
- This function is useful for implementing periodic functions. The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant. For example, an implementation of @sin(x) could call <code>remquo(x, PI / 2.f, &quadrant)</code> to reduce very large value of x to something within a limited range.
-
- Example: <code>remquo(-23.5f, 8.f, &quot)</code> sets the lowest three bits of quot to 3 and the sign negative. It returns 0.5f.
-test: custom
-end:
-
-function: rint
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Round to even
-description:
- Rounds to the nearest integral value.
-
- rint() rounds half values to even. For example, <code>rint(0.5f)</code> returns 0.f and <code>rint(1.5f)</code> returns 2.f. Similarly, <code>rint(-0.5f)</code> returns -0.f and <code>rint(-1.5f)</code> returns -2.f.
-
- @round() is similar but rounds away from zero. @trunc() truncates the decimal fraction.
-end:
-
-function: rootn
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1 n
-summary: Nth root
-description:
- Compute the Nth root of a value.
-
- See also @native_rootn().
-end:
-
-function: round
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Round away from zero
-description:
- Round to the nearest integral value.
-
- round() rounds half values away from zero. For example, <code>round(0.5f)</code> returns 1.f and <code>round(1.5f)</code> returns 2.f. Similarly, <code>round(-0.5f)</code> returns -1.f and <code>round(-1.5f)</code> returns -2.f.
-
- @rint() is similar but rounds half values toward even. @trunc() truncates the decimal fraction.
-end:
-
-function: rsqrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal of a square root
-description:
- Returns (1 / sqrt(v)).
-
- See also @half_rsqrt(), @native_rsqrt().
-end:
-
-function: sign
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sign of a value
-description:
- Returns the sign of a value.
-
- if (v &lt; 0) return -1.f;
- else if (v &gt; 0) return 1.f;
- else return 0.f;
-end:
-
-function: sin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sine
-description:
- Returns the sine of an angle measured in radians.
-
- See also @native_sin().
-end:
-
-function: sincos
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "sine of v"
-arg: #2#1 v, "The incoming value in radians"
-arg: #2#1* cos, "*cos will be set to the cosine value."
-summary: Sine and cosine
-description:
- Returns the sine and cosine of a value.
-
- See also @native_sincos().
-end:
-
-function: sinh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hyperbolic sine
-description:
- Returns the hyperbolic sine of v, where v is measured in radians.
-
- See also @native_sinh().
-end:
-
-function: sinpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sine of a number multiplied by pi
-description:
- Returns the sine of (v * pi), where (v * pi) is measured in radians.
-
- To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
-
- See also @native_sinpi().
-end:
-
-function: sqrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Square root
-description:
- Returns the square root of a value.
-
- See also @half_sqrt(), @native_sqrt().
-end:
-
-function: step
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 edge
-arg: #2#1 v
-summary: 0 if less than a value, 0 otherwise
-description:
- Returns 0.f if v &lt; edge, 1.f otherwise.
-
- This can be useful to create conditional computations without using loops and branching instructions. For example, instead of computing <code>(a[i] &lt; b[i]) ? 0.f : @atan2(a[i], b[i])</code> for the corresponding elements of a vector, you could instead use <code>step(a, b) * @atan2(a, b)</code>.
-end:
-
-function: step
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 edge
-arg: #2 v
-end:
-
-function: step
-version: 21
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2 edge
-arg: #2#1 v
-end:
-
-function: tan
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Tangent
-description:
- Returns the tangent of an angle measured in radians.
-
- See also @native_tan().
-end:
-
-function: tanh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hyperbolic tangent
-description:
- Returns the hyperbolic tangent of a value.
-
- See also @native_tanh().
+ float distToCenter = dot(left->xyz, sphere->xyz) + left->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(right->xyz, sphere->xyz) + right->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(top->xyz, sphere->xyz) + top->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(bottom->xyz, sphere->xyz) + bottom->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(near->xyz, sphere->xyz) + near->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(far->xyz, sphere->xyz) + far->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ return true;
+test: none
end:
-function: tanpi
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Tangent of a number multiplied by pi
+ret: uchar4
+arg: float r
+arg: float g
+arg: float b
+summary:
description:
- Returns the tangent of (v * pi), where (v * pi) is measured in radians.
+ Pack floating point (0-1) RGB values into a uchar4.
- To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
-
- See also @native_tanpi().
+ For the float3 variant and the variant that only specifies r, g, b,
+ the alpha component is set to 255 (1.0).
+test: none
end:
-function: tgamma
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Gamma function
-description:
- Returns the gamma function of a value.
-
- See also @lgamma().
+ret: uchar4
+arg: float r
+arg: float g
+arg: float b
+arg: float a
+test: none
end:
-function: trunc
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Truncates a floating point
-description:
- Rounds to integral using truncation.
-
- For example, <code>trunc(1.7f)</code> returns 1.f and <code>trunc(-1.7f)</code> returns -1.f.
-
- See @rint() and @round() for other rounding options.
-end:
-
-function: rsClamp
-# TODO Why always_inline?
-attrib: const, always_inline
-t: i8, i16, i32, u8, u16, u32
-ret: #1
-arg: #1 amount, "The value to clamp"
-arg: #1 low, "Lower bound"
-arg: #1 high, "Upper bound"
-summary: Restrain a value to a range
-description:
- Clamp a value between low and high.
-
- Deprecated. Use @clamp() instead.
+ret: uchar4
+arg: float3 color
test: none
end:
-function: rsFrac
+function: rsPackColorTo8888
attrib: const
-ret: float
-arg: float v
-summary:
-description:
- Returns the fractional part of a float
+ret: uchar4
+arg: float4 color
test: none
end:
@@ -2211,3 +216,27 @@ arg: float min_value
arg: float max_value
test: none
end:
+
+function: rsUnpackColor8888
+attrib: =const
+ret: float4
+arg: uchar4 c
+summary:
+description:
+ Unpack a uchar4 color to float4. The resulting float range will be (0-1).
+test: none
+end:
+
+function: rsYuvToRGBA_#2#1
+attrib: const
+w: 4
+t: u8, f32
+ret: #2#1
+arg: uchar y
+arg: uchar u
+arg: uchar v
+summary:
+description:
+ Convert from YUV to RGBA.
+test: none
+end:
diff --git a/api/rs_matrix.spec b/api/rs_matrix.spec
index d69ad1ab..7afbefff 100644
--- a/api/rs_matrix.spec
+++ b/api/rs_matrix.spec
@@ -41,111 +41,6 @@ description:
transformation happens first. E.g. if you call @rsMatrixTranslate()
on a matrix that already does a scaling, the resulting matrix when applied
to a vector will first do the translation then the scaling.
-include:
- #include "rs_vector_math.rsh"
-end:
-
-function: rsExtractFrustumPlanes
-# TODO Why always_inline?
-attrib: always_inline
-ret: void
-arg: const rs_matrix4x4* viewProj, "matrix to extract planes from"
-arg: float4* left, "left plane"
-arg: float4* right, "right plane"
-arg: float4* top, "top plane"
-arg: float4* bottom, "bottom plane"
-arg: float4* near, "near plane"
-arg: float4* far, "far plane"
-summary:
-description:
- Computes 6 frustum planes from the view projection matrix
-inline:
- // x y z w = a b c d in the plane equation
- left->x = viewProj->m[3] + viewProj->m[0];
- left->y = viewProj->m[7] + viewProj->m[4];
- left->z = viewProj->m[11] + viewProj->m[8];
- left->w = viewProj->m[15] + viewProj->m[12];
-
- right->x = viewProj->m[3] - viewProj->m[0];
- right->y = viewProj->m[7] - viewProj->m[4];
- right->z = viewProj->m[11] - viewProj->m[8];
- right->w = viewProj->m[15] - viewProj->m[12];
-
- top->x = viewProj->m[3] - viewProj->m[1];
- top->y = viewProj->m[7] - viewProj->m[5];
- top->z = viewProj->m[11] - viewProj->m[9];
- top->w = viewProj->m[15] - viewProj->m[13];
-
- bottom->x = viewProj->m[3] + viewProj->m[1];
- bottom->y = viewProj->m[7] + viewProj->m[5];
- bottom->z = viewProj->m[11] + viewProj->m[9];
- bottom->w = viewProj->m[15] + viewProj->m[13];
-
- near->x = viewProj->m[3] + viewProj->m[2];
- near->y = viewProj->m[7] + viewProj->m[6];
- near->z = viewProj->m[11] + viewProj->m[10];
- near->w = viewProj->m[15] + viewProj->m[14];
-
- far->x = viewProj->m[3] - viewProj->m[2];
- far->y = viewProj->m[7] - viewProj->m[6];
- far->z = viewProj->m[11] - viewProj->m[10];
- far->w = viewProj->m[15] - viewProj->m[14];
-
- float len = length(left->xyz);
- *left /= len;
- len = length(right->xyz);
- *right /= len;
- len = length(top->xyz);
- *top /= len;
- len = length(bottom->xyz);
- *bottom /= len;
- len = length(near->xyz);
- *near /= len;
- len = length(far->xyz);
- *far /= len;
-test: none
-end:
-
-function: rsIsSphereInFrustum
-attrib: always_inline
-ret: bool
-arg: float4* sphere, "float4 representing the sphere"
-arg: float4* left, "left plane"
-arg: float4* right, "right plane"
-arg: float4* top, "top plane"
-arg: float4* bottom, "bottom plane"
-arg: float4* near, "near plane"
-arg: float4* far, "far plane"
-summary:
-description:
- Checks if a sphere is withing the 6 frustum planes
-inline:
- float distToCenter = dot(left->xyz, sphere->xyz) + left->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- distToCenter = dot(right->xyz, sphere->xyz) + right->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- distToCenter = dot(top->xyz, sphere->xyz) + top->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- distToCenter = dot(bottom->xyz, sphere->xyz) + bottom->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- distToCenter = dot(near->xyz, sphere->xyz) + near->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- distToCenter = dot(far->xyz, sphere->xyz) + far->w;
- if (distToCenter < -sphere->w) {
- return false;
- }
- return true;
-test: none
end:
function: rsMatrixGet
diff --git a/api/rs_mesh.spec b/api/rs_mesh.spec
new file mode 100644
index 00000000..9fe5e49c
--- /dev/null
+++ b/api/rs_mesh.spec
@@ -0,0 +1,78 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Mesh routines
+description:
+end:
+
+function: rsgMeshGetIndexAllocation
+version: 16
+ret: rs_allocation, "allocation containing index data"
+arg: rs_mesh m, "mesh to get data from"
+arg: uint32_t index, "index of the index allocation"
+summary:
+description:
+ Returns an allocation containing index data or a null
+ allocation if only the primitive is specified
+test: none
+end:
+
+function: rsgMeshGetPrimitive
+version: 16
+ret: rs_primitive, "primitive describing how the mesh is rendered"
+arg: rs_mesh m, "mesh to get data from"
+arg: uint32_t index, "index of the primitive"
+summary:
+description:
+ Returns the primitive describing how a part of the mesh is
+ rendered
+test: none
+end:
+
+function: rsgMeshGetPrimitiveCount
+version: 16
+ret: uint32_t, "number of primitive groups in the mesh. This would include simple primitives as well as allocations containing index data"
+arg: rs_mesh m, "mesh to get data from"
+summary:
+description:
+ Meshes could have multiple index sets, this function returns
+ the number.
+test: none
+end:
+
+function: rsgMeshGetVertexAllocation
+version: 16
+ret: rs_allocation, "allocation containing vertex data"
+arg: rs_mesh m, "mesh to get data from"
+arg: uint32_t index, "index of the vertex allocation"
+summary:
+description:
+ Returns an allocation that is part of the mesh and contains
+ vertex data, e.g. positions, normals, texcoords
+test: none
+end:
+
+function: rsgMeshGetVertexAllocationCount
+version: 16
+ret: uint32_t, "number of allocations in the mesh that contain vertex data"
+arg: rs_mesh m, "mesh to get data from"
+summary:
+description:
+ Returns the number of allocations in the mesh that contain
+ vertex data
+test: none
+end:
diff --git a/api/rs_object.spec b/api/rs_object.spec
new file mode 100644
index 00000000..bb8b446a
--- /dev/null
+++ b/api/rs_object.spec
@@ -0,0 +1,76 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Object routines
+description:
+end:
+
+function: rsClearObject
+t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
+ret: void
+arg: #1* dst
+hidden:
+summary: For internal use.
+description:
+test: none
+end:
+
+function: rsClearObject
+size: 32
+t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
+ret: void
+arg: #1* dst
+test: none
+end:
+
+function: rsIsObject
+t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
+ret: bool
+arg: #1 v
+hidden:
+summary: For internal use.
+description:
+test: none
+end:
+
+function: rsIsObject
+size: 32
+t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
+ret: bool
+arg: #1 v
+test: none
+end:
+
+function: rsSetObject
+t: rs_element, rs_type, rs_allocation, rs_sampler, rs_script
+ret: void
+arg: #1* dst
+arg: #1 src
+hidden:
+summary: For internal use.
+description:
+test: none
+end:
+
+function: rsSetObject
+size: 32
+t: rs_mesh, rs_program_fragment, rs_program_vertex, rs_program_raster, rs_program_store, rs_font
+ret: void
+arg: #1* dst
+arg: #1 src
+test: none
+end:
diff --git a/api/rs_object_types.spec b/api/rs_object_types.spec
deleted file mode 100644
index 3d912fbb..00000000
--- a/api/rs_object_types.spec
+++ /dev/null
@@ -1,226 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: Standard RenderScript types
-description:
- TODO desc.
-include:
- #define NULL ((void *)0)
-
- // Opaque handle to a RenderScript object. Do not use this directly.
- #ifndef __LP64__
- #define _RS_HANDLE \
- struct {\
- const int* const p;\
- } __attribute__((packed, aligned(4)))
- #else
- #define _RS_HANDLE \
- struct {\
- const long* const p;\
- const long* const r;\
- const long* const v1;\
- const long* const v2;\
- }
- #endif
-end:
-
-type: rs_element
-simple: _RS_HANDLE
-summary: Handle to an element
-description:
- Opaque handle to a RenderScript element.
- See: android.renderscript.Element
-end:
-
-type: rs_type
-simple: _RS_HANDLE
-summary: Handle to a Type
-description:
- Opaque handle to a RenderScript type.
- See: android.renderscript.Type
-end:
-
-type: rs_allocation
-simple: _RS_HANDLE
-summary: Handle to an allocation
-description:
- Opaque handle to a RenderScript allocation.
- See: android.renderscript.Allocation
-end:
-
-type: rs_sampler
-simple: _RS_HANDLE
-summary: Handle to a Sampler
-description:
- Opaque handle to a RenderScript sampler object.
- See: android.renderscript.Sampler
-end:
-
-type: rs_script
-simple: _RS_HANDLE
-summary: Handle to a Script
-description:
- Opaque handle to a RenderScript script object.
- See: android.renderscript.ScriptC
-end:
-
-type: rs_matrix4x4
-struct:
-field: float m[16]
-summary: 4x4 matrix of 32 bit floats
-description:
- Native holder for RS matrix. Elements are stored in the array at the
- location [row*4 + col]
-end:
-
-type: rs_matrix3x3
-struct:
-field: float m[9]
-summary: 3x3 matrix of 32 bit floats
-description:
- Native holder for RS matrix. Elements are stored in the array at the
- location [row*3 + col]
-end:
-
-type: rs_matrix2x2
-struct:
-field: float m[4]
-summary: 2x2 matrix of 32 bit floats
-description:
- Native holder for RS matrix. Elements are stored in the array at the
- location [row*2 + col]
-end:
-
-type: rs_quaternion
-simple: float4
-summary: Quarternion
-description:
- Quaternion type for use with the quaternion functions
-end:
-
-type: rs_allocation_cubemap_face
-version: 14
-enum:
-value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0
-value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1
-value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2
-value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3
-value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4
-value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
-summary: Enum for selecting cube map faces
-description:
-end:
-
-type: rs_allocation_usage_type
-version: 14
-enum:
-value: RS_ALLOCATION_USAGE_SCRIPT = 0x0001
-value: RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, "Deprecated."
-value: RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, "Deprecated."
-value: RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, "Deprecated."
-value: RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010, "Deprecated."
-summary: Bitfield to specify the usage types for an allocation
-description:
- These values are ORed together to specify which usages or memory spaces are
- relevant to an allocation or an operation on an allocation.
-end:
-
-type: rs_data_type
-version: 16
-enum:
-value: RS_TYPE_NONE = 0
-value: RS_TYPE_FLOAT_32 = 2
-value: RS_TYPE_FLOAT_64 = 3
-value: RS_TYPE_SIGNED_8 = 4
-value: RS_TYPE_SIGNED_16 = 5
-value: RS_TYPE_SIGNED_32 = 6
-value: RS_TYPE_SIGNED_64 = 7
-value: RS_TYPE_UNSIGNED_8 = 8
-value: RS_TYPE_UNSIGNED_16 = 9
-value: RS_TYPE_UNSIGNED_32 = 10
-value: RS_TYPE_UNSIGNED_64 = 11
-value: RS_TYPE_BOOLEAN = 12
-value: RS_TYPE_UNSIGNED_5_6_5 = 13
-value: RS_TYPE_UNSIGNED_5_5_5_1 = 14
-value: RS_TYPE_UNSIGNED_4_4_4_4 = 15
-value: RS_TYPE_MATRIX_4X4 = 16
-value: RS_TYPE_MATRIX_3X3 = 17
-value: RS_TYPE_MATRIX_2X2 = 18
-value: RS_TYPE_ELEMENT = 1000
-value: RS_TYPE_TYPE = 1001
-value: RS_TYPE_ALLOCATION = 1002
-value: RS_TYPE_SAMPLER = 1003
-value: RS_TYPE_SCRIPT = 1004
-value: RS_TYPE_MESH = 1005
-value: RS_TYPE_PROGRAM_FRAGMENT = 1006
-value: RS_TYPE_PROGRAM_VERTEX = 1007
-value: RS_TYPE_PROGRAM_RASTER = 1008
-value: RS_TYPE_PROGRAM_STORE = 1009
-value: RS_TYPE_FONT = 1010
-value: RS_TYPE_INVALID = 10000
-summary: Element data types
-description:
- DataType represents the basic type information for a basic element. The
- naming convention follows. For numeric types it is FLOAT,
- SIGNED, or UNSIGNED followed by the _BITS where BITS is the
- size of the data. BOOLEAN is a true / false (1,0)
- represented in an 8 bit container. The UNSIGNED variants
- with multiple bit definitions are for packed graphical data
- formats and represent vectors with per vector member sizes
- which are treated as a single unit for packing and alignment
- purposes.
-
- MATRIX the three matrix types contain FLOAT_32 elements and are treated
- as 32 bits for alignment purposes.
-
- RS_* objects. 32 bit opaque handles.
-end:
-
-type: rs_data_kind
-version: 16
-enum:
-value: RS_KIND_USER = 0
-value: RS_KIND_PIXEL_L = 7
-value: RS_KIND_PIXEL_A = 8
-value: RS_KIND_PIXEL_LA = 9
-value: RS_KIND_PIXEL_RGB = 10
-value: RS_KIND_PIXEL_RGBA = 11
-value: RS_KIND_PIXEL_DEPTH = 12
-value: RS_KIND_PIXEL_YUV = 13
-value: RS_KIND_INVALID = 100
-summary: Element data kind
-description:
- The special interpretation of the data if required. This is primarly
- useful for graphical data. USER indicates no special interpretation is
- expected. PIXEL is used in conjunction with the standard data types for
- representing texture formats.
-end:
-
-type: rs_sampler_value
-version: 16
-enum:
-value: RS_SAMPLER_NEAREST = 0
-value: RS_SAMPLER_LINEAR = 1
-value: RS_SAMPLER_LINEAR_MIP_LINEAR = 2
-value: RS_SAMPLER_WRAP = 3
-value: RS_SAMPLER_CLAMP = 4
-value: RS_SAMPLER_LINEAR_MIP_NEAREST = 5
-value: RS_SAMPLER_MIRRORED_REPEAT = 6
-value: RS_SAMPLER_INVALID = 100
-summary: Sampler wrap T value
-description:
-end:
diff --git a/api/rs_program.spec b/api/rs_program.spec
new file mode 100644
index 00000000..a2c39a9c
--- /dev/null
+++ b/api/rs_program.spec
@@ -0,0 +1,130 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Program object routines
+description:
+end:
+
+function: rsgProgramRasterGetCullMode
+version: 16
+ret: rs_cull_mode
+arg: rs_program_raster pr, "program raster to query"
+summary:
+description:
+ Get program raster cull mode
+test: none
+end:
+
+function: rsgProgramRasterIsPointSpriteEnabled
+version: 16
+ret: bool
+arg: rs_program_raster pr, "program raster to query"
+summary:
+description:
+ Get program raster point sprite state
+test: none
+end:
+
+function: rsgProgramStoreGetBlendDstFunc
+version: 16
+ret: rs_blend_dst_func
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store blend destination function
+test: none
+end:
+
+function: rsgProgramStoreGetBlendSrcFunc
+version: 16
+ret: rs_blend_src_func
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store blend source function
+test: none
+end:
+
+function: rsgProgramStoreGetDepthFunc
+version: 16
+ret: rs_depth_func
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store depth function
+test: none
+end:
+
+function: rsgProgramStoreIsColorMaskAlphaEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store alpha component color mask
+test: none
+end:
+
+function: rsgProgramStoreIsColorMaskBlueEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store blur component color mask
+test: none
+end:
+
+function: rsgProgramStoreIsColorMaskGreenEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store green component color mask
+test: none
+end:
+
+function: rsgProgramStoreIsColorMaskRedEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store red component color mask
+test: none
+end:
+
+function: rsgProgramStoreIsDepthMaskEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store depth mask
+test: none
+end:
+
+function: rsgProgramStoreIsDitherEnabled
+version: 16
+ret: bool
+arg: rs_program_store ps, "program store to query"
+summary:
+description:
+ Get program store dither state
+test: none
+end:
diff --git a/api/rs_sampler.spec b/api/rs_sampler.spec
new file mode 100644
index 00000000..35ab612b
--- /dev/null
+++ b/api/rs_sampler.spec
@@ -0,0 +1,70 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Sampler routines
+description:
+end:
+
+function: rsSamplerGetAnisotropy
+version: 16
+ret: float, "anisotropy"
+arg: rs_sampler s, "sampler to query"
+summary:
+description:
+ Get sampler anisotropy
+test: none
+end:
+
+function: rsSamplerGetMagnification
+version: 16
+ret: rs_sampler_value, "magnification value"
+arg: rs_sampler s, "sampler to query"
+summary:
+description:
+ Get sampler magnification value
+test: none
+end:
+
+function: rsSamplerGetMinification
+version: 16
+ret: rs_sampler_value, "minification value"
+arg: rs_sampler s, "sampler to query"
+summary:
+description:
+ Get sampler minification value
+test: none
+end:
+
+function: rsSamplerGetWrapS
+version: 16
+ret: rs_sampler_value, "wrap S value"
+arg: rs_sampler s, "sampler to query"
+summary:
+description:
+ Get sampler wrap S value
+test: none
+end:
+
+function: rsSamplerGetWrapT
+version: 16
+ret: rs_sampler_value, "wrap T value"
+arg: rs_sampler s, "sampler to query"
+summary:
+description:
+ Get sampler wrap T value
+test: none
+end:
diff --git a/api/rs_types.spec b/api/rs_types.spec
new file mode 100644
index 00000000..0eeac5bd
--- /dev/null
+++ b/api/rs_types.spec
@@ -0,0 +1,849 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+header:
+summary: Standard RenderScript types
+description:
+ Integers:<ul>
+ <li>8 bit: char, int8_t</li>
+ <li>16 bit: short, int16_t</li>
+ <li>32 bit: int, in32_t</li>
+ <li>64 bit: long, long long, int64_t</li></ul>
+
+ Unsigned integers:<ul>
+ <li>8 bit: uchar, uint8_t</li>
+ <li>16 bit: ushort, uint16_t</li>
+ <li>32 bit: uint, uint32_t</li>
+ <li>64 bit: ulong, uint64_t</li></ul>
+
+ Floating point:<ul>
+ <li>32 bit: float</li>
+ <li>64 bit: double</li></ul>
+
+ Vectors of length 2, 3, and 4 are supported for all the types above.
+include:
+ #include "stdbool.h"
+
+ #define RS_PACKED __attribute__((packed, aligned(4)))
+ #define NULL ((void *)0)
+
+ // Opaque handle to a RenderScript object. Do not use this directly.
+ #ifndef __LP64__
+ #define _RS_HANDLE \
+ struct {\
+ const int* const p;\
+ } __attribute__((packed, aligned(4)))
+ #else
+ #define _RS_HANDLE \
+ struct {\
+ const long* const p;\
+ const long* const r;\
+ const long* const v1;\
+ const long* const v2;\
+ }
+ #endif
+end:
+
+constant: M_1_PI
+value: 0.318309886183790671537767526745028724f
+summary: 1 / pi, as a 32 bit float
+description:
+ The inverse of pi, as a 32 bit float.
+end:
+
+constant: M_2_PI
+value: 0.636619772367581343075535053490057448f
+summary: 2 / pi, as a 32 bit float
+description:
+ 2 divided by pi, as a 32 bit float.
+end:
+
+constant: M_2_PIl
+value: 0.636619772367581343075535053490057448f
+hidden:
+summary: Deprecated. Use M_2_PI instead.
+description:
+end:
+
+constant: M_2_SQRTPI
+value: 1.128379167095512573896158903121545172f
+summary: 2 / sqrt(pi), as a 32 bit float
+description:
+ 2 divided by the square root of pi, as a 32 bit float.
+end:
+
+constant: M_E
+value: 2.718281828459045235360287471352662498f
+summary: e, as a 32 bit float
+description:
+ The number e, the base of the natural logarithm, as a 32 bit float.
+end:
+
+constant: M_LN10
+value: 2.302585092994045684017991454684364208f
+summary: log_e(10), as a 32 bit float
+description:
+ The natural logarithm of 10, as a 32 bit float.
+end:
+
+constant: M_LN2
+value: 0.693147180559945309417232121458176568f
+summary: log_e(2), as a 32 bit float
+description:
+ The natural logarithm of 2, as a 32 bit float.
+end:
+
+constant: M_LOG10E
+value: 0.434294481903251827651128918916605082f
+summary: log_10(e), as a 32 bit float
+description:
+ The logarithm base 10 of e, as a 32 bit float.
+end:
+
+constant: M_LOG2E
+value: 1.442695040888963407359924681001892137f
+summary: log_2(e), as a 32 bit float
+description:
+ The logarithm base 2 of e, as a 32 bit float.
+end:
+
+constant: M_PI
+value: 3.141592653589793238462643383279502884f
+summary: pi, as a 32 bit float
+description:
+ The constant pi, as a 32 bit float.
+end:
+
+constant: M_PI_2
+value: 1.570796326794896619231321691639751442f
+summary: pi / 2, as a 32 bit float
+description:
+ Pi divided by 2, as a 32 bit float.
+end:
+
+constant: M_PI_4
+value: 0.785398163397448309615660845819875721f
+summary: pi / 4, as a 32 bit float
+description:
+ Pi divided by 4, as a 32 bit float.
+end:
+
+constant: M_SQRT1_2
+value: 0.707106781186547524400844362104849039f
+summary: 1 / sqrt(2), as a 32 bit float
+description:
+ The inverse of the square root of 2, as a 32 bit float.
+end:
+
+constant: M_SQRT2
+value: 1.414213562373095048801688724209698079f
+summary: sqrt(2), as a 32 bit float
+description:
+ The square root of 2, as a 32 bit float.
+end:
+
+type: int8_t
+simple: char
+summary: 8 bit signed integer
+description:
+ 8 bit integer type
+end:
+
+type: int16_t
+simple: short
+summary: 16 bit signed integer
+description:
+ 16 bit integer type
+end:
+
+type: int32_t
+simple: int
+summary: 32 bit signed integer
+description:
+ 32 bit integer type
+end:
+
+type: int64_t
+version: 9 20
+simple: long long
+summary: 64 bit signed integer
+description:
+ 64 bit integer type
+end:
+
+type: int64_t
+version: 21
+simple: long
+end:
+
+type: uint8_t
+simple: unsigned char
+summary: 8 bit unsigned integer
+description:
+ 8 bit unsigned integer type
+end:
+
+type: uint16_t
+simple: unsigned short
+summary: 16 bit unsigned integer
+description:
+ 16 bit unsigned integer type
+end:
+
+type: uint32_t
+simple: unsigned int
+summary: 32 bit unsigned integer
+description:
+ 32 bit unsigned integer type
+end:
+
+type: uint64_t
+version: 9 20
+simple: unsigned long long
+summary: 64 bit unsigned integer
+description:
+ 64 bit unsigned integer type
+end:
+
+type: uint64_t
+version: 21
+simple: unsigned long
+end:
+
+type: uchar
+simple: uint8_t
+summary: 8 bit unsigned integer
+description:
+ 8 bit unsigned integer type
+end:
+
+type: ushort
+simple: uint16_t
+summary: 16 bit unsigned integer
+description:
+ 16 bit unsigned integer type
+end:
+
+type: uint
+simple: uint32_t
+summary: 32 bit unsigned integer
+description:
+ 32 bit unsigned integer type
+end:
+
+type: ulong
+simple: uint64_t
+summary: 64 bit unsigned integer
+description:
+ Typedef for unsigned long (use for 64-bit unsigned integers)
+end:
+
+type: size_t
+size: 64
+simple: uint64_t
+summary: Unsigned size type
+description:
+ Typedef for size_t
+end:
+
+type: size_t
+size: 32
+simple: uint32_t
+end:
+
+type: ssize_t
+size: 64
+simple: int64_t
+summary: Signed size type
+description:
+ Typedef for ssize_t
+end:
+
+type: ssize_t
+size: 32
+simple: int32_t
+end:
+
+type: rs_element
+simple: _RS_HANDLE
+summary: Handle to an element
+description:
+ Opaque handle to a RenderScript element.
+ See: android.renderscript.Element
+end:
+
+type: rs_type
+simple: _RS_HANDLE
+summary: Handle to a Type
+description:
+ Opaque handle to a RenderScript type.
+ See: android.renderscript.Type
+end:
+
+type: rs_allocation
+simple: _RS_HANDLE
+summary: Handle to an allocation
+description:
+ Opaque handle to a RenderScript allocation.
+ See: android.renderscript.Allocation
+end:
+
+type: rs_sampler
+simple: _RS_HANDLE
+summary: Handle to a Sampler
+description:
+ Opaque handle to a RenderScript sampler object.
+ See: android.renderscript.Sampler
+end:
+
+type: rs_script
+simple: _RS_HANDLE
+summary: Handle to a Script
+description:
+ Opaque handle to a RenderScript script object.
+ See: android.renderscript.ScriptC
+end:
+
+
+type: rs_mesh
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a Mesh
+description:
+ Opaque handle to a RenderScript mesh object.
+ See: android.renderscript.Mesh
+end:
+
+type: rs_program_fragment
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a ProgramFragment
+description:
+ Opaque handle to a RenderScript ProgramFragment object.
+ See: android.renderscript.ProgramFragment
+end:
+
+type: rs_program_vertex
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a ProgramVertex
+description:
+ Opaque handle to a RenderScript ProgramVertex object.
+ See: android.renderscript.ProgramVertex
+end:
+
+type: rs_program_raster
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a ProgramRaster
+description:
+ Opaque handle to a RenderScript ProgramRaster object.
+ See: android.renderscript.ProgramRaster
+end:
+
+type: rs_program_store
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a ProgramStore
+description:
+ Opaque handle to a RenderScript ProgramStore object.
+ See: android.renderscript.ProgramStore
+end:
+
+type: rs_font
+size: 32
+simple: _RS_HANDLE
+summary: Handle to a Font
+description:
+ Opaque handle to a RenderScript font object.
+ See: android.renderscript.Font
+end:
+
+type: float2
+simple: float __attribute__((ext_vector_type(2)))
+summary: Two 32 bit floats
+description:
+ Vector version of the basic float type.
+ Provides two float fields packed into a single 64 bit field with 64 bit alignment.
+end:
+
+type: float3
+simple: float __attribute__((ext_vector_type(3)))
+summary: Three 32 bit floats
+description:
+ Vector version of the basic float type.
+ Provides three float fields packed into a single 128 bit field with 128 bit alignment.
+end:
+
+type: float4
+simple: float __attribute__((ext_vector_type(4)))
+summary: Four 32 bit floats
+description:
+ Vector version of the basic float type.
+ Provides four float fields packed into a single 128 bit field with 128 bit alignment.
+end:
+
+
+type: double2
+simple: double __attribute__((ext_vector_type(2)))
+summary: Two 64 bit floats
+description:
+ Vector version of the basic double type. Provides two double fields packed
+ into a single 128 bit field with 128 bit alignment.
+end:
+
+type: double3
+simple: double __attribute__((ext_vector_type(3)))
+summary: Three 64 bit floats
+description:
+ Vector version of the basic double type. Provides three double fields packed
+ into a single 256 bit field with 256 bit alignment.
+end:
+
+type: double4
+simple: double __attribute__((ext_vector_type(4)))
+summary: Four 64 bit floats
+description:
+ Vector version of the basic double type. Provides four double fields packed
+ into a single 256 bit field with 256 bit alignment.
+end:
+
+
+type: uchar2
+simple: uchar __attribute__((ext_vector_type(2)))
+summary: Two 8 bit unsigned integers
+description:
+ Vector version of the basic uchar type. Provides two uchar fields packed
+ into a single 16 bit field with 16 bit alignment.
+end:
+
+type: uchar3
+simple: uchar __attribute__((ext_vector_type(3)))
+summary: Three 8 bit unsigned integers
+description:
+ Vector version of the basic uchar type. Provides three uchar fields packed
+ into a single 32 bit field with 32 bit alignment.
+end:
+
+type: uchar4
+simple: uchar __attribute__((ext_vector_type(4)))
+summary: Four 8 bit unsigned integers
+description:
+ Vector version of the basic uchar type. Provides four uchar fields packed
+ into a single 32 bit field with 32 bit alignment.
+end:
+
+
+type: ushort2
+simple: ushort __attribute__((ext_vector_type(2)))
+summary: Two 16 bit unsigned integers
+description:
+ Vector version of the basic ushort type. Provides two ushort fields packed
+ into a single 32 bit field with 32 bit alignment.
+end:
+
+type: ushort3
+simple: ushort __attribute__((ext_vector_type(3)))
+summary: Three 16 bit unsigned integers
+description:
+ Vector version of the basic ushort type. Provides three ushort fields packed
+ into a single 64 bit field with 64 bit alignment.
+end:
+
+type: ushort4
+simple: ushort __attribute__((ext_vector_type(4)))
+summary: Four 16 bit unsigned integers
+description:
+ Vector version of the basic ushort type. Provides four ushort fields packed
+ into a single 64 bit field with 64 bit alignment.
+end:
+
+
+type: uint2
+simple: uint __attribute__((ext_vector_type(2)))
+summary: Two 32 bit unsigned integers
+description:
+ Vector version of the basic uint type. Provides two uint fields packed into a
+ single 64 bit field with 64 bit alignment.
+end:
+
+type: uint3
+simple: uint __attribute__((ext_vector_type(3)))
+summary: Three 32 bit unsigned integers
+description:
+ Vector version of the basic uint type. Provides three uint fields packed into
+ a single 128 bit field with 128 bit alignment.
+end:
+
+type: uint4
+simple: uint __attribute__((ext_vector_type(4)))
+summary: Four 32 bit unsigned integers
+description:
+ Vector version of the basic uint type. Provides four uint fields packed into
+ a single 128 bit field with 128 bit alignment.
+end:
+
+
+type: ulong2
+simple: ulong __attribute__((ext_vector_type(2)))
+summary: Two 64 bit unsigned integers
+description:
+ Vector version of the basic ulong type. Provides two ulong fields packed into
+ a single 128 bit field with 128 bit alignment.
+end:
+
+type: ulong3
+simple: ulong __attribute__((ext_vector_type(3)))
+summary: Three 64 bit unsigned integers
+description:
+ Vector version of the basic ulong type. Provides three ulong fields packed
+ into a single 256 bit field with 256 bit alignment.
+end:
+
+type: ulong4
+simple: ulong __attribute__((ext_vector_type(4)))
+summary: Four 64 bit unsigned integers
+description:
+ Vector version of the basic ulong type. Provides four ulong fields packed
+ into a single 256 bit field with 256 bit alignment.
+end:
+
+
+type: char2
+simple: char __attribute__((ext_vector_type(2)))
+summary: Two 8 bit signed integers
+description:
+ Vector version of the basic char type. Provides two char fields packed into a
+ single 16 bit field with 16 bit alignment.
+end:
+
+type: char3
+simple: char __attribute__((ext_vector_type(3)))
+summary: Three 8 bit signed integers
+description:
+ Vector version of the basic char type. Provides three char fields packed into
+ a single 32 bit field with 32 bit alignment.
+end:
+
+type: char4
+simple: char __attribute__((ext_vector_type(4)))
+summary: Four 8 bit signed integers
+description:
+ Vector version of the basic char type. Provides four char fields packed into
+ a single 32 bit field with 32 bit alignment.
+end:
+
+type: short2
+simple: short __attribute__((ext_vector_type(2)))
+summary: Two 16 bit signed integers
+description:
+ Vector version of the basic short type. Provides two short fields packed into
+ a single 32 bit field with 32 bit alignment.
+end:
+
+type: short3
+simple: short __attribute__((ext_vector_type(3)))
+summary: Three 16 bit signed integers
+description:
+ Vector version of the basic short type. Provides three short fields packed
+ into a single 64 bit field with 64 bit alignment.
+end:
+
+type: short4
+simple: short __attribute__((ext_vector_type(4)))
+summary: Four 16 bit signed integers
+description:
+ Vector version of the basic short type. Provides four short fields packed
+ into a single 64 bit field with 64 bit alignment.
+end:
+
+
+type: int2
+simple: int __attribute__((ext_vector_type(2)))
+summary: Two 32 bit signed integers
+description:
+ Vector version of the basic int type. Provides two int fields packed into a
+ single 64 bit field with 64 bit alignment.
+end:
+
+type: int3
+simple: int __attribute__((ext_vector_type(3)))
+summary: Three 32 bit signed integers
+description:
+ Vector version of the basic int type. Provides three int fields packed into a
+ single 128 bit field with 128 bit alignment.
+end:
+
+type: int4
+simple: int __attribute__((ext_vector_type(4)))
+summary: Four 32 bit signed integers
+description:
+ Vector version of the basic int type. Provides two four fields packed into a
+ single 128 bit field with 128 bit alignment.
+end:
+
+
+type: long2
+simple: long __attribute__((ext_vector_type(2)))
+summary: Two 64 bit signed integers
+description:
+ Vector version of the basic long type. Provides two long fields packed into a
+ single 128 bit field with 128 bit alignment.
+end:
+
+type: long3
+simple: long __attribute__((ext_vector_type(3)))
+summary: Three 64 bit signed integers
+description:
+ Vector version of the basic long type. Provides three long fields packed into
+ a single 256 bit field with 256 bit alignment.
+end:
+
+type: long4
+simple: long __attribute__((ext_vector_type(4)))
+summary: Four 64 bit signed integers
+description:
+ Vector version of the basic long type. Provides four long fields packed into
+ a single 256 bit field with 256 bit alignment.
+end:
+
+type: rs_matrix4x4
+struct:
+field: float m[16]
+summary: 4x4 matrix of 32 bit floats
+description:
+ Native holder for RS matrix. Elements are stored in the array at the
+ location [row*4 + col]
+end:
+
+type: rs_matrix3x3
+struct:
+field: float m[9]
+summary: 3x3 matrix of 32 bit floats
+description:
+ Native holder for RS matrix. Elements are stored in the array at the
+ location [row*3 + col]
+end:
+
+type: rs_matrix2x2
+struct:
+field: float m[4]
+summary: 2x2 matrix of 32 bit floats
+description:
+ Native holder for RS matrix. Elements are stored in the array at the
+ location [row*2 + col]
+end:
+
+type: rs_quaternion
+simple: float4
+summary: Quarternion
+description:
+ Quaternion type for use with the quaternion functions
+end:
+
+type: rs_allocation_cubemap_face
+version: 14
+enum:
+value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0
+value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1
+value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2
+value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3
+value: RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4
+value: RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
+summary: Enum for selecting cube map faces
+description:
+end:
+
+type: rs_allocation_usage_type
+version: 14
+enum:
+value: RS_ALLOCATION_USAGE_SCRIPT = 0x0001
+value: RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, "Deprecated."
+value: RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, "Deprecated."
+value: RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, "Deprecated."
+value: RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010, "Deprecated."
+summary: Bitfield to specify the usage types for an allocation
+description:
+ These values are ORed together to specify which usages or memory spaces are
+ relevant to an allocation or an operation on an allocation.
+end:
+
+type: rs_primitive
+version: 16
+size: 32
+enum:
+value: RS_PRIMITIVE_POINT = 0, "Vertex data will be rendered as a series of points"
+value: RS_PRIMITIVE_LINE = 1, "Vertex pairs will be rendered as lines"
+value: RS_PRIMITIVE_LINE_STRIP = 2, "Vertex data will be rendered as a connected line strip"
+value: RS_PRIMITIVE_TRIANGLE = 3, "Vertices will be rendered as individual triangles"
+value: RS_PRIMITIVE_TRIANGLE_STRIP = 4, "Vertices will be rendered as a connected triangle strip defined by the first three vertices with each additional triangle defined by a new vertex"
+value: RS_PRIMITIVE_TRIANGLE_FAN = 5, "Vertices will be rendered as a sequence of triangles that all share first vertex as the origin"
+value: RS_PRIMITIVE_INVALID = 100, "Invalid primitive"
+summary: How to intepret mesh vertex data
+description:
+ Describes the way mesh vertex data is interpreted when rendering
+end:
+
+type: rs_data_type
+version: 16
+enum:
+value: RS_TYPE_NONE = 0
+value: RS_TYPE_FLOAT_32 = 2
+value: RS_TYPE_FLOAT_64 = 3
+value: RS_TYPE_SIGNED_8 = 4
+value: RS_TYPE_SIGNED_16 = 5
+value: RS_TYPE_SIGNED_32 = 6
+value: RS_TYPE_SIGNED_64 = 7
+value: RS_TYPE_UNSIGNED_8 = 8
+value: RS_TYPE_UNSIGNED_16 = 9
+value: RS_TYPE_UNSIGNED_32 = 10
+value: RS_TYPE_UNSIGNED_64 = 11
+value: RS_TYPE_BOOLEAN = 12
+value: RS_TYPE_UNSIGNED_5_6_5 = 13
+value: RS_TYPE_UNSIGNED_5_5_5_1 = 14
+value: RS_TYPE_UNSIGNED_4_4_4_4 = 15
+value: RS_TYPE_MATRIX_4X4 = 16
+value: RS_TYPE_MATRIX_3X3 = 17
+value: RS_TYPE_MATRIX_2X2 = 18
+value: RS_TYPE_ELEMENT = 1000
+value: RS_TYPE_TYPE = 1001
+value: RS_TYPE_ALLOCATION = 1002
+value: RS_TYPE_SAMPLER = 1003
+value: RS_TYPE_SCRIPT = 1004
+value: RS_TYPE_MESH = 1005
+value: RS_TYPE_PROGRAM_FRAGMENT = 1006
+value: RS_TYPE_PROGRAM_VERTEX = 1007
+value: RS_TYPE_PROGRAM_RASTER = 1008
+value: RS_TYPE_PROGRAM_STORE = 1009
+value: RS_TYPE_FONT = 1010
+value: RS_TYPE_INVALID = 10000
+summary: Element data types
+description:
+ DataType represents the basic type information for a basic element. The
+ naming convention follows. For numeric types it is FLOAT,
+ SIGNED, or UNSIGNED followed by the _BITS where BITS is the
+ size of the data. BOOLEAN is a true / false (1,0)
+ represented in an 8 bit container. The UNSIGNED variants
+ with multiple bit definitions are for packed graphical data
+ formats and represent vectors with per vector member sizes
+ which are treated as a single unit for packing and alignment
+ purposes.
+
+ MATRIX the three matrix types contain FLOAT_32 elements and are treated
+ as 32 bits for alignment purposes.
+
+ RS_* objects. 32 bit opaque handles.
+end:
+
+type: rs_data_kind
+version: 16
+enum:
+value: RS_KIND_USER = 0
+value: RS_KIND_PIXEL_L = 7
+value: RS_KIND_PIXEL_A = 8
+value: RS_KIND_PIXEL_LA = 9
+value: RS_KIND_PIXEL_RGB = 10
+value: RS_KIND_PIXEL_RGBA = 11
+value: RS_KIND_PIXEL_DEPTH = 12
+value: RS_KIND_PIXEL_YUV = 13
+value: RS_KIND_INVALID = 100
+summary: Element data kind
+description:
+ The special interpretation of the data if required. This is primarly
+ useful for graphical data. USER indicates no special interpretation is
+ expected. PIXEL is used in conjunction with the standard data types for
+ representing texture formats.
+end:
+
+type: rs_depth_func
+version: 16
+size: 32
+enum:
+value: RS_DEPTH_FUNC_ALWAYS = 0, "Always drawn"
+value: RS_DEPTH_FUNC_LESS = 1, "Drawn if the incoming depth value is less than that in the depth buffer"
+value: RS_DEPTH_FUNC_LEQUAL = 2, "Drawn if the incoming depth value is less or equal to that in the depth buffer"
+value: RS_DEPTH_FUNC_GREATER = 3, "Drawn if the incoming depth value is greater than that in the depth buffer"
+value: RS_DEPTH_FUNC_GEQUAL = 4, "Drawn if the incoming depth value is greater or equal to that in the depth buffer"
+value: RS_DEPTH_FUNC_EQUAL = 5, "Drawn if the incoming depth value is equal to that in the depth buffer"
+value: RS_DEPTH_FUNC_NOTEQUAL = 6, "Drawn if the incoming depth value is not equal to that in the depth buffer"
+value: RS_DEPTH_FUNC_INVALID = 100, "Invalid depth function"
+summary: Depth function
+description:
+ Specifies conditional drawing depending on the comparison of the incoming
+ depth to that found in the depth buffer.
+end:
+
+type: rs_blend_src_func
+version: 16
+size: 32
+enum:
+value: RS_BLEND_SRC_ZERO = 0
+value: RS_BLEND_SRC_ONE = 1
+value: RS_BLEND_SRC_DST_COLOR = 2
+value: RS_BLEND_SRC_ONE_MINUS_DST_COLOR = 3
+value: RS_BLEND_SRC_SRC_ALPHA = 4
+value: RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA = 5
+value: RS_BLEND_SRC_DST_ALPHA = 6
+value: RS_BLEND_SRC_ONE_MINUS_DST_ALPHA = 7
+value: RS_BLEND_SRC_SRC_ALPHA_SATURATE = 8
+value: RS_BLEND_SRC_INVALID = 100
+summary: Blend source function
+description:
+end:
+
+type: rs_blend_dst_func
+version: 16
+size: 32
+enum:
+value: RS_BLEND_DST_ZERO = 0
+value: RS_BLEND_DST_ONE = 1
+value: RS_BLEND_DST_SRC_COLOR = 2
+value: RS_BLEND_DST_ONE_MINUS_SRC_COLOR = 3
+value: RS_BLEND_DST_SRC_ALPHA = 4
+value: RS_BLEND_DST_ONE_MINUS_SRC_ALPHA = 5
+value: RS_BLEND_DST_DST_ALPHA = 6
+value: RS_BLEND_DST_ONE_MINUS_DST_ALPHA = 7
+value: RS_BLEND_DST_INVALID = 100
+summary: Blend destination function
+description:
+end:
+
+type: rs_cull_mode
+version: 16
+size: 32
+enum:
+value: RS_CULL_BACK = 0
+value: RS_CULL_FRONT = 1
+value: RS_CULL_NONE = 2
+value: RS_CULL_INVALID = 100
+summary: Culling mode
+description:
+end:
+
+type: rs_sampler_value
+version: 16
+enum:
+value: RS_SAMPLER_NEAREST = 0
+value: RS_SAMPLER_LINEAR = 1
+value: RS_SAMPLER_LINEAR_MIP_LINEAR = 2
+value: RS_SAMPLER_WRAP = 3
+value: RS_SAMPLER_CLAMP = 4
+value: RS_SAMPLER_LINEAR_MIP_NEAREST = 5
+value: RS_SAMPLER_MIRRORED_REPEAT = 6
+value: RS_SAMPLER_INVALID = 100
+summary: Sampler wrap T value
+description:
+end:
diff --git a/api/rs_value_types.spec b/api/rs_value_types.spec
deleted file mode 100644
index 1e6eeed0..00000000
--- a/api/rs_value_types.spec
+++ /dev/null
@@ -1,407 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: Standard RenderScript types
-description:
- Integers:<ul>
- <li>8 bit: char, int8_t</li>
- <li>16 bit: short, int16_t</li>
- <li>32 bit: int, in32_t</li>
- <li>64 bit: long, long long, int64_t</li></ul>
-
- Unsigned integers:<ul>
- <li>8 bit: uchar, uint8_t</li>
- <li>16 bit: ushort, uint16_t</li>
- <li>32 bit: uint, uint32_t</li>
- <li>64 bit: ulong, uint64_t</li></ul>
-
- Floating point:<ul>
- <li>32 bit: float</li>
- <li>64 bit: double</li></ul>
-
- Vectors of length 2, 3, and 4 are supported for all the types above.
-end:
-
-type: int8_t
-simple: char
-summary: 8 bit signed integer
-description:
- 8 bit integer type
-end:
-
-type: int16_t
-simple: short
-summary: 16 bit signed integer
-description:
- 16 bit integer type
-end:
-
-type: int32_t
-simple: int
-summary: 32 bit signed integer
-description:
- 32 bit integer type
-end:
-
-type: int64_t
-version: 9 20
-simple: long long
-summary: 64 bit signed integer
-description:
- 64 bit integer type
-end:
-
-type: int64_t
-version: 21
-simple: long
-end:
-
-type: uint8_t
-simple: unsigned char
-summary: 8 bit unsigned integer
-description:
- 8 bit unsigned integer type
-end:
-
-type: uint16_t
-simple: unsigned short
-summary: 16 bit unsigned integer
-description:
- 16 bit unsigned integer type
-end:
-
-type: uint32_t
-simple: unsigned int
-summary: 32 bit unsigned integer
-description:
- 32 bit unsigned integer type
-end:
-
-type: uint64_t
-version: 9 20
-simple: unsigned long long
-summary: 64 bit unsigned integer
-description:
- 64 bit unsigned integer type
-end:
-
-type: uint64_t
-version: 21
-simple: unsigned long
-end:
-
-type: uchar
-simple: uint8_t
-summary: 8 bit unsigned integer
-description:
- 8 bit unsigned integer type
-end:
-
-type: ushort
-simple: uint16_t
-summary: 16 bit unsigned integer
-description:
- 16 bit unsigned integer type
-end:
-
-type: uint
-simple: uint32_t
-summary: 32 bit unsigned integer
-description:
- 32 bit unsigned integer type
-end:
-
-type: ulong
-simple: uint64_t
-summary: 64 bit unsigned integer
-description:
- Typedef for unsigned long (use for 64-bit unsigned integers)
-end:
-
-type: size_t
-size: 64
-simple: uint64_t
-summary: Unsigned size type
-description:
- Typedef for size_t
-end:
-
-type: size_t
-size: 32
-simple: uint32_t
-end:
-
-type: ssize_t
-size: 64
-simple: int64_t
-summary: Signed size type
-description:
- Typedef for ssize_t
-end:
-
-type: ssize_t
-size: 32
-simple: int32_t
-end:
-
-type: float2
-simple: float __attribute__((ext_vector_type(2)))
-summary: Two 32 bit floats
-description:
- Vector version of the basic float type.
- Provides two float fields packed into a single 64 bit field with 64 bit alignment.
-end:
-
-type: float3
-simple: float __attribute__((ext_vector_type(3)))
-summary: Three 32 bit floats
-description:
- Vector version of the basic float type.
- Provides three float fields packed into a single 128 bit field with 128 bit alignment.
-end:
-
-type: float4
-simple: float __attribute__((ext_vector_type(4)))
-summary: Four 32 bit floats
-description:
- Vector version of the basic float type.
- Provides four float fields packed into a single 128 bit field with 128 bit alignment.
-end:
-
-
-type: double2
-simple: double __attribute__((ext_vector_type(2)))
-summary: Two 64 bit floats
-description:
- Vector version of the basic double type. Provides two double fields packed
- into a single 128 bit field with 128 bit alignment.
-end:
-
-type: double3
-simple: double __attribute__((ext_vector_type(3)))
-summary: Three 64 bit floats
-description:
- Vector version of the basic double type. Provides three double fields packed
- into a single 256 bit field with 256 bit alignment.
-end:
-
-type: double4
-simple: double __attribute__((ext_vector_type(4)))
-summary: Four 64 bit floats
-description:
- Vector version of the basic double type. Provides four double fields packed
- into a single 256 bit field with 256 bit alignment.
-end:
-
-
-type: uchar2
-simple: uchar __attribute__((ext_vector_type(2)))
-summary: Two 8 bit unsigned integers
-description:
- Vector version of the basic uchar type. Provides two uchar fields packed
- into a single 16 bit field with 16 bit alignment.
-end:
-
-type: uchar3
-simple: uchar __attribute__((ext_vector_type(3)))
-summary: Three 8 bit unsigned integers
-description:
- Vector version of the basic uchar type. Provides three uchar fields packed
- into a single 32 bit field with 32 bit alignment.
-end:
-
-type: uchar4
-simple: uchar __attribute__((ext_vector_type(4)))
-summary: Four 8 bit unsigned integers
-description:
- Vector version of the basic uchar type. Provides four uchar fields packed
- into a single 32 bit field with 32 bit alignment.
-end:
-
-
-type: ushort2
-simple: ushort __attribute__((ext_vector_type(2)))
-summary: Two 16 bit unsigned integers
-description:
- Vector version of the basic ushort type. Provides two ushort fields packed
- into a single 32 bit field with 32 bit alignment.
-end:
-
-type: ushort3
-simple: ushort __attribute__((ext_vector_type(3)))
-summary: Three 16 bit unsigned integers
-description:
- Vector version of the basic ushort type. Provides three ushort fields packed
- into a single 64 bit field with 64 bit alignment.
-end:
-
-type: ushort4
-simple: ushort __attribute__((ext_vector_type(4)))
-summary: Four 16 bit unsigned integers
-description:
- Vector version of the basic ushort type. Provides four ushort fields packed
- into a single 64 bit field with 64 bit alignment.
-end:
-
-
-type: uint2
-simple: uint __attribute__((ext_vector_type(2)))
-summary: Two 32 bit unsigned integers
-description:
- Vector version of the basic uint type. Provides two uint fields packed into a
- single 64 bit field with 64 bit alignment.
-end:
-
-type: uint3
-simple: uint __attribute__((ext_vector_type(3)))
-summary: Three 32 bit unsigned integers
-description:
- Vector version of the basic uint type. Provides three uint fields packed into
- a single 128 bit field with 128 bit alignment.
-end:
-
-type: uint4
-simple: uint __attribute__((ext_vector_type(4)))
-summary: Four 32 bit unsigned integers
-description:
- Vector version of the basic uint type. Provides four uint fields packed into
- a single 128 bit field with 128 bit alignment.
-end:
-
-
-type: ulong2
-simple: ulong __attribute__((ext_vector_type(2)))
-summary: Two 64 bit unsigned integers
-description:
- Vector version of the basic ulong type. Provides two ulong fields packed into
- a single 128 bit field with 128 bit alignment.
-end:
-
-type: ulong3
-simple: ulong __attribute__((ext_vector_type(3)))
-summary: Three 64 bit unsigned integers
-description:
- Vector version of the basic ulong type. Provides three ulong fields packed
- into a single 256 bit field with 256 bit alignment.
-end:
-
-type: ulong4
-simple: ulong __attribute__((ext_vector_type(4)))
-summary: Four 64 bit unsigned integers
-description:
- Vector version of the basic ulong type. Provides four ulong fields packed
- into a single 256 bit field with 256 bit alignment.
-end:
-
-
-type: char2
-simple: char __attribute__((ext_vector_type(2)))
-summary: Two 8 bit signed integers
-description:
- Vector version of the basic char type. Provides two char fields packed into a
- single 16 bit field with 16 bit alignment.
-end:
-
-type: char3
-simple: char __attribute__((ext_vector_type(3)))
-summary: Three 8 bit signed integers
-description:
- Vector version of the basic char type. Provides three char fields packed into
- a single 32 bit field with 32 bit alignment.
-end:
-
-type: char4
-simple: char __attribute__((ext_vector_type(4)))
-summary: Four 8 bit signed integers
-description:
- Vector version of the basic char type. Provides four char fields packed into
- a single 32 bit field with 32 bit alignment.
-end:
-
-type: short2
-simple: short __attribute__((ext_vector_type(2)))
-summary: Two 16 bit signed integers
-description:
- Vector version of the basic short type. Provides two short fields packed into
- a single 32 bit field with 32 bit alignment.
-end:
-
-type: short3
-simple: short __attribute__((ext_vector_type(3)))
-summary: Three 16 bit signed integers
-description:
- Vector version of the basic short type. Provides three short fields packed
- into a single 64 bit field with 64 bit alignment.
-end:
-
-type: short4
-simple: short __attribute__((ext_vector_type(4)))
-summary: Four 16 bit signed integers
-description:
- Vector version of the basic short type. Provides four short fields packed
- into a single 64 bit field with 64 bit alignment.
-end:
-
-
-type: int2
-simple: int __attribute__((ext_vector_type(2)))
-summary: Two 32 bit signed integers
-description:
- Vector version of the basic int type. Provides two int fields packed into a
- single 64 bit field with 64 bit alignment.
-end:
-
-type: int3
-simple: int __attribute__((ext_vector_type(3)))
-summary: Three 32 bit signed integers
-description:
- Vector version of the basic int type. Provides three int fields packed into a
- single 128 bit field with 128 bit alignment.
-end:
-
-type: int4
-simple: int __attribute__((ext_vector_type(4)))
-summary: Four 32 bit signed integers
-description:
- Vector version of the basic int type. Provides two four fields packed into a
- single 128 bit field with 128 bit alignment.
-end:
-
-
-type: long2
-simple: long __attribute__((ext_vector_type(2)))
-summary: Two 64 bit signed integers
-description:
- Vector version of the basic long type. Provides two long fields packed into a
- single 128 bit field with 128 bit alignment.
-end:
-
-type: long3
-simple: long __attribute__((ext_vector_type(3)))
-summary: Three 64 bit signed integers
-description:
- Vector version of the basic long type. Provides three long fields packed into
- a single 256 bit field with 256 bit alignment.
-end:
-
-type: long4
-simple: long __attribute__((ext_vector_type(4)))
-summary: Four 64 bit signed integers
-description:
- Vector version of the basic long type. Provides four long fields packed into
- a single 256 bit field with 256 bit alignment.
-end:
diff --git a/api/rs_vector_math.spec b/api/rs_vector_math.spec
deleted file mode 100644
index d25bb173..00000000
--- a/api/rs_vector_math.spec
+++ /dev/null
@@ -1,197 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-header:
-summary: TODO Add documentation
-description:
- TODO Add documentation
-end:
-
-function: cross
-version: 9
-attrib: const
-w: 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Cross product of two vectors
-description:
- Computes the cross product of two vectors.
-test: vector
-end:
-
-function: distance
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Distance between two points
-description:
- Compute the distance between two points.
-
- See also @fast_distance(), @native_distance().
-test: vector
-end:
-
-function: dot
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Dot product of two vectors
-description:
- Computes the dot product of two vectors.
-test: vector
-end:
-
-function: fast_distance
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Approximate distance between two points
-description:
- Computes the approximate distance between two points.
-
- The precision is what would be expected from doing the computation using 16 bit floating point values.
-
- See also @distance(), @native_distance().
-test: vector
-end:
-
-function: fast_length
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 v
-summary: Approximate length of a vector
-description:
- Computes the approximate length of a vector.
-
- The precision is what would be expected from doing the computation using 16 bit floating point values.
-
- See also @length(), @native_length().
-test: vector
-end:
-
-function: fast_normalize
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate normalized vector
-description:
- Approximately normalizes a vector.
-
- For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
-
- The precision is what would be expected from doing the computation using 16 bit floating point values.
-
- See also @normalize(), @native_normalize().
-test: vector
-end:
-
-function: length
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 v
-summary: Length of a vector
-description:
- Computes the length of a vector.
-
- See also @fast_length(), @native_length().
-test: vector
-end:
-
-function: native_distance
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Approximate distance between two points
-description:
- Computes the approximate distance between two points.
-
- See also @distance(), @fast_distance().
-test: vector
-end:
-
-function: native_length
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2
-arg: #2#1 v
-summary: Approximate length of a vector
-description:
- Compute the approximate length of a vector.
-
- See also @length(), @fast_length().
-test: vector
-end:
-
-function: native_normalize
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximately normalize a vector
-description:
- Approximately normalizes a vector.
-
- See also @normalize(), @fast_normalize().
-test: vector
-end:
-
-function: normalize
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Normalize a vector
-description:
- Normalize a vector.
-
- For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values.
-
- See also @fast_normalize(), @native_normalize().
-test: vector
-end: