blob: 221ab413273ed1c185de3afb576e143a3f1a5c94 [file] [log] [blame]
Jason Samsd19f10d2009-05-22 14:03:28 -07001#include <stdint.h>
2
3
4typedef void * RsAdapter1D;
5typedef void * RsAdapter2D;
6typedef void * RsAllocation;
7typedef void * RsContext;
8typedef void * RsDevice;
9typedef void * RsElement;
10typedef void * RsSampler;
11typedef void * RsScript;
12typedef void * RsScriptBasicTemp;
13typedef void * RsTriangleMesh;
14typedef void * RsType;
15typedef void * RsProgramFragment;
16typedef void * RsProgramFragmentStore;
17
18
19typedef struct {
20 float m[16];
21} rsc_Matrix;
22
23
24typedef struct {
25 float v[4];
26} rsc_Vector4;
27
28#define RS_PROGRAM_VERTEX_MODELVIEW_OFFSET 0
29#define RS_PROGRAM_VERTEX_PROJECTION_OFFSET 16
30#define RS_PROGRAM_VERTEX_TEXTURE_OFFSET 32
31
32typedef struct {
Jason Sams462d11b2009-06-19 16:03:18 -070033 const void * (*loadEnvVp)(uint32_t bank, uint32_t offset);
Jason Samsd19f10d2009-05-22 14:03:28 -070034
Jason Sams462d11b2009-06-19 16:03:18 -070035 float (*loadEnvF)(uint32_t bank, uint32_t offset);
36 int32_t (*loadEnvI32)(uint32_t bank, uint32_t offset);
37 uint32_t (*loadEnvU32)(uint32_t bank, uint32_t offset);
38 void (*loadEnvVec4)(uint32_t bank, uint32_t offset, rsc_Vector4 *);
39 void (*loadEnvMatrix)(uint32_t bank, uint32_t offset, rsc_Matrix *);
Jason Samsd19f10d2009-05-22 14:03:28 -070040
Jason Sams462d11b2009-06-19 16:03:18 -070041 void (*storeEnvF)(uint32_t bank, uint32_t offset, float);
42 void (*storeEnvI32)(uint32_t bank, uint32_t offset, int32_t);
43 void (*storeEnvU32)(uint32_t bank, uint32_t offset, uint32_t);
44 void (*storeEnvVec4)(uint32_t bank, uint32_t offset, const rsc_Vector4 *);
45 void (*storeEnvMatrix)(uint32_t bank, uint32_t offset, const rsc_Matrix *);
Jason Samsd19f10d2009-05-22 14:03:28 -070046
Jason Sams462d11b2009-06-19 16:03:18 -070047 void (*matrixLoadIdentity)(rsc_Matrix *);
48 void (*matrixLoadFloat)(rsc_Matrix *, const float *);
49 void (*matrixLoadMat)(rsc_Matrix *, const rsc_Matrix *);
50 void (*matrixLoadRotate)(rsc_Matrix *, float rot, float x, float y, float z);
51 void (*matrixLoadScale)(rsc_Matrix *, float x, float y, float z);
52 void (*matrixLoadTranslate)(rsc_Matrix *, float x, float y, float z);
53 void (*matrixLoadMultiply)(rsc_Matrix *, const rsc_Matrix *lhs, const rsc_Matrix *rhs);
54 void (*matrixMultiply)(rsc_Matrix *, const rsc_Matrix *rhs);
55 void (*matrixRotate)(rsc_Matrix *, float rot, float x, float y, float z);
56 void (*matrixScale)(rsc_Matrix *, float x, float y, float z);
57 void (*matrixTranslate)(rsc_Matrix *, float x, float y, float z);
Jason Samsd19f10d2009-05-22 14:03:28 -070058
Jason Sams462d11b2009-06-19 16:03:18 -070059 void (*color)(float r, float g, float b, float a);
Jason Samsd19f10d2009-05-22 14:03:28 -070060
Jason Sams462d11b2009-06-19 16:03:18 -070061 void (*programFragmentBindTexture)(RsProgramFragment, uint32_t slot, RsAllocation);
62 void (*programFragmentBindSampler)(RsProgramFragment, uint32_t slot, RsAllocation);
Jason Samsfe08d992009-05-27 14:45:32 -070063
Jason Sams462d11b2009-06-19 16:03:18 -070064 void (*materialDiffuse)(float r, float g, float b, float a);
65 void (*materialSpecular)(float r, float g, float b, float a);
66 void (*lightPosition)(float x, float y, float z, float w);
67 void (*materialShininess)(float s);
Jason Samsd19f10d2009-05-22 14:03:28 -070068
Jason Sams462d11b2009-06-19 16:03:18 -070069 void (*uploadToTexture)(RsAllocation va, uint32_t baseMipLevel);
Jason Samsd19f10d2009-05-22 14:03:28 -070070
Jason Sams462d11b2009-06-19 16:03:18 -070071 void (*enable)(uint32_t);
72 void (*disable)(uint32_t);
Jason Samsd19f10d2009-05-22 14:03:28 -070073
Jason Sams462d11b2009-06-19 16:03:18 -070074 uint32_t (*rand)(uint32_t max);
Jason Samsd19f10d2009-05-22 14:03:28 -070075
Jason Sams462d11b2009-06-19 16:03:18 -070076 void (*contextBindProgramFragment)(RsProgramFragment pf);
77 void (*contextBindProgramFragmentStore)(RsProgramFragmentStore pfs);
Jason Samsfe08d992009-05-27 14:45:32 -070078
79
80 // Drawing funcs
Jason Sams462d11b2009-06-19 16:03:18 -070081 void (*renderTriangleMesh)(RsTriangleMesh);
82 void (*renderTriangleMeshRange)(RsTriangleMesh, uint32_t start, uint32_t count);
Jason Samsfe08d992009-05-27 14:45:32 -070083
Jason Samsd19f10d2009-05-22 14:03:28 -070084 // Assumes (GL_FIXED) x,y,z (GL_UNSIGNED_BYTE)r,g,b,a
Jason Sams462d11b2009-06-19 16:03:18 -070085 void (*drawTriangleArray)(RsAllocation alloc, uint32_t count);
Jason Samsd19f10d2009-05-22 14:03:28 -070086
Jason Sams462d11b2009-06-19 16:03:18 -070087 void (*drawRect)(int32_t x1, int32_t x2, int32_t y1, int32_t y2);
Jason Samsd19f10d2009-05-22 14:03:28 -070088} rsc_FunctionTable;
89
Jason Sams462d11b2009-06-19 16:03:18 -070090typedef int (*rsc_RunScript)(uint32_t launchIndex, const rsc_FunctionTable *);
Jason Samsd19f10d2009-05-22 14:03:28 -070091
92
93/* EnableCap */
94#define GL_LIGHTING 0x0B50
95
96/* LightName */
97#define GL_LIGHT0 0x4000