summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2015-12-16 15:18:23 -0800
committerJean-Philippe Andre <jp.andre@samsung.com>2016-01-05 15:43:43 +0900
commite3238c5620d53c897bb175a003c2d5c88e9bbe92 (patch)
tree20eaa5c5c21a8acf346c9891f88ffd02cde09286
parent61fcf8e4971377efd27fd057aaad7980ddb9b59a (diff)
ector: add an abstraction to get GL function.
-rw-r--r--src/Makefile_Ector.am1
-rw-r--r--src/lib/ector/Ector.h2
-rw-r--r--src/lib/ector/ector_gl_internal.h940
-rw-r--r--src/lib/ector/ector_main.c164
-rw-r--r--src/lib/ector/ector_private.h2
5 files changed, 1109 insertions, 0 deletions
diff --git a/src/Makefile_Ector.am b/src/Makefile_Ector.am
index 8f862c2a63..83d765fcd0 100644
--- a/src/Makefile_Ector.am
+++ b/src/Makefile_Ector.am
@@ -69,6 +69,7 @@ lib/ector/software/Ector_Software.h
69 69
70lib_ector_libector_la_SOURCES = \ 70lib_ector_libector_la_SOURCES = \
71lib/ector/ector_main.c \ 71lib/ector/ector_main.c \
72lib/ector/ector_gl_internal.h \
72lib/ector/ector_generic_buffer.c \ 73lib/ector/ector_generic_buffer.c \
73lib/ector/ector_renderer_generic_shape.c \ 74lib/ector/ector_renderer_generic_shape.c \
74lib/ector/ector_renderer_generic_base.c \ 75lib/ector/ector_renderer_generic_base.c \
diff --git a/src/lib/ector/Ector.h b/src/lib/ector/Ector.h
index 5752b68ce7..82d22bfe41 100644
--- a/src/lib/ector/Ector.h
+++ b/src/lib/ector/Ector.h
@@ -162,6 +162,8 @@ EAPI int ector_init(void);
162 */ 162 */
163EAPI int ector_shutdown(void); 163EAPI int ector_shutdown(void);
164 164
165EAPI Eina_Bool ector_glsym_set(void *(*glsym)(void *lib, const char *name), void *lib);
166
165#include "ector_surface.h" 167#include "ector_surface.h"
166#include "ector_renderer.h" 168#include "ector_renderer.h"
167#include "ector_util.h" 169#include "ector_util.h"
diff --git a/src/lib/ector/ector_gl_internal.h b/src/lib/ector/ector_gl_internal.h
new file mode 100644
index 0000000000..9a4057e1e2
--- /dev/null
+++ b/src/lib/ector/ector_gl_internal.h
@@ -0,0 +1,940 @@
1#ifndef ECTOR_GL_INTERNAL_H
2# define ECTOR_GL_INTERNAL_H
3
4typedef struct _Ector_GL_API Ector_GL_API;
5
6extern Ector_GL_API GL;
7
8// ignore everything below this point
9// --------------------------------------------------
10
11
12#define GL_DEPTH_BUFFER_BIT 0x00000100
13#define GL_STENCIL_BUFFER_BIT 0x00000400
14#define GL_COLOR_BUFFER_BIT 0x00004000
15
16/* Boolean */
17#define GL_FALSE 0
18#define GL_TRUE 1
19
20/* BeginMode */
21#define GL_POINTS 0x0000
22#define GL_LINES 0x0001
23#define GL_LINE_LOOP 0x0002
24#define GL_LINE_STRIP 0x0003
25#define GL_TRIANGLES 0x0004
26#define GL_TRIANGLE_STRIP 0x0005
27#define GL_TRIANGLE_FAN 0x0006
28
29/* AlphaFunction (not supported in ES20) */
30/* GL_NEVER */
31/* GL_LESS */
32/* GL_EQUAL */
33/* GL_LEQUAL */
34/* GL_GREATER */
35/* GL_NOTEQUAL */
36/* GL_GEQUAL */
37/* GL_ALWAYS */
38
39/* BlendingFactorDest */
40#define GL_ZERO 0
41#define GL_ONE 1
42#define GL_SRC_COLOR 0x0300
43#define GL_ONE_MINUS_SRC_COLOR 0x0301
44#define GL_SRC_ALPHA 0x0302
45#define GL_ONE_MINUS_SRC_ALPHA 0x0303
46#define GL_DST_ALPHA 0x0304
47#define GL_ONE_MINUS_DST_ALPHA 0x0305
48
49/* BlendingFactorSrc */
50/* GL_ZERO */
51/* GL_ONE */
52#define GL_DST_COLOR 0x0306
53#define GL_ONE_MINUS_DST_COLOR 0x0307
54#define GL_SRC_ALPHA_SATURATE 0x0308
55/* GL_SRC_ALPHA */
56/* GL_ONE_MINUS_SRC_ALPHA */
57/* GL_DST_ALPHA */
58/* GL_ONE_MINUS_DST_ALPHA */
59
60/* BlendEquationSeparate */
61#define GL_FUNC_ADD 0x8006
62#define GL_BLEND_EQUATION 0x8009
63#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */
64#define GL_BLEND_EQUATION_ALPHA 0x883D
65
66/* BlendSubtract */
67#define GL_FUNC_SUBTRACT 0x800A
68#define GL_FUNC_REVERSE_SUBTRACT 0x800B
69
70/* Separate Blend Functions */
71#define GL_BLEND_DST_RGB 0x80C8
72#define GL_BLEND_SRC_RGB 0x80C9
73#define GL_BLEND_DST_ALPHA 0x80CA
74#define GL_BLEND_SRC_ALPHA 0x80CB
75#define GL_CONSTANT_COLOR 0x8001
76#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
77#define GL_CONSTANT_ALPHA 0x8003
78#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
79#define GL_BLEND_COLOR 0x8005
80
81/* Buffer Objects */
82#define GL_ARRAY_BUFFER 0x8892
83#define GL_ELEMENT_ARRAY_BUFFER 0x8893
84#define GL_ARRAY_BUFFER_BINDING 0x8894
85#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
86
87#define GL_STREAM_DRAW 0x88E0
88#define GL_STATIC_DRAW 0x88E4
89#define GL_DYNAMIC_DRAW 0x88E8
90
91#define GL_BUFFER_SIZE 0x8764
92#define GL_BUFFER_USAGE 0x8765
93
94#define GL_CURRENT_VERTEX_ATTRIB 0x8626
95
96/* CullFaceMode */
97#define GL_FRONT 0x0404
98#define GL_BACK 0x0405
99#define GL_FRONT_AND_BACK 0x0408
100
101/* DepthFunction */
102/* GL_NEVER */
103/* GL_LESS */
104/* GL_EQUAL */
105/* GL_LEQUAL */
106/* GL_GREATER */
107/* GL_NOTEQUAL */
108/* GL_GEQUAL */
109/* GL_ALWAYS */
110
111/* EnableCap */
112#define GL_TEXTURE_2D 0x0DE1
113#define GL_CULL_FACE 0x0B44
114#define GL_BLEND 0x0BE2
115#define GL_DITHER 0x0BD0
116#define GL_STENCIL_TEST 0x0B90
117#define GL_DEPTH_TEST 0x0B71
118#define GL_SCISSOR_TEST 0x0C11
119#define GL_POLYGON_OFFSET_FILL 0x8037
120#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
121#define GL_SAMPLE_COVERAGE 0x80A0
122
123/* ErrorCode */
124#define GL_NO_ERROR 0
125#define GL_INVALID_ENUM 0x0500
126#define GL_INVALID_VALUE 0x0501
127#define GL_INVALID_OPERATION 0x0502
128#define GL_OUT_OF_MEMORY 0x0505
129
130/* FrontFaceDirection */
131#define GL_CW 0x0900
132#define GL_CCW 0x0901
133
134/* GetPName */
135#define GL_LINE_WIDTH 0x0B21
136#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
137#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
138#define GL_CULL_FACE_MODE 0x0B45
139#define GL_FRONT_FACE 0x0B46
140#define GL_DEPTH_RANGE 0x0B70
141#define GL_DEPTH_WRITEMASK 0x0B72
142#define GL_DEPTH_CLEAR_VALUE 0x0B73
143#define GL_DEPTH_FUNC 0x0B74
144#define GL_STENCIL_CLEAR_VALUE 0x0B91
145#define GL_STENCIL_FUNC 0x0B92
146#define GL_STENCIL_FAIL 0x0B94
147#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
148#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
149#define GL_STENCIL_REF 0x0B97
150#define GL_STENCIL_VALUE_MASK 0x0B93
151#define GL_STENCIL_WRITEMASK 0x0B98
152#define GL_STENCIL_BACK_FUNC 0x8800
153#define GL_STENCIL_BACK_FAIL 0x8801
154#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
155#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
156#define GL_STENCIL_BACK_REF 0x8CA3
157#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
158#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
159#define GL_VIEWPORT 0x0BA2
160#define GL_SCISSOR_BOX 0x0C10
161/* GL_SCISSOR_TEST */
162#define GL_COLOR_CLEAR_VALUE 0x0C22
163#define GL_COLOR_WRITEMASK 0x0C23
164#define GL_UNPACK_ALIGNMENT 0x0CF5
165#define GL_PACK_ALIGNMENT 0x0D05
166#define GL_MAX_TEXTURE_SIZE 0x0D33
167#define GL_MAX_VIEWPORT_DIMS 0x0D3A
168#define GL_SUBPIXEL_BITS 0x0D50
169#define GL_RED_BITS 0x0D52
170#define GL_GREEN_BITS 0x0D53
171#define GL_BLUE_BITS 0x0D54
172#define GL_ALPHA_BITS 0x0D55
173#define GL_DEPTH_BITS 0x0D56
174#define GL_STENCIL_BITS 0x0D57
175#define GL_POLYGON_OFFSET_UNITS 0x2A00
176/* GL_POLYGON_OFFSET_FILL */
177#define GL_POLYGON_OFFSET_FACTOR 0x8038
178#define GL_TEXTURE_BINDING_2D 0x8069
179#define GL_SAMPLE_BUFFERS 0x80A8
180#define GL_SAMPLES 0x80A9
181#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
182#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
183
184/* GetTextureParameter */
185/* GL_TEXTURE_MAG_FILTER */
186/* GL_TEXTURE_MIN_FILTER */
187/* GL_TEXTURE_WRAP_S */
188/* GL_TEXTURE_WRAP_T */
189
190#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
191#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
192
193/* HintMode */
194#define GL_DONT_CARE 0x1100
195#define GL_FASTEST 0x1101
196#define GL_NICEST 0x1102
197
198/* HintTarget */
199#define GL_GENERATE_MIPMAP_HINT 0x8192
200
201/* DataType */
202#define GL_BYTE 0x1400
203#define GL_UNSIGNED_BYTE 0x1401
204#define GL_SHORT 0x1402
205#define GL_UNSIGNED_SHORT 0x1403
206#define GL_INT 0x1404
207#define GL_UNSIGNED_INT 0x1405
208#define GL_FLOAT 0x1406
209#define GL_FIXED 0x140C
210
211/* PixelFormat */
212#define GL_DEPTH_COMPONENT 0x1902
213#define GL_ALPHA 0x1906
214#define GL_RGB 0x1907
215#define GL_RGBA 0x1908
216#define GL_LUMINANCE 0x1909
217#define GL_LUMINANCE_ALPHA 0x190A
218
219/* PixelType */
220/* GL_UNSIGNED_BYTE */
221#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
222#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
223#define GL_UNSIGNED_SHORT_5_6_5 0x8363
224
225/* Shaders */
226#define GL_FRAGMENT_SHADER 0x8B30
227#define GL_VERTEX_SHADER 0x8B31
228#define GL_MAX_VERTEX_ATTRIBS 0x8869
229#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
230#define GL_MAX_VARYING_VECTORS 0x8DFC
231#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
232#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
233#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
234#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
235#define GL_SHADER_TYPE 0x8B4F
236#define GL_DELETE_STATUS 0x8B80
237#define GL_LINK_STATUS 0x8B82
238#define GL_VALIDATE_STATUS 0x8B83
239#define GL_ATTACHED_SHADERS 0x8B85
240#define GL_ACTIVE_UNIFORMS 0x8B86
241#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
242#define GL_ACTIVE_ATTRIBUTES 0x8B89
243#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
244#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
245#define GL_CURRENT_PROGRAM 0x8B8D
246
247/* StencilFunction */
248#define GL_NEVER 0x0200
249#define GL_LESS 0x0201
250#define GL_EQUAL 0x0202
251#define GL_LEQUAL 0x0203
252#define GL_GREATER 0x0204
253#define GL_NOTEQUAL 0x0205
254#define GL_GEQUAL 0x0206
255#define GL_ALWAYS 0x0207
256
257/* StencilOp */
258/* GL_ZERO */
259#define GL_KEEP 0x1E00
260#define GL_REPLACE 0x1E01
261#define GL_INCR 0x1E02
262#define GL_DECR 0x1E03
263#define GL_INVERT 0x150A
264#define GL_INCR_WRAP 0x8507
265#define GL_DECR_WRAP 0x8508
266
267/* StringName */
268#define GL_VENDOR 0x1F00
269#define GL_RENDERER 0x1F01
270#define GL_VERSION 0x1F02
271#define GL_EXTENSIONS 0x1F03
272
273/* TextureMagFilter */
274#define GL_NEAREST 0x2600
275#define GL_LINEAR 0x2601
276
277/* TextureMinFilter */
278/* GL_NEAREST */
279/* GL_LINEAR */
280#define GL_NEAREST_MIPMAP_NEAREST 0x2700
281#define GL_LINEAR_MIPMAP_NEAREST 0x2701
282#define GL_NEAREST_MIPMAP_LINEAR 0x2702
283#define GL_LINEAR_MIPMAP_LINEAR 0x2703
284
285/* TextureParameterName */
286#define GL_TEXTURE_MAG_FILTER 0x2800
287#define GL_TEXTURE_MIN_FILTER 0x2801
288#define GL_TEXTURE_WRAP_S 0x2802
289#define GL_TEXTURE_WRAP_T 0x2803
290
291/* TextureTarget */
292/* GL_TEXTURE_2D */
293#define GL_TEXTURE 0x1702
294
295#define GL_TEXTURE_CUBE_MAP 0x8513
296#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
297#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
298#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
299#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
300#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
301#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
302#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
303#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
304
305/* TextureUnit */
306#define GL_TEXTURE0 0x84C0
307#define GL_TEXTURE1 0x84C1
308#define GL_TEXTURE2 0x84C2
309#define GL_TEXTURE3 0x84C3
310#define GL_TEXTURE4 0x84C4
311#define GL_TEXTURE5 0x84C5
312#define GL_TEXTURE6 0x84C6
313#define GL_TEXTURE7 0x84C7
314#define GL_TEXTURE8 0x84C8
315#define GL_TEXTURE9 0x84C9
316#define GL_TEXTURE10 0x84CA
317#define GL_TEXTURE11 0x84CB
318#define GL_TEXTURE12 0x84CC
319#define GL_TEXTURE13 0x84CD
320#define GL_TEXTURE14 0x84CE
321#define GL_TEXTURE15 0x84CF
322#define GL_TEXTURE16 0x84D0
323#define GL_TEXTURE17 0x84D1
324#define GL_TEXTURE18 0x84D2
325#define GL_TEXTURE19 0x84D3
326#define GL_TEXTURE20 0x84D4
327#define GL_TEXTURE21 0x84D5
328#define GL_TEXTURE22 0x84D6
329#define GL_TEXTURE23 0x84D7
330#define GL_TEXTURE24 0x84D8
331#define GL_TEXTURE25 0x84D9
332#define GL_TEXTURE26 0x84DA
333#define GL_TEXTURE27 0x84DB
334#define GL_TEXTURE28 0x84DC
335#define GL_TEXTURE29 0x84DD
336#define GL_TEXTURE30 0x84DE
337#define GL_TEXTURE31 0x84DF
338#define GL_ACTIVE_TEXTURE 0x84E0
339
340/* TextureWrapMode */
341#define GL_REPEAT 0x2901
342#define GL_CLAMP_TO_EDGE 0x812F
343#define GL_MIRRORED_REPEAT 0x8370
344
345/* Uniform Types */
346#define GL_FLOAT_VEC2 0x8B50
347#define GL_FLOAT_VEC3 0x8B51
348#define GL_FLOAT_VEC4 0x8B52
349#define GL_INT_VEC2 0x8B53
350#define GL_INT_VEC3 0x8B54
351#define GL_INT_VEC4 0x8B55
352#define GL_BOOL 0x8B56
353#define GL_BOOL_VEC2 0x8B57
354#define GL_BOOL_VEC3 0x8B58
355#define GL_BOOL_VEC4 0x8B59
356#define GL_FLOAT_MAT2 0x8B5A
357#define GL_FLOAT_MAT3 0x8B5B
358#define GL_FLOAT_MAT4 0x8B5C
359#define GL_SAMPLER_2D 0x8B5E
360#define GL_SAMPLER_CUBE 0x8B60
361
362/* Vertex Arrays */
363#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
364#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
365#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
366#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
367#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
368#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
369#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
370
371/* Read Format */
372#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
373#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
374
375/* Shader Source */
376#define GL_COMPILE_STATUS 0x8B81
377#define GL_INFO_LOG_LENGTH 0x8B84
378#define GL_SHADER_SOURCE_LENGTH 0x8B88
379#define GL_SHADER_COMPILER 0x8DFA
380
381/* Shader Binary */
382#define GL_SHADER_BINARY_FORMATS 0x8DF8
383#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
384
385/* Shader Precision-Specified Types */
386#define GL_LOW_FLOAT 0x8DF0
387#define GL_MEDIUM_FLOAT 0x8DF1
388#define GL_HIGH_FLOAT 0x8DF2
389#define GL_LOW_INT 0x8DF3
390#define GL_MEDIUM_INT 0x8DF4
391#define GL_HIGH_INT 0x8DF5
392
393/* Framebuffer Object. */
394#define GL_FRAMEBUFFER 0x8D40
395#define GL_RENDERBUFFER 0x8D41
396
397#define GL_RGBA4 0x8056
398#define GL_RGB5_A1 0x8057
399#define GL_RGB565 0x8D62
400#define GL_DEPTH_COMPONENT16 0x81A5
401#define GL_STENCIL_INDEX 0x1901
402#define GL_STENCIL_INDEX8 0x8D48
403
404#define GL_RENDERBUFFER_WIDTH 0x8D42
405#define GL_RENDERBUFFER_HEIGHT 0x8D43
406#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
407#define GL_RENDERBUFFER_RED_SIZE 0x8D50
408#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
409#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
410#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
411#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
412#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
413
414#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
415#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
416#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
417#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
418
419#define GL_COLOR_ATTACHMENT0 0x8CE0
420#define GL_DEPTH_ATTACHMENT 0x8D00
421#define GL_STENCIL_ATTACHMENT 0x8D20
422
423#define GL_NONE 0
424
425#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
426#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
427#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
428#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
429#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
430
431#define GL_FRAMEBUFFER_BINDING 0x8CA6
432#define GL_RENDERBUFFER_BINDING 0x8CA7
433#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
434
435#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
436
437#define GL_BGRA_EXT 0x80E1
438
439#ifndef GL_OES_get_program_binary
440#define GL_OES_get_program_binary 1
441#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
442#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
443#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
444#endif /* GL_OES_get_program_binary */
445
446/* OpenGLES 3.0 */
447#ifndef __gl3_h_
448# define __gl3_h_ 1
449
450
451#define GL_READ_BUFFER 0x0C02
452#define GL_UNPACK_ROW_LENGTH 0x0CF2
453#define GL_UNPACK_SKIP_ROWS 0x0CF3
454#define GL_UNPACK_SKIP_PIXELS 0x0CF4
455#define GL_PACK_ROW_LENGTH 0x0D02
456#define GL_PACK_SKIP_ROWS 0x0D03
457#define GL_PACK_SKIP_PIXELS 0x0D04
458#define GL_COLOR 0x1800
459#define GL_DEPTH 0x1801
460#define GL_STENCIL 0x1802
461#define GL_RED 0x1903
462#define GL_RGB8 0x8051
463#define GL_RGBA8 0x8058
464#define GL_RGB10_A2 0x8059
465#define GL_TEXTURE_BINDING_3D 0x806A
466#define GL_UNPACK_SKIP_IMAGES 0x806D
467#define GL_UNPACK_IMAGE_HEIGHT 0x806E
468#define GL_TEXTURE_3D 0x806F
469#define GL_TEXTURE_WRAP_R 0x8072
470#define GL_MAX_3D_TEXTURE_SIZE 0x8073
471#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
472#define GL_MAX_ELEMENTS_VERTICES 0x80E8
473#define GL_MAX_ELEMENTS_INDICES 0x80E9
474#define GL_TEXTURE_MIN_LOD 0x813A
475#define GL_TEXTURE_MAX_LOD 0x813B
476#define GL_TEXTURE_BASE_LEVEL 0x813C
477#define GL_TEXTURE_MAX_LEVEL 0x813D
478#define GL_MIN 0x8007
479#define GL_MAX 0x8008
480#define GL_DEPTH_COMPONENT24 0x81A6
481#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
482#define GL_TEXTURE_COMPARE_MODE 0x884C
483#define GL_TEXTURE_COMPARE_FUNC 0x884D
484#define GL_CURRENT_QUERY 0x8865
485#define GL_QUERY_RESULT 0x8866
486#define GL_QUERY_RESULT_AVAILABLE 0x8867
487#define GL_BUFFER_MAPPED 0x88BC
488#define GL_BUFFER_MAP_POINTER 0x88BD
489#define GL_STREAM_READ 0x88E1
490#define GL_STREAM_COPY 0x88E2
491#define GL_STATIC_READ 0x88E5
492#define GL_STATIC_COPY 0x88E6
493#define GL_DYNAMIC_READ 0x88E9
494#define GL_DYNAMIC_COPY 0x88EA
495#define GL_MAX_DRAW_BUFFERS 0x8824
496#define GL_DRAW_BUFFER0 0x8825
497#define GL_DRAW_BUFFER1 0x8826
498#define GL_DRAW_BUFFER2 0x8827
499#define GL_DRAW_BUFFER3 0x8828
500#define GL_DRAW_BUFFER4 0x8829
501#define GL_DRAW_BUFFER5 0x882A
502#define GL_DRAW_BUFFER6 0x882B
503#define GL_DRAW_BUFFER7 0x882C
504#define GL_DRAW_BUFFER8 0x882D
505#define GL_DRAW_BUFFER9 0x882E
506#define GL_DRAW_BUFFER10 0x882F
507#define GL_DRAW_BUFFER11 0x8830
508#define GL_DRAW_BUFFER12 0x8831
509#define GL_DRAW_BUFFER13 0x8832
510#define GL_DRAW_BUFFER14 0x8833
511#define GL_DRAW_BUFFER15 0x8834
512#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
513#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
514#define GL_SAMPLER_3D 0x8B5F
515#define GL_SAMPLER_2D_SHADOW 0x8B62
516#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
517#define GL_PIXEL_PACK_BUFFER 0x88EB
518#define GL_PIXEL_UNPACK_BUFFER 0x88EC
519#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
520#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
521#define GL_FLOAT_MAT2x3 0x8B65
522#define GL_FLOAT_MAT2x4 0x8B66
523#define GL_FLOAT_MAT3x2 0x8B67
524#define GL_FLOAT_MAT3x4 0x8B68
525#define GL_FLOAT_MAT4x2 0x8B69
526#define GL_FLOAT_MAT4x3 0x8B6A
527#define GL_SRGB 0x8C40
528#define GL_SRGB8 0x8C41
529#define GL_SRGB8_ALPHA8 0x8C43
530#define GL_COMPARE_REF_TO_TEXTURE 0x884E
531#define GL_MAJOR_VERSION 0x821B
532#define GL_MINOR_VERSION 0x821C
533#define GL_NUM_EXTENSIONS 0x821D
534#define GL_RGBA32F 0x8814
535#define GL_RGB32F 0x8815
536#define GL_RGBA16F 0x881A
537#define GL_RGB16F 0x881B
538#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
539#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
540#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
541#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
542#define GL_MAX_VARYING_COMPONENTS 0x8B4B
543#define GL_TEXTURE_2D_ARRAY 0x8C1A
544#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
545#define GL_R11F_G11F_B10F 0x8C3A
546#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
547#define GL_RGB9_E5 0x8C3D
548#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
549#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
550#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
551#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
552#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
553#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
554#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
555#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
556#define GL_RASTERIZER_DISCARD 0x8C89
557#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
558#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
559#define GL_INTERLEAVED_ATTRIBS 0x8C8C
560#define GL_SEPARATE_ATTRIBS 0x8C8D
561#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
562#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
563#define GL_RGBA32UI 0x8D70
564#define GL_RGB32UI 0x8D71
565#define GL_RGBA16UI 0x8D76
566#define GL_RGB16UI 0x8D77
567#define GL_RGBA8UI 0x8D7C
568#define GL_RGB8UI 0x8D7D
569#define GL_RGBA32I 0x8D82
570#define GL_RGB32I 0x8D83
571#define GL_RGBA16I 0x8D88
572#define GL_RGB16I 0x8D89
573#define GL_RGBA8I 0x8D8E
574#define GL_RGB8I 0x8D8F
575#define GL_RED_INTEGER 0x8D94
576#define GL_RGB_INTEGER 0x8D98
577#define GL_RGBA_INTEGER 0x8D99
578#define GL_SAMPLER_2D_ARRAY 0x8DC1
579#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
580#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
581#define GL_UNSIGNED_INT_VEC2 0x8DC6
582#define GL_UNSIGNED_INT_VEC3 0x8DC7
583#define GL_UNSIGNED_INT_VEC4 0x8DC8
584#define GL_INT_SAMPLER_2D 0x8DCA
585#define GL_INT_SAMPLER_3D 0x8DCB
586#define GL_INT_SAMPLER_CUBE 0x8DCC
587#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
588#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
589#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
590#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
591#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
592#define GL_BUFFER_ACCESS_FLAGS 0x911F
593#define GL_BUFFER_MAP_LENGTH 0x9120
594#define GL_BUFFER_MAP_OFFSET 0x9121
595#define GL_DEPTH_COMPONENT32F 0x8CAC
596#define GL_DEPTH32F_STENCIL8 0x8CAD
597#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
598#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
599#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
600#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
601#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
602#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
603#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
604#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
605#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
606#define GL_FRAMEBUFFER_DEFAULT 0x8218
607#define GL_FRAMEBUFFER_UNDEFINED 0x8219
608#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
609#define GL_DEPTH_STENCIL 0x84F9
610#define GL_UNSIGNED_INT_24_8 0x84FA
611#define GL_DEPTH24_STENCIL8 0x88F0
612#define GL_UNSIGNED_NORMALIZED 0x8C17
613#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
614#define GL_READ_FRAMEBUFFER 0x8CA8
615#define GL_DRAW_FRAMEBUFFER 0x8CA9
616#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
617#define GL_RENDERBUFFER_SAMPLES 0x8CAB
618#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
619#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
620#define GL_COLOR_ATTACHMENT1 0x8CE1
621#define GL_COLOR_ATTACHMENT2 0x8CE2
622#define GL_COLOR_ATTACHMENT3 0x8CE3
623#define GL_COLOR_ATTACHMENT4 0x8CE4
624#define GL_COLOR_ATTACHMENT5 0x8CE5
625#define GL_COLOR_ATTACHMENT6 0x8CE6
626#define GL_COLOR_ATTACHMENT7 0x8CE7
627#define GL_COLOR_ATTACHMENT8 0x8CE8
628#define GL_COLOR_ATTACHMENT9 0x8CE9
629#define GL_COLOR_ATTACHMENT10 0x8CEA
630#define GL_COLOR_ATTACHMENT11 0x8CEB
631#define GL_COLOR_ATTACHMENT12 0x8CEC
632#define GL_COLOR_ATTACHMENT13 0x8CED
633#define GL_COLOR_ATTACHMENT14 0x8CEE
634#define GL_COLOR_ATTACHMENT15 0x8CEF
635#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
636#define GL_MAX_SAMPLES 0x8D57
637#define GL_HALF_FLOAT 0x140B
638#define GL_MAP_READ_BIT 0x0001
639#define GL_MAP_WRITE_BIT 0x0002
640#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
641#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
642#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
643#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
644#define GL_RG 0x8227
645#define GL_RG_INTEGER 0x8228
646#define GL_R8 0x8229
647#define GL_RG8 0x822B
648#define GL_R16F 0x822D
649#define GL_R32F 0x822E
650#define GL_RG16F 0x822F
651#define GL_RG32F 0x8230
652#define GL_R8I 0x8231
653#define GL_R8UI 0x8232
654#define GL_R16I 0x8233
655#define GL_R16UI 0x8234
656#define GL_R32I 0x8235
657#define GL_R32UI 0x8236
658#define GL_RG8I 0x8237
659#define GL_RG8UI 0x8238
660#define GL_RG16I 0x8239
661#define GL_RG16UI 0x823A
662#define GL_RG32I 0x823B
663#define GL_RG32UI 0x823C
664#define GL_VERTEX_ARRAY_BINDING 0x85B5
665#define GL_R8_SNORM 0x8F94
666#define GL_RG8_SNORM 0x8F95
667#define GL_RGB8_SNORM 0x8F96
668#define GL_RGBA8_SNORM 0x8F97
669#define GL_SIGNED_NORMALIZED 0x8F9C
670#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
671#define GL_COPY_READ_BUFFER 0x8F36
672#define GL_COPY_WRITE_BUFFER 0x8F37
673#define GL_COPY_READ_BUFFER_BINDING 0x8F36
674#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
675#define GL_UNIFORM_BUFFER 0x8A11
676#define GL_UNIFORM_BUFFER_BINDING 0x8A28
677#define GL_UNIFORM_BUFFER_START 0x8A29
678#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
679#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
680#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
681#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
682#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
683#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
684#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
685#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
686#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
687#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
688#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
689#define GL_UNIFORM_TYPE 0x8A37
690#define GL_UNIFORM_SIZE 0x8A38
691#define GL_UNIFORM_NAME_LENGTH 0x8A39
692#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
693#define GL_UNIFORM_OFFSET 0x8A3B
694#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
695#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
696#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
697#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
698#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
699#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
700#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
701#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
702#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
703#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
704#define GL_INVALID_INDEX 0xFFFFFFFFu
705#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
706#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
707#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
708#define GL_OBJECT_TYPE 0x9112
709#define GL_SYNC_CONDITION 0x9113
710#define GL_SYNC_STATUS 0x9114
711#define GL_SYNC_FLAGS 0x9115
712#define GL_SYNC_FENCE 0x9116
713#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
714#define GL_UNSIGNALED 0x9118
715#define GL_SIGNALED 0x9119
716#define GL_ALREADY_SIGNALED 0x911A
717#define GL_TIMEOUT_EXPIRED 0x911B
718#define GL_CONDITION_SATISFIED 0x911C
719#define GL_WAIT_FAILED 0x911D
720#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
721#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
722#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
723#define GL_ANY_SAMPLES_PASSED 0x8C2F
724#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
725#define GL_SAMPLER_BINDING 0x8919
726#define GL_RGB10_A2UI 0x906F
727#define GL_TEXTURE_SWIZZLE_R 0x8E42
728#define GL_TEXTURE_SWIZZLE_G 0x8E43
729#define GL_TEXTURE_SWIZZLE_B 0x8E44
730#define GL_TEXTURE_SWIZZLE_A 0x8E45
731#define GL_GREEN 0x1904
732#define GL_BLUE 0x1905
733#define GL_INT_2_10_10_10_REV 0x8D9F
734#define GL_TRANSFORM_FEEDBACK 0x8E22
735#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
736#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
737#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
738#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
739#define GL_PROGRAM_BINARY_LENGTH 0x8741
740#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
741#define GL_PROGRAM_BINARY_FORMATS 0x87FF
742#define GL_COMPRESSED_R11_EAC 0x9270
743#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
744#define GL_COMPRESSED_RG11_EAC 0x9272
745#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
746#define GL_COMPRESSED_RGB8_ETC2 0x9274
747#define GL_COMPRESSED_SRGB8_ETC2 0x9275
748#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
749#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
750#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
751#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
752#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
753#define GL_MAX_ELEMENT_INDEX 0x8D6B
754#define GL_NUM_SAMPLE_COUNTS 0x9380
755#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
756
757#endif
758
759#include <stddef.h>
760
761#ifndef KHRONOS_SUPPORT_INT64
762typedef unsigned long long khronos_uint64_t;
763typedef signed long long khronos_int64_t;
764#endif
765
766typedef khronos_int64_t EvasGLint64;
767typedef khronos_uint64_t EvasGLuint64;
768
769typedef ptrdiff_t GLintptr; // Changed khronos_intptr_t
770typedef ptrdiff_t GLsizeiptr; // Changed khronos_ssize_t
771
772typedef void GLvoid;
773typedef char GLchar;
774typedef unsigned int GLenum;
775typedef unsigned char GLboolean;
776typedef unsigned int GLbitfield;
777typedef signed char GLbyte; // Changed khronos_int8_t
778typedef short GLshort;
779typedef int GLint;
780typedef int GLsizei;
781typedef unsigned char GLubyte; // Changed khronos_uint8_t
782typedef unsigned short GLushort;
783typedef unsigned int GLuint;
784typedef float GLfloat; // Changed khronos_float_t
785typedef float GLclampf; // Changed khronos_float_t
786typedef signed int GLfixed; // Changed khronos_int32_t
787
788struct _Ector_GL_API {
789 // Struct is same as Evas_GL_API version 1 without extensions
790
791 int init;
792
793 void (*glActiveTexture) (GLenum texture);
794 void (*glAttachShader) (GLuint program, GLuint shader);
795 void (*glBindAttribLocation) (GLuint program, GLuint index, const char* name);
796 void (*glBindBuffer) (GLenum target, GLuint buffer);
797 void (*glBindFramebuffer) (GLenum target, GLuint framebuffer);
798 void (*glBindRenderbuffer) (GLenum target, GLuint renderbuffer);
799 void (*glBindTexture) (GLenum target, GLuint texture);
800 void (*glBlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
801 void (*glBlendEquation) ( GLenum mode );
802 void (*glBlendEquationSeparate) (GLenum modeRGB, GLenum modeAlpha);
803 void (*glBlendFunc) (GLenum sfactor, GLenum dfactor);
804 void (*glBlendFuncSeparate) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
805 void (*glBufferData) (GLenum target, GLsizeiptr size, const void* data, GLenum usage);
806 void (*glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
807 GLenum (*glCheckFramebufferStatus) (GLenum target);
808 void (*glClear) (GLbitfield mask);
809 void (*glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
810 void (*glClearDepthf) (GLclampf depth);
811 void (*glClearStencil) (GLint s);
812 void (*glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
813 void (*glCompileShader) (GLuint shader);
814 void (*glCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data);
815 void (*glCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data);
816 void (*glCopyTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
817 void (*glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
818 GLuint (*glCreateProgram) (void);
819 GLuint (*glCreateShader) (GLenum type);
820 void (*glCullFace) (GLenum mode);
821 void (*glDeleteBuffers) (GLsizei n, const GLuint* buffers);
822 void (*glDeleteFramebuffers) (GLsizei n, const GLuint* framebuffers);
823 void (*glDeleteProgram) (GLuint program);
824 void (*glDeleteRenderbuffers) (GLsizei n, const GLuint* renderbuffers);
825 void (*glDeleteShader) (GLuint shader);
826 void (*glDeleteTextures) (GLsizei n, const GLuint* textures);
827 void (*glDepthFunc) (GLenum func);
828 void (*glDepthMask) (GLboolean flag);
829 void (*glDepthRangef) (GLclampf zNear, GLclampf zFar);
830 void (*glDetachShader) (GLuint program, GLuint shader);
831 void (*glDisable) (GLenum cap);
832 void (*glDisableVertexAttribArray) (GLuint index);
833 void (*glDrawArrays) (GLenum mode, GLint first, GLsizei count);
834 void (*glDrawElements) (GLenum mode, GLsizei count, GLenum type, const void* indices);
835 void (*glEnable) (GLenum cap);
836 void (*glEnableVertexAttribArray) (GLuint index);
837 void (*glFinish) (void);
838 void (*glFlush) (void);
839 void (*glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
840 void (*glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
841 void (*glFrontFace) (GLenum mode);
842 void (*glGenBuffers) (GLsizei n, GLuint* buffers);
843 void (*glGenerateMipmap) (GLenum target);
844 void (*glGenFramebuffers) (GLsizei n, GLuint* framebuffers);
845 void (*glGenRenderbuffers) (GLsizei n, GLuint* renderbuffers);
846 void (*glGenTextures) (GLsizei n, GLuint* textures);
847 void (*glGetActiveAttrib) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
848 void (*glGetActiveUniform) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
849 void (*glGetAttachedShaders) (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
850 int (*glGetAttribLocation) (GLuint program, const char* name);
851 void (*glGetBooleanv) (GLenum pname, GLboolean* params);
852 void (*glGetBufferParameteriv) (GLenum target, GLenum pname, GLint* params);
853 GLenum (*glGetError) (void);
854 void (*glGetFloatv) (GLenum pname, GLfloat* params);
855 void (*glGetFramebufferAttachmentParameteriv) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
856 void (*glGetIntegerv) (GLenum pname, GLint* params);
857 void (*glGetProgramiv) (GLuint program, GLenum pname, GLint* params);
858 void (*glGetProgramInfoLog) (GLuint program, GLsizei bufsize, GLsizei* length, char* infolog);
859 void (*glGetProgramBinary) (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary);
860 void (*glGetRenderbufferParameteriv) (GLenum target, GLenum pname, GLint* params);
861 void (*glGetShaderiv) (GLuint shader, GLenum pname, GLint* params);
862 void (*glGetShaderInfoLog) (GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog);
863 void (*glGetShaderPrecisionFormat) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
864 void (*glGetShaderSource) (GLuint shader, GLsizei bufsize, GLsizei* length, char* source);
865 const GLubyte* (*glGetString) (GLenum name);
866 void (*glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat* params);
867 void (*glGetTexParameteriv) (GLenum target, GLenum pname, GLint* params);
868 void (*glGetUniformfv) (GLuint program, GLint location, GLfloat* params);
869 void (*glGetUniformiv) (GLuint program, GLint location, GLint* params);
870 int (*glGetUniformLocation) (GLuint program, const char* name);
871 void (*glGetVertexAttribfv) (GLuint index, GLenum pname, GLfloat* params);
872 void (*glGetVertexAttribiv) (GLuint index, GLenum pname, GLint* params);
873 void (*glGetVertexAttribPointerv) (GLuint index, GLenum pname, void** pointer);
874 void (*glHint) (GLenum target, GLenum mode);
875 GLboolean (*glIsBuffer) (GLuint buffer);
876 GLboolean (*glIsEnabled) (GLenum cap);
877 GLboolean (*glIsFramebuffer) (GLuint framebuffer);
878 GLboolean (*glIsProgram) (GLuint program);
879 GLboolean (*glIsRenderbuffer) (GLuint renderbuffer);
880 GLboolean (*glIsShader) (GLuint shader);
881 GLboolean (*glIsTexture) (GLuint texture);
882 void (*glLineWidth) (GLfloat width);
883 void (*glLinkProgram) (GLuint program);
884 void (*glPixelStorei) (GLenum pname, GLint param);
885 void (*glPolygonOffset) (GLfloat factor, GLfloat units);
886 void (*glProgramBinary) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
887 void (*glProgramParameteri) (GLuint program, GLenum pname, GLint value);
888 void (*glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels);
889 void (*glReleaseShaderCompiler) (void);
890 void (*glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
891 void (*glSampleCoverage) (GLclampf value, GLboolean invert);
892 void (*glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
893 void (*glShaderBinary) (GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length);
894 void (*glShaderSource) (GLuint shader, GLsizei count, const char* const * string, const GLint* length);
895 void (*glStencilFunc) (GLenum func, GLint ref, GLuint mask);
896 void (*glStencilFuncSeparate) (GLenum face, GLenum func, GLint ref, GLuint mask);
897 void (*glStencilMask) (GLuint mask);
898 void (*glStencilMaskSeparate) (GLenum face, GLuint mask);
899 void (*glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
900 void (*glStencilOpSeparate) (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
901 void (*glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels);
902 void (*glTexParameterf) (GLenum target, GLenum pname, GLfloat param);
903 void (*glTexParameterfv) (GLenum target, GLenum pname, const GLfloat* params);
904 void (*glTexParameteri) (GLenum target, GLenum pname, GLint param);
905 void (*glTexParameteriv) (GLenum target, GLenum pname, const GLint* params);
906 void (*glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
907 void (*glUniform1f) (GLint location, GLfloat x);
908 void (*glUniform1fv) (GLint location, GLsizei count, const GLfloat* v);
909 void (*glUniform1i) (GLint location, GLint x);
910 void (*glUniform1iv) (GLint location, GLsizei count, const GLint* v);
911 void (*glUniform2f) (GLint location, GLfloat x, GLfloat y);
912 void (*glUniform2fv) (GLint location, GLsizei count, const GLfloat* v);
913 void (*glUniform2i) (GLint location, GLint x, GLint y);
914 void (*glUniform2iv) (GLint location, GLsizei count, const GLint* v);
915 void (*glUniform3f) (GLint location, GLfloat x, GLfloat y, GLfloat z);
916 void (*glUniform3fv) (GLint location, GLsizei count, const GLfloat* v);
917 void (*glUniform3i) (GLint location, GLint x, GLint y, GLint z);
918 void (*glUniform3iv) (GLint location, GLsizei count, const GLint* v);
919 void (*glUniform4f) (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
920 void (*glUniform4fv) (GLint location, GLsizei count, const GLfloat* v);
921 void (*glUniform4i) (GLint location, GLint x, GLint y, GLint z, GLint w);
922 void (*glUniform4iv) (GLint location, GLsizei count, const GLint* v);
923 void (*glUniformMatrix2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
924 void (*glUniformMatrix3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
925 void (*glUniformMatrix4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
926 void (*glUseProgram) (GLuint program);
927 void (*glValidateProgram) (GLuint program);
928 void (*glVertexAttrib1f) (GLuint indx, GLfloat x);
929 void (*glVertexAttrib1fv) (GLuint indx, const GLfloat* values);
930 void (*glVertexAttrib2f) (GLuint indx, GLfloat x, GLfloat y);
931 void (*glVertexAttrib2fv) (GLuint indx, const GLfloat* values);
932 void (*glVertexAttrib3f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
933 void (*glVertexAttrib3fv) (GLuint indx, const GLfloat* values);
934 void (*glVertexAttrib4f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
935 void (*glVertexAttrib4fv) (GLuint indx, const GLfloat* values);
936 void (*glVertexAttribPointer) (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr);
937 void (*glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
938};
939
940#endif
diff --git a/src/lib/ector/ector_main.c b/src/lib/ector/ector_main.c
index fa7413eb37..9565e6f781 100644
--- a/src/lib/ector/ector_main.c
+++ b/src/lib/ector/ector_main.c
@@ -22,6 +22,7 @@
22#include <Ector.h> 22#include <Ector.h>
23#include "ector_private.h" 23#include "ector_private.h"
24 24
25Ector_GL_API GL = { 0, };
25int _ector_log_dom_global = 0; 26int _ector_log_dom_global = 0;
26 27
27static int _ector_main_count = 0; 28static int _ector_main_count = 0;
@@ -55,6 +56,169 @@ ector_init(void)
55 return 0; 56 return 0;
56} 57}
57 58
59static void
60donothing(void)
61{
62}
63
64EAPI Eina_Bool
65ector_glsym_set(void *(*glsym)(void *lib, const char *name), void *lib)
66{
67 Eina_Bool r = EINA_TRUE;
68
69 if (!glsym) return EINA_FALSE;
70
71#define ORD(a) do { GL.a = glsym(lib, #a); if (!GL.a) { GL.a = (void*) donothing; r = EINA_FALSE; } } while (0)
72
73 ORD(glActiveTexture);
74 ORD(glAttachShader);
75 ORD(glBindAttribLocation);
76 ORD(glBindBuffer);
77 ORD(glBindFramebuffer);
78 ORD(glBindRenderbuffer);
79 ORD(glBindTexture);
80 ORD(glBlendColor);
81 ORD(glBlendEquation);
82 ORD(glBlendEquationSeparate);
83 ORD(glBlendFunc);
84 ORD(glBlendFuncSeparate);
85 ORD(glBufferData);
86 ORD(glBufferSubData);
87 ORD(glCheckFramebufferStatus);
88 ORD(glClear);
89 ORD(glClearColor);
90 ORD(glClearDepthf);
91 ORD(glClearStencil);
92 ORD(glColorMask);
93 ORD(glCompileShader);
94 ORD(glCompressedTexImage2D);
95 ORD(glCompressedTexSubImage2D);
96 ORD(glCopyTexImage2D);
97 ORD(glCopyTexSubImage2D);
98 ORD(glCreateProgram);
99 ORD(glCreateShader);
100 ORD(glCullFace);
101 ORD(glDeleteBuffers);
102 ORD(glDeleteFramebuffers);
103 ORD(glDeleteProgram);
104 ORD(glDeleteRenderbuffers);
105 ORD(glDeleteShader);
106 ORD(glDeleteTextures);
107 ORD(glDepthFunc);
108 ORD(glDepthMask);
109 ORD(glDepthRangef);
110 ORD(glDetachShader);
111 ORD(glDisable);
112 ORD(glDisableVertexAttribArray);
113 ORD(glDrawArrays);
114 ORD(glDrawElements);
115 ORD(glEnable);
116 ORD(glEnableVertexAttribArray);
117 ORD(glFinish);
118 ORD(glFlush);
119 ORD(glFramebufferRenderbuffer);
120 ORD(glFramebufferTexture2D);
121 ORD(glFrontFace);
122 ORD(glGenBuffers);
123 ORD(glGenerateMipmap);
124 ORD(glGenFramebuffers);
125 ORD(glGenRenderbuffers);
126 ORD(glGenTextures);
127 ORD(glGetActiveAttrib);
128 ORD(glGetActiveUniform);
129 ORD(glGetAttachedShaders);
130 ORD(glGetAttribLocation);
131 ORD(glGetBooleanv);
132 ORD(glGetBufferParameteriv);
133 ORD(glGetError);
134 ORD(glGetFloatv);
135 ORD(glGetFramebufferAttachmentParameteriv);
136 ORD(glGetIntegerv);
137 ORD(glGetProgramiv);
138 ORD(glGetProgramInfoLog);
139 ORD(glGetProgramBinary);
140 ORD(glGetRenderbufferParameteriv);
141 ORD(glGetShaderiv);
142 ORD(glGetShaderInfoLog);
143 ORD(glGetShaderPrecisionFormat);
144 ORD(glGetShaderSource);
145 ORD(glGetString);
146 ORD(glGetTexParameterfv);
147 ORD(glGetTexParameteriv);
148 ORD(glGetUniformfv);
149 ORD(glGetUniformiv);
150 ORD(glGetUniformLocation);
151 ORD(glGetVertexAttribfv);
152 ORD(glGetVertexAttribiv);
153 ORD(glGetVertexAttribPointerv);
154 ORD(glHint);
155 ORD(glIsBuffer);
156 ORD(glIsEnabled);
157 ORD(glIsFramebuffer);
158 ORD(glIsProgram);
159 ORD(glIsRenderbuffer);
160 ORD(glIsShader);
161 ORD(glIsTexture);
162 ORD(glLineWidth);
163 ORD(glLinkProgram);
164 ORD(glPixelStorei);
165 ORD(glPolygonOffset);
166 ORD(glProgramBinary);
167 ORD(glProgramParameteri);
168 ORD(glReadPixels);
169 ORD(glReleaseShaderCompiler);
170 ORD(glRenderbufferStorage);
171 ORD(glSampleCoverage);
172 ORD(glScissor);
173 ORD(glShaderBinary);
174 ORD(glShaderSource);
175 ORD(glStencilFunc);
176 ORD(glStencilFuncSeparate);
177 ORD(glStencilMask);
178 ORD(glStencilMaskSeparate);
179 ORD(glStencilOp);
180 ORD(glStencilOpSeparate);
181 ORD(glTexImage2D);
182 ORD(glTexParameterf);
183 ORD(glTexParameterfv);
184 ORD(glTexParameteri);
185 ORD(glTexParameteriv);
186 ORD(glTexSubImage2D);
187 ORD(glUniform1f);
188 ORD(glUniform1fv);
189 ORD(glUniform1i);
190 ORD(glUniform1iv);
191 ORD(glUniform2f);
192 ORD(glUniform2fv);
193 ORD(glUniform2i);
194 ORD(glUniform2iv);
195 ORD(glUniform3f);
196 ORD(glUniform3fv);
197 ORD(glUniform3i);
198 ORD(glUniform3iv);
199 ORD(glUniform4f);
200 ORD(glUniform4fv);
201 ORD(glUniform4i);
202 ORD(glUniform4iv);
203 ORD(glUniformMatrix2fv);
204 ORD(glUniformMatrix3fv);
205 ORD(glUniformMatrix4fv);
206 ORD(glUseProgram);
207 ORD(glValidateProgram);
208 ORD(glVertexAttrib1f);
209 ORD(glVertexAttrib1fv);
210 ORD(glVertexAttrib2f);
211 ORD(glVertexAttrib2fv);
212 ORD(glVertexAttrib3f);
213 ORD(glVertexAttrib3fv);
214 ORD(glVertexAttrib4f);
215 ORD(glVertexAttrib4fv);
216 ORD(glVertexAttribPointer);
217 ORD(glViewport);
218
219 return r;
220}
221
58EAPI int 222EAPI int
59ector_shutdown(void) 223ector_shutdown(void)
60{ 224{
diff --git a/src/lib/ector/ector_private.h b/src/lib/ector/ector_private.h
index 598559ee92..d426f3f099 100644
--- a/src/lib/ector/ector_private.h
+++ b/src/lib/ector/ector_private.h
@@ -3,6 +3,8 @@
3 3
4#include "Ector.h" 4#include "Ector.h"
5 5
6#include "ector_gl_internal.h"
7
6/* 8/*
7 * variable and macros used for the eina_log module 9 * variable and macros used for the eina_log module
8 */ 10 */