blob: 66171d88d4d03a3b6de591a2a8bcfaf920a57f94 [file] [log] [blame]
Jason Samsc4cdf452010-07-07 11:55:51 -07001#ifndef __RS_MATH_RSH__
2#define __RS_MATH_RSH__
3
Jason Sams22fa3712010-05-19 17:22:57 -07004#include "rs_cl.rsh"
Jason Sams275b1e92010-05-28 18:08:16 -07005#include "rs_core.rsh"
6
Jason Sams22fa3712010-05-19 17:22:57 -07007// Allocations
Jason Sams73495472010-07-29 17:31:14 -07008
9// Return the rs_allocation associated with a bound data
10// pointer.
Jason Samsef5867a2010-07-28 11:17:53 -070011extern rs_allocation __attribute__((overloadable))
12 rsGetAllocation(const void *);
Jason Sams73495472010-07-29 17:31:14 -070013
14// Return the dimensions associated with an allocation.
Jason Samsef5867a2010-07-28 11:17:53 -070015extern uint32_t __attribute__((overloadable))
16 rsAllocationGetDimX(rs_allocation);
17extern uint32_t __attribute__((overloadable))
18 rsAllocationGetDimY(rs_allocation);
19extern uint32_t __attribute__((overloadable))
20 rsAllocationGetDimZ(rs_allocation);
21extern uint32_t __attribute__((overloadable))
22 rsAllocationGetDimLOD(rs_allocation);
23extern uint32_t __attribute__((overloadable))
24 rsAllocationGetDimFaces(rs_allocation);
Jason Sams22fa3712010-05-19 17:22:57 -070025
Jason Sams73495472010-07-29 17:31:14 -070026// Extract a single element from an allocation.
Jason Sams7bf29dd2010-07-19 15:38:19 -070027extern const void * __attribute__((overloadable))
28 rsGetElementAt(rs_allocation, uint32_t x);
29extern const void * __attribute__((overloadable))
30 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y);
31extern const void * __attribute__((overloadable))
32 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z);
Jason Sams22fa3712010-05-19 17:22:57 -070033
34
Jason Sams73495472010-07-29 17:31:14 -070035// Debugging, print to the LOG a description string and a value.
36extern void __attribute__((overloadable))
37 rsDebug(const char *, float);
38extern void __attribute__((overloadable))
39 rsDebug(const char *, float2);
40extern void __attribute__((overloadable))
41 rsDebug(const char *, float3);
42extern void __attribute__((overloadable))
43 rsDebug(const char *, float4);
44extern void __attribute__((overloadable))
45 rsDebug(const char *, int);
46extern void __attribute__((overloadable))
47 rsDebug(const char *, uint);
48extern void __attribute__((overloadable))
49 rsDebug(const char *, const void *);
Jason Sams22fa3712010-05-19 17:22:57 -070050#define RS_DEBUG(a) rsDebug(#a, a)
51#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__)
52
Jason Sams73495472010-07-29 17:31:14 -070053// Return a random value between 0 (or min_value) and max_malue.
54extern int __attribute__((overloadable))
55 rsRand(int max_value);
56extern int __attribute__((overloadable))
57 rsRand(int min_value, int max_value);
58extern float __attribute__((overloadable))
59 rsRand(float max_value);
60extern float __attribute__((overloadable))
61 rsRand(float min_value, float max_value);
Jason Sams22fa3712010-05-19 17:22:57 -070062
Jason Sams73495472010-07-29 17:31:14 -070063// return the fractional part of a float
64// min(v - ((int)floor(v)), 0x1.fffffep-1f);
65extern float __attribute__((overloadable))
66 rsFrac(float);
Jason Sams22fa3712010-05-19 17:22:57 -070067
68// time
Jason Sams73495472010-07-29 17:31:14 -070069extern int32_t __attribute__((overloadable))
70 rsSecond(void);
71extern int32_t __attribute__((overloadable))
72 rsMinute(void);
73extern int32_t __attribute__((overloadable))
74 rsHour(void);
75extern int32_t __attribute__((overloadable))
76 rsDay(void);
77extern int32_t __attribute__((overloadable))
78 rsMonth(void);
79extern int32_t __attribute__((overloadable))
80 rsYear(void);
Jason Sams22fa3712010-05-19 17:22:57 -070081
Jason Sams73495472010-07-29 17:31:14 -070082// Return the current system clock in milliseconds
83extern int64_t __attribute__((overloadable))
84 rsUptimeMillis(void);
85
86// Return the current system clock in nanoseconds
87extern int64_t __attribute__((overloadable))
88 rsUptimeNanos(void);
89
90// Return the time in seconds since function was last called in this script.
91extern float __attribute__((overloadable))
92 rsGetDt(void);
93
94// Send a message back to the client. Will not block and returns true
95// if the message was sendable and false if the fifo was full.
96// A message ID is required. Data payload is optional.
97extern bool __attribute__((overloadable))
98 rsSendToClient(int cmdID);
99extern bool __attribute__((overloadable))
100 rsSendToClient(int cmdID, const void *data, uint len);
101
102// Send a message back to the client, blocking until the message is queued.
103// A message ID is required. Data payload is optional.
104extern void __attribute__((overloadable))
105 rsSendToClientBlocking(int cmdID);
106extern void __attribute__((overloadable))
107 rsSendToClientBlocking(int cmdID, const void *data, uint len);
Jason Sams22fa3712010-05-19 17:22:57 -0700108
Jason Samsc61346b2010-05-28 18:23:22 -0700109// Script to Script
Jason Samsace3e012010-07-15 17:11:13 -0700110typedef struct rs_script_call {
Jason Sams479e2922010-07-09 15:34:32 -0700111 uint32_t xStart;
112 uint32_t xEnd;
113 uint32_t yStart;
114 uint32_t yEnd;
115 uint32_t zStart;
116 uint32_t zEnd;
117 uint32_t arrayStart;
118 uint32_t arrayEnd;
119
Jason Samsace3e012010-07-15 17:11:13 -0700120} rs_script_call_t;
Jason Sams479e2922010-07-09 15:34:32 -0700121
Jason Sams73495472010-07-29 17:31:14 -0700122extern void __attribute__((overloadable))
123 rsForEach(rs_script script, rs_allocation input,
124 rs_allocation output, const void * usrData);
Jason Samsace3e012010-07-15 17:11:13 -0700125
Jason Sams73495472010-07-29 17:31:14 -0700126extern void __attribute__((overloadable))
127 rsForEach(rs_script script, rs_allocation input,
128 rs_allocation output, const void * usrData,
129 const rs_script_call_t *);
Jason Samsc61346b2010-05-28 18:23:22 -0700130
Jason Samsc4cdf452010-07-07 11:55:51 -0700131#endif