Fix MCD score
[platform/core/uifw/coregl.git] / src / modules / coregl_fastpath_state.h
1 #ifndef GLUE_STATE
2 #error GLUE_STATE_NOT_DEFINED
3 #endif
4
5 #ifndef _COREGL_START_API
6 #define _COREGL_START_API(version)
7 #define _COREGL_START_API_DEFINED_INSIDE
8 #endif
9
10 #ifndef _COREGL_END_API
11 #define _COREGL_END_API(version)
12 #define _COREGL_END_API_DEFINED_INSIDE
13 #endif
14
15 /*this size can be get by glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS)
16   but in r4p0, it dose not support GL_MAX_COLOR_ATTACHMENTS */
17 #define GL_CLOR_WRITEMASK_NUM 4
18
19 #define SET_1(v1)               value[0] = v1;
20 #define SET_2(v1, v2)           value[0] = v1; value[1] = v2;
21 #define SET_3(v1, v2, v3)       value[0] = v1; value[1] = v2; value[2] = v3;
22 #define SET_4(v1, v2, v3, v4)   value[0] = v1; value[1] = v2; value[2] = v3; value[3] = v4;
23 #define SET_N(n, inc, stmt) \
24    { \
25       int i; \
26       for (i = 0; i < (int)n; i++) \
27       { \
28          stmt \
29          value += inc; \
30       } \
31    }
32
33 GLUE_STATE(GLuint, gl_draw_buffers_num, 1, 1,
34                    _sym_glGetIntegerv(GL_MAX_DRAW_BUFFERS,
35                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
36                    _sym_glGetIntegerv(GL_MAX_DRAW_BUFFERS, (GLint *)value);)
37
38 GLUE_STATE(GLuint, gl_tex_units_num, 1, 1,
39                    _sym_glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
40                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
41                    _sym_glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, (GLint *)value);)
42
43 GLUE_STATE(GLuint, gl_vertex_attribs_num, 1, 1,
44                    _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS,
45                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
46                    _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, (GLint *)value);)
47
48 GLUE_STATE(GLuint, gl_transform_feedback_buffer_binding_num, 1, 1,
49                    _sym_glGetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
50                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
51                    _sym_glGetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, (GLint *)value);)
52
53 GLUE_STATE(GLuint, gl_uniform_buffer_binding_num, 1, 1,
54                    _sym_glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS,
55                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
56                    _sym_glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, (GLint *)value);)
57
58 GLUE_STATE(GLuint, gl_shader_storage_buffer_binding_num, 1, 1,
59                    _sym_glGetIntegerv(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS,
60                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
61                    _sym_glGetIntegerv(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, (GLint *)value);)
62
63 GLUE_STATE(GLuint, gl_atomic_counter_buffer_binding_num, 1, 1,
64                    _sym_glGetIntegerv(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS,
65                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
66                    _sym_glGetIntegerv(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, (GLint *)value);)
67
68 GLUE_STATE(GLuint, gl_array_buffer_binding, 1, 1, SET_1(0),
69                    _sym_glGetIntegerv(GL_ARRAY_BUFFER_BINDING, (GLint *)value);)
70 GLUE_STATE(GLuint, gl_copy_read_buffer_binding, 1, 1, SET_1(0),
71                    _sym_glGetIntegerv(GL_COPY_READ_BUFFER_BINDING, (GLint *)value);)
72 GLUE_STATE(GLuint, gl_copy_write_buffer_binding, 1, 1, SET_1(0),
73                    _sym_glGetIntegerv(GL_COPY_WRITE_BUFFER_BINDING, (GLint *)value);)
74 GLUE_STATE(GLuint, gl_element_array_buffer_binding, 1, 1, SET_1(0),
75                    _sym_glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint *)value);)
76 GLUE_STATE(GLuint, gl_pixel_pack_buffer_binding, 1, 1, SET_1(0),
77                    _sym_glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING, (GLint *)value);)
78 GLUE_STATE(GLuint, gl_pixel_unpack_buffer_binding, 1, 1, SET_1(0),
79                    _sym_glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, (GLint *)value);)
80 GLUE_STATE(GLuint, gl_transform_feedback_buffer_binding, 1, 1, SET_1(0),
81                    _sym_glGetIntegerv(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, (GLint *)value);)
82 GLUE_STATE(GLuint, gl_uniform_buffer_binding, 1, 1, SET_1(0),
83                    _sym_glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, (GLint *)value);)
84 GLUE_STATE(GLuint, gl_texture_buffer_binding, 1, 1, SET_1(0),
85                    _sym_glGetIntegerv(GL_TEXTURE_BUFFER_BINDING, (GLint *)value);)
86 GLUE_STATE(GLuint, gl_shader_storage_buffer_binding, 1, 1, SET_1(0),
87                    _sym_glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint *)value);)
88 GLUE_STATE(GLuint, gl_atomic_counter_buffer_binding, 1, 1, SET_1(0),
89                    _sym_glGetIntegerv(GL_ATOMIC_COUNTER_BUFFER_BINDING, (GLint *)value);)
90 GLUE_STATE(GLuint, gl_draw_indirect_buffer_binding, 1, 1, SET_1(0),
91                    _sym_glGetIntegerv(GL_DRAW_INDIRECT_BUFFER_BINDING, (GLint *)value);)
92 GLUE_STATE(GLuint, gl_dispatch_indirect_buffer_binding, 1, 1, SET_1(0),
93                    _sym_glGetIntegerv(GL_DISPATCH_INDIRECT_BUFFER_BINDING, (GLint *)value);)
94
95 _COREGL_START_API(COREGL_GLAPI_3)
96 GLUE_STATE(GLuint, gl_transform_feedback_buffer_binding_array,
97                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
98                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
99                    _state_get_transform_feedback_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
100                    _state_get_transform_feedback_buffer_bindings(value);)
101
102 GLUE_STATE(GLintptr, gl_transform_feedback_buffer_binding_array_offset,
103                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
104                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
105                    _state_get_transform_feedback_buffer_bindings_offset(
106                            value); /* DEFAULT NOT EFFECT */,
107                    _state_get_transform_feedback_buffer_bindings_offset(value);)
108
109 GLUE_STATE(GLsizeiptr, gl_transform_feedback_buffer_binding_array_size,
110                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
111                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
112                    _state_get_transform_feedback_buffer_bindings_size(
113                            value); /* DEFAULT NOT EFFECT */,
114                    _state_get_transform_feedback_buffer_bindings_size(value);)
115
116 GLUE_STATE(GLuint, gl_uniform_buffer_binding_array,
117                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
118                    _state_get_uniform_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
119                    _state_get_uniform_buffer_bindings(value);)
120
121 GLUE_STATE(GLintptr, gl_uniform_buffer_binding_array_offset,
122                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
123                    _state_get_uniform_buffer_bindings_offset(value); /* DEFAULT NOT EFFECT */,
124                    _state_get_uniform_buffer_bindings_offset(value);)
125
126 GLUE_STATE(GLsizeiptr, gl_uniform_buffer_binding_array_size,
127                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
128                    _state_get_uniform_buffer_bindings_size(value); /* DEFAULT NOT EFFECT */,
129                    _state_get_uniform_buffer_bindings_size(value);)
130
131 GLUE_STATE(GLuint, gl_shader_storage_buffer_binding_array,
132                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
133                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
134                    _state_get_shader_storage_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
135                    _state_get_shader_storage_buffer_bindings(value);)
136
137 GLUE_STATE(GLintptr, gl_shader_storage_buffer_binding_array_offset,
138                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
139                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
140                    _state_get_shader_storage_buffer_bindings_offset(
141                            value); /* DEFAULT NOT EFFECT */,
142                    _state_get_shader_storage_buffer_bindings_offset(value);)
143
144 GLUE_STATE(GLsizeiptr, gl_shader_storage_buffer_binding_array_size,
145                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
146                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
147                    _state_get_shader_storage_buffer_bindings_size(value); /* DEFAULT NOT EFFECT */,
148                    _state_get_shader_storage_buffer_bindings_size(value);)
149
150 GLUE_STATE(GLuint, gl_atomic_counter_buffer_binding_array,
151                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
152                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
153                    _state_get_atomic_counter_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
154                    _state_get_atomic_counter_buffer_bindings(value);)
155
156 GLUE_STATE(GLintptr, gl_atomic_counter_buffer_binding_array_offset,
157                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
158                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
159                    _state_get_atomic_counter_buffer_bindings_offset(
160                            value); /* DEFAULT NOT EFFECT */,
161                    _state_get_atomic_counter_buffer_bindings_offset(value);)
162
163 GLUE_STATE(GLsizeiptr, gl_atomic_counter_buffer_binding_array_size,
164                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
165                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
166                    _state_get_atomic_counter_buffer_bindings_size(value); /* DEFAULT NOT EFFECT */,
167                    _state_get_atomic_counter_buffer_bindings_size(value);)
168
169 GLUE_STATE(GLuint, gl_uniform_buffer_range_binding_array,
170                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
171                    _state_get_uniform_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
172                    _state_get_uniform_buffer_bindings(value);)
173
174 GLUE_STATE(GLintptr, gl_uniform_buffer_range_binding_array_offset,
175                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
176                    _state_get_uniform_buffer_bindings_offset(value); /* DEFAULT NOT EFFECT */,
177                    _state_get_uniform_buffer_bindings_offset(value);)
178
179 GLUE_STATE(GLsizeiptr, gl_uniform_buffer_range_binding_array_size,
180                    INITIAL_CTX->gl_uniform_buffer_binding_num[0], MAX_UNIFORM_BUFFER_BINDINGS,
181                    _state_get_uniform_buffer_bindings_size(value); /* DEFAULT NOT EFFECT */,
182                    _state_get_uniform_buffer_bindings_size(value);)
183
184 GLUE_STATE(GLuint, gl_transform_feedback_buffer_range_binding_array,
185                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
186                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
187                    _state_get_transform_feedback_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
188                    _state_get_transform_feedback_buffer_bindings(value);)
189
190 GLUE_STATE(GLintptr, gl_transform_feedback_buffer_range_binding_array_offset,
191                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
192                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
193                    _state_get_transform_feedback_buffer_bindings_offset(
194                            value); /* DEFAULT NOT EFFECT */,
195                    _state_get_transform_feedback_buffer_bindings_offset(value);)
196
197 GLUE_STATE(GLsizeiptr, gl_transform_feedback_buffer_range_binding_array_size,
198                    INITIAL_CTX->gl_transform_feedback_buffer_binding_num[0],
199                    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
200                    _state_get_transform_feedback_buffer_bindings_size(
201                            value); /* DEFAULT NOT EFFECT */,
202                    _state_get_transform_feedback_buffer_bindings_size(value);)
203
204 GLUE_STATE(GLuint, gl_shader_storage_buffer_range_binding_array,
205                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
206                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
207                    _state_get_shader_storage_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
208                    _state_get_shader_storage_buffer_bindings(value);)
209
210 GLUE_STATE(GLintptr, gl_shader_storage_buffer_range_binding_array_offset,
211                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
212                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
213                    _state_get_shader_storage_buffer_bindings_offset(
214                            value); /* DEFAULT NOT EFFECT */,
215                    _state_get_shader_storage_buffer_bindings_offset(value);)
216
217 GLUE_STATE(GLsizeiptr, gl_shader_storage_buffer_range_binding_array_size,
218                    INITIAL_CTX->gl_shader_storage_buffer_binding_num[0],
219                    MAX_SHADER_STORAGE_BUFFER_BINDINGS,
220                    _state_get_shader_storage_buffer_bindings_size(
221                            value); /* DEFAULT NOT EFFECT */,
222                    _state_get_shader_storage_buffer_bindings_size(value);)
223
224 GLUE_STATE(GLuint, gl_atomic_counter_buffer_range_binding_array,
225                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
226                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
227                    _state_get_atomic_counter_buffer_bindings(value); /* DEFAULT NOT EFFECT */,
228                    _state_get_atomic_counter_buffer_bindings(value);)
229
230 GLUE_STATE(GLintptr, gl_atomic_counter_buffer_range_binding_array_offset,
231                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
232                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
233                    _state_get_atomic_counter_buffer_bindings_offset(
234                            value); /* DEFAULT NOT EFFECT */,
235                    _state_get_atomic_counter_buffer_bindings_offset(value);)
236
237 GLUE_STATE(GLsizeiptr, gl_atomic_counter_buffer_range_binding_array_size,
238                    INITIAL_CTX->gl_atomic_counter_buffer_binding_num[0],
239                    MAX_ATOMIC_COUNTER_BUFFER_BINDING,
240                    _state_get_atomic_counter_buffer_bindings_size(
241                            value); /* DEFAULT NOT EFFECT */,
242                    _state_get_atomic_counter_buffer_bindings_size(value);)
243 _COREGL_END_API(COREGL_GLAPI_3)
244
245 GLUE_STATE(GLuint, gl_framebuffer_binding, 1, 1, SET_1(0),
246                    _sym_glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint *)value);)
247 GLUE_STATE(GLuint, gl_framebuffer_binding_read, 1, 1, SET_1(0),
248                    _sym_glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, (GLint *)value);)
249 GLUE_STATE(GLuint, gl_framebuffer_binding_draw, 1, 1, SET_1(0),
250                    _sym_glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, (GLint *)value);)
251 GLUE_STATE(GLuint, gl_renderbuffer_binding, 1, 1, SET_1(0),
252                    _sym_glGetIntegerv(GL_RENDERBUFFER_BINDING, (GLint *)value);)
253
254 GLUE_STATE(GLboolean, gl_blend, 1, 1, SET_1(GL_FALSE),
255                    _sym_glGetBooleanv(GL_BLEND, (GLboolean *)value);)
256 GLUE_STATE(GLboolean, gl_cull_face, 1, 1, SET_1(GL_FALSE),
257                    _sym_glGetBooleanv(GL_CULL_FACE, (GLboolean *)value);)
258 GLUE_STATE(GLboolean, gl_depth_test, 1, 1, SET_1(GL_FALSE),
259                    _sym_glGetBooleanv(GL_DEPTH_TEST, (GLboolean *)value);)
260 GLUE_STATE(GLboolean, gl_dither, 1, 1, SET_1(GL_TRUE),
261                    _sym_glGetBooleanv(GL_DITHER, (GLboolean *)value);)
262
263 GLUE_STATE(GLboolean, gl_polygon_offset_fill, 1, 1, SET_1(GL_FALSE),
264                    _sym_glGetBooleanv(GL_POLYGON_OFFSET_FILL, (GLboolean *)value);)
265 GLUE_STATE(GLboolean, gl_sample_alpha_to_coverage, 1, 1, SET_1(GL_FALSE),
266                    _sym_glGetBooleanv(GL_SAMPLE_ALPHA_TO_COVERAGE, (GLboolean *)value);)
267 GLUE_STATE(GLboolean, gl_sample_coverage, 1, 1, SET_1(GL_FALSE),
268                    _sym_glGetBooleanv(GL_SAMPLE_COVERAGE, (GLboolean *)value);)
269 GLUE_STATE(GLboolean, gl_scissor_test, 1, 1, SET_1(GL_FALSE),
270                    _sym_glGetBooleanv(GL_SCISSOR_TEST, (GLboolean *)value);)
271 GLUE_STATE(GLboolean, gl_stencil_test, 1, 1, SET_1(GL_FALSE),
272                    _sym_glGetBooleanv(GL_STENCIL_TEST, (GLboolean *)value);)
273 GLUE_STATE(GLboolean, gl_sample_shading_oes, 1, 1, SET_1(GL_FALSE),
274                    _sym_glGetBooleanv(GL_SAMPLE_SHADING_OES, (GLboolean *)value);)
275 GLUE_STATE(GLboolean, gl_sample_mask, 1, 1, SET_1(GL_FALSE),
276                    _sym_glGetBooleanv(GL_SAMPLE_MASK, (GLboolean *)value);)
277
278 GLUE_STATE(GLboolean, gl_primitive_restart_fixed_index, 1, 1, SET_1(GL_FALSE),
279                    _sym_glGetBooleanv(GL_PRIMITIVE_RESTART_FIXED_INDEX, (GLboolean *)value);)
280 GLUE_STATE(GLboolean, gl_rasterizer_discard, 1, 1, SET_1(GL_FALSE),
281                    _sym_glGetBooleanv(GL_RASTERIZER_DISCARD, (GLboolean *)value);)
282 GLUE_STATE(GLboolean, gl_blend_advanced_coherent_khr, 1, 1, SET_1(GL_TRUE),
283                    _sym_glGetBooleanv(GL_BLEND_ADVANCED_COHERENT_KHR, (GLboolean *)value);)
284
285 GLUE_STATE(GLint, gl_viewport, 4, 4,
286                    _sym_glGetIntegerv(GL_VIEWPORT, (GLint *)value); /* DEFAULT NOT EFFECT */,
287                    _sym_glGetIntegerv(GL_VIEWPORT, (GLint *)value);)
288
289 GLUE_STATE(GLuint, gl_current_program, 1, 1, SET_1(0),
290                    _sym_glGetIntegerv(GL_CURRENT_PROGRAM, (GLint *)value);)
291 GLUE_STATE(GLclampf, gl_color_clear_value, 4, 4, SET_4(0.0f, 0.0f, 0.0f, 0.0f),
292                    _sym_glGetFloatv(GL_COLOR_CLEAR_VALUE, (GLfloat *)value);)
293
294 GLUE_STATE(GLboolean, gl_color_writemask,
295                    4 * GL_CLOR_WRITEMASK_NUM,
296                    4 * GL_CLOR_WRITEMASK_NUM,
297                    SET_N(4 * GL_CLOR_WRITEMASK_NUM, 1, SET_1(GL_TRUE)),
298                    _sym_glGetBooleanv(GL_COLOR_WRITEMASK, (GLboolean *)value);)
299 GLUE_STATE(GLclampf, gl_depth_range, 2, 2, SET_2(0.0f, 1.0f),
300                    _sym_glGetFloatv(GL_DEPTH_RANGE, (GLfloat *)value);)
301 GLUE_STATE(GLclampf, gl_depth_clear_value, 1, 1, SET_1(1.0f),
302                    _sym_glGetFloatv(GL_DEPTH_CLEAR_VALUE, (GLfloat *)value);)
303 GLUE_STATE(GLenum, gl_depth_func, 1, 1, SET_1(GL_LESS),
304                    _sym_glGetIntegerv(GL_DEPTH_FUNC, (GLint *)value);)
305 GLUE_STATE(GLboolean, gl_depth_writemask, 1, 1, SET_1(GL_TRUE),
306                    _sym_glGetBooleanv(GL_DEPTH_WRITEMASK, (GLboolean *)value);)
307 GLUE_STATE(GLenum, gl_cull_face_mode, 1, 1, SET_1(GL_BACK),
308                    _sym_glGetIntegerv(GL_CULL_FACE_MODE, (GLint *)value);)
309
310 GLUE_STATE(GLuint, gl_tex_2d_state, INITIAL_CTX->gl_tex_units_num[0],
311                    MAX_TEXTURE_UNITS,
312                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
313                    _state_get_texture_states(GL_TEXTURE_BINDING_2D, (GLint *)value);)
314 GLUE_STATE(GLuint, gl_tex_3d_state, INITIAL_CTX->gl_tex_units_num[0],
315                    MAX_TEXTURE_UNITS,
316                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
317                    _state_get_texture_states(GL_TEXTURE_BINDING_3D, (GLint *)value);)
318 GLUE_STATE(GLuint, gl_tex_2d_array_state, INITIAL_CTX->gl_tex_units_num[0],
319                    MAX_TEXTURE_UNITS,
320                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
321                    _state_get_texture_states(GL_TEXTURE_BINDING_2D_ARRAY, (GLint *)value);)
322 GLUE_STATE(GLuint, gl_tex_cube_state, INITIAL_CTX->gl_tex_units_num[0],
323                    MAX_TEXTURE_UNITS,
324                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
325                    _state_get_texture_states(GL_TEXTURE_BINDING_CUBE_MAP, (GLint *)value);)
326 GLUE_STATE(GLuint, gl_tex_external_oes_state, INITIAL_CTX->gl_tex_units_num[0],
327                    MAX_TEXTURE_UNITS,
328                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
329                    _state_get_texture_states(GL_TEXTURE_BINDING_EXTERNAL_OES, (GLint *)value);)
330 GLUE_STATE(GLuint, gl_tex_buffer_ext_state, INITIAL_CTX->gl_tex_units_num[0],
331                    MAX_TEXTURE_UNITS,
332                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
333                    _state_get_texture_states(GL_TEXTURE_BUFFER_EXT, (GLint *)value);)
334 GLUE_STATE(GLuint, gl_tex_2d_multisample_state,
335                    INITIAL_CTX->gl_tex_units_num[0],
336                    MAX_TEXTURE_UNITS,
337                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
338                    _state_get_texture_states(GL_TEXTURE_BINDING_2D_MULTISAMPLE, (GLint *)value);)
339 GLUE_STATE(GLuint, gl_tex_cube_map_array_ext_state,
340                    INITIAL_CTX->gl_tex_units_num[0],
341                    MAX_TEXTURE_UNITS,
342                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
343                    _state_get_texture_states(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT, (GLint *)value);)
344 GLUE_STATE(GLuint, gl_tex_2d_multisample_array_oes_state,
345                    INITIAL_CTX->gl_tex_units_num[0],
346                    MAX_TEXTURE_UNITS,
347                    SET_N(INITIAL_CTX->gl_tex_units_num[0], 1, SET_1(0)),
348                    _state_get_texture_states(GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES, (GLint *)value);)
349
350 GLUE_STATE(GLenum, gl_active_texture, 1, 1, SET_1(GL_TEXTURE0),
351                    _sym_glGetIntegerv(GL_ACTIVE_TEXTURE, (GLint *)value))
352 GLUE_STATE(GLenum, gl_client_active_texture, 1, 1, SET_1(GL_TEXTURE0),
353                    _sym_glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, (GLint *)value))
354 GLUE_STATE(GLenum, gl_generate_mipmap_hint, 1, 1, SET_1(GL_DONT_CARE),
355                    _sym_glGetIntegerv(GL_GENERATE_MIPMAP_HINT, (GLint *)value))
356
357 GLUE_STATE(GLclampf, gl_blend_color, 4, 4, SET_4(0.0f, 0.0f, 0.0f, 0.0f),
358                    _sym_glGetFloatv(GL_BLEND_COLOR, (GLfloat *)value);)
359 GLUE_STATE(GLenum, gl_blend_src_rgb, 1, 1, SET_1(GL_ONE),
360                    _sym_glGetIntegerv(GL_BLEND_SRC_RGB, (GLint *)value);)
361 GLUE_STATE(GLenum, gl_blend_src_alpha, 1, 1, SET_1(GL_ONE),
362                    _sym_glGetIntegerv(GL_BLEND_SRC_ALPHA, (GLint *)value);)
363 GLUE_STATE(GLenum, gl_blend_dst_rgb, 1, 1, SET_1(GL_ZERO),
364                    _sym_glGetIntegerv(GL_BLEND_DST_RGB, (GLint *)value);)
365 GLUE_STATE(GLenum, gl_blend_dst_alpha, 1, 1, SET_1(GL_ZERO),
366                    _sym_glGetIntegerv(GL_BLEND_DST_ALPHA, (GLint *)value);)
367 GLUE_STATE(GLenum, gl_blend_equation_rgb, 1, 1, SET_1(GL_FUNC_ADD),
368                    _sym_glGetIntegerv(GL_BLEND_EQUATION_RGB, (GLint *)value);)
369 GLUE_STATE(GLenum, gl_blend_equation_alpha, 1, 1, SET_1(GL_FUNC_ADD),
370                    _sym_glGetIntegerv(GL_BLEND_EQUATION_ALPHA, (GLint *)value);)
371
372
373 GLUE_STATE(GLenum, gl_stencil_func, 1, 1, SET_1(GL_ALWAYS),
374                    _sym_glGetIntegerv(GL_STENCIL_FUNC, (GLint *)value);)
375 GLUE_STATE(GLint, gl_stencil_ref, 1, 1, SET_1(0),
376                    _sym_glGetIntegerv(GL_STENCIL_REF, (GLint *)value);)
377 GLUE_STATE(GLuintmask, gl_stencil_value_mask, 1, 1,
378                    _sym_glGetIntegerv(GL_STENCIL_VALUE_MASK,
379                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
380                    _sym_glGetIntegerv(GL_STENCIL_VALUE_MASK, (GLint *)value);)
381 GLUE_STATE(GLenum, gl_stencil_fail, 1, 1, SET_1(GL_KEEP),
382                    _sym_glGetIntegerv(GL_STENCIL_FAIL, (GLint *)value);)
383 GLUE_STATE(GLenum, gl_stencil_pass_depth_fail, 1, 1, SET_1(GL_KEEP),
384                    _sym_glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, (GLint *)value);)
385 GLUE_STATE(GLenum, gl_stencil_pass_depth_pass, 1, 1, SET_1(GL_KEEP),
386                    _sym_glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, (GLint *)value);)
387 GLUE_STATE(GLuintmask, gl_stencil_writemask, 1, 1,
388                    _sym_glGetIntegerv(GL_STENCIL_WRITEMASK,
389                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
390                    _sym_glGetIntegerv(GL_STENCIL_WRITEMASK, (GLint *)value);)
391
392 GLUE_STATE(GLenum, gl_stencil_back_func, 1, 1, SET_1(GL_ALWAYS),
393                    _sym_glGetIntegerv(GL_STENCIL_BACK_FUNC, (GLint *)value);)
394 GLUE_STATE(GLint, gl_stencil_back_ref, 1, 1, SET_1(0),
395                    _sym_glGetIntegerv(GL_STENCIL_BACK_REF, (GLint *)value);)
396 GLUE_STATE(GLuintmask, gl_stencil_back_value_mask, 1, 1,
397                    _sym_glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK,
398                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
399                    _sym_glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK, (GLint *)value);)
400 GLUE_STATE(GLenum, gl_stencil_back_fail, 1, 1, SET_1(GL_KEEP),
401                    _sym_glGetIntegerv(GL_STENCIL_BACK_FAIL, (GLint *)value);)
402 GLUE_STATE(GLenum, gl_stencil_back_pass_depth_fail, 1, 1, SET_1(GL_KEEP),
403                    _sym_glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_FAIL, (GLint *)value);)
404 GLUE_STATE(GLenum, gl_stencil_back_pass_depth_pass, 1, 1, SET_1(GL_KEEP),
405                    _sym_glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_PASS, (GLint *)value);)
406 GLUE_STATE(GLuintmask, gl_stencil_back_writemask, 1, 1,
407                    _sym_glGetIntegerv(GL_STENCIL_BACK_WRITEMASK,
408                                                           (GLint *)value); /* DEFAULT NOT EFFECT */,
409                    _sym_glGetIntegerv(GL_STENCIL_BACK_WRITEMASK, (GLint *)value);)
410
411 GLUE_STATE(GLint, gl_stencil_clear_value, 1, 1, SET_1(0),
412                    _sym_glGetIntegerv(GL_STENCIL_CLEAR_VALUE, (GLint *)value);)
413
414 // PIXEL FLAG 1
415 GLUE_STATE(GLint, gl_pack_row_length, 1, 1, SET_1(0),
416                    _sym_glGetIntegerv(GL_PACK_ROW_LENGTH, (GLint *)value);)
417 GLUE_STATE(GLint, gl_pack_skip_rows, 1, 1, SET_1(0),
418                    _sym_glGetIntegerv(GL_PACK_SKIP_ROWS, (GLint *)value);)
419 GLUE_STATE(GLint, gl_pack_skip_pixels, 1, 1, SET_1(0),
420                    _sym_glGetIntegerv(GL_PACK_SKIP_PIXELS, (GLint *)value);)
421 GLUE_STATE(GLint, gl_pack_alignment, 1, 1, SET_1(4),
422                    _sym_glGetIntegerv(GL_PACK_ALIGNMENT, (GLint *)value);)
423
424 // PIXEL FLAG 2
425 GLUE_STATE(GLint, gl_unpack_row_length, 1, 1, SET_1(0),
426                    _sym_glGetIntegerv(GL_UNPACK_ROW_LENGTH, (GLint *)value);)
427 GLUE_STATE(GLint, gl_unpack_skip_rows, 1, 1, SET_1(0),
428                    _sym_glGetIntegerv(GL_UNPACK_SKIP_ROWS, (GLint *)value);)
429 GLUE_STATE(GLint, gl_unpack_skip_pixels, 1, 1, SET_1(0),
430                    _sym_glGetIntegerv(GL_UNPACK_SKIP_PIXELS, (GLint *)value);)
431 GLUE_STATE(GLint, gl_unpack_alignment, 1, 1, SET_1(4),
432                    _sym_glGetIntegerv(GL_UNPACK_ALIGNMENT, (GLint *)value);)
433 GLUE_STATE(GLint, gl_unpack_image_height, 1, 1, SET_1(0),
434                    _sym_glGetIntegerv(GL_UNPACK_IMAGE_HEIGHT, (GLint *)value);)
435 GLUE_STATE(GLint, gl_unpack_skip_images, 1, 1, SET_1(0),
436                    _sym_glGetIntegerv(GL_UNPACK_SKIP_IMAGES, (GLint *)value);)
437
438 // MISC FLAG 1
439 GLUE_STATE(GLenum, gl_front_face, 1, 1, SET_1(GL_CCW),
440                    _sym_glGetIntegerv(GL_FRONT_FACE, (GLint *)value);)
441 GLUE_STATE(GLfloat, gl_line_width, 1, 1, SET_1(1.0f),
442                    _sym_glGetFloatv(GL_LINE_WIDTH, (GLfloat *)value);)
443 GLUE_STATE(GLfloat, gl_polygon_offset_factor, 1, 1, SET_1(0.0f),
444                    _sym_glGetFloatv(GL_POLYGON_OFFSET_FACTOR, (GLfloat *)value);)
445 GLUE_STATE(GLfloat, gl_polygon_offset_units, 1, 1, SET_1(0.0f),
446                    _sym_glGetFloatv(GL_POLYGON_OFFSET_UNITS, (GLfloat *)value);)
447 GLUE_STATE(GLclampf, gl_sample_coverage_value, 1, 1, SET_1(1.0f),
448                    _sym_glGetFloatv(GL_SAMPLE_COVERAGE_VALUE, (GLfloat *)value);)
449 GLUE_STATE(GLboolean, gl_sample_coverage_invert, 1, 1, SET_1(GL_FALSE),
450                    _sym_glGetBooleanv(GL_SAMPLE_COVERAGE_INVERT, (GLboolean *)value);)
451 GLUE_STATE(GLenum, gl_fragment_shader_derivative_hint, 1, 1,
452                    SET_1(GL_DONT_CARE), _sym_glGetIntegerv(GL_FRAGMENT_SHADER_DERIVATIVE_HINT,
453                                    (GLint *)value);)
454
455 // MISC FLAG 2
456 GLUE_STATE(GLint, gl_scissor_box, 4, 4,
457                    _sym_glGetIntegerv(GL_SCISSOR_BOX, (GLint *)value); /* DEFAULT NOT EFFECT */,
458                    _sym_glGetIntegerv(GL_SCISSOR_BOX, (GLint *)value);)
459
460 GLUE_STATE(GLuint, gl_vertex_array_buf_id,
461                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
462                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(0)),
463                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
464                                    GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, (GLint *)value);))
465 GLUE_STATE(GLint, gl_vertex_array_enabled,
466                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
467                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FALSE)),
468                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
469                                    GL_VERTEX_ATTRIB_ARRAY_ENABLED, (GLint *)value);))
470 GLUE_STATE(GLint, gl_vertex_array_size, INITIAL_CTX->gl_vertex_attribs_num[0],
471                    MAX_VERTEX_ATTRIBS,
472                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(4)),
473                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
474                                    GL_VERTEX_ATTRIB_ARRAY_SIZE, (GLint *)value);))
475 GLUE_STATE(GLsizei, gl_vertex_array_stride,
476                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
477                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FALSE)),
478                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
479                                    GL_VERTEX_ATTRIB_ARRAY_STRIDE, (GLint *)value);))
480 GLUE_STATE(GLenum, gl_vertex_array_type, INITIAL_CTX->gl_vertex_attribs_num[0],
481                    MAX_VERTEX_ATTRIBS,
482                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FLOAT)),
483                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
484                                    GL_VERTEX_ATTRIB_ARRAY_TYPE, (GLint *)value);))
485 GLUE_STATE(GLint, gl_vertex_array_normalized,
486                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
487                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FALSE)),
488                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
489                                    GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, (GLint *)value);))
490 GLUE_STATE(GLint, gl_vertex_array_integer,
491                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
492                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FALSE)),
493                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
494                                    GL_VERTEX_ATTRIB_ARRAY_INTEGER, (GLint *)value);))
495 GLUE_STATE(GLuint, gl_vertex_array_divisor,
496                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
497                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(GL_FALSE)),
498                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, _sym_glGetVertexAttribiv(i,
499                                    GL_VERTEX_ATTRIB_ARRAY_DIVISOR, (GLint *)value);))
500 GLUE_STATE(GLvoidptr, gl_vertex_array_pointer,
501                    INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
502                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1, SET_1(NULL)),
503                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 1,
504                                  _sym_glGetVertexAttribPointerv(i, GL_VERTEX_ATTRIB_ARRAY_POINTER,
505                                                  (GLvoidptr *)value);))
506 GLUE_STATE(GLfloat, gl_vertex_attrib_value,
507                    4 * INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
508                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, SET_4(0, 0, 0, 1)),
509                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, _sym_glGetVertexAttribfv(i,
510                                    GL_CURRENT_VERTEX_ATTRIB, (GLfloat *)value);))
511
512 _COREGL_START_API(COREGL_GLAPI_3)
513 GLUE_STATE(GLint, gl_vertex_attrib_value_integer,
514                    4 * INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
515                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, SET_4(0, 0, 0,
516                                    GET_INT_FROM_FLOAT(1.0f))),
517                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, SET_4(0, 0, 0,
518                                    GET_INT_FROM_FLOAT(1.0f))))
519 GLUE_STATE(GLuint, gl_vertex_attrib_value_unsigned_integer,
520                    4 * INITIAL_CTX->gl_vertex_attribs_num[0], MAX_VERTEX_ATTRIBS,
521                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, SET_4(0, 0, 0,
522                                    GET_UINT_FROM_FLOAT(1.0f))),
523                    SET_N(INITIAL_CTX->gl_vertex_attribs_num[0], 4, SET_4(0, 0, 0,
524                                    GET_INT_FROM_FLOAT(1.0f))))
525
526 // MISC FLAG 3
527 GLUE_STATE(GLenum, gl_read_buffer, 1, 1, SET_1(GL_BACK),
528                    _sym_glGetIntegerv(GL_READ_BUFFER, (GLint *)value);)
529 GLUE_STATE(GLenum, gl_draw_buffers, INITIAL_CTX->gl_draw_buffers_num[0], 16,
530                    SET_1(GL_BACK); value++;
531                    SET_N(INITIAL_CTX->gl_draw_buffers_num[0] - 1, 1, SET_1(GL_NONE)),
532                    _state_get_draw_buffers(value);)
533 GLUE_STATE(GLuint, gl_vertex_array_binding, 1, 1, SET_1(0),
534                    _sym_glGetIntegerv(GL_VERTEX_ARRAY_BINDING, (GLint *)value);)
535 GLUE_STATE(GLuint, gl_program_pipeline_binding, 1, 1, SET_1(0),
536                    _sym_glGetIntegerv(GL_PROGRAM_PIPELINE_BINDING, (GLint *)value);)
537 GLUE_STATE(GLuint, gl_transform_feedback_binding, 1, 1, SET_1(0),
538                    _sym_glGetIntegerv(GL_TRANSFORM_FEEDBACK_BINDING, (GLint *)value);)
539 GLUE_STATE(GLboolean, gl_transform_feedback_active, 1, 1, SET_1(0),
540                    _sym_glGetBooleanv(GL_TRANSFORM_FEEDBACK_ACTIVE, (GLboolean *)value);)
541 GLUE_STATE(GLboolean, gl_transform_feedback_paused, 1, 1, SET_1(0),
542                    _sym_glGetBooleanv(GL_TRANSFORM_FEEDBACK_PAUSED, (GLboolean *)value);)
543 _COREGL_END_API(COREGL_GLAPI_3)
544
545 #ifdef _COREGL_START_API_DEFINED_INSIDE
546 #undef _COREGL_START_API
547 #undef _COREGL_START_API_DEFINED_INSIDE
548 #endif
549
550 #ifdef _COREGL_END_API_DEFINED_INSIDE
551 #undef _COREGL_END_API
552 #undef _COREGL_END_API_DEFINED_INSIDE
553 #endif