blob: bb4aafbf10276eaced3b6c8c21319f35da9d8269 [file] [log] [blame]
Jason Samsc4cdf452010-07-07 11:55:51 -07001#ifndef __RS_MATH_RSH__
2#define __RS_MATH_RSH__
3
Jason Sams7dce6bc2010-08-06 16:22:50 -07004// Debugging, print to the LOG a description string and a value.
5extern void __attribute__((overloadable))
6 rsDebug(const char *, float);
7extern void __attribute__((overloadable))
8 rsDebug(const char *, float, float);
9extern void __attribute__((overloadable))
10 rsDebug(const char *, float, float, float);
11extern void __attribute__((overloadable))
12 rsDebug(const char *, float, float, float, float);
13extern void __attribute__((overloadable))
14 rsDebug(const char *, const rs_matrix4x4 *);
15extern void __attribute__((overloadable))
16 rsDebug(const char *, const rs_matrix3x3 *);
17extern void __attribute__((overloadable))
18 rsDebug(const char *, const rs_matrix2x2 *);
19extern void __attribute__((overloadable))
20 rsDebug(const char *, int);
21extern void __attribute__((overloadable))
22 rsDebug(const char *, uint);
23extern void __attribute__((overloadable))
24 rsDebug(const char *, const void *);
25#define RS_DEBUG(a) rsDebug(#a, a)
26#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__)
27
28
Jason Sams22fa3712010-05-19 17:22:57 -070029#include "rs_cl.rsh"
Jason Sams275b1e92010-05-28 18:08:16 -070030#include "rs_core.rsh"
31
Jason Sams22fa3712010-05-19 17:22:57 -070032// Allocations
Jason Sams73495472010-07-29 17:31:14 -070033
34// Return the rs_allocation associated with a bound data
35// pointer.
Jason Samsef5867a2010-07-28 11:17:53 -070036extern rs_allocation __attribute__((overloadable))
37 rsGetAllocation(const void *);
Jason Sams73495472010-07-29 17:31:14 -070038
39// Return the dimensions associated with an allocation.
Jason Samsef5867a2010-07-28 11:17:53 -070040extern uint32_t __attribute__((overloadable))
41 rsAllocationGetDimX(rs_allocation);
42extern uint32_t __attribute__((overloadable))
43 rsAllocationGetDimY(rs_allocation);
44extern uint32_t __attribute__((overloadable))
45 rsAllocationGetDimZ(rs_allocation);
46extern uint32_t __attribute__((overloadable))
47 rsAllocationGetDimLOD(rs_allocation);
48extern uint32_t __attribute__((overloadable))
49 rsAllocationGetDimFaces(rs_allocation);
Jason Sams22fa3712010-05-19 17:22:57 -070050
Jason Sams73495472010-07-29 17:31:14 -070051// Extract a single element from an allocation.
Jason Sams7bf29dd2010-07-19 15:38:19 -070052extern const void * __attribute__((overloadable))
53 rsGetElementAt(rs_allocation, uint32_t x);
54extern const void * __attribute__((overloadable))
55 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y);
56extern const void * __attribute__((overloadable))
57 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z);
Jason Sams22fa3712010-05-19 17:22:57 -070058
Jason Sams73495472010-07-29 17:31:14 -070059// Return a random value between 0 (or min_value) and max_malue.
60extern int __attribute__((overloadable))
61 rsRand(int max_value);
62extern int __attribute__((overloadable))
63 rsRand(int min_value, int max_value);
64extern float __attribute__((overloadable))
65 rsRand(float max_value);
66extern float __attribute__((overloadable))
67 rsRand(float min_value, float max_value);
Jason Sams22fa3712010-05-19 17:22:57 -070068
Jason Sams73495472010-07-29 17:31:14 -070069// return the fractional part of a float
70// min(v - ((int)floor(v)), 0x1.fffffep-1f);
71extern float __attribute__((overloadable))
72 rsFrac(float);
Jason Sams22fa3712010-05-19 17:22:57 -070073
74// time
Jason Sams73495472010-07-29 17:31:14 -070075extern int32_t __attribute__((overloadable))
76 rsSecond(void);
77extern int32_t __attribute__((overloadable))
78 rsMinute(void);
79extern int32_t __attribute__((overloadable))
80 rsHour(void);
81extern int32_t __attribute__((overloadable))
82 rsDay(void);
83extern int32_t __attribute__((overloadable))
84 rsMonth(void);
85extern int32_t __attribute__((overloadable))
86 rsYear(void);
Jason Sams22fa3712010-05-19 17:22:57 -070087
Jason Sams73495472010-07-29 17:31:14 -070088// Return the current system clock in milliseconds
89extern int64_t __attribute__((overloadable))
90 rsUptimeMillis(void);
91
92// Return the current system clock in nanoseconds
93extern int64_t __attribute__((overloadable))
94 rsUptimeNanos(void);
95
96// Return the time in seconds since function was last called in this script.
97extern float __attribute__((overloadable))
98 rsGetDt(void);
99
100// Send a message back to the client. Will not block and returns true
101// if the message was sendable and false if the fifo was full.
102// A message ID is required. Data payload is optional.
103extern bool __attribute__((overloadable))
104 rsSendToClient(int cmdID);
105extern bool __attribute__((overloadable))
106 rsSendToClient(int cmdID, const void *data, uint len);
107
108// Send a message back to the client, blocking until the message is queued.
109// A message ID is required. Data payload is optional.
110extern void __attribute__((overloadable))
111 rsSendToClientBlocking(int cmdID);
112extern void __attribute__((overloadable))
113 rsSendToClientBlocking(int cmdID, const void *data, uint len);
Jason Sams22fa3712010-05-19 17:22:57 -0700114
Jason Samsdd663fa2010-08-11 13:26:28 -0700115
Jason Samsc61346b2010-05-28 18:23:22 -0700116// Script to Script
Jason Samsdd663fa2010-08-11 13:26:28 -0700117enum rs_for_each_strategy {
118 RS_FOR_EACH_STRATEGY_SERIAL,
119 RS_FOR_EACH_STRATEGY_DONT_CARE,
120 RS_FOR_EACH_STRATEGY_DST_LINEAR,
121 RS_FOR_EACH_STRATEGY_TILE_SMALL,
122 RS_FOR_EACH_STRATEGY_TILE_MEDIUM,
123 RS_FOR_EACH_STRATEGY_TILE_LARGE
124};
125
Jason Samsace3e012010-07-15 17:11:13 -0700126typedef struct rs_script_call {
Jason Samsdd663fa2010-08-11 13:26:28 -0700127 enum rs_for_each_strategy strategy;
Jason Sams479e2922010-07-09 15:34:32 -0700128 uint32_t xStart;
129 uint32_t xEnd;
130 uint32_t yStart;
131 uint32_t yEnd;
132 uint32_t zStart;
133 uint32_t zEnd;
134 uint32_t arrayStart;
135 uint32_t arrayEnd;
Jason Samsace3e012010-07-15 17:11:13 -0700136} rs_script_call_t;
Jason Sams479e2922010-07-09 15:34:32 -0700137
Jason Sams73495472010-07-29 17:31:14 -0700138extern void __attribute__((overloadable))
139 rsForEach(rs_script script, rs_allocation input,
140 rs_allocation output, const void * usrData);
Jason Samsace3e012010-07-15 17:11:13 -0700141
Jason Sams73495472010-07-29 17:31:14 -0700142extern void __attribute__((overloadable))
143 rsForEach(rs_script script, rs_allocation input,
144 rs_allocation output, const void * usrData,
145 const rs_script_call_t *);
Jason Samsc61346b2010-05-28 18:23:22 -0700146
Jason Samsc4cdf452010-07-07 11:55:51 -0700147#endif