blob: 53de1f1f1ec42eb012b87b6d9583f37069189153 [file] [log] [blame]
Jason Sams326e0dd2009-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;
Jason Sams62bc1db2009-06-22 15:49:21 -070017typedef void * RsLight;
Jason Sams326e0dd2009-05-22 14:03:28 -070018
19
20typedef struct {
21 float m[16];
22} rsc_Matrix;
23
24
25typedef struct {
26 float v[4];
27} rsc_Vector4;
28
29#define RS_PROGRAM_VERTEX_MODELVIEW_OFFSET 0
30#define RS_PROGRAM_VERTEX_PROJECTION_OFFSET 16
31#define RS_PROGRAM_VERTEX_TEXTURE_OFFSET 32
32
33typedef struct {
Jason Samse5769102009-06-19 16:03:18 -070034 const void * (*loadEnvVp)(uint32_t bank, uint32_t offset);
Jason Sams326e0dd2009-05-22 14:03:28 -070035
Jason Samse5769102009-06-19 16:03:18 -070036 float (*loadEnvF)(uint32_t bank, uint32_t offset);
37 int32_t (*loadEnvI32)(uint32_t bank, uint32_t offset);
38 uint32_t (*loadEnvU32)(uint32_t bank, uint32_t offset);
39 void (*loadEnvVec4)(uint32_t bank, uint32_t offset, rsc_Vector4 *);
40 void (*loadEnvMatrix)(uint32_t bank, uint32_t offset, rsc_Matrix *);
Jason Sams326e0dd2009-05-22 14:03:28 -070041
Jason Samse5769102009-06-19 16:03:18 -070042 void (*storeEnvF)(uint32_t bank, uint32_t offset, float);
43 void (*storeEnvI32)(uint32_t bank, uint32_t offset, int32_t);
44 void (*storeEnvU32)(uint32_t bank, uint32_t offset, uint32_t);
45 void (*storeEnvVec4)(uint32_t bank, uint32_t offset, const rsc_Vector4 *);
46 void (*storeEnvMatrix)(uint32_t bank, uint32_t offset, const rsc_Matrix *);
Jason Sams326e0dd2009-05-22 14:03:28 -070047
Jason Samse5769102009-06-19 16:03:18 -070048 void (*matrixLoadIdentity)(rsc_Matrix *);
49 void (*matrixLoadFloat)(rsc_Matrix *, const float *);
50 void (*matrixLoadMat)(rsc_Matrix *, const rsc_Matrix *);
51 void (*matrixLoadRotate)(rsc_Matrix *, float rot, float x, float y, float z);
52 void (*matrixLoadScale)(rsc_Matrix *, float x, float y, float z);
53 void (*matrixLoadTranslate)(rsc_Matrix *, float x, float y, float z);
54 void (*matrixLoadMultiply)(rsc_Matrix *, const rsc_Matrix *lhs, const rsc_Matrix *rhs);
55 void (*matrixMultiply)(rsc_Matrix *, const rsc_Matrix *rhs);
56 void (*matrixRotate)(rsc_Matrix *, float rot, float x, float y, float z);
57 void (*matrixScale)(rsc_Matrix *, float x, float y, float z);
58 void (*matrixTranslate)(rsc_Matrix *, float x, float y, float z);
Jason Sams326e0dd2009-05-22 14:03:28 -070059
Jason Samse5769102009-06-19 16:03:18 -070060 void (*color)(float r, float g, float b, float a);
Jason Sams326e0dd2009-05-22 14:03:28 -070061
Jason Samse5769102009-06-19 16:03:18 -070062 void (*programFragmentBindTexture)(RsProgramFragment, uint32_t slot, RsAllocation);
63 void (*programFragmentBindSampler)(RsProgramFragment, uint32_t slot, RsAllocation);
Jason Sams6678e9b2009-05-27 14:45:32 -070064
Jason Samse5769102009-06-19 16:03:18 -070065 void (*materialDiffuse)(float r, float g, float b, float a);
66 void (*materialSpecular)(float r, float g, float b, float a);
67 void (*lightPosition)(float x, float y, float z, float w);
68 void (*materialShininess)(float s);
Jason Sams326e0dd2009-05-22 14:03:28 -070069
Jason Samse5769102009-06-19 16:03:18 -070070 void (*uploadToTexture)(RsAllocation va, uint32_t baseMipLevel);
Jason Sams326e0dd2009-05-22 14:03:28 -070071
Jason Samse5769102009-06-19 16:03:18 -070072 void (*enable)(uint32_t);
73 void (*disable)(uint32_t);
Jason Sams326e0dd2009-05-22 14:03:28 -070074
Jason Samse5769102009-06-19 16:03:18 -070075 uint32_t (*rand)(uint32_t max);
Jason Sams326e0dd2009-05-22 14:03:28 -070076
Jason Samse5769102009-06-19 16:03:18 -070077 void (*contextBindProgramFragment)(RsProgramFragment pf);
78 void (*contextBindProgramFragmentStore)(RsProgramFragmentStore pfs);
Jason Sams6678e9b2009-05-27 14:45:32 -070079
80
81 // Drawing funcs
Jason Samse5769102009-06-19 16:03:18 -070082 void (*renderTriangleMesh)(RsTriangleMesh);
83 void (*renderTriangleMeshRange)(RsTriangleMesh, uint32_t start, uint32_t count);
Jason Sams6678e9b2009-05-27 14:45:32 -070084
Jason Sams326e0dd2009-05-22 14:03:28 -070085 // Assumes (GL_FIXED) x,y,z (GL_UNSIGNED_BYTE)r,g,b,a
Jason Samse5769102009-06-19 16:03:18 -070086 void (*drawTriangleArray)(RsAllocation alloc, uint32_t count);
Jason Sams326e0dd2009-05-22 14:03:28 -070087
Jason Samse5769102009-06-19 16:03:18 -070088 void (*drawRect)(int32_t x1, int32_t x2, int32_t y1, int32_t y2);
Jason Sams326e0dd2009-05-22 14:03:28 -070089} rsc_FunctionTable;
90
Jason Samse5769102009-06-19 16:03:18 -070091typedef int (*rsc_RunScript)(uint32_t launchIndex, const rsc_FunctionTable *);
Jason Sams326e0dd2009-05-22 14:03:28 -070092
93
94/* EnableCap */
95#define GL_LIGHTING 0x0B50
96
97/* LightName */
98#define GL_LIGHT0 0x4000