blob: a74c0e018563309649be39776346db2f5eb41f17 [file] [log] [blame]
Jason Samsc4cdf452010-07-07 11:55:51 -07001#ifndef __RS_MATH_RSH__
2#define __RS_MATH_RSH__
3
Jason Samsc0936852010-08-16 12:41:48 -07004extern void __attribute__((overloadable))
5 rsSetObject(rs_element *dst, rs_element src);
6extern void __attribute__((overloadable))
7 rsSetObject(rs_type *dst, rs_type src);
8extern void __attribute__((overloadable))
9 rsSetObject(rs_allocation *dst, rs_allocation src);
10extern void __attribute__((overloadable))
11 rsSetObject(rs_sampler *dst, rs_sampler src);
12extern void __attribute__((overloadable))
13 rsSetObject(rs_script *dst, rs_script src);
14extern void __attribute__((overloadable))
15 rsSetObject(rs_mesh *dst, rs_mesh src);
16extern void __attribute__((overloadable))
17 rsSetObject(rs_program_fragment *dst, rs_program_fragment src);
18extern void __attribute__((overloadable))
19 rsSetObject(rs_program_vertex *dst, rs_program_vertex src);
20extern void __attribute__((overloadable))
21 rsSetObject(rs_program_raster *dst, rs_program_raster src);
22extern void __attribute__((overloadable))
23 rsSetObject(rs_program_store *dst, rs_program_store src);
24extern void __attribute__((overloadable))
25 rsSetObject(rs_font *dst, rs_font src);
26
27extern void __attribute__((overloadable))
28 rsClearObject(rs_element *dst);
29extern void __attribute__((overloadable))
30 rsClearObject(rs_type *dst);
31extern void __attribute__((overloadable))
32 rsClearObject(rs_allocation *dst);
33extern void __attribute__((overloadable))
34 rsClearObject(rs_sampler *dst);
35extern void __attribute__((overloadable))
36 rsClearObject(rs_script *dst);
37extern void __attribute__((overloadable))
38 rsClearObject(rs_mesh *dst);
39extern void __attribute__((overloadable))
40 rsClearObject(rs_program_fragment *dst);
41extern void __attribute__((overloadable))
42 rsClearObject(rs_program_vertex *dst);
43extern void __attribute__((overloadable))
44 rsClearObject(rs_program_raster *dst);
45extern void __attribute__((overloadable))
46 rsClearObject(rs_program_store *dst);
47extern void __attribute__((overloadable))
48 rsClearObject(rs_font *dst);
49
50extern bool __attribute__((overloadable))
51 rsIsObject(rs_element);
52extern bool __attribute__((overloadable))
53 rsIsObject(rs_type);
54extern bool __attribute__((overloadable))
55 rsIsObject(rs_allocation);
56extern bool __attribute__((overloadable))
57 rsIsObject(rs_sampler);
58extern bool __attribute__((overloadable))
59 rsIsObject(rs_script);
60extern bool __attribute__((overloadable))
61 rsIsObject(rs_mesh);
62extern bool __attribute__((overloadable))
63 rsIsObject(rs_program_fragment);
64extern bool __attribute__((overloadable))
65 rsIsObject(rs_program_vertex);
66extern bool __attribute__((overloadable))
67 rsIsObject(rs_program_raster);
68extern bool __attribute__((overloadable))
69 rsIsObject(rs_program_store);
70extern bool __attribute__((overloadable))
71 rsIsObject(rs_font);
72
73
74
Jason Sams22fa3712010-05-19 17:22:57 -070075// Allocations
Jason Sams73495472010-07-29 17:31:14 -070076
77// Return the rs_allocation associated with a bound data
78// pointer.
Jason Samsef5867a2010-07-28 11:17:53 -070079extern rs_allocation __attribute__((overloadable))
80 rsGetAllocation(const void *);
Jason Sams73495472010-07-29 17:31:14 -070081
Alex Sakhartchouk1e5168d2010-09-01 16:34:48 -070082// Mark the allocation dirty and notify those using it
83extern void __attribute__((overloadable))
84 rsAllocationMarkDirty(rs_allocation);
85
Jason Sams73495472010-07-29 17:31:14 -070086// Return the dimensions associated with an allocation.
Jason Samsef5867a2010-07-28 11:17:53 -070087extern uint32_t __attribute__((overloadable))
88 rsAllocationGetDimX(rs_allocation);
89extern uint32_t __attribute__((overloadable))
90 rsAllocationGetDimY(rs_allocation);
91extern uint32_t __attribute__((overloadable))
92 rsAllocationGetDimZ(rs_allocation);
93extern uint32_t __attribute__((overloadable))
94 rsAllocationGetDimLOD(rs_allocation);
95extern uint32_t __attribute__((overloadable))
96 rsAllocationGetDimFaces(rs_allocation);
Jason Sams22fa3712010-05-19 17:22:57 -070097
Jason Sams73495472010-07-29 17:31:14 -070098// Extract a single element from an allocation.
Jason Sams7bf29dd2010-07-19 15:38:19 -070099extern const void * __attribute__((overloadable))
100 rsGetElementAt(rs_allocation, uint32_t x);
101extern const void * __attribute__((overloadable))
102 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y);
103extern const void * __attribute__((overloadable))
104 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z);
Jason Sams22fa3712010-05-19 17:22:57 -0700105
Jason Sams73495472010-07-29 17:31:14 -0700106// Return a random value between 0 (or min_value) and max_malue.
107extern int __attribute__((overloadable))
108 rsRand(int max_value);
109extern int __attribute__((overloadable))
110 rsRand(int min_value, int max_value);
111extern float __attribute__((overloadable))
112 rsRand(float max_value);
113extern float __attribute__((overloadable))
114 rsRand(float min_value, float max_value);
Jason Sams22fa3712010-05-19 17:22:57 -0700115
Jason Sams73495472010-07-29 17:31:14 -0700116// return the fractional part of a float
117// min(v - ((int)floor(v)), 0x1.fffffep-1f);
118extern float __attribute__((overloadable))
119 rsFrac(float);
Jason Sams22fa3712010-05-19 17:22:57 -0700120
Jason Sams73495472010-07-29 17:31:14 -0700121// Send a message back to the client. Will not block and returns true
122// if the message was sendable and false if the fifo was full.
123// A message ID is required. Data payload is optional.
124extern bool __attribute__((overloadable))
125 rsSendToClient(int cmdID);
126extern bool __attribute__((overloadable))
127 rsSendToClient(int cmdID, const void *data, uint len);
128
129// Send a message back to the client, blocking until the message is queued.
130// A message ID is required. Data payload is optional.
131extern void __attribute__((overloadable))
132 rsSendToClientBlocking(int cmdID);
133extern void __attribute__((overloadable))
134 rsSendToClientBlocking(int cmdID, const void *data, uint len);
Jason Sams22fa3712010-05-19 17:22:57 -0700135
Jason Samsdd663fa2010-08-11 13:26:28 -0700136
Jason Samsc61346b2010-05-28 18:23:22 -0700137// Script to Script
Jason Samsdd663fa2010-08-11 13:26:28 -0700138enum rs_for_each_strategy {
139 RS_FOR_EACH_STRATEGY_SERIAL,
140 RS_FOR_EACH_STRATEGY_DONT_CARE,
141 RS_FOR_EACH_STRATEGY_DST_LINEAR,
142 RS_FOR_EACH_STRATEGY_TILE_SMALL,
143 RS_FOR_EACH_STRATEGY_TILE_MEDIUM,
144 RS_FOR_EACH_STRATEGY_TILE_LARGE
145};
146
Jason Samsace3e012010-07-15 17:11:13 -0700147typedef struct rs_script_call {
Jason Samsdd663fa2010-08-11 13:26:28 -0700148 enum rs_for_each_strategy strategy;
Jason Sams479e2922010-07-09 15:34:32 -0700149 uint32_t xStart;
150 uint32_t xEnd;
151 uint32_t yStart;
152 uint32_t yEnd;
153 uint32_t zStart;
154 uint32_t zEnd;
155 uint32_t arrayStart;
156 uint32_t arrayEnd;
Jason Samsace3e012010-07-15 17:11:13 -0700157} rs_script_call_t;
Jason Sams479e2922010-07-09 15:34:32 -0700158
Jason Sams73495472010-07-29 17:31:14 -0700159extern void __attribute__((overloadable))
160 rsForEach(rs_script script, rs_allocation input,
161 rs_allocation output, const void * usrData);
Jason Samsace3e012010-07-15 17:11:13 -0700162
Jason Sams73495472010-07-29 17:31:14 -0700163extern void __attribute__((overloadable))
164 rsForEach(rs_script script, rs_allocation input,
165 rs_allocation output, const void * usrData,
166 const rs_script_call_t *);
Jason Samsc61346b2010-05-28 18:23:22 -0700167
Jason Samsc4cdf452010-07-07 11:55:51 -0700168#endif