summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjutty.lee <jutty.lee@samsung.com>2016-11-30 11:36:00 +0900
committerHaegeun Park <haegeun.park@samsung.com>2017-01-11 18:20:35 +0900
commit3c292ecd85beb911900646c79fc455f4570b9412 (patch)
tree32246433329cf8432f8b64f3aee19f5ff29d4a46
parentb955978d3ed25fb016b7331ab4e517b46326a8ef (diff)
downloadefl-3c292ecd85beb911900646c79fc455f4570b9412.tar.gz
util/evas: (GL thread) Add generate tool and data file (5/5)
Added a new python script that generated wrapping APIs for API-level threading Change-Id: I73c982a40685747730f9de601e6a5c33b40b4e57
-rw-r--r--src/utils/evas/generate_gl_thread_api.py1220
-rw-r--r--src/utils/evas/gl_api_def.txt1068
2 files changed, 2288 insertions, 0 deletions
diff --git a/src/utils/evas/generate_gl_thread_api.py b/src/utils/evas/generate_gl_thread_api.py
new file mode 100644
index 0000000000..c986abed42
--- /dev/null
+++ b/src/utils/evas/generate_gl_thread_api.py
@@ -0,0 +1,1220 @@
+#
+# GL threaded API generate tool
+#
+import os, sys, re
+import argparse
+
+global g_verbose
+global g_print_err
+global g_debug_lvl
+
+global g_evas_total
+global g_evgl_total
+global g_evgl_api_total
+
+api_dic_list = list()
+
+_NEWLINE = "\n"
+_MAX_COLUMN = 9
+
+################################################################################
+# api_def data format:
+# 1.| {EVAS |EVAS GL |EVAS GL API} | : Wrapper API types
+# 2.| {return type} |
+# 3.| {api name} |
+# 4.| {paramter1, 2,..} |
+# 5.| {enqueue|flush|finish} | : queue operation
+# 6.| {ext|noext} | : extension API or not
+# 7.| {memory pool name, size, value | ""} |
+# 8.| {GL| GLES} | ""} | : GL types
+# 9.| {"NeedMacro" | ""} | : user macro need or not
+
+def parse_apidef(api):
+ api_dic = {}
+ parse_result = { 'parse_fail':True, 'type':"", 'queue_opr':"", 'ext':False, 'warning':"",
+ 'needCopy':False, 'needMacro':False, 'gl_type':False }
+
+ L = api.split('|')
+
+ if len(L) < _MAX_COLUMN :
+ print "*warning*\nfew column, check format,..(%s)" %(api)
+ return parse_result # few column, invalid format
+
+ api_dic['type'] = L[1].strip()
+ if api_dic['type'] == "EVAS GL API" :
+ api_dic['func_ptr'] = "orig_evgl_api"
+
+ parse_result['type'] = L[1].strip()
+
+ api_dic['return_type'] = L[2].strip()
+ api_dic['api_name'] = L[3].strip()
+
+ # make parameter list and name list
+ para_list = list()
+ para_name_list = list()
+
+ p = re.compile('[a-zA-Z_+][_a-zA-Z0-9]*') # variable pattern
+
+ for para in L[4].split(','):
+ para_list.append(para.strip())
+
+ match_list = p.findall(para.strip())
+ if len(match_list) < 2 :
+ pass # invalid type or variable name OR 'void'
+ else :
+ para_name_list.append(match_list[len(match_list) -1])
+
+ api_dic['para_list'] = para_list
+ api_dic['para_name_list'] = para_name_list
+
+ api_dic['queue_opr'] = L[5].strip()
+ parse_result['queue_opr'] = L[5].strip()
+
+ api_dic['extYN'] = L[6].strip()
+ if L[6].strip() == "ext":
+ parse_result['ext'] = True
+ if api_dic['type'] == "EVAS" : api_dic['func_ptr'] = "orig_evas"
+ elif api_dic['type'] == "EVAS GL" : api_dic['func_ptr'] = "orig_evgl"
+
+ if len(L[7].strip()) > 0 and api_dic['queue_opr'] == "flush": # need copy
+ parse_result['needCopy'] = True
+ copy_info = L[7].split(',')
+
+ if len(copy_info) is 3 : # {memory pool name, size, val}
+ api_dic['mp_name'] = copy_info[0].strip()
+ api_dic['copy_size'] = copy_info[1].strip()
+ api_dic['copy_val'] = copy_info[2].strip()
+ else :
+ parse_result['warning'] = "invalid copy info,..(%s)" %(api_dic['api_name'])
+
+ if len(L[8].strip()) > 0 : #if defiend gl_type
+ api_dic['gl_type'] = L[8].strip()
+ parse_result['gl_type'] = L[8].strip()
+
+ if len(L[9].strip()) > 0 : #if defined userMacro
+ if api_dic['queue_opr'] == "finish" :
+ parse_result['warning'] = "user macro defined at aync operation only,..(%s)" %(api_dic['api_name'])
+ else :
+ api_dic['needMacro'] = True
+ parse_result['needMacro'] = True
+
+ api_dic_list.append(api_dic)
+ parse_result['parse_fail'] = False
+
+ return parse_result
+
+#--------------------------------------------------------------
+def add_result(parse_result, result) :
+
+ if parse_result['parse_fail'] is True:
+ result['fail'] += 1
+ else :
+ result['success'] += 1
+
+ if parse_result['queue_opr'] == "flush" :
+ result['flush'] += 1
+ elif parse_result['queue_opr'] == "finish" :
+ result['finish'] += 1
+ elif parse_result['queue_opr'] == "enqueue" :
+ result['enqueue'] += 1
+
+ if parse_result['ext'] is True:
+ result['ext'] += 1
+ if parse_result['needCopy'] is True:
+ result['needCopy'] += 1
+ if parse_result['needMacro'] is True:
+ result['needMacro'] += 1
+ if parse_result['gl_type'] == "GL" :
+ result['gl'] += 1
+ if len(parse_result['warning']) > 0:
+ result['warning'].append(parse_result['warning'])
+
+
+def get_api_def(api_list_file) :
+
+ warning_msgs = list()
+ result = list()
+ result_evas = { 'success':0, 'fail':0, 'warning':warning_msgs,
+ 'flush':0, 'finish':0, 'enqueue':0,
+ 'ext':0, 'needCopy':0, 'needMacro':0, 'gl':0 }
+ result_evgl = { 'success':0, 'fail':0, 'warning':warning_msgs,
+ 'flush':0, 'finish':0, 'enqueue':0,
+ 'ext':0, 'needCopy':0, 'needMacro':0, 'gl':0 }
+ result_evgl_api = { 'success':0, 'fail':0, 'warning':warning_msgs,
+ 'flush':0, 'finish':0, 'enqueue':0,
+ 'ext':0, 'needCopy':0, 'needMacro':0, 'gl':0 }
+ f = open(api_list_file, 'r')
+
+ lines = f.readlines()
+ f.close()
+
+ for line in lines :
+ api = line.strip()
+
+ if len(api) is 0 : #empty line
+ continue
+
+ if api[0] is '/' and api[1] is '*' : # "/*" comment start
+ continue
+ if api[0] is '*' or api[0] is '/' :
+ continue
+
+ if api[0] is not '#' : # if not comment line
+ parse_result = parse_apidef(api)
+ if parse_result['type'] == "EVAS" :
+ add_result(parse_result, result_evas)
+
+ elif parse_result['type'] == "EVAS GL" :
+ add_result(parse_result, result_evgl)
+
+ elif parse_result['type'] == "EVAS GL API" :
+ add_result(parse_result, result_evgl_api)
+
+
+ result.append(result_evas)
+ result.append(result_evgl)
+ result.append(result_evgl_api)
+
+ return result
+
+#--------------------------------------------------------------
+def list_to_str (name_list) :
+ name_str = ""
+ for p in name_list:
+ if (name_list.index(p) > 0) :
+ name_str += ", "
+ name_str += p
+
+ return name_str
+
+# debug_lvl is 1 or 2
+def logging_and_counter (func_name) :
+
+ func_body = _NEWLINE
+ if g_print_err : func_body += "ERR(\"(counter:%d)\\n\", "
+ else : func_body += "fprintf(stderr,\" %s(%d)\\n\", __func__, "
+ func_body += "%s_counter++);" %(func_name)
+ func_body += "\n"
+
+ return func_body
+
+# debug_lvl is 2
+def define_timeval() :
+ func_body = _NEWLINE
+ func_body += "struct timeval tv1, tv2; /* time value 1, 2 */"
+ func_body += _NEWLINE
+ func_body += "double et; /* elapsed time */"
+ func_body += _NEWLINE
+
+ return func_body
+
+def elapsed_time (tv1, tv2) :
+
+ func_body = _NEWLINE
+ func_body += "et = (%s.tv_sec - %s.tv_sec) * 1000.0;\n" %(tv1, tv2)
+ func_body += "et += (%s.tv_usec - %s.tv_usec) / 1000.0;\n" %(tv1, tv2)
+ func_body += _NEWLINE
+
+ return func_body
+
+# debug_lvl is 3
+def check_glError() :
+
+ func_body = _NEWLINE
+ func_body += "/* for debug, check glError */\n"
+ func_body += "GLenum err = glGetError();\n"
+ func_body += "if (err != GL_NO_ERROR)\n"
+ func_body += "ERR(\"glGetError(%x)\", err);\n"
+ func_body += _NEWLINE
+
+ return func_body
+
+def LOG (buf) :
+ if g_verbose: print buf
+
+def FWRITE (fp, buf) :
+ fp.write(buf)
+
+################################################################################
+def gen_structure(api_def_dic):
+
+ api_type = api_def_dic['type']
+ return_type = api_def_dic['return_type']
+ api_name = api_def_dic['api_name'].strip()
+ para_list = api_def_dic['para_list']
+ para_name_list = api_def_dic['para_name_list']
+ queue_opr = api_def_dic['queue_opr']
+ if api_type == "EVAS" :
+ struct_name_prefix = "Evas_Thread_Command"
+ elif api_type == "EVAS GL" :
+ struct_name_prefix = "EVGL_Thread_Command"
+ elif api_type == "EVAS GL API" :
+ struct_name_prefix = "EVGL_API_Thread_Command"
+
+ s_member = ""
+ if (return_type == "void") and (len(para_name_list) == 0) and g_debug_lvl is not 2 :
+ return ""
+
+ if g_debug_lvl is 2:
+ s_member += _NEWLINE
+ s_member += "struct timeval tv;"
+
+ if return_type != "void" :
+ s_member += _NEWLINE
+ s_member += return_type + " return_value;"
+ for p in para_list :
+ if p == "void":
+ pass
+ else :
+ s_member += _NEWLINE
+ s_member += p + ";"
+
+ if 'copy_val' in api_def_dic :
+ s_member += _NEWLINE
+ s_member += "void *%s_copied; /* COPIED */" %(api_def_dic['copy_val'])
+
+ if queue_opr != "finish" :
+ s_member += _NEWLINE
+ s_member += "int command_allocated;"
+
+ if 'needMacro' in api_def_dic :
+ s_member += _NEWLINE
+ s_member += "%s_VARIABLE_DECLARE /* TODO */" %(api_name.upper())
+ s_member += _NEWLINE
+
+ struct_data = """
+typedef struct
+{%s
+} %s_%s;
+""" %(s_member, struct_name_prefix, api_name)
+
+ return struct_data
+
+#--------------------------------------------------------------
+def gen_function_pointer(api_def_dic) :
+
+ if ('func_ptr' in api_def_dic) is False :
+ return ""
+
+ func_ptr = api_def_dic['func_ptr']
+ api_type = api_def_dic['type']
+ return_type = api_def_dic['return_type']
+ api_name = api_def_dic['api_name']
+ para_data = list_to_str(api_def_dic['para_list'])
+
+ fp_name = "%s_%s" %(func_ptr, api_name)
+ func_body = "\n%s (*%s)(%s);\n" %(return_type, fp_name, para_data)
+
+ if api_type == "EVAS GL API" :
+ return func_body
+ else :
+ func_body += """
+void
+%s_%s_set(void *func)
+{
+%s = func;
+}
+
+void *
+%s_%s_get(void)
+{
+return %s;
+}
+""" %(api_name, func_ptr, fp_name,
+ api_name, func_ptr, fp_name)
+
+ return func_body
+
+#--------------------------------------------------------------
+def gen_gl_thread_api(api_def_dic) :
+
+ api_type = api_def_dic['type']
+ api_name = api_def_dic['api_name']
+ return_type = api_def_dic['return_type']
+ para_name_list = api_def_dic['para_name_list']
+ extYN = api_def_dic['extYN']
+ queue_opr = api_def_dic['queue_opr']
+ gl_prefix = ""
+
+ if api_type == "EVAS" :
+ struct_name_prefix = "Evas_Thread_Command"
+ func_name_prefix = "_gl_thread"
+ if extYN == "ext" : gl_prefix = "orig_evas_" # for extension
+ elif api_type == "EVAS GL" :
+ struct_name_prefix = "EVGL_Thread_Command"
+ func_name_prefix = "_evgl_thread"
+ if extYN == "ext" : gl_prefix = "orig_evgl_" # for extension
+ elif api_type == "EVAS GL API" :
+ struct_name_prefix = "EVGL_API_Thread_Command"
+ func_name_prefix = "_evgl_api_thread"
+ gl_prefix = "orig_evgl_api_"
+
+ para_data = "void *data"
+ func_body = ""
+
+ # logging & increase counter
+ if g_debug_lvl is 1 :
+ func_body += logging_and_counter(func_name_prefix + "_" + api_name)
+ elif g_debug_lvl is 2 :
+ func_body += define_timeval()
+
+ if (return_type == "void") and (len(para_name_list) == 0) and g_debug_lvl is not 2:
+ para_data += " EINA_UNUSED"
+
+ else :
+ func_body += _NEWLINE
+ func_body += "%s_%s *thread_data =\n" %(struct_name_prefix, api_name)
+ func_body += "(%s_%s *)data;\n" %(struct_name_prefix, api_name)
+
+ func_body += _NEWLINE
+
+ # get time of callback function call,..
+ if g_debug_lvl is 2:
+ func_body += "gettimeofday(&tv1, NULL);\n"
+ func_body += elapsed_time("tv1", "(thread_data->tv)")
+ func_body += "printf(\"[%f] callback(%s)\\n\", et, __func__);"
+ func_body += "\n\n"
+
+ # if needMacro
+ if 'needMacro' in api_def_dic :
+ func_body += "\n"
+ func_body += "%s_GLCALL_BEFORE; /* TODO */\n\n" %(api_name.upper())
+
+ # if EVAS GL API, need begin()~end()
+ if api_type == "EVAS GL API":
+ func_body += "evas_gl_thread_begin();\n"
+
+ if return_type != "void" :
+ if g_debug_lvl is 3 :
+ func_body += "%s return_value = " %(return_type)
+ else :
+ func_body += "thread_data->return_value = "
+
+ func_body += "%s%s(" %(gl_prefix, api_name) #GL API or function pointer call
+
+ for p in para_name_list:
+ if (para_name_list.index(p) > 0) :
+ func_body += ","
+ func_body += _NEWLINE
+ func_body += "thread_data->%s" %(p)
+ func_body += ");\n"
+
+ if api_type == "EVAS GL API":
+ func_body += "evas_gl_thread_end();\n"
+
+ # get time of GL API done,..
+ if g_debug_lvl is 2:
+ func_body += _NEWLINE
+ func_body += "gettimeofday(&tv2, NULL);\n"
+ func_body += elapsed_time("tv2", "tv1")
+ func_body += "printf(\"\\t[%f] GL done.\\n\", et);"
+ func_body += _NEWLINE
+ func_body += "memcpy(&(thread_data->tv), &tv2, sizeof(struct timeval));\n"
+
+ if g_debug_lvl is 3 :
+ func_body += _NEWLINE
+ func_body += check_glError()
+ if return_type != "void" :
+ func_body += "thread_data->return_value = return_value;\n"
+
+ # if needMacro
+ if 'needMacro' in api_def_dic :
+ func_body += "\n"
+ func_body += "%s_GLCALL_AFTER; /* TODO */\n" %(api_name.upper())
+
+ # if copy variable, free
+ if 'copy_val' in api_def_dic:
+ func_body += "\n"
+ func_body += _NEWLINE
+ func_body += "if (thread_data->%s_copied)" %(api_def_dic['copy_val'])
+ func_body += _NEWLINE
+ func_body += "eina_mempool_free(%s, thread_data->%s_copied);\n" %(api_def_dic['mp_name'],
+ api_def_dic['copy_val'])
+
+ # thread_data free
+ if (queue_opr != "finish") and len(para_name_list) > 0:
+ func_body += "\n"
+ func_body += "if (thread_data->command_allocated)\n"
+ func_body += "eina_mempool_free(_mp_command, thread_data);"
+
+ return """
+static void
+%s_%s(%s)
+{%s
+}
+""" %(func_name_prefix, api_name, para_data, func_body)
+
+#--------------------------------------------------------------
+def gen_thread_cmd_api(api_def_dic) :
+
+ api_type = api_def_dic['type']
+ api_name = api_def_dic['api_name']
+ return_type = api_def_dic['return_type']
+ para_list = api_def_dic['para_list']
+ para_name_list = api_def_dic['para_name_list']
+ queue_opr = api_def_dic['queue_opr']
+# if queue_opr == "flush" or queue_opr == "enqueue" :
+# print "(%s)%s:%s" %(api_type, api_name, queue_opr)
+ extYN = api_def_dic['extYN']
+ gl_prefix = ""
+ queue_type = ""
+ if 'copy_val' in api_def_dic :
+ mp_name = api_def_dic['mp_name']
+ copy_val = api_def_dic['copy_val']
+ copy_size = api_def_dic['copy_size']
+
+ if api_type == "EVAS" :
+ env_check = "!evas_gl_thread_enabled()"
+ struct_name_prefix = "Evas_Thread_Command"
+ func_name_prefix = "_gl_thread"
+ func_suffix = "th"
+ queue_type = "EVAS_GL_THREAD_TYPE_GL"
+ if extYN == "ext" : gl_prefix = "orig_evas_" # for extension
+ elif api_type == "EVAS GL" :
+ env_check = "!evas_evgl_thread_enabled()"
+ struct_name_prefix = "EVGL_Thread_Command"
+ queue_type = "EVAS_GL_THREAD_TYPE_EVGL"
+ func_name_prefix = "_evgl_thread"
+ func_suffix = "evgl_th"
+ if extYN == "ext" : gl_prefix = "orig_evgl_" # for extension
+ elif api_type == "EVAS GL API" :
+ env_check = "!evas_evgl_thread_enabled()"
+ struct_name_prefix = "EVGL_API_Thread_Command"
+ queue_type = "EVAS_GL_THREAD_TYPE_EVGL"
+ func_name_prefix = "_evgl_api_thread"
+ func_suffix = "evgl_api_th"
+ gl_prefix = "orig_evgl_api_"
+
+ para_data = ""
+ func_body = ""
+
+ if len(para_name_list) == 0 :
+ para_data += "void"
+ else :
+ para_data += list_to_str(para_list)
+
+ para_val = "NULL"
+
+ # thread_mode
+ func_body += _NEWLINE
+ func_body += "int thread_mode = EVAS_GL_THREAD_MODE_FINISH;\n"
+
+ # Has structure
+ if (return_type != "void") or (len(para_name_list) > 0) or (g_debug_lvl is 2):
+ func_body += _NEWLINE
+ func_body += "%s_%s thread_data_local;\n" %(struct_name_prefix, api_name)
+ func_body += "%s_%s *thread_data = &thread_data_local;\n" %(struct_name_prefix,
+ api_name)
+
+
+ # logging & increase counter
+ if g_debug_lvl is 1 :
+ func_body += logging_and_counter("evas_" + api_name + "_" + func_suffix)
+ # if debug level 2, define timeval
+ elif g_debug_lvl is 2 :
+ func_body += _NEWLINE
+ func_body += "printf(\"%s\\n\", __func__);\n"
+ func_body += define_timeval()
+
+ # check use_gl_thread_cmd()
+ func_body += _NEWLINE
+ func_body += "if (%s)" %(env_check)
+ func_body += _NEWLINE
+ func_body += "{"
+ func_body += _NEWLINE
+
+ if g_debug_lvl is 2: # if debug level 2, check elapsed time
+ func_body += _NEWLINE
+ func_body += "gettimeofday(&tv1, NULL);\n"
+ func_body += _NEWLINE
+ if return_type != "void" :
+ func_body += "%s rc;" %(return_type)
+ func_body += _NEWLINE
+ func_body += "rc = "
+ func_body += "%s%s(%s);\n" %(gl_prefix, api_name, list_to_str(para_name_list))
+ func_body += _NEWLINE
+ func_body += "gettimeofday(&tv2, NULL);\n"
+ func_body += elapsed_time("tv2", "tv1")
+ func_body += "printf(\"\\t[%f] GL done. RENDER_THREAD_OFF\\n\", et);\n"
+
+ if return_type != "void" :
+ func_body += "return rc;"
+ func_body += _NEWLINE
+ else :
+ func_body += "return;"
+ func_body += _NEWLINE
+
+ else : # not debug mode
+ if return_type == "void" :
+ func_body += "%s%s(%s);" %(gl_prefix, api_name, list_to_str(para_name_list))
+ func_body += _NEWLINE
+ func_body += "return;"
+
+ else :
+ func_body += "return %s%s(%s);" %(gl_prefix, api_name, list_to_str(para_name_list))
+ func_body += _NEWLINE
+
+ func_body += "}"
+ func_body += _NEWLINE
+
+ # Has structure
+ if (return_type != "void") or (len(para_name_list) > 0) or (g_debug_lvl is 2):
+ para_val = "thread_data"
+
+ # check force_finish() before malloc
+ if queue_opr != "finish" :
+ func_body += _NEWLINE
+ func_body += "/* command_allocated flag init. */\n"
+ func_body += "thread_data->command_allocated = 0;\n"
+ func_body += _NEWLINE
+ func_body += "if (!evas_gl_thread_force_finish())\n"
+ func_body += "{ /* _flush */\n"
+ func_body += "%s_%s *thread_data_new;\n" %(struct_name_prefix, api_name)
+ func_body += "thread_data_new = eina_mempool_malloc(_mp_command,\n"
+ func_body += "sizeof(%s_%s));\n" %(struct_name_prefix, api_name)
+ func_body += "if (thread_data_new)\n"
+ func_body += "{\n"
+ func_body += "thread_data = thread_data_new;\n"
+ func_body += "thread_data->command_allocated = 1;\n"
+ func_body += "thread_mode = EVAS_GL_THREAD_MODE_%s;\n" %(queue_opr.upper())
+ func_body += "}\n"
+ func_body += "}\n"
+
+ # assign parameter to thread_data
+ for p in para_name_list :
+ func_body += _NEWLINE
+
+ idx = para_list[para_name_list.index(p)].find('[') # if parameter is array
+ if idx > 0 :
+ p_dat = para_list[para_name_list.index(p)].split() # type name[size]
+ p_type = p_dat[0] # get type
+ p_temp = p_dat[1].split('[') # get size
+ p_size = p_temp[1].split(']')
+ func_body += "memcpy(thread_data->%s, &%s, sizeof(%s) * %s);" %(p, p, p_type,
+ p_size[0])
+ else :
+ func_body += "thread_data->%s = %s;" %(p, p)
+
+ func_body += _NEWLINE
+ # end of assign
+
+ if 'copy_val' in api_def_dic :
+ func_body += _NEWLINE
+ func_body += "thread_data->%s_copied = NULL;" %(copy_val)
+
+ if 'needMacro' in api_def_dic :
+ func_body += _NEWLINE
+ func_body += "%s_VARIABLE_INIT; /* TODO */\n" %(api_name.upper())
+
+ if queue_opr != "finish" and ('copy_val' in api_def_dic or
+ 'needMacro' in api_def_dic):
+ func_body += _NEWLINE
+ func_body += "if (thread_mode == EVAS_GL_THREAD_MODE_FINISH)\n"
+ func_body += "goto finish;\n"
+
+ # if copy_val defined, copy to given memory pool
+ if 'copy_val' in api_def_dic :
+ param = para_list[para_name_list.index(copy_val)]
+ idx = param.find('*')
+ p_type = param[:idx]
+
+ func_body += _NEWLINE
+ func_body += "/* copy variable */\n"
+ func_body += "if (%s)\n" %(copy_val)
+ func_body += "{\n"
+
+ func_body += "/* 1. check memory size */\n"
+ func_body += "unsigned int copy_size = %s;\n" %(copy_size)
+ func_body += "if (copy_size > %s_memory_size)\n" %(mp_name)
+ func_body += "{\n"
+ func_body += "thread_mode = EVAS_GL_THREAD_MODE_FINISH;\n"
+ func_body += "goto finish;\n"
+ func_body += "}\n"
+
+ func_body += "/* 2. malloc & copy */\n"
+ func_body += "thread_data->%s_copied = " %(copy_val)
+ func_body += "eina_mempool_malloc(%s, copy_size);\n" %(mp_name)
+ func_body += "if (thread_data->%s_copied)\n" %(copy_val)
+ func_body += "{\n"
+ func_body += "memcpy(thread_data->%s_copied, %s, copy_size);\n" %(copy_val, copy_val)
+ func_body += "}\n"
+ func_body += "else\n"
+ func_body += "{\n"
+ func_body += "thread_mode = EVAS_GL_THREAD_MODE_FINISH;\n"
+ func_body += "goto finish;\n"
+ func_body += "}\n"
+
+ func_body += "/* 3. replace */\n"
+ func_body += "thread_data->%s = (%s *)thread_data->%s_copied;\n" %(copy_val, p_type, copy_val)
+ func_body += "}\n"
+
+ func_body += "/* end of copy variable */"
+ func_body += _NEWLINE
+
+ # get time of enqueue
+ if g_debug_lvl is 2:
+ func_body += "gettimeofday(&tv1, NULL);\n"
+ func_body += "memcpy(&(thread_data->tv), &tv1, sizeof(struct timeval));"
+ func_body += _NEWLINE
+
+ if 'needMacro' in api_def_dic :
+ func_body += _NEWLINE
+ func_body += "%s_ASYNC_PREPARE; /* TODO */\n" %(api_name.upper())
+
+ if queue_opr != "finish" and ('copy_val' in api_def_dic or 'needMacro' in api_def_dic):
+ func_body += _NEWLINE
+ func_body += "finish:"
+
+ if 'needMacro' in api_def_dic :
+ func_body += _NEWLINE
+ func_body += "%s_ENQUEUE_BEFORE; /* TODO */\n" %(api_name.upper())
+
+ func_body += _NEWLINE
+ func_body += "evas_gl_thread_cmd_enqueue(%s,\n" %(queue_type)
+ func_body += "%s_%s,\n" %(func_name_prefix, api_name)
+ func_body += "%s,\n" %(para_val)
+ func_body += "thread_mode);"
+ func_body += _NEWLINE
+
+ if 'needMacro' in api_def_dic :
+ func_body += _NEWLINE
+ func_body += "%s_ENQUEUE_AFTER; /* TODO */\n" %(api_name.upper())
+
+ if g_debug_lvl is 2:
+ func_body += _NEWLINE
+ func_body += "gettimeofday(&tv2, NULL);\n"
+ func_body += elapsed_time("tv2", "(thread_data->tv)")
+ func_body += "printf(\"\\t\\t[%f] return\\n\", et);"
+ func_body += _NEWLINE
+ func_body += "gettimeofday(&tv2, NULL);\n"
+ func_body += elapsed_time("tv2", "tv1")
+ func_body += "printf(\"\\t\\t\\t[%f]\\n\", et);"
+ func_body += _NEWLINE
+
+ # Has return
+ if return_type != "void" :
+ func_body += _NEWLINE
+ func_body += "return thread_data->return_value;"
+ func_body += _NEWLINE
+
+ return """
+EAPI %s
+evas_%s_%s(%s)
+{%s}
+""" %(return_type, api_name, func_suffix, para_data, func_body)
+
+#--------------------------------------------------------------
+def gen_wrapper_api_header(api_def_dic) :
+
+ api_type = api_def_dic['type']
+ api_name = api_def_dic['api_name']
+ return_type = api_def_dic['return_type']
+ para_data = list_to_str(api_def_dic['para_list'])
+ extYN = api_def_dic['extYN']
+ if api_type == "EVAS" : api_suffix = "th"
+ elif api_type == "EVAS GL" : api_suffix = "evgl_th"
+ elif api_type == "EVAS GL API" : api_suffix = "evgl_api_th"
+
+ header_data = ""
+
+ if 'func_ptr' in api_def_dic:
+ func_prefix = api_def_dic['func_ptr']
+ if api_type == "EVAS" or api_type == "EVAS GL" :
+ header_data += _NEWLINE
+ header_data += _NEWLINE
+ header_data += "EAPI void %s_%s_set(void *func);" %(api_name, func_prefix)
+ header_data += _NEWLINE
+ header_data += "EAPI void *%s_%s_get(void);" %(api_name, func_prefix)
+ elif api_type == "EVAS GL API" :
+ header_data += _NEWLINE
+ header_data += _NEWLINE
+ header_data += "extern %s (*%s_%s)(%s);" %(return_type, func_prefix,
+ api_name, para_data)
+
+ header_data += _NEWLINE
+ header_data += "EAPI %s evas_%s_%s(%s);" %(return_type, api_name, api_suffix, para_data)
+ if 'gl_type' in api_def_dic and api_def_dic['gl_type'] == "GL" : header_data += _NEWLINE
+
+ return header_data
+
+#--------------------------------------------------------------
+def gen_init_func_data(func_type) :
+
+ init_func_data = "\n\nvoid\n_gl_thread_link_%s_generated_init()\n{\n" %(func_type)
+ init_func_data += \
+"""#define LINK2GENERIC(sym) \\
+ sym = dlsym(RTLD_DEFAULT, #sym); \\
+ if (!sym) ERR("Could not find function '%s'", #sym);
+"""
+ return init_func_data
+
+def gen_symload_set_get(api_dic) :
+
+ fp_name = "%s_%s" %(api_dic['api_name'], api_dic['func_ptr'])
+ symload_data = "LINK2GENERIC(%s_set);" %(fp_name)
+ symload_data += _NEWLINE
+ symload_data += "LINK2GENERIC(%s_get);" %(fp_name)
+ symload_data += _NEWLINE
+
+ return symload_data
+
+#--------------------------------------------------------------
+
+# for debug
+def api_define_print(api) :
+
+ return """
+/*
+* %s
+* %s(%s);
+*/
+""" %(api['return_type'], api['api_name'], list_to_str(api['para_list']))
+
+
+###############################################################################
+def generate_files(out_fname) :
+
+ gen_files = {} # {file name : file pointer}
+ if g_evas_total > 0 :
+ gl_src = out_fname + "_gl_generated.c"
+ gl_hdr = out_fname + "_gl_generated.h"
+
+ gen_files[gl_src] = open(gl_src, 'w')
+ gen_files[gl_hdr] = open(gl_hdr, 'w')
+
+ gl_link_src = out_fname + "_gl_link_generated.c"
+ gl_link_hdr = out_fname + "_gl_link_generated.h"
+
+ gen_files[gl_link_src] = open(gl_link_src, 'w')
+ gen_files[gl_link_hdr] = open(gl_link_hdr, 'w')
+
+ if g_evgl_total > 0 :
+ evgl_src = out_fname + "_evgl_generated.c"
+ evgl_hdr = out_fname + "_evgl_generated.h"
+
+ gen_files[evgl_src] = open(evgl_src, 'w')
+ gen_files[evgl_hdr] = open(evgl_hdr, 'w')
+
+ evgl_link_src = out_fname + "_evgl_link_generated.c"
+ evgl_link_hdr = out_fname + "_evgl_link_generated.h"
+
+ gen_files[evgl_link_src] = open(evgl_link_src, 'w')
+ gen_files[evgl_link_hdr] = open(evgl_link_hdr, 'w')
+
+ if g_evgl_api_total > 0 :
+ evgl_api_src = out_fname + "_evgl_api_generated.c"
+ evgl_api_hdr = out_fname + "_evgl_api_generated.h"
+
+ gen_files[evgl_api_src] = open(evgl_api_src, 'w')
+ gen_files[evgl_api_hdr] = open(evgl_api_hdr, 'w')
+
+ return gen_files
+#--------------------------------------------------------------
+def generate_code(out_files) :
+
+ auto_gen_msg = """/*
+ * This is an automatically generated file using a python script.
+ * ($EFL_HOME/src/utils/evas/generate_gl_thread_api.py)
+ * Recommend that you modify data files ($EFL_HOME/src/utils/evas/gl_api_def.txt)
+ * and make use of scripts if you need to fix them.
+ */
+"""
+ evgl_header_file_head = \
+"""
+#define EVAS_GL_NO_GL_H_CHECK 1
+#include "Evas_GL.h"
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+# ifdef DLL_EXPORT
+# define EAPI __declspec(dllexport)
+# else
+# define EAPI
+# endif /* ! DLL_EXPORT */
+# else
+# define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define EAPI __attribute__ ((visibility("default")))
+# else
+# define EAPI
+# endif
+# else
+# define EAPI
+# endif
+#endif /* ! _WIN32 */
+"""
+
+ files = out_files.keys()
+
+ # get file pointer, init. files...
+ for f in files :
+ out_files[f].truncate()
+ out_files[f].write(auto_gen_msg)
+
+ # EVAS
+ if f.find("_gl_generated.c") > 0 :
+ gl_source_file = out_files[f]
+ if g_debug_lvl is 2 : gl_source_file.write("#include <sys/time.h>\n")
+ if f.find("_gl_generated.h") > 0 :
+ gl_header_file = out_files[f]
+ if f.find("_gl_link_generated.c") > 0 :
+ gl_link_source_file = out_files[f]
+ if f.find("_gl_link_generated.h") > 0 :
+ gl_link_header_file = out_files[f]
+
+ # EVAS GL
+ if f.find("_evgl_generated.c") > 0 :
+ evgl_source_file = out_files[f]
+ if g_debug_lvl is 2 : evgl_source_file.write("#include <sys/time.h>\n")
+ if f.find("_evgl_generated.h") > 0 :
+ evgl_header_file = out_files[f]
+ evgl_header_file.write(evgl_header_file_head)
+ if f.find("_evgl_link_generated.c") > 0 :
+ evgl_link_source_file = out_files[f]
+ if f.find("_evgl_link_generated.h") > 0 :
+ evgl_link_header_file = out_files[f]
+
+ # EVAS GL API
+ if f.find("_evgl_api_generated.c") > 0 :
+ evgl_api_source_file = out_files[f]
+ if g_debug_lvl is 2 : evgl_api_source_file.write("#include <sys/time.h>\n")
+ if f.find("_evgl_api_generated.h") > 0 :
+ evgl_api_header_file = out_files[f]
+ evgl_api_header_file.write(evgl_header_file_head)
+
+ #print ">>> code generate START >>>"
+ #if debug mode, define counter variable
+ if g_debug_lvl is 1 :
+ if g_evas_total > 0 : gl_source_file.write("\n\n/* DEBUG */\n\n")
+ if g_evgl_total > 0 : evgl_source_file.write("\n\n/* DEBUG */\n\n")
+ if g_evgl_api_total > 0 : evgl_api_source_file.write("\n\n/* DEBUG */\n\n")
+
+ for api_dic in api_dic_list :
+ if api_dic['type'] == "EVAS" :
+ api_prefix = "_gl_thread"
+ api_suffix = "th"
+ fp = gl_source_file
+ elif api_dic['type'] == "EVAS GL" :
+ api_prefix = "_evgl_thread"
+ api_suffix = "evgl_th"
+ fp = evgl_source_file
+ elif api_dic['type'] == "EVAS GL API" :
+ api_prefix = "_evgl_api_thread"
+ api_suffix = "evgl_api_th"
+ fp = evgl_api_source_file
+
+ # check gl type,..
+ ifdef_stmt = ""
+ endif_stmt = ""
+ if 'gl_type' in api_dic and api_dic['gl_type'] == "GL" :
+ ifdef_stmt = "#ifndef GL_GLES\n"
+ endif_stmt = "\n#endif\n"
+
+ counter = ifdef_stmt
+ counter += "int %s_%s_counter = 1;\n" %(api_prefix, api_dic['api_name'])
+ counter += "int evas_%s_%s_counter = 1;\n" %(api_dic['api_name'], api_suffix)
+ counter += endif_stmt
+
+ LOG(counter)
+ FWRITE(fp, counter)
+
+ # generate wrapper API
+ for api_dic in api_dic_list :
+
+ api_name = api_dic['api_name']
+ return_type = api_dic['return_type']
+ para_data = list_to_str(api_dic['para_list'])
+ api_type = api_dic['type']
+
+ if api_type == "EVAS" :
+ fp_src = gl_source_file
+ fp_hdr = gl_header_file
+ fp_link_src = gl_link_source_file
+ fp_link_hdr = gl_link_header_file
+ api_suffix = "th"
+ elif api_type == "EVAS GL" :
+ fp_src = evgl_source_file
+ fp_hdr = evgl_header_file
+ fp_link_src = evgl_link_source_file
+ fp_link_hdr = evgl_link_header_file
+ api_suffix = "evgl_th"
+ elif api_type == "EVAS GL API" :
+ fp_src = evgl_api_source_file
+ fp_hdr = evgl_api_header_file
+ api_suffix = "evgl_api_th"
+
+ # check gl type,..
+ ifdef_stmt = ""
+ endif_stmt = ""
+ if 'gl_type' in api_dic and api_dic['gl_type'] == "GL" :
+ ifdef_stmt = "\n#ifndef GL_GLES\n"
+ endif_stmt = "#endif\n"
+
+ ### ifndef,...
+ LOG(ifdef_stmt)
+ FWRITE(fp_src, ifdef_stmt)
+
+ ### API prototype (for debug)
+ debug_msg = api_define_print(api_dic)
+ LOG(debug_msg)
+ FWRITE(fp_src, debug_msg)
+
+ ### data structure
+ struct_data = gen_structure(api_dic)
+ LOG(struct_data)
+ if len(struct_data) > 0 :
+ FWRITE(fp_src, struct_data)
+
+ # define function pointer
+ if 'func_ptr' in api_dic :
+ funcPtr_data = gen_function_pointer(api_dic)
+ LOG(funcPtr_data)
+ FWRITE(fp_src, funcPtr_data)
+
+ # generate call-back function
+ api_data = gen_gl_thread_api(api_dic)
+ LOG(api_data)
+ FWRITE(fp_src, api_data)
+
+ # generate wrapper function
+ api_data = gen_thread_cmd_api(api_dic)
+ LOG(api_data)
+ FWRITE(fp_src, api_data)
+
+ ### endif
+ LOG(endif_stmt)
+ FWRITE(fp_src, endif_stmt)
+
+ ### header
+ header_data = ifdef_stmt
+ header_data += gen_wrapper_api_header(api_dic)
+ header_data += endif_stmt
+
+ LOG(header_data)
+ FWRITE(fp_hdr, header_data)
+
+ ### _link file
+ if api_type == "EVAS" or api_type == "EVAS GL" :
+
+ LOG(ifdef_stmt)
+ FWRITE(fp_link_src, ifdef_stmt)
+
+ if 'func_ptr' in api_dic :
+ fp_suffix = api_dic['func_ptr']
+ set_func = "void (*%s_%s_set)(void *func) = NULL;\n" %(api_name, fp_suffix)
+ get_func = "void *(*%s_%s_get)(void) = NULL;\n" %(api_name, fp_suffix)
+ LOG(set_func + get_func)
+ FWRITE(fp_link_src, set_func + get_func)
+
+ LOG(ifdef_stmt)
+ FWRITE(fp_link_hdr, ifdef_stmt)
+
+ set_func2 = "extern void (*%s_%s_set)(void *func);\n" %(api_name, fp_suffix)
+ get_func2 = "extern void *(*%s_%s_get)(void);\n" %(api_name, fp_suffix)
+ LOG(set_func2 + get_func2)
+ FWRITE(fp_link_hdr, set_func2 + get_func2)
+
+ func_ptr_data = "%s (*evas_%s_%s)(%s) = NULL;\n" %(return_type, api_name,
+ api_suffix, para_data)
+ LOG(func_ptr_data)
+ FWRITE(fp_link_src, func_ptr_data)
+
+ LOG(endif_stmt)
+ FWRITE(fp_link_src, endif_stmt)
+
+ # check gl types,...
+ if not('func_ptr' in api_dic) and 'gl_type' in api_dic :
+ LOG(ifdef_stmt)
+ FWRITE(fp_link_hdr, ifdef_stmt)
+
+ extern_func_ptr_data = "extern %s (*evas_%s_%s)(%s);\n" %(return_type, api_name,
+ api_suffix, para_data)
+ LOG(extern_func_ptr_data)
+ FWRITE(fp_link_hdr, extern_func_ptr_data)
+
+ LOG(endif_stmt)
+ FWRITE(fp_link_hdr, endif_stmt)
+
+ #print "END OF LOOP2"
+
+
+ ### init_symbol func. @_link file
+ if g_evas_total > 0 :
+ init_func_data = gen_init_func_data("gl")
+ gl_link_source_file.write(init_func_data)
+
+ #print "LOOP3-1 START>>>"
+ symload_data = ""
+ for api_dic in api_dic_list :
+ # check gl type,..
+ ifdef_stmt = ""
+ endif_stmt = ""
+ if 'gl_type' in api_dic and api_dic['gl_type'] == "GL" :
+ ifdef_stmt = "\n#ifndef GL_GLES\n"
+ endif_stmt = "\n#endif\n"
+
+ if api_dic['type'] == "EVAS" :
+ symload_data += _NEWLINE
+ symload_data += ifdef_stmt
+ if 'func_ptr' in api_dic :
+ symload_data += gen_symload_set_get(api_dic)
+
+ symload_data += "LINK2GENERIC(evas_%s_th);" %(api_dic['api_name'])
+ symload_data += endif_stmt
+ LOG(symload_data)
+ FWRITE(gl_link_source_file, symload_data)
+
+ #print "END OF LOOP3"
+ FWRITE(gl_link_source_file, "\n}")
+ FWRITE(gl_link_header_file, "\n\nextern void _gl_thread_link_gl_generated_init();\n")
+
+ if g_evgl_total > 0 :
+ init_func_data = gen_init_func_data("evgl")
+ evgl_link_source_file.write(init_func_data)
+
+ #print "LOOP3-2 START>>>"
+ symload_data = ""
+ ifdef_stmt = ""
+ endif_stmt = ""
+ for api_dic in api_dic_list :
+ # check gl type,..
+ ifdef_stmt = ""
+ endif_stmt = ""
+ if 'gl_type' in api_dic and api_dic['gl_type'] == "GL" :
+ ifdef_stmt = "\n#ifndef GL_GLES\n"
+ endif_stmt = "\n#endif\n"
+
+ if api_dic['type'] == "EVAS GL" :
+ symload_data += ifdef_stmt
+ symload_data += _NEWLINE
+ if 'func_ptr' in api_dic :
+ symload_data += gen_symload_set_get(api_dic)
+
+ symload_data += "LINK2GENERIC(evas_%s_evgl_th);" %(api_dic['api_name'])
+ symload_data += endif_stmt
+ LOG(symload_data)
+ FWRITE(evgl_link_source_file, symload_data)
+
+ #print "END OF LOOP3"
+ FWRITE(evgl_link_source_file, "\n}")
+ FWRITE(evgl_link_header_file, "\n\nextern void _gl_thread_link_evgl_generated_init();\n")
+
+ for f in files :
+ out_files[f].close()
+
+#############################################################
+def print_result(result):
+
+ print "* data parsing success: %d, failed: %d" %(result['success'], result['fail'])
+ if len(result['warning']) > 0 :
+ for msg in result['warning'] :
+ print "- warning: %s" %(msg)
+ print "- enqueue: %d, flush: %d, finish: %d" %(result['enqueue'],
+ result['flush'], result['finish'])
+ print "- extension API: %d" %(result['ext'])
+ print "- need Copy variable: %d, userMacro: %d" %(result['needCopy'], result['needMacro'])
+ print "- GL types : %d" %(result['gl'])
+
+#-----------------------------------------------------------#
+if __name__ == '__main__':
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-i',
+ required=True,
+ dest='input_data',
+ action='store',
+ help='API data file name')
+ parser.add_argument('-o',
+ dest='out_file_name',
+ action='store',
+ default='evas_gl_thread',
+ help='output (generated file) name prefix')
+ parser.add_argument('-d', '--debug',
+ type=int,
+ choices=range(0,4),
+ dest='debug_level',
+ action='store',
+ default='0',
+ help='set debug level')
+ parser.add_argument('--print-err',
+ dest='print_err',
+ action='store_true',
+ default=False,
+ help='use ERR(), when debug level 1')
+
+ parser.add_argument('--deploy',
+ dest='deploy',
+ action='store_true',
+ default=False,
+ help='copy output (generated) file to evas engines')
+ parser.add_argument('--verbose',
+ dest='verbose',
+ action='store_true',
+ default=False)
+ parser.add_argument('--version',
+ action='version',
+ version='%(prog)s 1.98')
+
+ args = parser.parse_args()
+ g_verbose = args.verbose
+ g_debug_lvl = args.debug_level
+ g_print_err = args.print_err
+ g_evas_total = 0
+ g_evgl_total = 0
+ g_evgl_api_total = 0
+
+ # parsing data file
+ result = get_api_def(args.input_data)
+
+ res_evas = result[0]
+ res_evgl = result[1]
+ res_evgl_api = result[2]
+
+ g_evas_total = res_evas['success'] + res_evas['fail']
+ g_evgl_total = res_evgl['success'] + res_evgl['fail']
+ g_evgl_api_total = res_evgl_api['success'] + res_evgl_api['fail']
+
+
+ print "[EVAS:%d]" %(g_evas_total)
+ if g_evas_total > 0 : print_result(res_evas)
+
+ print "[EVAS GL:%d]" %(g_evgl_total)
+ if g_evgl_total > 0 : print_result(res_evgl)
+
+ print "[EVAS GL API:%d]" %(g_evgl_api_total)
+ if g_evgl_api_total > 0 : print_result(res_evgl_api)
+
+ print "* Total APIs: %d" %(g_evas_total + g_evgl_total + g_evgl_api_total)
+
+ # generate files
+ gen_files = generate_files(args.out_file_name)
+
+ # generate codes
+ generate_code(gen_files)
+
+ print "* generated files>>"
+ for f in gen_files :
+ print f
+
+
+ #eflindent
+ indent = """vim -c "set ts=8" -c "set sw=3" -c "set sts=3" -c "set expandtab" """
+ indent += """ -c "set cino=>5n-3f0^-2{2(0W1st0" -c "normal gg=G" -c "wq" """
+ for f in gen_files :
+ os.system(indent + f)
+ print "* eflindent done"
+
+ if args.deploy is True:
+ command = "cp %s*_generated.[ch] " %(args.out_file_name)
+ command += "./../../modules/evas/engines/gl_common"
+ os.system(command)
+ print command
+ print "* deploy done."
+
diff --git a/src/utils/evas/gl_api_def.txt b/src/utils/evas/gl_api_def.txt
new file mode 100644
index 0000000000..b2056b590c
--- /dev/null
+++ b/src/utils/evas/gl_api_def.txt
@@ -0,0 +1,1068 @@
+################################################################################
+# GL API Data for generate wrapper API
+################################################################################
+# API definition data file format: (Requires at lease 8 columns)
+# 1.| {EVAS |EVAS GL |EVAS GL API} | : Wrapper API types
+# 2.| {return type} |
+# 3.| {api name} |
+# 4.| {paramter1, 2,..} | : parameter type and name (NOTE: it will be used as defined)
+# 5.| {enqueue|flush|finish} | : queue operation
+# 6.| {ext|noext} | : extension API or not
+# 7.| {memory pool name, size, value | ""} | : if you need to copy variable
+# 8.| {GL| GLES} | ""} | : GL types
+# 9.| { "NeedMacro" | "" } | : generate macro at each code block.
+# if you need own code, descript the code at macro.
+# (NOTE: flush and enquene only)
+################################################################################
+####################################################
+#
+# EVAS
+#
+####################################################
+# Errors
+| EVAS | GLenum | glGetError | void | finish | noext | | | | |
+
+# Vertex Arrays
+## Vertex Array
+| EVAS | void | glVertexAttribPointer | GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void *pointer | finish | noext | | | | |
+| EVAS | void | glEnableVertexAttribArray | GLuint index | enqueue | noext | | | | |
+| EVAS | void | glDisableVertexAttribArray | GLuint index | enqueue | noext | | | | |
+
+## Drawing
+| EVAS | void | glDrawArrays | GLenum mode,GLint first,GLsizei count | finish | noext | | | |
+| EVAS | void | glDrawElements | GLenum mode,GLsizei count,GLenum type,const void *indices | finish | noext | | | |
+
+# Buffer Objects
+| EVAS | void | glGenBuffers | GLsizei n,GLuint *buffers | finish | noext | | | |
+| EVAS | void | glDeleteBuffers | GLsizei n,const GLuint *buffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), buffers | | |
+| EVAS | void | glBindBuffer | GLenum target,GLuint buffer | flush | noext | | | NeedMacro |
+| EVAS | void | glBufferData | GLenum target,GLsizeiptr size,const void *data,GLenum usage | finish | noext | | | |
+| EVAS | void * | glMapBuffer | GLenum target,GLenum access | finish | ext | | | |
+| EVAS | GLboolean | glUnmapBuffer | GLenum target | finish | ext | | | |
+
+# Vertex Shaders
+## Shader Objects
+| EVAS | GLuint | glCreateShader | GLenum type | finish | noext | | | |
+| EVAS | void | glShaderSource | GLuint shader,GLsizei count,const GLchar **string,const GLint *length | flush | noext | | | NeedMacro |
+| EVAS | void | glCompileShader | GLuint shader | flush | noext | | | |
+| EVAS | void | glReleaseShaderCompiler | void | flush | ext | | | |
+| EVAS | void | glDeleteShader | GLuint shader | flush | noext | | | |
+
+## Program Objects
+| EVAS | GLuint | glCreateProgram | void | finish | noext | | | |
+| EVAS | void | glAttachShader | GLuint program,GLuint shader | flush | noext | | | |
+| EVAS | void | glDetachShader | GLuint program,GLuint shader | flush | noext | | | |
+| EVAS | void | glLinkProgram | GLuint program | flush | noext | | | |
+| EVAS | void | glUseProgram | GLuint program | flush | noext | | | |
+| EVAS | void | glProgramParameteri | GLuint program,GLenum pname,GLint value | flush | ext | | | |
+| EVAS | void | glDeleteProgram | GLuint program | flush | noext | | | |
+
+## Program Binaries
+| EVAS | void | glGetProgramBinary | GLuint program,GLsizei bufSize,GLsizei *length,GLenum *binaryFormat,void *binary | finish | ext | | | |
+| EVAS | void | glProgramBinary | GLuint program,GLenum binaryFormat,const void *binary,GLint length | flush | ext | _mp_default, length, binary | | |
+
+## Vertex Attributes
+| EVAS | void | glGetActiveAttrib | GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name | finish | noext | | | |
+| EVAS | GLint | glGetAttribLocation | GLuint program,const GLchar *name | finish | noext | | | |
+| EVAS | void | glBindAttribLocation | GLuint program,GLuint index,const GLchar *name | finish | noext | _mp_default, strlen(name), name | | |
+
+
+## Uniform Variables
+| EVAS | GLint | glGetUniformLocation | GLuint program,const GLchar *name | finish | noext | | | |
+| EVAS | void | glUniform1f | GLint location,GLfloat v0 | flush | noext | | | |
+| EVAS | void | glUniform1i | GLint location,GLint v0 | flush | noext | | | |
+| EVAS | void | glUniform2f | GLint location,GLfloat v0, GLfloat v1 | flush | noext | | | |
+| EVAS | void | glUniform2i | GLint location,GLint v0, GLint v1 | flush | noext | | | |
+| EVAS | void | glUniform3f | GLint location,GLfloat v0,GLfloat v1,GLfloat v2 | flush | noext | | | |
+| EVAS | void | glUniform3i | GLint location,GLint v0, GLint v1, GLint v2 | flush | noext | | | |
+| EVAS | void | glUniform4f | GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3 | flush | noext | | | |
+| EVAS | void | glUniform4i | GLint location,GLint v0, GLint v1, GLint v2, GLint v3 | flush | noext | | | |
+| EVAS | void | glUniform1fv | GLint location,GLsizei count, const GLfloat *value | flush | noext | _mp_uniform, 1 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniform1iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 1 * count * sizeof(GLint), value | | |
+| EVAS | void | glUniform2fv | GLint location,GLsizei count,const GLfloat *value | flush | noext | _mp_uniform, 2 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniform2iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 2 * count * sizeof(GLint), value | | |
+| EVAS | void | glUniform3fv | GLint location,GLsizei count, const GLfloat *value | flush | noext | _mp_uniform, 3 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniform3iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 3 * count * sizeof(GLint), value | | |
+| EVAS | void | glUniform4fv | GLint location,GLsizei count,const GLfloat *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniform4iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLint), value | | |
+| EVAS | void | glUniformMatrix2fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniformMatrix3fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 9 * count * sizeof(GLfloat), value | | |
+| EVAS | void | glUniformMatrix4fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 16 * count * sizeof(GLfloat),value | | |
+
+
+# Viewport
+| EVAS | void | glViewport | GLint x,GLint y,GLsizei width,GLsizei height | flush | noext | | | |
+
+# Enable/Disable
+| EVAS | void | glEnable | GLenum cap | enqueue | noext | | | |
+| EVAS | void | glDisable | GLenum cap | enqueue | noext | | | |
+
+# Line segments
+| EVAS | void | glLineWidth | GLfloat width | flush | noext | | | |
+
+# Polygon
+| EVAS | void | glPolygonOffset | GLfloat factor,GLfloat units | flush | noext | | | |
+
+# Pixel Rectangles
+| EVAS | void | glPixelStorei | GLenum pname,GLint param | flush | noext | | | NeedMacro |
+
+
+# Texturing
+| EVAS | void | glActiveTexture | GLenum texture | flush | noext | | | |
+
+# Texture Objects
+| EVAS | void | glGenTextures | GLsizei n,GLuint *textures | finish | noext | | | |
+| EVAS | void | glBindTexture | GLenum target,GLuint texture | flush | noext | | | |
+| EVAS | void | glDeleteTextures | GLsizei n,const GLuint *textures | flush | noext | _mp_delete_object, n * sizeof(GLuint), textures | | |
+
+
+# Texture Image Specification
+| EVAS | void | glTexImage2D | GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const void *pixels | flush | noext | | | NeedMacro |
+| EVAS | void | glTexSubImage2D | GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const void *pixels | flush | noext | | | NeedMacro |
+
+# Compressed Texture Images
+| EVAS | void | glCompressedTexImage2D | GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const void *data | flush | noext | | | NeedMacro |
+| EVAS | void | glCompressedTexSubImage2D | GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const void *data | flush | noext | | | NeedMacro |
+
+
+# Texture parameters
+| EVAS | void | glTexParameterf | GLenum target,GLenum pname,GLfloat param | flush | noext | | | |
+| EVAS | void | glTexParameterfv | GLenum target, GLenum pname, const GLfloat *params | flush | noext | _mp_default, sizeof(GLfloat), params | | |
+| EVAS | void | glTexParameteri | GLenum target,GLenum pname,GLint param | flush | noext | | | |
+| EVAS | void | glTexParameteriv | GLenum target, GLenum pname, const GLint *params | flush | noext | _mp_default, sizeof(GLint), params | | |
+
+# Scissor Test
+| EVAS | void | glScissor | GLint x,GLint y,GLsizei width,GLsizei height | flush | noext | | | |
+
+## Blending
+| EVAS | void | glBlendFunc | GLenum sfactor,GLenum dfactor | flush | noext | | | |
+| EVAS | void | glBlendColor | GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha | flush | noext | | | |
+
+
+# Fine Control of Buffer Updates
+| EVAS | void | glDepthMask | GLboolean flag | flush | noext | | | |
+
+# Clearing the Buffers
+| EVAS | void | glClear | GLbitfield mask | flush | noext | | | |
+| EVAS | void | glClearColor | GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha | flush | noext | | | |
+
+# Reading and Copying Pixels
+| EVAS | void | glReadPixels | GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,void *pixels | finish | noext | | | |
+
+# Binding & Managing Framebuffer Objects
+| EVAS | void | glGenFramebuffers | GLsizei n,GLuint *framebuffers | finish | ext | | | |
+| EVAS | void | glBindFramebuffer | GLenum target,GLuint framebuffer | flush | ext | | | |
+| EVAS | void | glDeleteFramebuffers | GLsizei n,const GLuint *framebuffers | flush | ext | _mp_delete_object, n * sizeof(GLuint), framebuffers | | |
+
+# Renderbuffer Objects
+| EVAS | void | glGenRenderbuffers | GLsizei n,GLuint *renderbuffers | finish | noext | | | |
+| EVAS | void | glBindRenderbuffer | GLenum target,GLuint renderbuffer | flush | noext | | | |
+| EVAS | void | glDeleteRenderbuffers | GLsizei n,const GLuint *renderbuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), renderbuffers | | |
+| EVAS | void | glRenderbufferStorage | GLenum target,GLenum internalformat,GLsizei width,GLsizei height | flush | noext | | | |
+
+# Attaching Renderbuffer Images to Framebuffer
+| EVAS | void | glFramebufferRenderbuffer | GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer | flush | noext | | | |
+
+# Attaching Texture Images to a Framebuffer
+| EVAS | void | glFramebufferTexture2D | GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level | flush | ext | | | |
+| EVAS | void | glFramebufferTexture2DMultisample | GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLsizei samples | flush | ext | | | |
+
+# Framebuffer Completeness
+| EVAS | GLenum | glCheckFramebufferStatus | GLenum target | finish | noext | | | |
+
+
+# Special Functions
+| EVAS | void | glFlush | void | finish | noext | | | |
+| EVAS | void | glFinish | void | finish | noext | | | |
+| EVAS | void | glHint | GLenum target,GLenum mode | flush | noext | | | |
+
+
+# State and State Requests
+| EVAS | const GLubyte * | glGetString | GLenum name | finish | noext | | | |
+| EVAS | void | glGetBooleanv | GLenum pname,GLboolean *data | finish | noext | | | |
+| EVAS | void | glGetFloatv | GLenum pname,GLfloat *data | finish | noext | | | |
+| EVAS | void | glGetIntegerv | GLenum pname,GLint *data | finish | noext | | | |
+
+# Buffer Queries
+| EVAS | GLboolean | glIsBuffer | GLint buffer | finish | noext | | | |
+| EVAS | void | glGetBufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | noext | | | |
+
+# Shader and Program Queries
+| EVAS | GLboolean | glIsShader | GLuint shader | finish | noext | | | |
+| EVAS | void | glGetShaderiv | GLuint shader,GLenum pname,GLint *params | finish | noext | | | |
+| EVAS | void | glGetAttachedShaders | GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders | finish | noext | | | |
+| EVAS | void | glGetShaderInfoLog | GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *infoLog | finish | noext | | | |
+| EVAS | void | glGetShaderSource | GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source | finish | noext | | | |
+| EVAS | void | glGetShaderPrecisionFormat | GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision | finish | noext | | | |
+| EVAS | void | glGetVertexAttribfv | GLuint index, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS | void | glGetVertexAttribiv | GLuint index, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS | GLboolean | glIsProgram | GLuint program | finish | noext | | | |
+| EVAS | void | glGetProgramInfoLog | GLuint program,GLsizei bufSize,GLsizei *length,GLchar *infoLog | finish | noext | | | |
+| EVAS | void | glGetProgramiv | GLuint program,GLenum pname,GLint *params | finish | noext | | | |
+
+
+# Framebuffer Objects Queries
+| EVAS | GLboolean | glIsFramebuffer | GLint framebuffer | finish | noext | | | |
+| EVAS | void | glGetFramebufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | ext | | | |
+
+# Renderbuffer Object Queries
+| EVAS | GLboolean | glIsRenderbuffer | GLint renderbuffer | finish | noext | | | |
+| EVAS | void | glGetRenderbufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | noext | | | |
+
+# Texture Queries
+| EVAS | GLboolean | glIsTexture | GLint texture | finish | noext | | | |
+
+# Tiling
+| EVAS | void | glStartTiling | GLuint a,GLuint b,GLuint c,GLuint d,GLuint e | flush | ext | | | |
+| EVAS | void | glEndTiling | GLuint a | flush | ext | | | |
+| EVAS | void | glActivateTile | GLuint a,GLuint b,GLuint c,GLuint d,GLuint e | flush | ext | | | |
+
+# EGLImage
+| EVAS | void | glEGLImageTargetTexture2DOES | GLenum target,void *image | finish | ext | | | |
+
+# GL
+| EVAS | void | glAlphaFunc | GLenum func,GLclampf ref | flush | noext | | GL |
+| EVAS | void | glGetTexLevelParameteriv | GLenum target,GLint level,GLenum pname,GLint *params | finish | noext | | GL |
+| EVAS | void | glRenderbufferStorageMultisample | GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height | finish | ext | | GL |
+
+# GLES3
+| EVAS | const GLubyte * | glGetStringi | GLenum name,GLuint index | finish | ext | | | |
+
+####################################################
+#
+# EVAS GL
+#
+####################################################
+# Errors
+| EVAS GL | GLenum | glGetError | void | finish | noext | | | | |
+
+# Vertex Arrays
+## Vertex Array
+| EVAS GL | void | glVertexAttribPointer | GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void *pointer | finish | noext | | | |
+| EVAS GL | void | glEnableVertexAttribArray | GLuint index | flush | noext | | | |
+| EVAS GL | void | glDisableVertexAttribArray | GLuint index | flush | noext | | | |
+
+## Drawing
+| EVAS GL | void | glDrawArrays | GLenum mode,GLint first,GLsizei count | finish | noext | | | |
+| EVAS GL | void | glDrawElements | GLenum mode,GLsizei count,GLenum type,const void *indices | finish | noext | | | |
+
+# Buffer Objects
+| EVAS GL | void | glGenBuffers | GLsizei n,GLuint *buffers | finish | noext | | | |
+| EVAS GL | void | glDeleteBuffers | GLsizei n,const GLuint *buffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), buffers | | |
+| EVAS GL | void | glBindBuffer | GLenum target,GLuint buffer | flush | noext | | | |
+| EVAS GL | void | glBufferData | GLenum target,GLsizeiptr size,const void *data,GLenum usage | finish | noext | | | |
+
+# Vertex Shaders
+## Shader Objects
+| EVAS GL | GLuint | glCreateShader | GLenum type | finish | noext | | | |
+| EVAS GL | void | glShaderSource | GLuint shader,GLsizei count,const GLchar **string,const GLint *length | flush | noext | | | NeedMacro |
+| EVAS GL | void | glCompileShader | GLuint shader | flush | noext | | | |
+| EVAS GL | void | glDeleteShader | GLuint shader | flush | noext | | | |
+
+## Program Objects
+| EVAS GL | GLuint | glCreateProgram | void | finish | noext | | | |
+| EVAS GL | void | glAttachShader | GLuint program,GLuint shader | flush | noext | | | |
+| EVAS GL | void | glDetachShader | GLuint program,GLuint shader | flush | noext | | | |
+| EVAS GL | void | glLinkProgram | GLuint program | flush | noext | | | |
+| EVAS GL | void | glUseProgram | GLuint program | flush | noext | | | |
+| EVAS GL | void | glDeleteProgram | GLuint program | flush | noext | | | |
+
+## Program Binaries
+| EVAS GL | void | glGetProgramBinary | GLuint program,GLsizei bufSize,GLsizei *length,GLenum *binaryFormat,void *binary | finish | ext | | | |
+| EVAS GL | void | glProgramBinary | GLuint program,GLenum binaryFormat,const void *binary,GLint length | flush | ext | _mp_default, length, binary | | |
+
+## Vertex Attributes
+| EVAS GL | void | glGetActiveAttrib | GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name | finish | noext | | | |
+| EVAS GL | GLint | glGetAttribLocation | GLuint program,const GLchar *name | finish | noext | | | |
+| EVAS GL | void | glBindAttribLocation | GLuint program,GLuint index,const GLchar *name | finish | noext | _mp_default, strlen(name), name | | |
+
+
+## Uniform Variables
+| EVAS GL | GLint | glGetUniformLocation | GLuint program,const GLchar *name | finish | noext | | | |
+| EVAS GL | void | glUniform1f | GLint location,GLfloat v0 | flush | noext | | | |
+| EVAS GL | void | glUniform1i | GLint location,GLint v0 | flush | noext | | | |
+| EVAS GL | void | glUniform2f | GLint location,GLfloat v0, GLfloat v1 | flush | noext | | | |
+| EVAS GL | void | glUniform2i | GLint location,GLint v0, GLint v1 | flush | noext | | | |
+| EVAS GL | void | glUniform3f | GLint location,GLfloat v0,GLfloat v1,GLfloat v2 | flush | noext | | | |
+| EVAS GL | void | glUniform3i | GLint location,GLint v0, GLint v1, GLint v2 | flush | noext | | | |
+| EVAS GL | void | glUniform4f | GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3 | flush | noext | | | |
+| EVAS GL | void | glUniform4i | GLint location,GLint v0, GLint v1, GLint v2, GLint v3 | flush | noext | | | |
+| EVAS GL | void | glUniform1fv | GLint location,GLsizei count, const GLfloat *value | flush | noext | _mp_uniform, 1 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniform1iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 1 * count * sizeof(GLint), value | | |
+| EVAS GL | void | glUniform2fv | GLint location,GLsizei count,const GLfloat *value | flush | noext | _mp_uniform, 2 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniform2iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 2 * count * sizeof(GLint), value | | |
+| EVAS GL | void | glUniform3fv | GLint location,GLsizei count, const GLfloat *value | flush | noext | _mp_uniform, 3 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniform3iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 3 * count * sizeof(GLint), value | | |
+| EVAS GL | void | glUniform4fv | GLint location,GLsizei count,const GLfloat *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniform4iv | GLint location,GLsizei count, const GLint *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLint), value | | |
+| EVAS GL | void | glUniformMatrix2fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniformMatrix3fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 9 * count * sizeof(GLfloat), value | | |
+| EVAS GL | void | glUniformMatrix4fv | GLint location,GLsizei count,GLboolean transpose,const GLfloat *value | flush | noext | _mp_uniform, 16 * count * sizeof(GLfloat),value | | |
+
+
+# Viewport
+| EVAS GL | void | glViewport | GLint x,GLint y,GLsizei width,GLsizei height | flush | noext | | | |
+
+# Enable/Disable
+| EVAS GL | void | glEnable | GLenum cap | flush | noext | | | |
+| EVAS GL | void | glDisable | GLenum cap | flush | noext | | | |
+
+# Line segments
+| EVAS GL | void | glLineWidth | GLfloat width | flush | noext | | | |
+
+# Polygon
+| EVAS GL | void | glPolygonOffset | GLfloat factor,GLfloat units | flush | noext | | | |
+
+# Pixel Rectangles
+| EVAS GL | void | glPixelStorei | GLenum pname,GLint param | flush | noext | | | |
+
+
+# Texturing
+| EVAS GL | void | glActiveTexture | GLenum texture | flush | noext | | | |
+
+# Texture Objects
+| EVAS GL | void | glGenTextures | GLsizei n,GLuint *textures | finish | noext | | | |
+| EVAS GL | void | glBindTexture | GLenum target,GLuint texture | flush | noext | | | |
+| EVAS GL | void | glDeleteTextures | GLsizei n,const GLuint *textures | flush | noext | _mp_delete_object, n * sizeof(GLuint), textures | | |
+
+
+# Texture Image Specification
+| EVAS GL | void | glTexImage2D | GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const void *pixels | flush | noext | | | NeedMacro |
+| EVAS GL | void | glTexSubImage2D | GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const void *pixels | flush | noext | | | NeedMacro |
+
+# Compressed Texture Images
+| EVAS GL | void | glCompressedTexImage2D | GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const void *data | flush | noext | | | NeedMacro |
+| EVAS GL | void | glCompressedTexSubImage2D | GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const void *data | flush | noext | | | NeedMacro |
+
+
+# Texture parameters
+| EVAS GL | void | glTexParameterf | GLenum target,GLenum pname,GLfloat param | flush | noext | | | |
+| EVAS GL | void | glTexParameterfv | GLenum target, GLenum pname, const GLfloat *params | flush | noext | _mp_default, sizeof(GLfloat), params | | |
+| EVAS GL | void | glTexParameteri | GLenum target,GLenum pname,GLint param | flush | noext | | | |
+| EVAS GL | void | glTexParameteriv | GLenum target, GLenum pname, const GLint *params | flush | noext | _mp_default, sizeof(GLint), params | | |
+
+# Scissor Test
+| EVAS GL | void | glScissor | GLint x,GLint y,GLsizei width,GLsizei height | flush | noext | | | |
+
+## Blending
+| EVAS GL | void | glBlendFunc | GLenum sfactor,GLenum dfactor | flush | noext | | | |
+| EVAS GL | void | glBlendColor | GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha | flush | noext | | | |
+
+
+# Fine Control of Buffer Updates
+| EVAS GL | void | glDepthMask | GLboolean flag | flush | noext | | | |
+
+# Clearing the Buffers
+| EVAS GL | void | glClear | GLbitfield mask | flush | noext | | | |
+| EVAS GL | void | glClearColor | GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha | flush | noext | | | |
+
+# Reading and Copying Pixels
+| EVAS GL | void | glReadPixels | GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,void *pixels | finish | noext | | | |
+
+# Binding & Managing Framebuffer Objects (GLES2_XX)
+| EVAS GL | void | glGenFramebuffers | GLsizei n,GLuint *framebuffers | finish | noext | | | |
+| EVAS GL | void | glBindFramebuffer | GLenum target,GLuint framebuffer | flush | noext | | | |
+| EVAS GL | void | glDeleteFramebuffers | GLsizei n,const GLuint *framebuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), framebuffers | | |
+
+# Renderbuffer Objects
+| EVAS GL | void | glGenRenderbuffers | GLsizei n,GLuint *renderbuffers | finish | noext | | | |
+| EVAS GL | void | glBindRenderbuffer | GLenum target,GLuint renderbuffer | flush | noext | | | |
+| EVAS GL | void | glDeleteRenderbuffers | GLsizei n,const GLuint *renderbuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), renderbuffers | | |
+| EVAS GL | void | glRenderbufferStorage | GLenum target,GLenum internalformat,GLsizei width,GLsizei height | flush | noext | | | |
+
+# Attaching Renderbuffer Images to Framebuffer
+| EVAS GL | void | glFramebufferRenderbuffer | GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer | flush | noext | | | |
+
+# Attaching Texture Images to a Framebuffer (GLES2_XX)
+| EVAS GL | void | glFramebufferTexture2D | GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level | flush | noext | | | |
+# Framebuffer Completeness (GLES2_XX)
+| EVAS GL | GLenum | glCheckFramebufferStatus | GLenum target | finish | noext | | | |
+
+
+# Special Functions
+| EVAS GL | void | glFlush | void | finish | noext | | | |
+| EVAS GL | void | glFinish | void | finish | noext | | | |
+| EVAS GL | void | glHint | GLenum target,GLenum mode | flush | noext | | | |
+
+
+# State and State Requests
+| EVAS GL | const GLubyte * | glGetString | GLenum name | finish | noext | | | |
+| EVAS GL | void | glGetBooleanv | GLenum pname,GLboolean *data | finish | noext | | | |
+| EVAS GL | void | glGetFloatv | GLenum pname,GLfloat *data | finish | noext | | | |
+| EVAS GL | void | glGetIntegerv | GLenum pname,GLint *data | finish | noext | | | |
+
+# Buffer Queries
+| EVAS GL | GLboolean | glIsBuffer | GLint buffer | finish | noext | | | |
+| EVAS GL | void | glGetBufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | noext | | | |
+
+# Shader and Program Queries
+| EVAS GL | GLboolean | glIsShader | GLuint shader | finish | noext | | | |
+| EVAS GL | void | glGetShaderiv | GLuint shader,GLenum pname,GLint *params | finish | noext | | | |
+| EVAS GL | void | glGetAttachedShaders | GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders | finish | noext | | | |
+| EVAS GL | void | glGetShaderInfoLog | GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *infoLog | finish | noext | | | |
+| EVAS GL | void | glGetShaderSource | GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source | finish | noext | | | |
+| EVAS GL | void | glGetShaderPrecisionFormat | GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision | finish | noext | | | |
+| EVAS GL | void | glGetVertexAttribfv | GLuint index, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL | void | glGetVertexAttribiv | GLuint index, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL | GLboolean | glIsProgram | GLuint program | finish | noext | | | |
+| EVAS GL | void | glGetProgramInfoLog | GLuint program,GLsizei bufSize,GLsizei *length,GLchar *infoLog | finish | noext | | | |
+| EVAS GL | void | glGetProgramiv | GLuint program,GLenum pname,GLint *params | finish | noext | | | |
+
+
+# Framebuffer Objects Queries
+| EVAS GL | GLboolean | glIsFramebuffer | GLint framebuffer | finish | noext | | | |
+
+# Renderbuffer Object Queries
+| EVAS GL | GLboolean | glIsRenderbuffer | GLint renderbuffer | finish | noext | | | |
+| EVAS GL | void | glGetRenderbufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | noext | | | |
+
+# Texture Queries
+| EVAS GL | GLboolean | glIsTexture | GLint texture | finish | noext | | | |
+
+| EVAS GL | void | glClearDepthf | GLclampf depth | finish | noext | | | |
+| EVAS GL | void | glDepthRangef | GLclampf zNear, GLclampf zFar | finish | noext | | | |
+| EVAS GL | void | glClearDepth | GLclampf depth | finish | noext | | | |
+| EVAS GL | void | glDepthRange | GLclampf zNear, GLclampf zFar | finish | noext | | | |
+| EVAS GL | void | glGetFramebufferAttachmentParameteriv | GLenum target, GLenum attachment, GLenum pname, GLint* params | finish | noext | | | |
+
+
+##################################################
+#
+# Evas GL APIs
+#
+##################################################
+# OpenGL-ES 2.0
+| EVAS GL API | void | glActiveTexture | GLenum texture | finish | noext | | | |
+| EVAS GL API | void | glAttachShader | GLuint program, GLuint shader | flush | noext | | | |
+| EVAS GL API | void | glBindAttribLocation | GLuint program, GLuint index, const char* name | finish | noext | _mp_default, strlen(name), name | | |
+| EVAS GL API | void | glBindBuffer | GLenum target, GLuint buffer | flush | noext | | | |
+| EVAS GL API | void | glBindFramebuffer | GLenum target, GLuint framebuffer | flush | noext | | | |
+| EVAS GL API | void | glBindRenderbuffer | GLenum target, GLuint renderbuffer | flush | noext | | | |
+| EVAS GL API | void | glBindTexture | GLenum target, GLuint texture | flush | noext | | | |
+| EVAS GL API | void | glBlendColor | GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha | flush | noext | | | |
+| EVAS GL API | void | glBlendEquation | GLenum mode | flush | noext | | | |
+| EVAS GL API | void | glBlendEquationSeparate | GLenum modeRGB, GLenum modeAlpha | flush | noext | | | |
+| EVAS GL API | void | glBlendFunc | GLenum sfactor, GLenum dfactor | flush | noext | | | |
+| EVAS GL API | void | glBlendFuncSeparate | GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha | flush | noext | | | |
+| EVAS GL API | void | glBufferData | GLenum target, GLsizeiptr size, const void* data, GLenum usage | finish | noext | | | |
+| EVAS GL API | void | glBufferSubData | GLenum target, GLintptr offset, GLsizeiptr size, const void* data | finish | noext | | | |
+| EVAS GL API | GLenum | glCheckFramebufferStatus | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glClear | GLbitfield mask | finish | noext | | | |
+| EVAS GL API | void | glClearColor | GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha | finish | noext | | | |
+| EVAS GL API | void | glClearDepthf | GLclampf depth | finish | noext | | | |
+| EVAS GL API | void | glClearStencil | GLint s | finish | noext | | | |
+| EVAS GL API | void | glColorMask | GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha | finish | noext | | | |
+| EVAS GL API | void | glCompileShader | GLuint shader | flush | noext | | | |
+| EVAS GL API | void | glCompressedTexImage2D | GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data | flush | noext | | | NeedMacro |
+| EVAS GL API | void | glCompressedTexSubImage2D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data | flush | noext | | | NeedMacro |
+| EVAS GL API | void | glCopyTexImage2D | GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border | finish | noext | | | |
+| EVAS GL API | void | glCopyTexSubImage2D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | GLuint | glCreateProgram | void | finish | noext | | | |
+| EVAS GL API | GLuint | glCreateShader | GLenum type | finish | noext | | | |
+| EVAS GL API | void | glCullFace | GLenum mode | finish | noext | | | |
+| EVAS GL API | void | glDeleteBuffers | GLsizei n, const GLuint* buffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), buffers | | |
+| EVAS GL API | void | glDeleteFramebuffers | GLsizei n, const GLuint* framebuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), framebuffers | | |
+| EVAS GL API | void | glDeleteProgram | GLuint program | finish | noext | | | |
+| EVAS GL API | void | glDeleteRenderbuffers | GLsizei n, const GLuint* renderbuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), renderbuffers | | |
+| EVAS GL API | void | glDeleteShader | GLuint shader | flush | noext | | | |
+| EVAS GL API | void | glDeleteTextures | GLsizei n, const GLuint* textures | flush | noext | _mp_delete_object, n * sizeof(GLuint), textures | | |
+| EVAS GL API | void | glDepthFunc | GLenum func | finish | noext | | | |
+| EVAS GL API | void | glDepthMask | GLboolean flag | flush | noext | | | |
+| EVAS GL API | void | glDepthRangef | GLclampf zNear, GLclampf zFar | finish | noext | | | |
+| EVAS GL API | void | glDetachShader | GLuint program, GLuint shader | flush | noext | | | |
+| EVAS GL API | void | glDisable | GLenum cap | flush | noext | | | |
+| EVAS GL API | void | glDisableVertexAttribArray | GLuint index | flush | noext | | | |
+| EVAS GL API | void | glDrawArrays | GLenum mode, GLint first, GLsizei count | finish | noext | | | |
+| EVAS GL API | void | glDrawElements | GLenum mode, GLsizei count, GLenum type, const void* indices | finish | noext | | | |
+| EVAS GL API | void | glEnable | GLenum cap | flush | noext | | | |
+| EVAS GL API | void | glEnableVertexAttribArray | GLuint index | flush | noext | | | |
+| EVAS GL API | void | glFinish | void | finish | noext | | | |
+| EVAS GL API | void | glFlush | void | finish | noext | | | |
+| EVAS GL API | void | glFramebufferRenderbuffer | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | flush | noext | | | |
+| EVAS GL API | void | glFramebufferTexture2D | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | flush | noext | | | |
+| EVAS GL API | void | glFrontFace | GLenum mode | finish | noext | | | |
+| EVAS GL API | void | glGenBuffers | GLsizei n, GLuint* buffers | finish | noext | | | |
+| EVAS GL API | void | glGenerateMipmap | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glGenFramebuffers | GLsizei n, GLuint* framebuffers | finish | noext | | | |
+| EVAS GL API | void | glGenRenderbuffers | GLsizei n, GLuint* renderbuffers | finish | noext | | | |
+| EVAS GL API | void | glGenTextures | GLsizei n, GLuint* textures | finish | noext | | | |
+| EVAS GL API | void | glGetActiveAttrib | GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name | finish | noext | | | |
+| EVAS GL API | void | glGetActiveUniform | GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name | finish | noext | | | |
+| EVAS GL API | void | glGetAttachedShaders | GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders | finish | noext | | | |
+| EVAS GL API | int | glGetAttribLocation | GLuint program, const char* name | finish | noext | | | |
+| EVAS GL API | void | glGetBooleanv | GLenum pname, GLboolean* params | finish | noext | | | |
+| EVAS GL API | void | glGetBufferParameteriv | GLenum target, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | GLenum | glGetError | void | finish | noext | | | |
+| EVAS GL API | void | glGetFloatv | GLenum pname, GLfloat* params | finish | noext | | | |
+| EVAS GL API | void | glGetFramebufferAttachmentParameteriv | GLenum target, GLenum attachment, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetIntegerv | GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetProgramiv | GLuint program, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetProgramInfoLog | GLuint program, GLsizei bufsize, GLsizei* length, char* infolog | finish | noext | | | |
+| EVAS GL API | void | glGetRenderbufferParameteriv | GLenum target, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetShaderiv | GLuint shader, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetShaderInfoLog | GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog | finish | noext | | | |
+| EVAS GL API | void | glGetShaderPrecisionFormat | GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision | finish | noext | | | |
+| EVAS GL API | void | glGetShaderSource | GLuint shader, GLsizei bufsize, GLsizei* length, char* source | finish | noext | | | |
+| EVAS GL API | const GLubyte* | glGetString | GLenum name | finish | noext | | | |
+| EVAS GL API | void | glGetTexParameterfv | GLenum target, GLenum pname, GLfloat* params | finish | noext | | | |
+| EVAS GL API | void | glGetTexParameteriv | GLenum target, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetUniformfv | GLuint program, GLint location, GLfloat* params | finish | noext | | | |
+| EVAS GL API | void | glGetUniformiv | GLuint program, GLint location, GLint* params | finish | noext | | | |
+| EVAS GL API | int | glGetUniformLocation | GLuint program, const char* name | finish | noext | | | |
+| EVAS GL API | void | glGetVertexAttribfv | GLuint index, GLenum pname, GLfloat* params | finish | noext | | | |
+| EVAS GL API | void | glGetVertexAttribiv | GLuint index, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGetVertexAttribPointerv | GLuint index, GLenum pname, void** pointer | finish | noext | | | |
+| EVAS GL API | void | glHint | GLenum target, GLenum mode | flush | noext | | | |
+| EVAS GL API | GLboolean | glIsBuffer | GLuint buffer | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsEnabled | GLenum cap | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsFramebuffer | GLuint framebuffer | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsProgram | GLuint program | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsRenderbuffer | GLuint renderbuffer | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsShader | GLuint shader | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsTexture | GLuint texture | finish | noext | | | |
+| EVAS GL API | void | glLineWidth | GLfloat width | flush | noext | | | |
+| EVAS GL API | void | glLinkProgram | GLuint program | flush | noext | | | |
+| EVAS GL API | void | glPixelStorei | GLenum pname, GLint param | flush | noext | | | |
+| EVAS GL API | void | glPolygonOffset | GLfloat factor, GLfloat units | flush | noext | | | |
+| EVAS GL API | void | glReadPixels | GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels | finish | noext | | | |
+| EVAS GL API | void | glReleaseShaderCompiler | void | flush | noext | | | |
+| EVAS GL API | void | glRenderbufferStorage | GLenum target, GLenum internalformat, GLsizei width, GLsizei height | flush | noext | | | |
+| EVAS GL API | void | glSampleCoverage | GLclampf value, GLboolean invert | finish | noext | | | |
+| EVAS GL API | void | glScissor | GLint x, GLint y, GLsizei width, GLsizei height | flush | noext | | | |
+| EVAS GL API | void | glShaderBinary | GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length | finish | noext | | | |
+| EVAS GL API | void | glShaderSource | GLuint shader, GLsizei count, const char* const * string, const GLint* length | flush | noext | | | NeedMacro |
+| EVAS GL API | void | glStencilFunc | GLenum func, GLint ref, GLuint mask | finish | noext | | | |
+| EVAS GL API | void | glStencilFuncSeparate | GLenum face, GLenum func, GLint ref, GLuint mask | finish | noext | | | |
+| EVAS GL API | void | glStencilMask | GLuint mask | finish | noext | | | |
+| EVAS GL API | void | glStencilMaskSeparate | GLenum face, GLuint mask | finish | noext | | | |
+| EVAS GL API | void | glStencilOp | GLenum fail, GLenum zfail, GLenum zpass | finish | noext | | | |
+| EVAS GL API | void | glStencilOpSeparate | GLenum face, GLenum fail, GLenum zfail, GLenum zpass | finish | noext | | | |
+| EVAS GL API | void | glTexImage2D | GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels | flush | noext | | | NeedMacro |
+| EVAS GL API | void | glTexParameterf | GLenum target, GLenum pname, GLfloat param | flush | noext | | | |
+| EVAS GL API | void | glTexParameterfv | GLenum target, GLenum pname, const GLfloat* params | flush | noext | _mp_default, sizeof(GLfloat), params | | |
+| EVAS GL API | void | glTexParameteri | GLenum target, GLenum pname, GLint param | flush | noext | | | |
+| EVAS GL API | void | glTexParameteriv | GLenum target, GLenum pname, const GLint* params | flush | noext | _mp_default, sizeof(GLint), params | | |
+| EVAS GL API | void | glTexSubImage2D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels | flush | noext | | | NeedMacro |
+| EVAS GL API | void | glUniform1f | GLint location, GLfloat x | flush | noext | | | |
+| EVAS GL API | void | glUniform1fv | GLint location, GLsizei count, const GLfloat* v | flush | noext | _mp_uniform, 1 * count * sizeof(GLfloat), v | | |
+| EVAS GL API | void | glUniform1i | GLint location, GLint x | flush | noext | | | |
+| EVAS GL API | void | glUniform1iv | GLint location, GLsizei count, const GLint* v | flush | noext | _mp_uniform, 1 * count * sizeof(GLint), v | | |
+| EVAS GL API | void | glUniform2f | GLint location, GLfloat x, GLfloat y | flush | noext | | | |
+| EVAS GL API | void | glUniform2fv | GLint location, GLsizei count, const GLfloat* v | flush | noext |_mp_uniform, 2 * count * sizeof(GLfloat), v | | |
+| EVAS GL API | void | glUniform2i | GLint location, GLint x, GLint y | flush | noext | | | |
+| EVAS GL API | void | glUniform2iv | GLint location, GLsizei count, const GLint* v | flush | noext | _mp_uniform, 2 * count * sizeof(GLint), v | | |
+| EVAS GL API | void | glUniform3f | GLint location, GLfloat x, GLfloat y, GLfloat z | flush | noext | | | |
+| EVAS GL API | void | glUniform3fv | GLint location, GLsizei count, const GLfloat* v | flush | noext |_mp_uniform, 3 * count * sizeof(GLfloat), v | | |
+| EVAS GL API | void | glUniform3i | GLint location, GLint x, GLint y, GLint z | flush | noext | | | |
+| EVAS GL API | void | glUniform3iv | GLint location, GLsizei count, const GLint* v | flush | noext | _mp_uniform, 3 * count * sizeof(GLint), v | | |
+| EVAS GL API | void | glUniform4f | GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w | flush | noext | | | |
+| EVAS GL API | void | glUniform4fv | GLint location, GLsizei count, const GLfloat* v | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), v | | |
+| EVAS GL API | void | glUniform4i | GLint location, GLint x, GLint y, GLint z, GLint w | flush | noext | | | |
+| EVAS GL API | void | glUniform4iv | GLint location, GLsizei count, const GLint* v | flush | noext | _mp_uniform, 4 * count * sizeof(GLint), v | | |
+| EVAS GL API | void | glUniformMatrix2fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat* value | flush | noext | _mp_uniform, 4 * count * sizeof(GLfloat), value | | |
+| EVAS GL API | void | glUniformMatrix3fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat* value | flush | noext | _mp_uniform, 9 * count * sizeof(GLfloat), value| | |
+| EVAS GL API | void | glUniformMatrix4fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat* value | flush | noext | _mp_uniform, 16 * count * sizeof(GLfloat), value| | |
+| EVAS GL API | void | glUseProgram | GLuint program | flush | noext | | | |
+| EVAS GL API | void | glValidateProgram | GLuint program | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib1f | GLuint indx, GLfloat x | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib1fv | GLuint indx, const GLfloat* values | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib2f | GLuint indx, GLfloat x, GLfloat y | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib2fv | GLuint indx, const GLfloat* values | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib3f | GLuint indx, GLfloat x, GLfloat y, GLfloat z | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib3fv | GLuint indx, const GLfloat* values | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib4f | GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w | finish | noext | | | |
+| EVAS GL API | void | glVertexAttrib4fv | GLuint indx, const GLfloat* values | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribPointer | GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr | finish | noext | | | |
+| EVAS GL API | void | glViewport | GLint x, GLint y, GLsizei width, GLsizei height | flush | noext | | | |
+# OpenGL-ES 2.0 extensions
+/* GL_OES_EGL_image */
+| EVAS GL API | void | glEvasGLImageTargetTexture2DOES | GLenum target, EvasGLImage image | finish | noext | | | |
+| EVAS GL API | void | glEvasGLImageTargetRenderbufferStorageOES | GLenum target, EvasGLImage image | finish | noext | | | |
+/* GL_OES_get_program_binary */
+| EVAS GL API | void | glGetProgramBinaryOES | GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary | finish | noext | | | |
+| EVAS GL API | void | glProgramBinaryOES | GLuint program, GLenum binaryFormat, const void *binary, GLint length | flush | noext | _mp_default, length, binary | | |
+/* GL_OES_mapbuffer */
+| EVAS GL API | void * | glMapBufferOES | GLenum target, GLenum access | finish | noext | | | |
+| EVAS GL API | GLboolean | glUnmapBufferOES | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glGetBufferPointervOES | GLenum target, GLenum pname, void** params | finish | noext | | | |
+/* GL_OES_texture_3D */
+| EVAS GL API | void | glTexImage3DOES | GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels | finish | noext | | | |
+| EVAS GL API | void | glTexSubImage3DOES | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels | finish | noext | | | |
+| EVAS GL API | void | glCopyTexSubImage3DOES | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glCompressedTexImage3DOES | GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data | finish | noext | | | |
+| EVAS GL API | void | glCompressedTexSubImage3DOES | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data | finish | noext | | | |
+| EVAS GL API | void | glFramebufferTexture3DOES | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset | finish | noext | | | |
+/* AMD_performance_monitor */
+| EVAS GL API | void | glGetPerfMonitorGroupsAMD | GLint* numGroups, GLsizei groupsSize, GLuint* groups | finish | noext | | | |
+| EVAS GL API | void | glGetPerfMonitorCountersAMD | GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters | finish | noext | | | |
+| EVAS GL API | void | glGetPerfMonitorGroupStringAMD | GLuint group, GLsizei bufSize, GLsizei* length, char* groupString | finish | noext | | | |
+| EVAS GL API | void | glGetPerfMonitorCounterStringAMD | GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char* counterString | finish | noext | | | |
+| EVAS GL API | void | glGetPerfMonitorCounterInfoAMD | GLuint group, GLuint counter, GLenum pname, void* data | finish | noext | | | |
+| EVAS GL API | void | glGenPerfMonitorsAMD | GLsizei n, GLuint* monitors | finish | noext | | | |
+| EVAS GL API | void | glDeletePerfMonitorsAMD | GLsizei n, GLuint* monitors | finish | noext | | | |
+| EVAS GL API | void | glSelectPerfMonitorCountersAMD | GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList | finish | noext | | | |
+| EVAS GL API | void | glBeginPerfMonitorAMD | GLuint monitor | finish | noext | | | |
+| EVAS GL API | void | glEndPerfMonitorAMD | GLuint monitor | finish | noext | | | |
+| EVAS GL API | void | glGetPerfMonitorCounterDataAMD | GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten | finish | noext | | | |
+/* GL_EXT_discard_framebuffer */
+| EVAS GL API | void | glDiscardFramebuffer | GLenum target, GLsizei numAttachments, const GLenum* attachments | finish | noext | | | |
+| EVAS GL API | void | glDiscardFramebufferEXT | GLenum target, GLsizei numAttachments, const GLenum* attachments | finish | noext | | | |
+/* GL_EXT_multi_draw_arrays */
+| EVAS GL API | void | glMultiDrawArrays | GLenum mode, GLint* first, GLsizei* count, GLsizei primcount | finish | noext | | | |
+| EVAS GL API | void | glMultiDrawArraysEXT | GLenum mode, GLint* first, GLsizei* count, GLsizei primcount | finish | noext | | | |
+| EVAS GL API | void | glMultiDrawElements | GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount | finish | noext | | | |
+| EVAS GL API | void | glMultiDrawElementsEXT | GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount | finish | noext | | | |
+/* GL_NV_fence */
+| EVAS GL API | void | glDeleteFencesNV | GLsizei n, const GLuint* fences | finish | noext | | | |
+| EVAS GL API | void | glGenFencesNV | GLsizei n, GLuint* fences | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsFenceNV | GLuint fence | finish | noext | | | |
+| EVAS GL API | GLboolean | glTestFenceNV | GLuint fence | finish | noext | | | |
+| EVAS GL API | void | glGetFenceivNV | GLuint fence, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glFinishFenceNV | GLuint fence | finish | noext | | | |
+| EVAS GL API | void | glSetFenceNV | GLuint a, GLenum b | finish | noext | | | |
+/* GL_QCOM_driver_control */
+| EVAS GL API | void | glGetDriverControlsQCOM | GLint* num, GLsizei size, GLuint* driverControls | finish | noext | | | |
+| EVAS GL API | void | glGetDriverControlStringQCOM | GLuint driverControl, GLsizei bufSize, GLsizei* length, char* driverControlString | finish | noext | | | |
+| EVAS GL API | void | glEnableDriverControlQCOM | GLuint driverControl | finish | noext | | | |
+| EVAS GL API | void | glDisableDriverControlQCOM | GLuint driverControl | finish | noext | | | |
+/* GL_QCOM_extended_get */
+| EVAS GL API | void | glExtGetTexturesQCOM | GLuint* textures, GLint maxTextures, GLint* numTextures | finish | noext | | | |
+| EVAS GL API | void | glExtGetBuffersQCOM | GLuint* buffers, GLint maxBuffers, GLint* numBuffers | finish | noext | | | |
+| EVAS GL API | void | glExtGetRenderbuffersQCOM | GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers | finish | noext | | | |
+| EVAS GL API | void | glExtGetFramebuffersQCOM | GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers | finish | noext | | | |
+| EVAS GL API | void | glExtGetTexLevelParameterivQCOM | GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glExtTexObjectStateOverrideiQCOM | GLenum target, GLenum pname, GLint param | finish | noext | | | |
+| EVAS GL API | void | glExtGetTexSubImageQCOM | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void* texels | finish | noext | | | |
+| EVAS GL API | void | glExtGetBufferPointervQCOM | GLenum target, void** params | finish | noext | | | |
+/* GL_QCOM_extended_get2 */
+| EVAS GL API | void | glExtGetShadersQCOM | GLuint* shaders, GLint maxShaders, GLint* numShaders | finish | noext | | | |
+| EVAS GL API | void | glExtGetProgramsQCOM | GLuint* programs, GLint maxPrograms, GLint* numPrograms | finish | noext | | | |
+| EVAS GL API | GLboolean | glExtIsProgramBinaryQCOM | GLuint program | finish | noext | | | |
+| EVAS GL API | void | glExtGetProgramBinarySourceQCOM | GLuint program, GLenum shadertype, char* source, GLint* length | finish | noext | | | |
+# OpenGL-ES 1.1
+/* Available only in Common profile */
+| EVAS GL API | void | glAlphaFunc | GLenum func, GLclampf ref | finish | noext | | | |
+| EVAS GL API | void | glClipPlanef | GLenum plane, const GLfloat *equation | finish | noext | | | |
+| EVAS GL API | void | glColor4f | GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha | finish | noext | | | |
+| EVAS GL API | void | glFogf | GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glFogfv | GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glFrustumf | GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar | finish | noext | | | |
+| EVAS GL API | void | glGetClipPlanef | GLenum pname, GLfloat eqn[4] | finish | noext | | | |
+| EVAS GL API | void | glGetLightfv | GLenum light, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glGetMaterialfv | GLenum face, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexEnvfv | GLenum env, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glLightModelf | GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glLightModelfv | GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glLightf | GLenum light, GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glLightfv | GLenum light, GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glLoadMatrixf | const GLfloat *m | finish | noext | | | |
+| EVAS GL API | void | glMaterialf | GLenum face, GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glMaterialfv | GLenum face, GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glMultMatrixf | const GLfloat *m | finish | noext | | | |
+| EVAS GL API | void | glMultiTexCoord4f | GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q | finish | noext | | | |
+| EVAS GL API | void | glNormal3f | GLfloat nx, GLfloat ny, GLfloat nz | finish | noext | | | |
+| EVAS GL API | void | glOrthof | GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar | finish | noext | | | |
+| EVAS GL API | void | glPointParameterf | GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glPointParameterfv | GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glPointSize | GLfloat size | finish | noext | | | |
+| EVAS GL API | void | glPointSizePointerOES | GLenum type, GLsizei stride, const GLvoid * pointer | finish | noext | | | |
+| EVAS GL API | void | glRotatef | GLfloat angle, GLfloat x, GLfloat y, GLfloat z | finish | noext | | | |
+| EVAS GL API | void | glScalef | GLfloat x, GLfloat y, GLfloat z | finish | noext | | | |
+| EVAS GL API | void | glTexEnvf | GLenum target, GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glTexEnvfv | GLenum target, GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glTranslatef | GLfloat x, GLfloat y, GLfloat z | finish | noext | | | |
+/* Available in both Common and Common-Lite profiles */
+| EVAS GL API | void | glAlphaFuncx | GLenum func, GLclampx ref | finish | noext | | | |
+| EVAS GL API | void | glClearColorx | GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha | finish | noext | | | |
+| EVAS GL API | void | glClearDepthx | GLclampx depth | finish | noext | | | |
+| EVAS GL API | void | glClientActiveTexture | GLenum texture | finish | noext | | | |
+| EVAS GL API | void | glClipPlanex | GLenum plane, const GLfixed *equation | finish | noext | | | |
+| EVAS GL API | void | glColor4ub | GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha | finish | noext | | | |
+| EVAS GL API | void | glColor4x | GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha | finish | noext | | | |
+| EVAS GL API | void | glColorPointer | GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+| EVAS GL API | void | glDepthRangex | GLclampx zNear, GLclampx zFar | finish | noext | | | |
+| EVAS GL API | void | glDisableClientState | GLenum array | finish | noext | | | |
+| EVAS GL API | void | glEnableClientState | GLenum array | finish | noext | | | |
+| EVAS GL API | void | glFogx | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glFogxv | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glFrustumx | GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar | finish | noext | | | |
+| EVAS GL API | void | glGetClipPlanex | GLenum pname, GLfixed eqn[4] | finish | noext | | | |
+| EVAS GL API | void | glGetFixedv | GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetLightxv | GLenum light, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetMaterialxv | GLenum face, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetPointerv | GLenum pname, GLvoid **params | finish | noext | | | |
+| EVAS GL API | void | glGetTexEnviv | GLenum env, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexEnvxv | GLenum env, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexParameterxv | GLenum target, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLightModelx | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glLightModelxv | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLightx | GLenum light, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glLightxv | GLenum light, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLineWidthx | GLfixed width | finish | noext | | | |
+| EVAS GL API | void | glLoadIdentity | void | finish | noext | | | |
+| EVAS GL API | void | glLoadMatrixx | const GLfixed *m | finish | noext | | | |
+| EVAS GL API | void | glLogicOp | GLenum opcode | finish | noext | | | |
+| EVAS GL API | void | glMaterialx | GLenum face, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glMaterialxv | GLenum face, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glMatrixMode | GLenum mode | finish | noext | | | |
+| EVAS GL API | void | glMultMatrixx | const GLfixed *m | finish | noext | | | |
+| EVAS GL API | void | glMultiTexCoord4x | GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q | finish | noext | | | |
+| EVAS GL API | void | glNormal3x | GLfixed nx, GLfixed ny, GLfixed nz | finish | noext | | | |
+| EVAS GL API | void | glNormalPointer | GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+| EVAS GL API | void | glOrthox | GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar | finish | noext | | | |
+| EVAS GL API | void | glPointParameterx | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glPointParameterxv | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glPointSizex | GLfixed size | finish | noext | | | |
+| EVAS GL API | void | glPolygonOffsetx | GLfixed factor, GLfixed units | finish | noext | | | |
+| EVAS GL API | void | glPopMatrix | void | finish | noext | | | |
+| EVAS GL API | void | glPushMatrix | void | finish | noext | | | |
+| EVAS GL API | void | glRotatex | GLfixed angle, GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+| EVAS GL API | void | glSampleCoveragex | GLclampx value, GLboolean invert | finish | noext | | | |
+| EVAS GL API | void | glScalex | GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+| EVAS GL API | void | glShadeModel | GLenum mode | finish | noext | | | |
+| EVAS GL API | void | glTexCoordPointer | GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+| EVAS GL API | void | glTexEnvi | GLenum target, GLenum pname, GLint param | finish | noext | | | |
+| EVAS GL API | void | glTexEnvx | GLenum target, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glTexEnviv | GLenum target, GLenum pname, const GLint *params | finish | noext | | | |
+| EVAS GL API | void | glTexEnvxv | GLenum target, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glTexParameterx | GLenum target, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glTexParameterxv | GLenum target, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glTranslatex | GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+| EVAS GL API | void | glVertexPointer | GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+# OpenGL-ES 1.0
+/* GL_OES_blend_equation_separate */
+| EVAS GL API | void | glBlendEquationSeparateOES | GLenum modeRGB, GLenum modeAlpha | finish | noext | | | |
+/* GL_OES_blend_func_separate */
+| EVAS GL API | void | glBlendFuncSeparateOES | GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha | finish | noext | | | |
+/* GL_OES_blend_subtract */
+| EVAS GL API | void | glBlendEquationOES | GLenum mode | finish | noext | | | |
+/* GL_OES_draw_texture */
+| EVAS GL API | void | glDrawTexsOES | GLshort x, GLshort y, GLshort z, GLshort width, GLshort height | finish | noext | | | |
+| EVAS GL API | void | glDrawTexiOES | GLint x, GLint y, GLint z, GLint width, GLint height | finish | noext | | | |
+| EVAS GL API | void | glDrawTexxOES | GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height | finish | noext | | | |
+| EVAS GL API | void | glDrawTexsvOES | const GLshort *coords | finish | noext | | | |
+| EVAS GL API | void | glDrawTexivOES | const GLint *coords | finish | noext | | | |
+| EVAS GL API | void | glDrawTexxvOES | const GLfixed *coords | finish | noext | | | |
+| EVAS GL API | void | glDrawTexfOES | GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height | finish | noext | | | |
+| EVAS GL API | void | glDrawTexfvOES | const GLfloat *coords | finish | noext | | | |
+/* GL_OES_fixed_point */
+| EVAS GL API | void | glAlphaFuncxOES | GLenum func, GLclampx ref | finish | noext | | | |
+| EVAS GL API | void | glClearColorxOES | GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha | finish | noext | | | |
+| EVAS GL API | void | glClearDepthxOES | GLclampx depth | finish | noext | | | |
+| EVAS GL API | void | glClipPlanexOES | GLenum plane, const GLfixed *equation | finish | noext | | | |
+| EVAS GL API | void | glColor4xOES | GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha | finish | noext | | | |
+| EVAS GL API | void | glDepthRangexOES | GLclampx zNear, GLclampx zFar | finish | noext | | | |
+| EVAS GL API | void | glFogxOES | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glFogxvOES | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glFrustumxOES | GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar | finish | noext | | | |
+| EVAS GL API | void | glGetClipPlanexOES | GLenum pname, GLfixed eqn[4] | finish | noext | | | |
+| EVAS GL API | void | glGetFixedvOES | GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetLightxvOES | GLenum light, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetMaterialxvOES | GLenum face, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexEnvxvOES | GLenum env, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexParameterxvOES | GLenum target, GLenum pname, GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLightModelxOES | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glLightModelxvOES | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLightxOES | GLenum light, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glLightxvOES | GLenum light, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glLineWidthxOES | GLfixed width | finish | noext | | | |
+| EVAS GL API | void | glLoadMatrixxOES | const GLfixed *m | finish | noext | | | |
+| EVAS GL API | void | glMaterialxOES | GLenum face, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glMaterialxvOES | GLenum face, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glMultMatrixxOES | const GLfixed *m | finish | noext | | | |
+| EVAS GL API | void | glMultiTexCoord4xOES | GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q | finish | noext | | | |
+| EVAS GL API | void | glNormal3xOES | GLfixed nx, GLfixed ny, GLfixed nz | finish | noext | | | |
+| EVAS GL API | void | glOrthoxOES | GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar | finish | noext | | | |
+| EVAS GL API | void | glPointParameterxOES | GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glPointParameterxvOES | GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glPointSizexOES | GLfixed size | finish | noext | | | |
+| EVAS GL API | void | glPolygonOffsetxOES | GLfixed factor, GLfixed units | finish | noext | | | |
+| EVAS GL API | void | glRotatexOES | GLfixed angle, GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+| EVAS GL API | void | glSampleCoveragexOES | GLclampx value, GLboolean invert | finish | noext | | | |
+| EVAS GL API | void | glScalexOES | GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+| EVAS GL API | void | glTexEnvxOES | GLenum target, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glTexEnvxvOES | GLenum target, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glTexParameterxOES | GLenum target, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glTexParameterxvOES | GLenum target, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glTranslatexOES | GLfixed x, GLfixed y, GLfixed z | finish | noext | | | |
+/* GL_OES_framebuffer_object */
+| EVAS GL API | GLboolean | glIsRenderbufferOES | GLuint renderbuffer | finish | noext | | | |
+| EVAS GL API | void | glBindRenderbufferOES | GLenum target, GLuint renderbuffer | flush | noext | | | |
+| EVAS GL API | void | glDeleteRenderbuffersOES | GLsizei n, const GLuint* renderbuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), renderbuffers | | |
+| EVAS GL API | void | glGenRenderbuffersOES | GLsizei n, GLuint* renderbuffers | finish | noext | | | |
+| EVAS GL API | void | glRenderbufferStorageOES | GLenum target, GLenum internalformat, GLsizei width, GLsizei height | flush | noext | | | |
+| EVAS GL API | void | glGetRenderbufferParameterivOES | GLenum target, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsFramebufferOES | GLuint framebuffer | finish | noext | | | |
+| EVAS GL API | void | glBindFramebufferOES | GLenum target, GLuint framebuffer | flush | noext | | | |
+| EVAS GL API | void | glDeleteFramebuffersOES | GLsizei n, const GLuint* framebuffers | flush | noext | _mp_delete_object, n * sizeof(GLuint), framebuffers| | |
+| EVAS GL API | void | glGenFramebuffersOES | GLsizei n, GLuint* framebuffers | finish | noext | | | |
+| EVAS GL API | GLenum | glCheckFramebufferStatusOES | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glFramebufferRenderbufferOES | GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer | flush | noext | | | |
+| EVAS GL API | void | glFramebufferTexture2DOES | GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level | flush | noext | | | |
+| EVAS GL API | void | glGetFramebufferAttachmentParameterivOES | GLenum target, GLenum attachment, GLenum pname, GLint* params | finish | noext | | | |
+| EVAS GL API | void | glGenerateMipmapOES | GLenum target | finish | noext | | | |
+/* GL_OES_matrix_palette */
+| EVAS GL API | void | glCurrentPaletteMatrixOES | GLuint matrixpaletteindex | finish | noext | | | |
+| EVAS GL API | void | glLoadPaletteFromModelViewMatrixOES | void | finish | noext | | | |
+| EVAS GL API | void | glMatrixIndexPointerOES | GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+| EVAS GL API | void | glWeightPointerOES | GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+/* GL_OES_query_matrix */
+| EVAS GL API | GLbitfield | glQueryMatrixxOES | GLfixed mantissa[16], GLint exponent[16] | finish | noext | | | |
+/* GL_OES_single_precision */
+| EVAS GL API | void | glDepthRangefOES | GLclampf zNear, GLclampf zFar | finish | noext | | | |
+| EVAS GL API | void | glFrustumfOES | GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar | finish | noext | | | |
+| EVAS GL API | void | glOrthofOES | GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar | finish | noext | | | |
+| EVAS GL API | void | glClipPlanefOES | GLenum plane, const GLfloat *equation | finish | noext | | | |
+| EVAS GL API | void | glGetClipPlanefOES | GLenum pname, GLfloat eqn[4] | finish | noext | | | |
+| EVAS GL API | void | glClearDepthfOES | GLclampf depth | finish | noext | | | |
+/* GL_OES_texture_cube_map */
+| EVAS GL API | void | glTexGenfOES | GLenum coord, GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glTexGenfvOES | GLenum coord, GLenum pname, const GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glTexGeniOES | GLenum coord, GLenum pname, GLint param | finish | noext | | | |
+| EVAS GL API | void | glTexGenivOES | GLenum coord, GLenum pname, const GLint *params | finish | noext | | | |
+| EVAS GL API | void | glTexGenxOES | GLenum coord, GLenum pname, GLfixed param | finish | noext | | | |
+| EVAS GL API | void | glTexGenxvOES | GLenum coord, GLenum pname, const GLfixed *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexGenfvOES | GLenum coord, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexGenivOES | GLenum coord, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexGenxvOES | GLenum coord, GLenum pname, GLfixed *params | finish | noext | | | |
+/* GL_OES_vertex_array_object */
+| EVAS GL API | void | glBindVertexArrayOES | GLuint array | finish | noext | | | |
+| EVAS GL API | void | glDeleteVertexArraysOES | GLsizei n, const GLuint *arrays | finish | noext | | | |
+| EVAS GL API | void | glGenVertexArraysOES | GLsizei n, GLuint *arrays | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsVertexArrayOES | GLuint array | finish | noext | | | |
+/* GL_APPLE_copy_texture_levels */
+| EVAS GL API | void | glCopyTextureLevelsAPPLE | GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount | finish | noext | | | |
+| EVAS GL API | void | glRenderbufferStorageMultisampleAPPLE | GLenum a, GLsizei b, GLenum c, GLsizei d, GLsizei e | finish | noext | | | |
+| EVAS GL API | void | glResolveMultisampleFramebufferAPPLE | void | finish | noext | | | |
+| EVAS GL API | GLsync | glFenceSyncAPPLE | GLenum condition, GLbitfield flags | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsSyncAPPLE | GLsync sync | finish | noext | | | |
+| EVAS GL API | void | glDeleteSyncAPPLE | GLsync sync | finish | noext | | | |
+| EVAS GL API | GLenum | glClientWaitSyncAPPLE | GLsync sync, GLbitfield flags, EvasGLuint64 timeout | finish | noext | | | |
+| EVAS GL API | void | glWaitSyncAPPLE | GLsync sync, GLbitfield flags, EvasGLuint64 timeout | finish | noext | | | |
+| EVAS GL API | void | glGetInteger64vAPPLE | GLenum pname, EvasGLint64 *params | finish | noext | | | |
+| EVAS GL API | void | glGetSyncivAPPLE | GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values | finish | noext | | | |
+/* GL_EXT_map_buffer_range */
+| EVAS GL API | void * | glMapBufferRangeEXT | GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access | finish | noext | | | |
+| EVAS GL API | void | glFlushMappedBufferRangeEXT | GLenum target, GLintptr offset, GLsizeiptr length | finish | noext | | | |
+/* GL_EXT_multisampled_render_to_texture */
+| EVAS GL API | void | glRenderbufferStorageMultisampleEXT | GLenum a, GLsizei b, GLenum c, GLsizei d, GLsizei e| finish | noext | | | |
+| EVAS GL API | void | glFramebufferTexture2DMultisample | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | flush | noext | | | |
+| EVAS GL API | void | glFramebufferTexture2DMultisampleEXT | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | flush | noext | | | |
+/* GL_EXT_robustness */
+| EVAS GL API | GLenum | glGetGraphicsResetStatus | void | finish | noext | | | |
+| EVAS GL API | GLenum | glGetGraphicsResetStatusEXT | void | finish | noext | | | |
+| EVAS GL API | void | glReadnPixels | GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data | finish | noext | | | |
+| EVAS GL API | void | glReadnPixelsEXT | GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data | finish | noext | | | |
+| EVAS GL API | void | glGetnUniformfv | GLuint program, GLint location, GLsizei bufSize, float *params | finish | noext | | | |
+| EVAS GL API | void | glGetnUniformfvEXT | GLuint program, GLint location, GLsizei bufSize, float *params | finish | noext | | | |
+| EVAS GL API | void | glGetnUniformiv | GLuint program, GLint location, GLsizei bufSize, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetnUniformivEXT | GLuint program, GLint location, GLsizei bufSize, GLint *params | finish | noext | | | |
+/* GL_EXT_texture_storage */
+| EVAS GL API | void | glTexStorage1DEXT | GLenum target, GLsizei levels, GLenum internalformat, GLsizei width | finish | noext | | | |
+| EVAS GL API | void | glTexStorage2DEXT | GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glTexStorage3DEXT | GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth | finish | noext | | | |
+| EVAS GL API | void | glTextureStorage1DEXT | GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width | finish | noext | | | |
+| EVAS GL API | void | glTextureStorage2DEXT | GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glTextureStorage3DEXT | GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth | finish | noext | | | |
+/* GL_IMG_user_clip_plane */
+| EVAS GL API | void | glClipPlanefIMG | GLenum a, const GLfloat * b | finish | noext | | | |
+| EVAS GL API | void | glClipPlanexIMG | GLenum a, const GLfixed * b | finish | noext | | | |
+/* GL_IMG_multisampled_render_to_texture */
+| EVAS GL API | void | glRenderbufferStorageMultisampleIMG | GLenum a, GLsizei b, GLenum c, GLsizei d, GLsizei e | flush | noext | | | |
+| EVAS GL API | void | glFramebufferTexture2DMultisampleIMG | GLenum a, GLenum b, GLenum c, GLuint d, GLint e, GLsizei f | flush | noext | | | |
+/* GL_QCOM_tiled_rendering */
+| EVAS GL API | void | glStartTilingQCOM | GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask | flush | noext | | | |
+| EVAS GL API | void | glEndTilingQCOM | GLbitfield preserveMask | flush | noext | | | |
+# OpenGL-ES 3.0
+| EVAS GL API | void | glBeginQuery | GLenum target, GLuint id | finish | noext | | | |
+| EVAS GL API | void | glBeginTransformFeedback | GLenum primitiveMode | finish | noext | | | |
+| EVAS GL API | void | glBindBufferBase | GLenum target, GLuint index, GLuint buffer | finish | noext | | | |
+| EVAS GL API | void | glBindBufferRange | GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size | finish | noext | | | |
+| EVAS GL API | void | glBindSampler | GLuint unit, GLuint sampler | finish | noext | | | |
+| EVAS GL API | void | glBindTransformFeedback | GLenum target, GLuint id | finish | noext | | | |
+| EVAS GL API | void | glBindVertexArray | GLuint array | finish | noext | | | |
+| EVAS GL API | void | glBlitFramebuffer | GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter | finish | noext | | | |
+| EVAS GL API | void | glClearBufferfi | GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil | finish | noext | | | |
+| EVAS GL API | void | glClearBufferfv | GLenum buffer, GLint drawBuffer, const GLfloat * value | finish | noext | | | |
+| EVAS GL API | void | glClearBufferiv | GLenum buffer, GLint drawBuffer, const GLint * value | finish | noext | | | |
+| EVAS GL API | void | glClearBufferuiv | GLenum buffer, GLint drawBuffer, const GLuint * value | finish | noext | | | |
+| EVAS GL API | GLenum | glClientWaitSync | GLsync sync, GLbitfield flags, EvasGLuint64 timeout | finish | noext | | | |
+| EVAS GL API | void | glCompressedTexImage3D | GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data | finish | noext | | | |
+| EVAS GL API | void | glCompressedTexSubImage3D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data | finish | noext | | | |
+| EVAS GL API | void | glCopyBufferSubData | GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size | finish | noext | | | |
+| EVAS GL API | void | glCopyTexSubImage3D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glDeleteQueries | GLsizei n, const GLuint * ids | finish | noext | | | |
+| EVAS GL API | void | glDeleteSamplers | GLsizei n, const GLuint * samplers | finish | noext | | | |
+| EVAS GL API | void | glDeleteSync | GLsync sync | finish | noext | | | |
+| EVAS GL API | void | glDeleteTransformFeedbacks | GLsizei n, const GLuint *ids | finish | noext | | | |
+| EVAS GL API | void | glDeleteVertexArrays | GLsizei n, const GLuint *arrays | finish | noext | | | |
+| EVAS GL API | void | glDrawArraysInstanced | GLenum mode, GLint first, GLsizei count, GLsizei primcount | finish | noext | | | |
+| EVAS GL API | void | glDrawBuffers | GLsizei n, const GLenum *bufs | finish | noext | | | |
+| EVAS GL API | void | glDrawElementsInstanced | GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount | finish | noext | | | |
+| EVAS GL API | void | glDrawRangeElements | GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices | finish | noext | | | |
+| EVAS GL API | void | glEndQuery | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glEndTransformFeedback | void | finish | noext | | | |
+| EVAS GL API | GLsync | glFenceSync | GLenum condition, GLbitfield flags | finish | noext | | | |
+| EVAS GL API | GLsync | glFlushMappedBufferRange | GLenum target, GLintptr offset, GLsizeiptr length | finish | noext | | | |
+| EVAS GL API | void | glFramebufferTextureLayer | GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer | finish | noext | | | |
+| EVAS GL API | void | glGenQueries | GLsizei n, GLuint * ids | finish | noext | | | |
+| EVAS GL API | void | glGenSamplers | GLsizei n, GLuint *samplers | finish | noext | | | |
+| EVAS GL API | void | glGenTransformFeedbacks | GLsizei n, GLuint *ids | finish | noext | | | |
+| EVAS GL API | void | glGenVertexArrays | GLsizei n, GLuint *arrays | finish | noext | | | |
+| EVAS GL API | void | glGetActiveUniformBlockiv | GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetActiveUniformBlockName | GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName | finish | noext | | | |
+| EVAS GL API | void | glGetActiveUniformsiv | GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetBufferParameteri64v | GLenum target, GLenum value, EvasGLint64 * data | finish | noext | | | |
+| EVAS GL API | void | glGetBufferPointerv | GLenum target, GLenum pname, GLvoid ** params | finish | noext | | | |
+| EVAS GL API | GLint | glGetFragDataLocation | GLuint program, const char * name | finish | noext | | | |
+| EVAS GL API | void | glGetInteger64i_v | GLenum target, GLuint index, EvasGLint64 * data | finish | noext | | | |
+| EVAS GL API | void | glGetInteger64v | GLenum pname, EvasGLint64 * data | finish | noext | | | |
+| EVAS GL API | void | glGetIntegeri_v | GLenum target, GLuint index, GLint * data | finish | noext | | | |
+| EVAS GL API | void | glGetInternalformativ | GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetProgramBinary | GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary | finish | noext | | | |
+| EVAS GL API | void | glGetQueryiv | GLenum target, GLenum pname, GLint * params | finish | noext | | | |
+| EVAS GL API | void | glGetQueryObjectuiv | GLuint id, GLenum pname, GLuint * params | finish | noext | | | |
+| EVAS GL API | void | glGetSamplerParameterfv | GLuint sampler, GLenum pname, GLfloat * params | finish | noext | | | |
+| EVAS GL API | void | glGetSamplerParameteriv | GLuint sampler, GLenum pname, GLint * params | finish | noext | | | |
+| EVAS GL API | const GLubyte * | glGetStringi | GLenum name, GLuint index | finish | noext | | | |
+| EVAS GL API | void | glGetSynciv | GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values | finish | noext | | | |
+| EVAS GL API | void | glGetTransformFeedbackVarying | GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, char * name | finish | noext | | | |
+| EVAS GL API | GLuint | glGetUniformBlockIndex | GLuint program, const GLchar *uniformBlockName | finish | noext | | | |
+| EVAS GL API | void | glGetUniformIndices | GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices | finish | noext | | | |
+| EVAS GL API | void | glGetUniformuiv | GLuint program, GLint location, GLuint* params | finish | noext | | | |
+| EVAS GL API | void | glGetVertexAttribIiv | GLuint index, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetVertexAttribIuiv | GLuint index, GLenum pname, GLuint *params | finish | noext | | | |
+| EVAS GL API | void | glInvalidateFramebuffer | GLenum target, GLsizei numAttachments, const GLenum *attachments | finish | noext | | | |
+| EVAS GL API | void | glInvalidateSubFramebuffer | GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsQuery | GLuint id | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsSampler | GLuint id | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsSync | GLsync sync | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsTransformFeedback | GLuint id | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsVertexArray | GLuint array | finish | noext | | | |
+| EVAS GL API | void * | glMapBufferRange | GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access | finish | noext | | | |
+| EVAS GL API | void | glPauseTransformFeedback | void | finish | noext | | | |
+| EVAS GL API | void | glProgramBinary | GLuint program, GLenum binaryFormat, const void *binary, GLsizei length | flush | noext | _mp_default, length, binary | | |
+| EVAS GL API | void | glProgramParameteri | GLuint program, GLenum pname, GLint value | finish | noext | | | |
+| EVAS GL API | void | glReadBuffer | GLenum src | finish | noext | | | |
+| EVAS GL API | void | glRenderbufferStorageMultisample | GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glResumeTransformFeedback | void | finish | noext | | | |
+| EVAS GL API | void | glSamplerParameterf | GLuint sampler, GLenum pname, GLfloat param | finish | noext | | | |
+| EVAS GL API | void | glSamplerParameterfv | GLuint sampler, GLenum pname, const GLfloat * params | finish | noext | | | |
+| EVAS GL API | void | glSamplerParameteri | GLuint sampler, GLenum pname, GLint param | finish | noext | | | |
+| EVAS GL API | void | glSamplerParameteriv | GLuint sampler, GLenum pname, const GLint * params | finish | noext | | | |
+| EVAS GL API | void | glTexImage3D | GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * data | finish | noext | | | |
+| EVAS GL API | void | glTexStorage2D | GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height | finish | noext | | | |
+| EVAS GL API | void | glTexStorage3D | GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth | finish | noext | | | |
+| EVAS GL API | void | glTexSubImage3D | GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * data | finish | noext | | | |
+| EVAS GL API | void | glTransformFeedbackVaryings | GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode | finish | noext | | | |
+| EVAS GL API | void | glUniform1ui | GLint location, GLuint v0 | finish | noext | | | |
+| EVAS GL API | void | glUniform1uiv | GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glUniform2ui | GLint location, GLuint v0, GLuint v1 | finish | noext | | | |
+| EVAS GL API | void | glUniform2uiv | GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glUniform3ui | GLint location, GLuint v0, GLuint v1, GLuint v2 | finish | noext | | | |
+| EVAS GL API | void | glUniform3uiv | GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glUniform4ui | GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 | finish | noext | | | |
+| EVAS GL API | void | glUniform4uiv | GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glUniformBlockBinding | GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix2x3fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix3x2fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix2x4fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix4x2fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix3x4fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glUniformMatrix4x3fv | GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | GLboolean | glUnmapBuffer | GLenum target | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribDivisor | GLuint index, GLuint divisor | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribI4i | GLuint index, GLint v0, GLint v1, GLint v2, GLint v3 | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribI4iv | GLuint index, const GLint *v | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribI4ui | GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3 | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribI4uiv | GLuint index, const GLuint *v | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribIPointer | GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer | finish | noext | | | |
+| EVAS GL API | void | glWaitSync | GLsync sync, GLbitfield flags, EvasGLuint64 timeout | finish | noext | | | |
+# OpenGL-ES 3.1
+| EVAS GL API | void | glDispatchCompute | GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z | finish | noext | | | |
+| EVAS GL API | void | glDispatchComputeIndirect | GLintptr indirect | finish | noext | | | |
+| EVAS GL API | void | glDrawArraysIndirect | GLenum mode, const void *indirect | finish | noext | | | |
+| EVAS GL API | void | glDrawElementsIndirect | GLenum mode, GLenum type, const void *indirect | finish | noext | | | |
+| EVAS GL API | void | glFramebufferParameteri | GLenum target, GLenum pname, GLint param | finish | noext | | | |
+| EVAS GL API | void | glGetFramebufferParameteriv | GLenum target, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetProgramInterfaceiv | GLuint program, GLenum programInterface, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | GLuint | glGetProgramResourceIndex | GLuint program, GLenum programInterface, const GLchar *name | finish | noext | | | |
+| EVAS GL API | void | glGetProgramResourceName | GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name | finish | noext | | | |
+| EVAS GL API | void | glGetProgramResourceiv | GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params | finish | noext | | | |
+| EVAS GL API | GLint |glGetProgramResourceLocation | GLuint program, GLenum programInterface, const GLchar *name | finish | noext | | | |
+| EVAS GL API | void | glUseProgramStages | GLuint pipeline, GLbitfield stages, GLuint program | finish | noext | | | |
+| EVAS GL API | void | glActiveShaderProgram | GLuint pipeline, GLuint program | finish | noext | | | |
+| EVAS GL API | GLuint | glCreateShaderProgramv | GLenum type, GLsizei count, const GLchar *const*strings | finish | noext | | | |
+| EVAS GL API | void | glBindProgramPipeline | GLuint pipeline | finish | noext | | | |
+| EVAS GL API | void | glDeleteProgramPipelines | GLsizei n, const GLuint *pipelines | finish | noext | | | |
+| EVAS GL API | void | glGenProgramPipelines | GLsizei n, GLuint *pipelines | finish | noext | | | |
+| EVAS GL API | GLboolean | glIsProgramPipeline | GLuint pipeline | finish | noext | | | |
+| EVAS GL API | void | glGetProgramPipelineiv | GLuint pipeline, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1i | GLuint program, GLint location, GLint v0 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2i | GLuint program, GLint location, GLint v0, GLint v1 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3i | GLuint program, GLint location, GLint v0, GLint v1, GLint v2 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4i | GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1ui | GLuint program, GLint location, GLuint v0 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2ui | GLuint program, GLint location, GLuint v0, GLuint v1 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3ui | GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4ui | GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1f | GLuint program, GLint location, GLfloat v0 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2f | GLuint program, GLint location, GLfloat v0, GLfloat v1 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3f | GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4f | GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3 | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1iv | GLuint program, GLint location, GLsizei count, const GLint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2iv | GLuint program, GLint location, GLsizei count, const GLint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3iv | GLuint program, GLint location, GLsizei count, const GLint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4iv | GLuint program, GLint location, GLsizei count, const GLint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1uiv | GLuint program, GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2uiv | GLuint program, GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3uiv | GLuint program, GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4uiv | GLuint program, GLint location, GLsizei count, const GLuint *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform1fv | GLuint program, GLint location, GLsizei count, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform2fv | GLuint program, GLint location, GLsizei count, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform3fv | GLuint program, GLint location, GLsizei count, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniform4fv | GLuint program, GLint location, GLsizei count, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix2fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix3fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix4fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix2x3fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix3x2fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix2x4fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix4x2fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix3x4fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glProgramUniformMatrix4x3fv | GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value | finish | noext | | | |
+| EVAS GL API | void | glValidateProgramPipeline | GLuint pipeline | finish | noext | | | |
+| EVAS GL API | void | glGetProgramPipelineInfoLog | GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog | finish | noext | | | |
+| EVAS GL API | void | glBindImageTexture | GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format | finish | noext | | | |
+| EVAS GL API | void | glGetBooleani_v | GLenum target, GLuint index, GLboolean *data | finish | noext | | | |
+| EVAS GL API | void | glMemoryBarrier | GLbitfield barriers | finish | noext | | | |
+| EVAS GL API | void | glMemoryBarrierByRegion | GLbitfield barriers | finish | noext | | | |
+| EVAS GL API | void | glTexStorage2DMultisample | GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations | finish | noext | | | |
+| EVAS GL API | void | glGetMultisamplefv | GLenum pname, GLuint index, GLfloat *val | finish | noext | | | |
+| EVAS GL API | void | glSampleMaski | GLuint maskNumber, GLbitfield mask | finish | noext | | | |
+| EVAS GL API | void | glGetTexLevelParameteriv | GLenum target, GLint level, GLenum pname, GLint *params | finish | noext | | | |
+| EVAS GL API | void | glGetTexLevelParameterfv | GLenum target, GLint level, GLenum pname, GLfloat *params | finish | noext | | | |
+| EVAS GL API | void | glBindVertexBuffer | GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribFormat | GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribIFormat | GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset | finish | noext | | | |
+| EVAS GL API | void | glVertexAttribBinding | GLuint attribindex, GLuint bindingindex | finish | noext | | | |
+| EVAS GL API | void | glVertexBindingDivisor | GLuint bindingindex, GLuint divisor | finish | noext | | | |
+###
+| EVAS GL API | void | glEGLImageTargetTexture2DOES | GLenum target,void *image | finish | ext | | | |
+| EVAS GL API | void | glEGLImageTargetRenderbufferStorageOES | GLenum target, void *image | flush | ext | | | |
+### Evas GL
+| EVAS GL API | void | _evgl_glDiscardFramebufferEXT | GLenum target, GLsizei numAttachments, const GLenum* attachments | finish | ext | | | |
+| EVAS GL API | void | _evgl_glEvasGLImageTargetTexture2D | GLenum target, EvasGLImage image | finish | ext | | | |
+| EVAS GL API | void | _evgl_glEvasGLImageTargetRenderbufferStorage | GLenum target, EvasGLImage image | finish | ext | | | |
+| EVAS GL API | EvasGLImage | _evgl_evasglCreateImage | int target, void* buffer, const int *attrib_list | finish | ext | | | |
+| EVAS GL API | void | _evgl_evasglDestroyImage | EvasGLImage image | finish | ext | | | |
+| EVAS GL API | EvasGLImage | _evgl_evasglCreateImageForContext | Evas_GL *evas_gl, Evas_GL_Context *ctx, int target, void* buffer, const int *attrib_list | finish | ext | | | |
+| EVAS GL API | EvasGLSync | _evgl_evasglCreateSync | Evas_GL *evas_gl, unsigned int type, const int *attrib_list | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglDestroySync | Evas_GL *evas_gl, EvasGLSync sync | finish | ext | | | |
+| EVAS GL API | int | _evgl_evasglClientWaitSync | Evas_GL *evas_gl, EvasGLSync sync | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglGetSyncAttrib | Evas_GL *evas_gl, EvasGLSync sync, int attribute, int *value | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglSignalSync | Evas_GL *evas_gl, EvasGLSync sync, unsigned mode | finish | ext | | | |
+| EVAS GL API | int | _evgl_evasglWaitSync | Evas_GL *evas_gl, EvasGLSync sync, int flags | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglBindWaylandDisplay | Evas_GL *evas_gl, void *wl_display | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglUnbindWaylandDisplay | Evas_GL *evas_gl, void *wl_display | finish | ext | | | |
+| EVAS GL API | Eina_Bool | _evgl_evasglQueryWaylandBuffer | Evas_GL *evas_gl, void *buffer, int attribute, int *value | finish | ext | | | |